rangutopia 0.0.1

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 (105) hide show
  1. package/.editorconfig +10 -0
  2. package/.gitattributes +4 -0
  3. package/.npmrc +2 -0
  4. package/README.md +4 -0
  5. package/dist/commands/library/build/action.d.ts +4 -0
  6. package/dist/commands/library/build/action.d.ts.map +1 -0
  7. package/dist/commands/library/build/action.js +29 -0
  8. package/dist/commands/library/build/action.js.map +1 -0
  9. package/dist/commands/library/build/mod.d.ts +2 -0
  10. package/dist/commands/library/build/mod.d.ts.map +1 -0
  11. package/dist/commands/library/build/mod.js +2 -0
  12. package/dist/commands/library/build/mod.js.map +1 -0
  13. package/dist/commands/library/build/options.d.ts +23 -0
  14. package/dist/commands/library/build/options.d.ts.map +1 -0
  15. package/dist/commands/library/build/options.js +98 -0
  16. package/dist/commands/library/build/options.js.map +1 -0
  17. package/dist/commands/library/check/action.d.ts +2 -0
  18. package/dist/commands/library/check/action.d.ts.map +1 -0
  19. package/dist/commands/library/check/action.js +24 -0
  20. package/dist/commands/library/check/action.js.map +1 -0
  21. package/dist/commands/library/check/mod.d.ts +2 -0
  22. package/dist/commands/library/check/mod.d.ts.map +1 -0
  23. package/dist/commands/library/check/mod.js +2 -0
  24. package/dist/commands/library/check/mod.js.map +1 -0
  25. package/dist/commands/library/mod.d.ts +4 -0
  26. package/dist/commands/library/mod.d.ts.map +1 -0
  27. package/dist/commands/library/mod.js +25 -0
  28. package/dist/commands/library/mod.js.map +1 -0
  29. package/dist/commands/tools/husky/init/action.d.ts +4 -0
  30. package/dist/commands/tools/husky/init/action.d.ts.map +1 -0
  31. package/dist/commands/tools/husky/init/action.js +82 -0
  32. package/dist/commands/tools/husky/init/action.js.map +1 -0
  33. package/dist/commands/tools/husky/init/mod.d.ts +2 -0
  34. package/dist/commands/tools/husky/init/mod.d.ts.map +1 -0
  35. package/dist/commands/tools/husky/init/mod.js +2 -0
  36. package/dist/commands/tools/husky/init/mod.js.map +1 -0
  37. package/dist/commands/tools/husky/init/options.d.ts +10 -0
  38. package/dist/commands/tools/husky/init/options.d.ts.map +1 -0
  39. package/dist/commands/tools/husky/init/options.js +10 -0
  40. package/dist/commands/tools/husky/init/options.js.map +1 -0
  41. package/dist/commands/tools/husky/mod.d.ts +4 -0
  42. package/dist/commands/tools/husky/mod.d.ts.map +1 -0
  43. package/dist/commands/tools/husky/mod.js +12 -0
  44. package/dist/commands/tools/husky/mod.js.map +1 -0
  45. package/dist/commands/tools/lint/init/action.d.ts +2 -0
  46. package/dist/commands/tools/lint/init/action.d.ts.map +1 -0
  47. package/dist/commands/tools/lint/init/action.js +19 -0
  48. package/dist/commands/tools/lint/init/action.js.map +1 -0
  49. package/dist/commands/tools/lint/init/mod.d.ts +2 -0
  50. package/dist/commands/tools/lint/init/mod.d.ts.map +1 -0
  51. package/dist/commands/tools/lint/init/mod.js +2 -0
  52. package/dist/commands/tools/lint/init/mod.js.map +1 -0
  53. package/dist/commands/tools/lint/mod.d.ts +4 -0
  54. package/dist/commands/tools/lint/mod.d.ts.map +1 -0
  55. package/dist/commands/tools/lint/mod.js +11 -0
  56. package/dist/commands/tools/lint/mod.js.map +1 -0
  57. package/dist/commands/tools/mod.d.ts +4 -0
  58. package/dist/commands/tools/mod.d.ts.map +1 -0
  59. package/dist/commands/tools/mod.js +10 -0
  60. package/dist/commands/tools/mod.js.map +1 -0
  61. package/dist/constants.d.ts +6 -0
  62. package/dist/constants.d.ts.map +1 -0
  63. package/dist/constants.js +7 -0
  64. package/dist/constants.js.map +1 -0
  65. package/dist/main.d.ts +3 -0
  66. package/dist/main.d.ts.map +1 -0
  67. package/dist/main.js +11 -0
  68. package/dist/main.js.map +1 -0
  69. package/dist/utils/cli.d.ts +2 -0
  70. package/dist/utils/cli.d.ts.map +1 -0
  71. package/dist/utils/cli.js +18 -0
  72. package/dist/utils/cli.js.map +1 -0
  73. package/dist/utils/fs.d.ts +4 -0
  74. package/dist/utils/fs.d.ts.map +1 -0
  75. package/dist/utils/fs.js +29 -0
  76. package/dist/utils/fs.js.map +1 -0
  77. package/dist/utils/log.d.ts +15 -0
  78. package/dist/utils/log.d.ts.map +1 -0
  79. package/dist/utils/log.js +38 -0
  80. package/dist/utils/log.js.map +1 -0
  81. package/dist/utils/packageJson.d.ts +22 -0
  82. package/dist/utils/packageJson.d.ts.map +1 -0
  83. package/dist/utils/packageJson.js +108 -0
  84. package/dist/utils/packageJson.js.map +1 -0
  85. package/dist/utils/parse.d.ts +3 -0
  86. package/dist/utils/parse.d.ts.map +1 -0
  87. package/dist/utils/parse.js +15 -0
  88. package/dist/utils/parse.js.map +1 -0
  89. package/dist/utils/ps.d.ts +4 -0
  90. package/dist/utils/ps.d.ts.map +1 -0
  91. package/dist/utils/ps.js +21 -0
  92. package/dist/utils/ps.js.map +1 -0
  93. package/dist/utils/yarn.d.ts +2 -0
  94. package/dist/utils/yarn.d.ts.map +1 -0
  95. package/dist/utils/yarn.js +11 -0
  96. package/dist/utils/yarn.js.map +1 -0
  97. package/package.json +25 -0
  98. package/templates/format/.prettierrc.json +6 -0
  99. package/templates/husky/commit-msg +4 -0
  100. package/templates/husky/post-commit +9 -0
  101. package/templates/husky/pre-commit +4 -0
  102. package/templates/lint/.lintstagedrc.mjs +14 -0
  103. package/templates/lint/commitlint.config.js +5 -0
  104. package/templates/lint/eslint.config.mjs +3 -0
  105. package/tsconfig.json +12 -0
