@litlab/audx 0.0.1 → 0.5.5
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/README.md +96 -53
- package/dist/bin.js +1212 -0
- package/dist/cc-DgCkkqq8.js +13 -0
- package/dist/cc-he3fHS3P.js +12 -0
- package/dist/index.d.ts +723 -3
- package/dist/index.js +1534 -126
- package/dist/react.d.ts +583 -0
- package/dist/react.js +1556 -0
- package/package.json +64 -39
- package/schemas/pack.schema.json +4 -0
- package/schemas/patch.schema.json +857 -0
- package/dist/codegen/theme-codegen.d.ts +0 -12
- package/dist/codegen/theme-codegen.d.ts.map +0 -1
- package/dist/codegen/theme-codegen.js +0 -153
- package/dist/codegen/theme-codegen.js.map +0 -1
- package/dist/commands/add.d.ts +0 -2
- package/dist/commands/add.d.ts.map +0 -1
- package/dist/commands/add.js +0 -120
- package/dist/commands/add.js.map +0 -1
- package/dist/commands/diff.d.ts +0 -2
- package/dist/commands/diff.d.ts.map +0 -1
- package/dist/commands/diff.js +0 -103
- package/dist/commands/diff.js.map +0 -1
- package/dist/commands/generate.d.ts +0 -12
- package/dist/commands/generate.d.ts.map +0 -1
- package/dist/commands/generate.js +0 -96
- package/dist/commands/generate.js.map +0 -1
- package/dist/commands/init.d.ts +0 -2
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -79
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/list.d.ts +0 -14
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -93
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/remove.d.ts +0 -2
- package/dist/commands/remove.d.ts.map +0 -1
- package/dist/commands/remove.js +0 -71
- package/dist/commands/remove.js.map +0 -1
- package/dist/commands/theme.d.ts +0 -31
- package/dist/commands/theme.d.ts.map +0 -1
- package/dist/commands/theme.js +0 -142
- package/dist/commands/theme.js.map +0 -1
- package/dist/commands/update.d.ts +0 -2
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -123
- package/dist/commands/update.js.map +0 -1
- package/dist/core/alias-resolver.d.ts +0 -24
- package/dist/core/alias-resolver.d.ts.map +0 -1
- package/dist/core/alias-resolver.js +0 -87
- package/dist/core/alias-resolver.js.map +0 -1
- package/dist/core/config.d.ts +0 -21
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -43
- package/dist/core/config.js.map +0 -1
- package/dist/core/file-writer.d.ts +0 -14
- package/dist/core/file-writer.d.ts.map +0 -1
- package/dist/core/file-writer.js +0 -90
- package/dist/core/file-writer.js.map +0 -1
- package/dist/core/package-manager.d.ts +0 -3
- package/dist/core/package-manager.d.ts.map +0 -1
- package/dist/core/package-manager.js +0 -17
- package/dist/core/package-manager.js.map +0 -1
- package/dist/core/registry.d.ts +0 -18
- package/dist/core/registry.d.ts.map +0 -1
- package/dist/core/registry.js +0 -69
- package/dist/core/registry.js.map +0 -1
- package/dist/core/theme-manager.d.ts +0 -35
- package/dist/core/theme-manager.d.ts.map +0 -1
- package/dist/core/theme-manager.js +0 -94
- package/dist/core/theme-manager.js.map +0 -1
- package/dist/core/utils.d.ts +0 -22
- package/dist/core/utils.d.ts.map +0 -1
- package/dist/core/utils.js +0 -44
- package/dist/core/utils.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/types.d.ts +0 -116
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -43
- package/dist/types.js.map +0 -1
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { AliasMap, AudxConfig, ThemeConfig } from "../types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Generate the `sound-theme.ts` TypeScript source from a theme configuration.
|
|
4
|
-
*
|
|
5
|
-
* The generated file exports:
|
|
6
|
-
* - `SemanticSoundName` — union type of all semantic names present in the themes
|
|
7
|
-
* - `soundThemes` — object mapping theme names to their sound mappings
|
|
8
|
-
* - `play(name)` — plays the mapped sound in the active theme (no-ops for null)
|
|
9
|
-
* - `setSoundTheme(themeName)` — switches the active theme at runtime
|
|
10
|
-
*/
|
|
11
|
-
export declare function generate(themeConfig: ThemeConfig, aliasMap: AliasMap, config: AudxConfig): string;
|
|
12
|
-
//# sourceMappingURL=theme-codegen.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme-codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/theme-codegen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErE;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACvB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,UAAU,GAChB,MAAM,CAuER"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { resolveImport } from "../core/alias-resolver.js";
|
|
2
|
-
/**
|
|
3
|
-
* Generate the `sound-theme.ts` TypeScript source from a theme configuration.
|
|
4
|
-
*
|
|
5
|
-
* The generated file exports:
|
|
6
|
-
* - `SemanticSoundName` — union type of all semantic names present in the themes
|
|
7
|
-
* - `soundThemes` — object mapping theme names to their sound mappings
|
|
8
|
-
* - `play(name)` — plays the mapped sound in the active theme (no-ops for null)
|
|
9
|
-
* - `setSoundTheme(themeName)` — switches the active theme at runtime
|
|
10
|
-
*/
|
|
11
|
-
export function generate(themeConfig, aliasMap, config) {
|
|
12
|
-
// The generated file lives in libDir (e.g. "src/lib/sound-theme.ts")
|
|
13
|
-
const generatedFilePath = `${config.libDir}/sound-theme.ts`;
|
|
14
|
-
// Collect all unique semantic names across all themes
|
|
15
|
-
const semanticNames = collectSemanticNames(themeConfig);
|
|
16
|
-
// Collect all unique non-null sound file paths across all themes
|
|
17
|
-
const soundPaths = collectSoundPaths(themeConfig);
|
|
18
|
-
// Build import statements for each sound module
|
|
19
|
-
const imports = buildImports(soundPaths, generatedFilePath, aliasMap);
|
|
20
|
-
// Resolve the audio-engine import path
|
|
21
|
-
const audioEngineImport = resolveImport(aliasMap, generatedFilePath, `${config.libDir}/audio-engine.ts`);
|
|
22
|
-
const lines = [];
|
|
23
|
-
// File header
|
|
24
|
-
lines.push("// This file is auto-generated by audx. Do not edit manually.");
|
|
25
|
-
lines.push("");
|
|
26
|
-
// Audio engine import
|
|
27
|
-
lines.push(`import { playAudio } from "${audioEngineImport}";`);
|
|
28
|
-
// Sound module imports
|
|
29
|
-
for (const { importName, importPath } of imports) {
|
|
30
|
-
lines.push(`import { default as ${importName} } from "${importPath}";`);
|
|
31
|
-
}
|
|
32
|
-
lines.push("");
|
|
33
|
-
// SemanticSoundName type union
|
|
34
|
-
lines.push(buildSemanticSoundNameType(semanticNames));
|
|
35
|
-
lines.push("");
|
|
36
|
-
// soundThemes object
|
|
37
|
-
lines.push(buildSoundThemesObject(themeConfig, soundPaths, generatedFilePath, aliasMap));
|
|
38
|
-
lines.push("");
|
|
39
|
-
// Runtime state
|
|
40
|
-
lines.push(`let activeTheme = "${themeConfig.activeTheme}";`);
|
|
41
|
-
lines.push("");
|
|
42
|
-
// setSoundTheme function
|
|
43
|
-
lines.push("export function setSoundTheme(themeName: string): void {");
|
|
44
|
-
lines.push(" activeTheme = themeName;");
|
|
45
|
-
lines.push("}");
|
|
46
|
-
lines.push("");
|
|
47
|
-
// play function
|
|
48
|
-
lines.push("export function play(name: SemanticSoundName): void {");
|
|
49
|
-
lines.push(" const theme = soundThemes[activeTheme];");
|
|
50
|
-
lines.push(" if (!theme) return;");
|
|
51
|
-
lines.push(" const asset = theme[name];");
|
|
52
|
-
lines.push(" if (!asset) return;");
|
|
53
|
-
lines.push(" playAudio(asset.dataUri);");
|
|
54
|
-
lines.push("}");
|
|
55
|
-
lines.push("");
|
|
56
|
-
return lines.join("\n");
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Collect all unique semantic names across all themes.
|
|
60
|
-
*/
|
|
61
|
-
function collectSemanticNames(themeConfig) {
|
|
62
|
-
const names = new Set();
|
|
63
|
-
for (const mappings of Object.values(themeConfig.themes)) {
|
|
64
|
-
for (const key of Object.keys(mappings)) {
|
|
65
|
-
names.add(key);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return Array.from(names).sort();
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Collect all unique non-null sound file paths across all themes.
|
|
72
|
-
*/
|
|
73
|
-
function collectSoundPaths(themeConfig) {
|
|
74
|
-
const paths = new Set();
|
|
75
|
-
for (const mappings of Object.values(themeConfig.themes)) {
|
|
76
|
-
for (const value of Object.values(mappings)) {
|
|
77
|
-
if (value !== null) {
|
|
78
|
-
paths.add(value);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return Array.from(paths).sort();
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Derive a safe import variable name from a sound file path.
|
|
86
|
-
* e.g. "src/sounds/click-001.ts" → "click001Sound"
|
|
87
|
-
*/
|
|
88
|
-
function deriveImportName(soundPath) {
|
|
89
|
-
const fileName = soundPath.split("/").pop() ?? soundPath;
|
|
90
|
-
const baseName = fileName.replace(/\.(tsx?|jsx?|mjs|cjs)$/, "");
|
|
91
|
-
// Convert kebab-case to camelCase and append "Sound"
|
|
92
|
-
const camel = baseName
|
|
93
|
-
.split("-")
|
|
94
|
-
.map((part, i) => i === 0
|
|
95
|
-
? part.toLowerCase()
|
|
96
|
-
: part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())
|
|
97
|
-
.join("");
|
|
98
|
-
return `${camel}Sound`;
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Build import statements for all sound modules.
|
|
102
|
-
*/
|
|
103
|
-
function buildImports(soundPaths, generatedFilePath, aliasMap) {
|
|
104
|
-
return soundPaths.map((soundPath) => {
|
|
105
|
-
const importPath = resolveImport(aliasMap, generatedFilePath, soundPath);
|
|
106
|
-
const importName = deriveImportName(soundPath);
|
|
107
|
-
return { importName, importPath, originalPath: soundPath };
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Build the `SemanticSoundName` type union string.
|
|
112
|
-
*/
|
|
113
|
-
function buildSemanticSoundNameType(semanticNames) {
|
|
114
|
-
if (semanticNames.length === 0) {
|
|
115
|
-
return "export type SemanticSoundName = never;";
|
|
116
|
-
}
|
|
117
|
-
const members = semanticNames.map((n) => `"${n}"`).join(" | ");
|
|
118
|
-
return `export type SemanticSoundName = ${members};`;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Build the `soundThemes` object source code.
|
|
122
|
-
*/
|
|
123
|
-
function buildSoundThemesObject(themeConfig, soundPaths, generatedFilePath, aliasMap) {
|
|
124
|
-
// Build a lookup from original path → import variable name
|
|
125
|
-
const pathToImportName = new Map();
|
|
126
|
-
for (const soundPath of soundPaths) {
|
|
127
|
-
pathToImportName.set(soundPath, deriveImportName(soundPath));
|
|
128
|
-
}
|
|
129
|
-
const lines = [];
|
|
130
|
-
lines.push("export const soundThemes: Record<string, Record<SemanticSoundName, { dataUri: string } | null>> = {");
|
|
131
|
-
for (const [themeName, mappings] of Object.entries(themeConfig.themes)) {
|
|
132
|
-
lines.push(` "${themeName}": {`);
|
|
133
|
-
const sortedEntries = Object.entries(mappings).sort(([a], [b]) => a.localeCompare(b));
|
|
134
|
-
for (const [semanticName, soundPath] of sortedEntries) {
|
|
135
|
-
if (soundPath === null) {
|
|
136
|
-
lines.push(` "${semanticName}": null,`);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
const importName = pathToImportName.get(soundPath);
|
|
140
|
-
if (importName) {
|
|
141
|
-
lines.push(` "${semanticName}": ${importName},`);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
lines.push(` "${semanticName}": null,`);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
lines.push(" },");
|
|
149
|
-
}
|
|
150
|
-
lines.push("};");
|
|
151
|
-
return lines.join("\n");
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=theme-codegen.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme-codegen.js","sourceRoot":"","sources":["../../src/codegen/theme-codegen.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/add.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAiEA,wBAAsB,UAAU,CAC/B,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAwEf"}
|
package/dist/commands/add.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { existsSync } from "node:fs";
|
|
2
|
-
import { basename, dirname, join } from "node:path";
|
|
3
|
-
import { createInterface } from "node:readline";
|
|
4
|
-
import { loadFromTsConfig } from "../core/alias-resolver.js";
|
|
5
|
-
import * as ConfigManager from "../core/config.js";
|
|
6
|
-
import { writeRegistryFile } from "../core/file-writer.js";
|
|
7
|
-
import { fetchItem } from "../core/registry.js";
|
|
8
|
-
/**
|
|
9
|
-
* Prompt the user with a yes/no question via stdin/stdout.
|
|
10
|
-
* Returns `true` when the user answers y/yes (case-insensitive).
|
|
11
|
-
*/
|
|
12
|
-
function confirm(question) {
|
|
13
|
-
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
14
|
-
return new Promise((resolve) => {
|
|
15
|
-
rl.question(question, (answer) => {
|
|
16
|
-
rl.close();
|
|
17
|
-
resolve(/^y(es)?$/i.test(answer.trim()));
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Check whether a registry file would conflict with an existing file on disk.
|
|
23
|
-
* Returns the resolved target path if a conflict exists, otherwise null.
|
|
24
|
-
*/
|
|
25
|
-
function getConflictPath(file, targetDir, config) {
|
|
26
|
-
const fileName = basename(file.path);
|
|
27
|
-
let targetPath;
|
|
28
|
-
if (file.type === "registry:hook") {
|
|
29
|
-
const hooksDir = join(dirname(config.libDir), "hooks");
|
|
30
|
-
targetPath = join(hooksDir, fileName);
|
|
31
|
-
}
|
|
32
|
-
else if (file.type === "registry:lib") {
|
|
33
|
-
const normalised = file.path.replace(/\\/g, "/");
|
|
34
|
-
if (normalised.includes("/sounds/")) {
|
|
35
|
-
targetPath = join(targetDir, fileName);
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
targetPath = join(config.libDir, fileName);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
targetPath = join(targetDir, fileName);
|
|
43
|
-
}
|
|
44
|
-
return existsSync(targetPath) ? targetPath : null;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Determine whether a registry file is a shared dependency (lib or hook)
|
|
48
|
-
* rather than the primary sound module.
|
|
49
|
-
*/
|
|
50
|
-
function isDependencyFile(file) {
|
|
51
|
-
if (file.type === "registry:hook")
|
|
52
|
-
return true;
|
|
53
|
-
if (file.type === "registry:lib") {
|
|
54
|
-
const normalised = file.path.replace(/\\/g, "/");
|
|
55
|
-
return !normalised.includes("/sounds/");
|
|
56
|
-
}
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
export async function addCommand(sounds, projectRoot) {
|
|
60
|
-
// Requirement 3.8 — config must exist
|
|
61
|
-
if (!ConfigManager.exists(projectRoot)) {
|
|
62
|
-
console.error("Configuration not found. Run 'audx init' first.");
|
|
63
|
-
process.exit(1);
|
|
64
|
-
}
|
|
65
|
-
const config = ConfigManager.read(projectRoot);
|
|
66
|
-
const aliasMap = loadFromTsConfig(projectRoot);
|
|
67
|
-
const updatedConfig = {
|
|
68
|
-
...config,
|
|
69
|
-
installedSounds: { ...config.installedSounds },
|
|
70
|
-
};
|
|
71
|
-
for (const soundName of sounds) {
|
|
72
|
-
try {
|
|
73
|
-
// Requirement 3.1 — fetch registry item
|
|
74
|
-
const item = await fetchItem(config.registryUrl, soundName);
|
|
75
|
-
const targetDir = join(projectRoot, config.soundDir);
|
|
76
|
-
const writtenFiles = [];
|
|
77
|
-
for (const file of item.files) {
|
|
78
|
-
// Requirement 3.5 — skip dependency files that already exist
|
|
79
|
-
if (isDependencyFile(file)) {
|
|
80
|
-
const conflictPath = getConflictPath(file, targetDir, config);
|
|
81
|
-
if (conflictPath) {
|
|
82
|
-
writtenFiles.push(conflictPath);
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
// Requirement 3.9 — prompt on file conflicts for non-dependency files
|
|
88
|
-
const conflictPath = getConflictPath(file, targetDir, config);
|
|
89
|
-
if (conflictPath) {
|
|
90
|
-
const overwrite = await confirm(`File '${conflictPath}' already exists. Overwrite? (y/N) `);
|
|
91
|
-
if (!overwrite) {
|
|
92
|
-
console.log(` Skipped ${conflictPath}`);
|
|
93
|
-
continue;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
// Requirement 3.2, 3.3 — write file with import rewriting
|
|
98
|
-
const writtenPath = writeRegistryFile(file, targetDir, aliasMap, config);
|
|
99
|
-
if (writtenPath) {
|
|
100
|
-
writtenFiles.push(writtenPath);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// Requirement 3.6 — update installedSounds in config
|
|
104
|
-
updatedConfig.installedSounds[soundName] = {
|
|
105
|
-
files: writtenFiles,
|
|
106
|
-
installedAt: new Date().toISOString(),
|
|
107
|
-
};
|
|
108
|
-
console.log(`✔ Added ${soundName}`);
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
// Requirement 3.7 — handle HTTP errors with sound name and status code
|
|
112
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
113
|
-
console.error(`✘ ${message}`);
|
|
114
|
-
process.exit(2);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
// Write updated config once after all sounds are processed
|
|
118
|
-
ConfigManager.write(projectRoot, updatedConfig);
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=add.js.map
|
package/dist/commands/add.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD;;;GAGG;AACH,SAAS,OAAO,CAAC,QAAgB;IAChC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAChC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CACvB,IAAkB,EAClB,SAAiB,EACjB,MAAkB;IAElB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,UAAkB,CAAC;IACvB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACvD,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACP,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;SAAM,CAAC;QACP,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAkB;IAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC/B,MAAgB,EAChB,WAAmB;IAEnB,sCAAsC;IACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG;QACrB,GAAG,MAAM;QACT,eAAe,EAAE,EAAE,GAAG,MAAM,CAAC,eAAe,EAAE;KAC9C,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC;YACJ,wCAAwC;YACxC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC/B,6DAA6D;gBAC7D,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC9D,IAAI,YAAY,EAAE,CAAC;wBAClB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBAChC,SAAS;oBACV,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,sEAAsE;oBACtE,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC9D,IAAI,YAAY,EAAE,CAAC;wBAClB,MAAM,SAAS,GAAG,MAAM,OAAO,CAC9B,SAAS,YAAY,qCAAqC,CAC1D,CAAC;wBACF,IAAI,CAAC,SAAS,EAAE,CAAC;4BAChB,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;4BACzC,SAAS;wBACV,CAAC;oBACF,CAAC;gBACF,CAAC;gBAED,0DAA0D;gBAC1D,MAAM,WAAW,GAAG,iBAAiB,CACpC,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,MAAM,CACN,CAAC;gBACF,IAAI,WAAW,EAAE,CAAC;oBACjB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;YAED,qDAAqD;YACrD,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG;gBAC1C,KAAK,EAAE,YAAY;gBACnB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,uEAAuE;YACvE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IAED,2DAA2D;IAC3D,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/commands/diff.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AA+EA,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CpE"}
|
package/dist/commands/diff.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import { basename, dirname, join } from "node:path";
|
|
3
|
-
import * as ConfigManager from "../core/config.js";
|
|
4
|
-
import { fetchItem } from "../core/registry.js";
|
|
5
|
-
/**
|
|
6
|
-
* Resolve the expected local file path for a registry file based on its type
|
|
7
|
-
* and the project config.
|
|
8
|
-
*/
|
|
9
|
-
function resolveLocalPath(file, config, projectRoot) {
|
|
10
|
-
const fileName = basename(file.path);
|
|
11
|
-
if (file.type === "registry:hook") {
|
|
12
|
-
const hooksDir = join(dirname(config.libDir), "hooks");
|
|
13
|
-
return join(projectRoot, hooksDir, fileName);
|
|
14
|
-
}
|
|
15
|
-
if (file.type === "registry:lib") {
|
|
16
|
-
const normalised = file.path.replace(/\\/g, "/");
|
|
17
|
-
if (normalised.includes("/sounds/")) {
|
|
18
|
-
return join(projectRoot, config.soundDir, fileName);
|
|
19
|
-
}
|
|
20
|
-
return join(projectRoot, config.libDir, fileName);
|
|
21
|
-
}
|
|
22
|
-
return join(projectRoot, config.soundDir, fileName);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Read local file content, returning null if the file cannot be read.
|
|
26
|
-
*/
|
|
27
|
-
function readLocalFile(filePath) {
|
|
28
|
-
try {
|
|
29
|
-
return readFileSync(filePath, "utf-8");
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Compare registry file content against local file content.
|
|
37
|
-
* Returns true if the files differ (ignoring import path differences
|
|
38
|
-
* is not feasible here — we compare raw registry content against local).
|
|
39
|
-
*
|
|
40
|
-
* Since local files have rewritten imports, we only compare the sound
|
|
41
|
-
* module files (the primary files in /sounds/) by checking if the local
|
|
42
|
-
* file exists and has different content length or key data sections.
|
|
43
|
-
* For a pragmatic approach, we compare the full content of each registry
|
|
44
|
-
* file against the local file. Note: import-rewritten files will always
|
|
45
|
-
* show as different if aliases differ from registry defaults, but this
|
|
46
|
-
* is the expected behavior for detecting upstream changes.
|
|
47
|
-
*/
|
|
48
|
-
function hasChanges(registryFiles, config, projectRoot) {
|
|
49
|
-
for (const file of registryFiles) {
|
|
50
|
-
const localPath = resolveLocalPath(file, config, projectRoot);
|
|
51
|
-
const localContent = readLocalFile(localPath);
|
|
52
|
-
if (localContent === null) {
|
|
53
|
-
// File missing locally — counts as a difference
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
// Compare registry content against local content
|
|
57
|
-
if (file.content !== localContent) {
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
export async function diffCommand(projectRoot) {
|
|
64
|
-
// Config must exist
|
|
65
|
-
if (!ConfigManager.exists(projectRoot)) {
|
|
66
|
-
console.error("Configuration not found. Run 'audx init' first.");
|
|
67
|
-
process.exit(1);
|
|
68
|
-
}
|
|
69
|
-
const config = ConfigManager.read(projectRoot);
|
|
70
|
-
const installedNames = Object.keys(config.installedSounds);
|
|
71
|
-
if (installedNames.length === 0) {
|
|
72
|
-
console.log("No sounds installed.");
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
const changedSounds = [];
|
|
76
|
-
for (const soundName of installedNames) {
|
|
77
|
-
try {
|
|
78
|
-
// Requirement 10.1 — fetch current registry item for each installed sound
|
|
79
|
-
const item = await fetchItem(config.registryUrl, soundName);
|
|
80
|
-
// Compare fetched file content against local files
|
|
81
|
-
if (hasChanges(item.files, config, projectRoot)) {
|
|
82
|
-
changedSounds.push(soundName);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
// Requirement 10.7 — continue on individual fetch failures with warning
|
|
87
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
88
|
-
console.warn(`⚠ Could not check '${soundName}': ${message}`);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// Requirement 10.2 — display changed sound names
|
|
92
|
-
if (changedSounds.length > 0) {
|
|
93
|
-
console.log("Sounds with available updates:");
|
|
94
|
-
for (const name of changedSounds) {
|
|
95
|
-
console.log(` • ${name}`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
// Requirement 10.3 — all up to date message
|
|
100
|
-
console.log("All sounds are up to date.");
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=diff.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `audx generate "<prompt>"` command handler.
|
|
3
|
-
*
|
|
4
|
-
* Accepts a prompt string, optional --name and --duration flags.
|
|
5
|
-
* Generates a sound via the API, writes a Sound_Module file, and
|
|
6
|
-
* updates the config manifest.
|
|
7
|
-
*/
|
|
8
|
-
export declare function generateCommand(prompt: string, options: {
|
|
9
|
-
name?: string;
|
|
10
|
-
duration?: string;
|
|
11
|
-
}, projectRoot: string): Promise<void>;
|
|
12
|
-
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AA+CA;;;;;;GAMG;AACH,wBAAsB,eAAe,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAgEf"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import * as ConfigManager from "../core/config.js";
|
|
4
|
-
import { generateSound } from "../core/registry.js";
|
|
5
|
-
import { deriveKebabName, encodeAudioToDataUri } from "../core/utils.js";
|
|
6
|
-
/**
|
|
7
|
-
* Convert a kebab-case name to a camelCase variable name suffixed with "Audio".
|
|
8
|
-
* e.g. "laser-blast" → "laserBlastAudio"
|
|
9
|
-
*/
|
|
10
|
-
function toCamelCaseAudioVar(kebab) {
|
|
11
|
-
const camel = kebab.replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase());
|
|
12
|
-
return `${camel}Audio`;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Build the Sound_Module TypeScript source for a generated sound.
|
|
16
|
-
*/
|
|
17
|
-
function buildSoundModule(name, dataUri, duration) {
|
|
18
|
-
const varName = toCamelCaseAudioVar(name);
|
|
19
|
-
const dur = duration ?? 2;
|
|
20
|
-
const lines = [
|
|
21
|
-
`import type { AudioAsset } from "@/lib/audio-types";`,
|
|
22
|
-
``,
|
|
23
|
-
`export const ${varName}: AudioAsset = {`,
|
|
24
|
-
` name: "${name}",`,
|
|
25
|
-
` dataUri:`,
|
|
26
|
-
` "${dataUri}",`,
|
|
27
|
-
` duration: ${dur},`,
|
|
28
|
-
` format: "mp3",`,
|
|
29
|
-
` license: "MIT",`,
|
|
30
|
-
` author: "Generated",`,
|
|
31
|
-
`};`,
|
|
32
|
-
``,
|
|
33
|
-
];
|
|
34
|
-
return lines.join("\n");
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* `audx generate "<prompt>"` command handler.
|
|
38
|
-
*
|
|
39
|
-
* Accepts a prompt string, optional --name and --duration flags.
|
|
40
|
-
* Generates a sound via the API, writes a Sound_Module file, and
|
|
41
|
-
* updates the config manifest.
|
|
42
|
-
*/
|
|
43
|
-
export async function generateCommand(prompt, options, projectRoot) {
|
|
44
|
-
// Requirement 8.8 — config must exist
|
|
45
|
-
if (!ConfigManager.exists(projectRoot)) {
|
|
46
|
-
console.error("Configuration not found. Run 'audx init' first.");
|
|
47
|
-
process.exit(1);
|
|
48
|
-
}
|
|
49
|
-
const config = ConfigManager.read(projectRoot);
|
|
50
|
-
// Requirement 8.2 / 8.3 — derive or use provided name
|
|
51
|
-
const soundName = options.name ?? deriveKebabName(prompt);
|
|
52
|
-
// Build API params
|
|
53
|
-
const params = { text: prompt };
|
|
54
|
-
// Requirement 8.4 — optional duration
|
|
55
|
-
if (options.duration !== undefined) {
|
|
56
|
-
const dur = Number(options.duration);
|
|
57
|
-
if (Number.isNaN(dur) || dur < 0.5 || dur > 22) {
|
|
58
|
-
console.error("Duration must be a number between 0.5 and 22.");
|
|
59
|
-
process.exit(1);
|
|
60
|
-
}
|
|
61
|
-
params.duration_seconds = dur;
|
|
62
|
-
}
|
|
63
|
-
try {
|
|
64
|
-
// Requirement 8.1 — POST to generation API
|
|
65
|
-
console.log(`Generating sound "${soundName}" from prompt: "${prompt}"...`);
|
|
66
|
-
const audioBuffer = await generateSound(config.registryUrl, params);
|
|
67
|
-
// Requirement 8.5 — encode as base64 data URI and create Sound_Module
|
|
68
|
-
const dataUri = encodeAudioToDataUri(audioBuffer);
|
|
69
|
-
const moduleContent = buildSoundModule(soundName, dataUri, params.duration_seconds);
|
|
70
|
-
// Write to soundDir
|
|
71
|
-
const targetDir = join(projectRoot, config.soundDir);
|
|
72
|
-
mkdirSync(targetDir, { recursive: true });
|
|
73
|
-
const filePath = join(targetDir, `${soundName}.ts`);
|
|
74
|
-
writeFileSync(filePath, moduleContent, "utf-8");
|
|
75
|
-
// Requirement 8.6 — update installedSounds in config
|
|
76
|
-
const updatedConfig = {
|
|
77
|
-
...config,
|
|
78
|
-
installedSounds: {
|
|
79
|
-
...config.installedSounds,
|
|
80
|
-
[soundName]: {
|
|
81
|
-
files: [filePath],
|
|
82
|
-
installedAt: new Date().toISOString(),
|
|
83
|
-
},
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
ConfigManager.write(projectRoot, updatedConfig);
|
|
87
|
-
console.log(`✔ Generated and installed ${soundName}`);
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
// Requirement 8.7 — handle API errors
|
|
91
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
92
|
-
console.error(`✘ ${message}`);
|
|
93
|
-
process.exit(2);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAoDA,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CpE"}
|
package/dist/commands/init.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { existsSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { createInterface } from "node:readline";
|
|
4
|
-
import { loadFromTsConfig } from "../core/alias-resolver.js";
|
|
5
|
-
import * as ConfigManager from "../core/config.js";
|
|
6
|
-
import { detectPackageManager } from "../core/package-manager.js";
|
|
7
|
-
/**
|
|
8
|
-
* Prompt the user with a yes/no question via stdin/stdout.
|
|
9
|
-
* Returns `true` when the user answers y/yes (case-insensitive).
|
|
10
|
-
*/
|
|
11
|
-
function confirm(question) {
|
|
12
|
-
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
13
|
-
return new Promise((resolve) => {
|
|
14
|
-
rl.question(question, (answer) => {
|
|
15
|
-
rl.close();
|
|
16
|
-
resolve(/^y(es)?$/i.test(answer.trim()));
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Build default alias values from the detected alias map.
|
|
22
|
-
* If the tsconfig defines a wildcard alias like `@/*`, use `@/lib`, `@/hooks`, `@/sounds`.
|
|
23
|
-
* Otherwise fall back to relative directory paths.
|
|
24
|
-
*/
|
|
25
|
-
function resolveAliases(aliasMap) {
|
|
26
|
-
if (aliasMap.hasAliases) {
|
|
27
|
-
for (const pattern of aliasMap.patterns) {
|
|
28
|
-
if (pattern.alias.endsWith("/*") && pattern.paths.length > 0) {
|
|
29
|
-
const prefix = pattern.alias.slice(0, -1); // "@/*" → "@/"
|
|
30
|
-
return {
|
|
31
|
-
lib: `${prefix}lib`,
|
|
32
|
-
hooks: `${prefix}hooks`,
|
|
33
|
-
sounds: `${prefix}sounds`,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
lib: "src/lib",
|
|
40
|
-
hooks: "src/hooks",
|
|
41
|
-
sounds: "src/sounds",
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
export async function initCommand(projectRoot) {
|
|
45
|
-
// Requirement 2.6 — must be inside a Node.js project
|
|
46
|
-
if (!existsSync(join(projectRoot, "package.json"))) {
|
|
47
|
-
console.error("No package.json found. Run 'audx init' inside a Node.js project.");
|
|
48
|
-
process.exit(1);
|
|
49
|
-
}
|
|
50
|
-
// Requirement 2.5 — prompt before overwriting existing config
|
|
51
|
-
if (ConfigManager.exists(projectRoot)) {
|
|
52
|
-
const overwrite = await confirm("audx.config.json already exists. Overwrite? (y/N) ");
|
|
53
|
-
if (!overwrite) {
|
|
54
|
-
console.log("Init cancelled.");
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
// Requirement 2.2 — detect package manager
|
|
59
|
-
const packageManager = detectPackageManager(projectRoot);
|
|
60
|
-
// Requirement 2.3 — read tsconfig aliases
|
|
61
|
-
const aliasMap = loadFromTsConfig(projectRoot);
|
|
62
|
-
const aliases = resolveAliases(aliasMap);
|
|
63
|
-
// Requirement 2.4 — build default config
|
|
64
|
-
const config = {
|
|
65
|
-
$schema: "https://audx.site/schema/config.json",
|
|
66
|
-
soundDir: "src/sounds",
|
|
67
|
-
libDir: "src/lib",
|
|
68
|
-
registryUrl: "https://audx.site",
|
|
69
|
-
packageManager,
|
|
70
|
-
aliases,
|
|
71
|
-
installedSounds: {},
|
|
72
|
-
};
|
|
73
|
-
// Requirement 2.1 — write config
|
|
74
|
-
ConfigManager.write(projectRoot, config);
|
|
75
|
-
console.log("✔ Created audx.config.json");
|
|
76
|
-
console.log(` Package manager: ${packageManager}`);
|
|
77
|
-
console.log(` Aliases: ${aliasMap.hasAliases ? "detected from tsconfig" : "using default paths"}`);
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|