airyhooks 0.1.0-beta.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/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +43 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +38 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +11 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/config.d.ts +6 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +14 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/get-hook-template.d.ts.map +1 -0
- package/dist/utils/get-hook-template.js +1096 -0
- package/dist/utils/get-hook-template.js.map +1 -0
- package/dist/utils/registry.d.ts +7 -0
- package/dist/utils/registry.d.ts.map +1 -0
- package/dist/utils/registry.js +75 -0
- package/dist/utils/registry.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAQA,wBAAsB,GAAG,CAAC,QAAQ,EAAE,MAAM,iBA6CzC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import pc from "picocolors";
|
|
4
|
+
import { getConfig } from "../utils/config.js";
|
|
5
|
+
import { getHookTemplate } from "../utils/get-hook-template.js";
|
|
6
|
+
import { registry } from "../utils/registry.js";
|
|
7
|
+
export async function add(hookName) {
|
|
8
|
+
const hook = registry.find((h) => h.name.toLowerCase() === hookName.toLowerCase());
|
|
9
|
+
if (!hook) {
|
|
10
|
+
console.log(pc.red(`✗ Hook "${hookName}" not found.`));
|
|
11
|
+
console.log(pc.dim("Run `airyhooks list` to see available hooks."));
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
const config = await getConfig();
|
|
15
|
+
const hooksDir = path.join(process.cwd(), config.hooksPath);
|
|
16
|
+
const hookDir = path.join(hooksDir, hook.name);
|
|
17
|
+
// Ensure hook subdirectory exists
|
|
18
|
+
await fs.ensureDir(hookDir);
|
|
19
|
+
// Check if hook already exists
|
|
20
|
+
const hookFilePath = path.join(hookDir, `${hook.name}.ts`);
|
|
21
|
+
if (await fs.pathExists(hookFilePath)) {
|
|
22
|
+
console.log(pc.yellow(`⚠ ${hook.name} already exists. Skipping.`));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Write hook implementation
|
|
26
|
+
const template = getHookTemplate(hook.name);
|
|
27
|
+
await fs.writeFile(hookFilePath, template);
|
|
28
|
+
// Write barrel export
|
|
29
|
+
const barrelFilePath = path.join(hookDir, "index.ts");
|
|
30
|
+
const barrelContent = `export { ${hook.name} } from "./${hook.name}.js";\n`;
|
|
31
|
+
await fs.writeFile(barrelFilePath, barrelContent);
|
|
32
|
+
console.log(pc.green(`✓ Added ${hook.name}`));
|
|
33
|
+
console.log(pc.dim(` → ${path.relative(process.cwd(), hookDir)}/`));
|
|
34
|
+
console.log(pc.dim(` ├── ${hook.name}.ts`));
|
|
35
|
+
console.log(pc.dim(` └── index.ts`));
|
|
36
|
+
if (hook.dependencies && hook.dependencies.length > 0) {
|
|
37
|
+
console.log(pc.dim(`\n Required dependencies:`));
|
|
38
|
+
hook.dependencies.forEach((dep) => {
|
|
39
|
+
console.log(pc.dim(` npm install ${dep}`));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAOA,wBAAsB,IAAI,kBAuCzB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import pc from "picocolors";
|
|
4
|
+
import prompts from "prompts";
|
|
5
|
+
import { DEFAULT_CONFIG } from "../utils/config.js";
|
|
6
|
+
export async function init() {
|
|
7
|
+
const configPath = path.join(process.cwd(), "airyhooks.json");
|
|
8
|
+
if (await fs.pathExists(configPath)) {
|
|
9
|
+
const response = await prompts({
|
|
10
|
+
initial: false,
|
|
11
|
+
message: "airyhooks.json already exists. Overwrite?",
|
|
12
|
+
name: "overwrite",
|
|
13
|
+
type: "confirm",
|
|
14
|
+
});
|
|
15
|
+
if (!response.overwrite) {
|
|
16
|
+
console.log(pc.yellow("Initialization cancelled."));
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const response = await prompts({
|
|
21
|
+
initial: DEFAULT_CONFIG.hooksPath,
|
|
22
|
+
message: "Where would you like to store your hooks?",
|
|
23
|
+
name: "hooksPath",
|
|
24
|
+
type: "text",
|
|
25
|
+
});
|
|
26
|
+
const hooksPath = response.hooksPath;
|
|
27
|
+
if (!hooksPath) {
|
|
28
|
+
console.log(pc.yellow("Initialization cancelled."));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const config = {
|
|
32
|
+
hooksPath,
|
|
33
|
+
};
|
|
34
|
+
await fs.writeJson(configPath, config, { spaces: 2 });
|
|
35
|
+
console.log(pc.green("✓ Created airyhooks.json"));
|
|
36
|
+
console.log(pc.dim(` Hooks will be added to ${hooksPath}`));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAwB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAE9D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,2CAA2C;YACpD,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC7B,OAAO,EAAE,cAAc,CAAC,SAAS;QACjC,OAAO,EAAE,2CAA2C;QACpD,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,SAA+B,CAAC;IAE3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAoB;QAC9B,SAAS;KACV,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAEtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,wBAAgB,IAAI,SASnB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
2
|
+
import { registry } from "../utils/registry.js";
|
|
3
|
+
export function list() {
|
|
4
|
+
console.log(pc.bold("\nAvailable hooks:\n"));
|
|
5
|
+
for (const hook of registry) {
|
|
6
|
+
console.log(` ${pc.cyan(hook.name)}`);
|
|
7
|
+
console.log(pc.dim(` ${hook.description}\n`));
|
|
8
|
+
}
|
|
9
|
+
console.log(pc.dim("Usage: airyhooks add <hook-name>\n"));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,UAAU,IAAI;IAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE7C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { add } from "./commands/add.js";
|
|
4
|
+
import { init } from "./commands/init.js";
|
|
5
|
+
import { list } from "./commands/list.js";
|
|
6
|
+
const program = new Command();
|
|
7
|
+
program
|
|
8
|
+
.name("airyhooks")
|
|
9
|
+
.description("Add React hooks to your project")
|
|
10
|
+
.version("0.1.0");
|
|
11
|
+
program
|
|
12
|
+
.command("init")
|
|
13
|
+
.description("Initialize airyhooks configuration")
|
|
14
|
+
.action(init);
|
|
15
|
+
program
|
|
16
|
+
.command("add")
|
|
17
|
+
.description("Add a hook to your project")
|
|
18
|
+
.argument("<hook>", "Name of the hook to add (e.g., useDebounce)")
|
|
19
|
+
.action(add);
|
|
20
|
+
program.command("list").description("List all available hooks").action(list);
|
|
21
|
+
program.parse();
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,IAAI,CAAC,CAAC;AAEhB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,4BAA4B,CAAC;KACzC,QAAQ,CAAC,QAAQ,EAAE,6CAA6C,CAAC;KACjE,MAAM,CAAC,GAAG,CAAC,CAAC;AAEf,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAE7E,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,eAE5B,CAAC;AAEF,wBAAsB,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC,CAW1D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export const DEFAULT_CONFIG = {
|
|
4
|
+
hooksPath: "src/hooks",
|
|
5
|
+
};
|
|
6
|
+
export async function getConfig() {
|
|
7
|
+
const configPath = path.join(process.cwd(), "airyhooks.json");
|
|
8
|
+
if (await fs.pathExists(configPath)) {
|
|
9
|
+
const userConfig = (await fs.readJson(configPath));
|
|
10
|
+
return { ...DEFAULT_CONFIG, ...userConfig };
|
|
11
|
+
}
|
|
12
|
+
return DEFAULT_CONFIG;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAE9D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CACnC,UAAU,CACX,CAA6B,CAAC;QAC/B,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-hook-template.d.ts","sourceRoot":"","sources":["../../src/utils/get-hook-template.ts"],"names":[],"mappings":"AAolCA,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQxD"}
|