package/.editorconfig ADDED
@@ -0,0 +1,10 @@
1
+ root = true
2
+
3
+ [*]
4
+ end_of_line = lf
5
+ insert_final_newline = true
6
+
7
+ [*.{js,json,yml}]
8
+ charset = utf-8
9
+ indent_style = space
10
+ indent_size = 2
package/.gitattributes ADDED
@@ -0,0 +1,4 @@
1
+ /.yarn/** linguist-vendored
2
+ /.yarn/releases/* binary
3
+ /.yarn/plugins/**/* binary
4
+ /.pnp.* binary linguist-generated
package/.npmrc ADDED
@@ -0,0 +1,2 @@
1
+ //registry.npmjs.org/:_authToken=${NPM_TOKEN}
2
+
package/README.md ADDED
@@ -0,0 +1,4 @@
1
+ # rangutopia
2
+
3
+ A cli to manage our scripts across the organization.
4
+
@@ -0,0 +1,4 @@
1
+ import { z } from "zod/v4";
2
+ import { CommandOptionsSchema } from "./options.js";
3
+ export declare function action(commandOptions: z.infer<typeof CommandOptionsSchema>): Promise<void>;
4
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../src/commands/library/build/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAK1B,OAAO,EAAE,oBAAoB,EAAgB,MAAM,cAAc,CAAC;AAKlE,wBAAsB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,iBAyBhF"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod/v4";
2
+ import ora from "ora";
3
+ import { Level, log, logErrorAndExit, message } from "../../../utils/log.js";
4
+ import { action as checkAction } from "../check/mod.js";
5
+ import { build } from "esbuild";
6
+ import { CommandOptionsSchema, parseOptions } from "./options.js";
7
+ import { objectToCliParams } from "../../../utils/cli.js";
8
+ import { findBinaryPath } from "../../../utils/fs.js";
9
+ import { spawnAsync } from "../../../utils/ps.js";
10
+ export async function action(commandOptions) {
11
+ await checkAction(commandOptions);
12
+ const options = await parseOptions(commandOptions).catch(logErrorAndExit);
13
+ const spinner = ora(`Running Typescript and ESBuild on ${options.package.name}\n`).start();
14
+ const tscParams = objectToCliParams(options.typescript);
15
+ const localTsc = await findBinaryPath("tsc");
16
+ const taskTsc = spawnAsync(localTsc || "tsc", tscParams, {});
17
+ const taskEsbuild = build(options.esbuild).catch((reason) => {
18
+ throw new Error(message({ task: "esbuild" }, reason.errors.map(error => error.text).join("\n")), {
19
+ cause: reason
20
+ });
21
+ });
22
+ await Promise.all([taskTsc, taskEsbuild]).catch((reason) => {
23
+ spinner.stop();
24
+ log(Level.Error, reason.message);
25
+ logErrorAndExit(`Building '${options.package.name}' failed.`);
26
+ });
27
+ spinner.succeed(`'${options.package.name}' built.`);
28
+ }
29
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../../src/commands/library/build/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,KAAK,EAAoB,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,cAAoD;IACzE,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAG,GAAG,CAAC,qCAAqC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAE3F,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,IAAI,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE7D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAmB,EAAE,EAAE;QACjE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;YACzF,KAAK,EAAE,MAAM;SACpB,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAGH,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;QACnD,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,eAAe,CAAC,aAAa,OAAO,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,CAAA;IACrE,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAA;AAC3D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { action } from "./action.js";
2
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/commands/library/build/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { action } from "./action.js";
2
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../src/commands/library/build/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { z } from "zod/v4";
2
+ import type { BuildOptions as ESBuildOptions } from "esbuild";
3
+ export declare const CommandOptionsSchema: z.ZodObject<{
4
+ inputs: z.ZodOptional<z.ZodString>;
5
+ external: z.ZodOptional<z.ZodString>;
6
+ externalAllExcept: z.ZodOptional<z.ZodString>;
7
+ splitting: z.ZodOptional<z.ZodBoolean>;
8
+ }, z.core.$strip>;
9
+ interface ParsedOptions {
10
+ package: {
11
+ name: string;
12
+ path: string;
13
+ };
14
+ esbuild: ESBuildOptions;
15
+ typescript: {
16
+ declaration: boolean;
17
+ emitDeclarationOnly: boolean;
18
+ project: string;
19
+ };
20
+ }
21
+ export declare function parseOptions(commandOptions: z.infer<typeof CommandOptionsSchema>): Promise<ParsedOptions>;
22
+ export {};
23
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/commands/library/build/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAM1B,OAAO,KAAK,EAAE,YAAY,IAAI,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7D,eAAO,MAAM,oBAAoB;;;;;iBAK/B,CAAC;AAEH,UAAU,aAAa;IACf,OAAO,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE;QACJ,WAAW,EAAE,OAAO,CAAC;QACrB,mBAAmB,EAAE,OAAO,CAAC;QAC7B,OAAO,EAAE,MAAM,CAAC;KACvB,CAAC;CACT;AAED,wBAAsB,YAAY,CAC1B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GACzD,OAAO,CAAC,aAAa,CAAC,CA+FxB"}
@@ -0,0 +1,98 @@
1
+ import { z } from "zod/v4";
2
+ import { validatedSchemaOrThrow } from "../../../utils/parse.js";
3
+ import { nodeModulesPolyfillPlugin } from 'esbuild-plugins-node-modules-polyfill';
4
+ import { nearestPackageJsonPath, readAndValidatePacakgeJson, readPackageJson } from "../../../utils/packageJson.js";
5
+ import { logErrorAndExit } from "../../../utils/log.js";
6
+ import { accessSync, constants } from "node:fs";
7
+ const DEFAULT_TSCONFIG_FILENAME = "tsconfig.build.json";
8
+ const DEFAULT_OUTPUT_PATH = "dist";
9
+ // One of them will be picked, ordering matters.
10
+ const DEFAULT_ENTRYPOINTS = [`src/index.ts`, `src/mod.ts`];
11
+ export const CommandOptionsSchema = z.object({
12
+ inputs: z.string().optional(),
13
+ external: z.string().optional(),
14
+ externalAllExcept: z.string().optional(),
15
+ splitting: z.boolean().optional(),
16
+ });
17
+ export async function parseOptions(commandOptions) {
18
+ const packageJsonRootPath = await nearestPackageJsonPath();
19
+ if (!packageJsonRootPath) {
20
+ throw new Error("We couldn't found any package.json where you are runing the command. Are you in a correct path?'");
21
+ }
22
+ const packageJsonContent = readAndValidatePacakgeJson(packageJsonRootPath);
23
+ const options = validatedSchemaOrThrow(CommandOptionsSchema, commandOptions);
24
+ if (!!options.external && !!options.externalAllExcept) {
25
+ logErrorAndExit("You should only use one of `external` or `external-all-except` at the sametime.");
26
+ }
27
+ const output = {
28
+ package: {
29
+ name: packageJsonContent.name,
30
+ path: packageJsonRootPath,
31
+ },
32
+ typescript: {
33
+ declaration: true,
34
+ emitDeclarationOnly: true,
35
+ project: DEFAULT_TSCONFIG_FILENAME,
36
+ },
37
+ esbuild: {},
38
+ };
39
+ // esbuild
40
+ // default options
41
+ output.esbuild = {
42
+ // we should handle errors and printing to terminal ourselves.
43
+ logLevel: "silent",
44
+ bundle: true,
45
+ minify: true,
46
+ keepNames: true,
47
+ sourcemap: true,
48
+ platform: 'browser',
49
+ format: 'esm',
50
+ metafile: true,
51
+ splitting: !!options.splitting,
52
+ outdir: `${packageJsonRootPath}/${DEFAULT_OUTPUT_PATH}`,
53
+ plugins: [
54
+ nodeModulesPolyfillPlugin({
55
+ // TODO: CHECK THIS, THE ORIGINAL SCRIPT WAS `global` instead of `modules`
56
+ modules: {
57
+ fs: true,
58
+ },
59
+ }),
60
+ ],
61
+ };
62
+ let entryPoints = [];
63
+ if (!options.inputs) {
64
+ const entryPoint = DEFAULT_ENTRYPOINTS.find(defaultEntryPoint => {
65
+ try {
66
+ accessSync(defaultEntryPoint, constants.F_OK);
67
+ return true;
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ });
73
+ if (entryPoint) {
74
+ entryPoints = [`${packageJsonRootPath}/${entryPoint}`];
75
+ }
76
+ else {
77
+ throw new Error(`We couldn't find any entry point for your code. checked following paths: \n ${DEFAULT_ENTRYPOINTS.join("\n")}`);
78
+ }
79
+ }
80
+ else {
81
+ entryPoints = options.inputs.split(',').map((input) => `${packageJsonRootPath}/${input}`);
82
+ }
83
+ output.esbuild.entryPoints = entryPoints;
84
+ // read more: https://esbuild.github.io/api/#packages
85
+ if (!!options.external) {
86
+ output.esbuild.external = options.external.split(',');
87
+ }
88
+ else if (!!options.externalAllExcept) {
89
+ const excludedPackages = options.externalAllExcept.split(',');
90
+ const dependencies = Object.keys(packageJsonContent.dependencies).filter((name) => !excludedPackages.includes(name));
91
+ output.esbuild.external = dependencies;
92
+ }
93
+ else {
94
+ output.esbuild.packages = 'external';
95
+ }
96
+ return output;
97
+ }
98
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/commands/library/build/options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function action(_options: unknown): Promise<void>;
2
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../src/commands/library/check/action.ts"],"names":[],"mappings":"AAQA,wBAAsB,MAAM,CAAC,QAAQ,EAAE,OAAO,iBAuB7C"}
@@ -0,0 +1,24 @@
1
+ import { logErrorAndExit } from "../../../utils/log.js";
2
+ import ora from "ora";
3
+ import { lookupPackageJsonFilesToFindDependency } from "../../../utils/packageJson.js";
4
+ const REQUIRED_DEV_DEPENDENCIES = ["typescript", "esbuild"];
5
+ // TODO: Suggest yarn add pkg-name
6
+ export async function action(_options) {
7
+ // Check building tools
8
+ const spinner = ora("Checking required dependencies...").start();
9
+ const listRequiredPackages = await Promise.all(REQUIRED_DEV_DEPENDENCIES.map(name => lookupPackageJsonFilesToFindDependency(name)));
10
+ const missingPackages = [];
11
+ listRequiredPackages.forEach((result, index) => {
12
+ if (!result) {
13
+ missingPackages.push(REQUIRED_DEV_DEPENDENCIES[index]);
14
+ }
15
+ });
16
+ if (missingPackages.length > 0) {
17
+ spinner.fail(`You can install missing dependencies using \n \`yarn add -D ${missingPackages.join(" ")}\``);
18
+ logErrorAndExit(`Ensure you've installed the following dev dependencies: ${missingPackages.join(",")}`);
19
+ }
20
+ else {
21
+ spinner.succeed("Dependencies checked.");
22
+ }
23
+ }
24
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../../src/commands/library/check/action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,sCAAsC,EAAE,MAAM,+BAA+B,CAAC;AAEvF,MAAM,yBAAyB,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAE5D,kCAAkC;AAClC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAiB;IAEtC,uBAAuB;IACvB,MAAM,OAAO,GAAG,GAAG,CAAC,mCAAmC,CAAC,CAAC,KAAK,EAAE,CAAC;IACjE,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,sCAAsC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAGpI,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACN,eAAe,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9D,CAAC;IACT,CAAC,CAAC,CAAC;IAGH,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,+DAA+D,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3G,eAAe,CAAC,2DAA2D,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC/G,CAAC;SAAM,CAAC;QAEA,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACjD,CAAC;AAET,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { action } from "./action.js";
2
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/commands/library/check/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { action } from "./action.js";
2
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../src/commands/library/check/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ declare function libraryCommand(program: Command): void;
3
+ export { libraryCommand };
4
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/commands/library/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,iBAAS,cAAc,CAAC,OAAO,EAAE,OAAO,QAsBvC;AAGD,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { Command } from "commander";
2
+ function libraryCommand(program) {
3
+ const library = program.command("library").description("Actions you need for your library packages");
4
+ library.command("init").description("init whatever").action(async (_options) => {
5
+ throw new Error("not implemented");
6
+ });
7
+ library.command("check").description("ensure on target package, everything has setup").action(async (options) => {
8
+ const { action } = await import("./check/mod.js");
9
+ action(options);
10
+ });
11
+ library.command("build").description("build your library")
12
+ .option("--inputs <inputs>", "comma separated file paths. e.g. src/main.ts,src/net.ts")
13
+ .option("--external <external>", "Comma separated list. https://esbuild.github.io/api/#external")
14
+ .option("--external-all-except <exception-list>", "When you want to make all the packages external, and only include some specific packages as your library bundle, this will be useful. Comma separated.")
15
+ .option("--splitting", "Enable code splitting", false)
16
+ .action(async (options) => {
17
+ const { action } = await import("./build/mod.js");
18
+ action(options);
19
+ });
20
+ library.command("publish").description("publish your package on NPM").action(async (_options) => {
21
+ throw new Error("not implemented");
22
+ });
23
+ }
24
+ export { libraryCommand };
25
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/commands/library/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,SAAS,cAAc,CAAC,OAAgB;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC;IAErG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;QACrE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC;SACjD,MAAM,CAAC,mBAAmB,EAAE,yDAAyD,CAAC;SACtF,MAAM,CAAC,uBAAuB,EAAE,+DAA+D,CAAC;SAChG,MAAM,CAAC,wCAAwC,EAAE,wJAAwJ,CAAC;SAC1M,MAAM,CAAC,aAAa,EAAE,uBAAuB,EAAE,KAAK,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAClB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACX,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QACxF,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAC;AACX,CAAC;AAGD,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { z } from "zod/v4";
2
+ import { CommandOptionsSchema } from "./options.js";
3
+ export declare function action(commandOptions: z.infer<typeof CommandOptionsSchema>): Promise<void>;
4
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../src/commands/tools/husky/init/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAQ1B,OAAO,EAAE,oBAAoB,EAAgB,MAAM,cAAc,CAAC;AAWlE,wBAAsB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,iBAsEhF"}
@@ -0,0 +1,82 @@
1
+ import { z } from "zod/v4";
2
+ import path from "node:path";
3
+ import { findMissingDependencies, nearestPackageJsonPath, readPackageJson, updatePackageJson } from "../../../../utils/packageJson.js";
4
+ import { add } from "../../../../utils/yarn.js";
5
+ import { copyDir, findBinaryPath } from "../../../../utils/fs.js";
6
+ import { spawnAsync } from "../../../../utils/ps.js";
7
+ import { HUSKY_TEMPLATES_PATH, ROOT_PATH } from "../../../../constants.js";
8
+ import ora from "ora";
9
+ import { CommandOptionsSchema, parseOptions } from "./options.js";
10
+ import { logErrorAndExit } from "../../../../utils/log.js";
11
+ const HUSKY_HOOKS_PATH = '.husky';
12
+ const REQUIRED_PACKAGES = ['husky'];
13
+ // For yarn v1 we were running it on `prepare`, but yarn berry doesn't have support for all the scripts hooks.
14
+ // @see https://yarnpkg.com/advanced/lifecycle-scripts
15
+ // @see https://docs.npmjs.com/cli/v9/using-npm/scripts#life-cycle-scripts
16
+ const LIFECYCLE_SCRIPT_TO_RUN_HUSKY = 'postinstall';
17
+ export async function action(commandOptions) {
18
+ const options = await parseOptions(commandOptions).catch(logErrorAndExit);
19
+ // Ensure husky is installed
20
+ const dependenciesSpinner = ora({
21
+ text: `Ensure following dependencies are install: ${REQUIRED_PACKAGES.join(",")}`,
22
+ isSilent: options.silent
23
+ }).start();
24
+ const missingPackages = await findMissingDependencies(REQUIRED_PACKAGES);
25
+ if (missingPackages.length === 0) {
26
+ dependenciesSpinner.info("Required dependencies for husky are installed already.");
27
+ }
28
+ else {
29
+ await add(missingPackages, "dev");
30
+ dependenciesSpinner.succeed(`The following dependencies added to your pacakage.json: ${missingPackages.join(",")}`);
31
+ }
32
+ // Copy from templates.
33
+ const destination = path.join(ROOT_PATH, HUSKY_HOOKS_PATH);
34
+ const templatesSpinner = ora({
35
+ text: `Installing hooks in ${destination}`,
36
+ isSilent: options.silent
37
+ }).start();
38
+ try {
39
+ copyDir(HUSKY_TEMPLATES_PATH, destination);
40
+ templatesSpinner.succeed(`Husky hooks are moved to your repo successfuly.`);
41
+ }
42
+ catch (e) {
43
+ templatesSpinner.warn(`It seems husky has been setup already. Installing hooks will be skipped.`);
44
+ console.trace(e);
45
+ }
46
+ // An script should be exist in package.json to install hooks automatically.
47
+ const scriptSpinner = ora({
48
+ text: `Installing hooks in ${destination}`,
49
+ isSilent: options.silent
50
+ }).start();
51
+ const script = "husky";
52
+ const nearestDirectory = await nearestPackageJsonPath();
53
+ if (!nearestDirectory)
54
+ throw new Error("We couldn't find any package json for your project.");
55
+ const nearestPackageJson = path.join(nearestDirectory, "package.json");
56
+ const packageJson = readPackageJson(nearestPackageJson);
57
+ if (!packageJson.scripts?.[LIFECYCLE_SCRIPT_TO_RUN_HUSKY]) {
58
+ if (packageJson.scripts) {
59
+ packageJson.scripts[LIFECYCLE_SCRIPT_TO_RUN_HUSKY] = script;
60
+ }
61
+ else {
62
+ packageJson.scripts = {
63
+ [LIFECYCLE_SCRIPT_TO_RUN_HUSKY]: script
64
+ };
65
+ }
66
+ scriptSpinner.info(`Adding script to your ${nearestPackageJson}`);
67
+ updatePackageJson(nearestPackageJson, packageJson);
68
+ scriptSpinner.succeed(`An script added to your npm/yarn hooks, named ${LIFECYCLE_SCRIPT_TO_RUN_HUSKY}`);
69
+ }
70
+ else {
71
+ scriptSpinner.info(`We were going to add a '${LIFECYCLE_SCRIPT_TO_RUN_HUSKY}' script to your package json, but an script already exists. make sure '${script}' is included.`);
72
+ }
73
+ // Run `husky install`
74
+ const huskySpinner = ora({
75
+ text: "Try run husky to install the hooks.",
76
+ isSilent: options.silent
77
+ }).start();
78
+ const localHuskyPath = await findBinaryPath("husky");
79
+ await spawnAsync(localHuskyPath, []);
80
+ huskySpinner.succeed("Husky installed the hooks sucessfuly. we are done.");
81
+ }
82
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../../../src/commands/tools/husky/init/action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { action } from "./action.js";
2
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../src/commands/tools/husky/init/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { action } from "./action.js";
2
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../../src/commands/tools/husky/init/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { z } from "zod/v4";
2
+ export declare const CommandOptionsSchema: z.ZodObject<{
3
+ silent: z.ZodBoolean;
4
+ }, z.core.$strip>;
5
+ interface ParsedOptions {
6
+ silent: boolean;
7
+ }
8
+ export declare function parseOptions(commandOptions: z.infer<typeof CommandOptionsSchema>): Promise<ParsedOptions>;
9
+ export {};
10
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../src/commands/tools/husky/init/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAG1B,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AAEH,UAAU,aAAa;IACf,MAAM,EAAE,OAAO,CAAA;CACtB;AAED,wBAAsB,YAAY,CAC1B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GACzD,OAAO,CAAC,aAAa,CAAC,CAGxB"}
@@ -0,0 +1,10 @@
1
+ import { z } from "zod/v4";
2
+ import { validatedSchemaOrThrow } from "../../../../utils/parse.js";
3
+ export const CommandOptionsSchema = z.object({
4
+ silent: z.boolean()
5
+ });
6
+ export async function parseOptions(commandOptions) {
7
+ const options = validatedSchemaOrThrow(CommandOptionsSchema, commandOptions);
8
+ return options;
9
+ }
10
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../../src/commands/tools/husky/init/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CAC1B,CAAC,CAAC;AAMH,MAAM,CAAC,KAAK,UAAU,YAAY,CAC1B,cAAoD;IAEpD,MAAM,OAAO,GAAG,sBAAsB,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAA;AACtB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ declare function huskyCommand(program: Command): void;
3
+ export { huskyCommand };
4
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/husky/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,iBAAS,YAAY,CAAC,OAAO,EAAE,OAAO,QAWrC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { Command } from "commander";
2
+ function huskyCommand(program) {
3
+ const husky = program.command("husky").description("husky to manage git hooks");
4
+ husky.command("init").description("husky for running some scripts on git hooks")
5
+ .option("--silent", "don't print anything to stdout'", false)
6
+ .action(async (options) => {
7
+ const { action } = await import("./init/mod.js");
8
+ action(options);
9
+ });
10
+ }
11
+ export { huskyCommand };
12
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../src/commands/tools/husky/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,SAAS,YAAY,CAAC,OAAgB;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAEhF,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,6CAA6C,CAAC;SACvE,MAAM,CAAC,UAAU,EAAE,iCAAiC,EAAE,KAAK,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;QAChB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AAGnB,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function action(_commandOptions: unknown): Promise<void>;
2
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../src/commands/tools/lint/init/action.ts"],"names":[],"mappings":"AASA,wBAAsB,MAAM,CAAC,eAAe,EAAE,OAAO,iBAgBpD"}
@@ -0,0 +1,19 @@
1
+ import { action as huskyAction } from "../../husky/init/mod.js";
2
+ import { findMissingDependencies } from "../../../../utils/packageJson.js";
3
+ import { add } from "../../../../utils/yarn.js";
4
+ import { copyDir } from "../../../../utils/fs.js";
5
+ import { LINT_TEMPLATES_PATH, ROOT_PATH } from "../../../../constants.js";
6
+ const REQUIRED_DEV_DEPENDENCIES = ["eslint", "eslint-config-rango", "@eslint/compat", "@eslint/eslintrc", "@eslint/js", "@typescript-eslint/eslint-plugin", "@typescript-eslint/parser", "eslint", "eslint-config-prettier", "eslint-plugin-destructuring", "eslint-plugin-import", "eslint-plugin-jsx-id-attribute-enforcement", "eslint-plugin-prettier", "eslint-plugin-react", "eslint-plugin-react-hooks"];
7
+ export async function action(_commandOptions) {
8
+ // Husky should be installed.
9
+ await huskyAction({ silent: true });
10
+ // For linting some packages are required.
11
+ const missingPackages = await findMissingDependencies(REQUIRED_DEV_DEPENDENCIES);
12
+ if (missingPackages.length > 0) {
13
+ await add(missingPackages, "dev");
14
+ }
15
+ // Copy tempalates for eslint, lintstaged, commitlint
16
+ copyDir(LINT_TEMPLATES_PATH, ROOT_PATH);
17
+ console.log("ok, we are done.");
18
+ }
19
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../../../src/commands/tools/lint/init/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAGzE,MAAM,yBAAyB,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,kCAAkC,EAAE,2BAA2B,EAAE,QAAQ,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,4CAA4C,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,2BAA2B,CAAC,CAAC;AAEhZ,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,eAAwB;IAE7C,6BAA6B;IAC7B,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAGpC,0CAA0C;IAC1C,MAAM,eAAe,GAAG,MAAM,uBAAuB,CAAC,yBAAyB,CAAC,CAAC;IACjF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAGD,qDAAqD;IACrD,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;AACvC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { action } from "./action.js";
2
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../src/commands/tools/lint/init/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { action } from "./action.js";
2
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../../src/commands/tools/lint/init/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ declare function lintCommand(program: Command): void;
3
+ export { lintCommand };
4
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/lint/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,iBAAS,WAAW,CAAC,OAAO,EAAE,OAAO,QAQpC;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { Command } from "commander";
2
+ function lintCommand(program) {
3
+ const lint = program.command("lint").description("using lint-related actions");
4
+ lint.command("init").description("init linter for source code and commits")
5
+ .action(async (options) => {
6
+ const { action } = await import("./init/mod.js");
7
+ action(options);
8
+ });
9
+ }
10
+ export { lintCommand };
11
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../src/commands/tools/lint/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,SAAS,WAAW,CAAC,OAAgB;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAE/E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,yCAAyC,CAAC;SAClE,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;QAChB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ declare function toolsCommand(program: Command): void;
3
+ export { toolsCommand };
4
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/commands/tools/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,iBAAS,YAAY,CAAC,OAAO,EAAE,OAAO,QAIrC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { Command } from "commander";
2
+ import { huskyCommand } from "./husky/mod.js";
3
+ import { lintCommand } from "./lint/mod.js";
4
+ function toolsCommand(program) {
5
+ const tools = program.command("tools").description("third party tools we are using");
6
+ huskyCommand(tools);
7
+ lintCommand(tools);
8
+ }
9
+ export { toolsCommand };
10
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/commands/tools/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,SAAS,YAAY,CAAC,OAAgB;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;IACrF,YAAY,CAAC,KAAK,CAAC,CAAA;IACnB,WAAW,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ export declare const ROOT_PATH: string;
2
+ export declare const TEMPLATES_PATH: string;
3
+ export declare const HUSKY_TEMPLATES_PATH: string;
4
+ export declare const LINT_TEMPLATES_PATH: string;
5
+ export declare const FORMAT_TEMPLATES_PATH: string;
6
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAAgB,CAAC;AACvC,eAAO,MAAM,cAAc,QAAwC,CAAC;AACpE,eAAO,MAAM,oBAAoB,QAAqC,CAAC;AACvE,eAAO,MAAM,mBAAmB,QAAoC,CAAC;AACrE,eAAO,MAAM,qBAAqB,QAAsC,CAAC"}