@contentrain/query 4.0.0 → 5.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.
- package/LICENSE +21 -21
- package/README.md +253 -260
- package/dist/cli.cjs +78 -0
- package/dist/cli.d.cts +1 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +81 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/generate-C5Qz8qKt.mjs +855 -0
- package/dist/generate-C5Qz8qKt.mjs.map +1 -0
- package/dist/generate-CPKYh6ZU.cjs +858 -0
- package/dist/generator/generate.cjs +3 -0
- package/dist/generator/generate.d.cts +14 -0
- package/dist/generator/generate.d.cts.map +1 -0
- package/dist/generator/generate.d.mts +14 -0
- package/dist/generator/generate.d.mts.map +1 -0
- package/dist/generator/generate.mjs +2 -0
- package/dist/index.cjs +356 -0
- package/dist/index.d.cts +108 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +108 -565
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +349 -30
- package/dist/index.mjs.map +1 -0
- package/package.json +53 -38
- package/dist/index.d.ts +0 -565
- package/dist/index.js +0 -30
package/dist/cli.mjs
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { t as generate } from "./generate-C5Qz8qKt.mjs";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
import { watch } from "node:fs";
|
|
5
|
+
//#region src/cli.ts
|
|
6
|
+
async function main() {
|
|
7
|
+
const args = process.argv.slice(2);
|
|
8
|
+
if (args[0] !== "generate" && args.length === 0) {
|
|
9
|
+
console.log("Usage: contentrain-query generate [--root <path>] [--watch]");
|
|
10
|
+
console.log("");
|
|
11
|
+
console.log("Commands:");
|
|
12
|
+
console.log(" generate Generate typed client from .contentrain/ project files");
|
|
13
|
+
console.log("");
|
|
14
|
+
console.log("Options:");
|
|
15
|
+
console.log(" --root Project root directory (default: cwd)");
|
|
16
|
+
console.log(" --watch Watch for changes and regenerate automatically");
|
|
17
|
+
process.exit(0);
|
|
18
|
+
}
|
|
19
|
+
const command = args[0] === "generate" ? "generate" : args[0];
|
|
20
|
+
if (command !== "generate") {
|
|
21
|
+
console.error(`Unknown command: ${command}`);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
const rootIdx = args.indexOf("--root");
|
|
25
|
+
const rootArg = rootIdx !== -1 ? args[rootIdx + 1] : void 0;
|
|
26
|
+
const projectRoot = rootArg ? resolve(rootArg) : process.cwd();
|
|
27
|
+
const watchMode = args.includes("--watch");
|
|
28
|
+
try {
|
|
29
|
+
const result = await generate({ projectRoot });
|
|
30
|
+
console.log(`@contentrain/query — generated client`);
|
|
31
|
+
console.log(` Models: ${result.typesCount}`);
|
|
32
|
+
console.log(` Data modules: ${result.dataModulesCount}`);
|
|
33
|
+
console.log(` Files: ${result.generatedFiles.length}`);
|
|
34
|
+
if (result.packageJsonUpdated) console.log(` package.json: #contentrain imports added`);
|
|
35
|
+
console.log(` Output: .contentrain/client/`);
|
|
36
|
+
if (watchMode) startWatch(projectRoot);
|
|
37
|
+
} catch (err) {
|
|
38
|
+
console.error("Generate failed:", err.message);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function startWatch(projectRoot) {
|
|
43
|
+
const crDir = join(projectRoot, ".contentrain");
|
|
44
|
+
const modelsDir = join(crDir, "models");
|
|
45
|
+
const contentDir = join(crDir, "content");
|
|
46
|
+
const configFile = join(crDir, "config.json");
|
|
47
|
+
let debounceTimer = null;
|
|
48
|
+
const regenerate = async () => {
|
|
49
|
+
try {
|
|
50
|
+
const result = await generate({ projectRoot });
|
|
51
|
+
console.log(` Regenerated: ${result.typesCount} models, ${result.dataModulesCount} data modules`);
|
|
52
|
+
} catch (err) {
|
|
53
|
+
console.error(" Regenerate failed:", err.message);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const onChange = (_event, filename) => {
|
|
57
|
+
if (filename && filename.startsWith("client")) return;
|
|
58
|
+
if (debounceTimer) clearTimeout(debounceTimer);
|
|
59
|
+
debounceTimer = setTimeout(() => {
|
|
60
|
+
console.log(` Change detected: ${filename ?? "unknown"}`);
|
|
61
|
+
regenerate();
|
|
62
|
+
}, 150);
|
|
63
|
+
};
|
|
64
|
+
try {
|
|
65
|
+
watch(modelsDir, { recursive: true }, onChange);
|
|
66
|
+
} catch {}
|
|
67
|
+
try {
|
|
68
|
+
watch(contentDir, { recursive: true }, onChange);
|
|
69
|
+
} catch {}
|
|
70
|
+
try {
|
|
71
|
+
watch(configFile, onChange);
|
|
72
|
+
} catch {}
|
|
73
|
+
console.log("");
|
|
74
|
+
console.log("Watching for changes in .contentrain/ ...");
|
|
75
|
+
console.log("Press Ctrl+C to stop.");
|
|
76
|
+
}
|
|
77
|
+
main();
|
|
78
|
+
//#endregion
|
|
79
|
+
export {};
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=cli.mjs.map
|
package/dist/cli.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.mjs","names":[],"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { resolve, join } from 'node:path'\nimport { watch } from 'node:fs'\nimport { generate } from './generator/generate.js'\n\nasync function main() {\n const args = process.argv.slice(2)\n\n if (args[0] !== 'generate' && args.length === 0) {\n console.log('Usage: contentrain-query generate [--root <path>] [--watch]')\n console.log('')\n console.log('Commands:')\n console.log(' generate Generate typed client from .contentrain/ project files')\n console.log('')\n console.log('Options:')\n console.log(' --root Project root directory (default: cwd)')\n console.log(' --watch Watch for changes and regenerate automatically')\n process.exit(0)\n }\n\n const command = args[0] === 'generate' ? 'generate' : args[0]\n\n if (command !== 'generate') {\n console.error(`Unknown command: ${command}`)\n process.exit(1)\n }\n\n const rootIdx = args.indexOf('--root')\n const rootArg = rootIdx !== -1 ? args[rootIdx + 1] : undefined\n const projectRoot = rootArg ? resolve(rootArg) : process.cwd()\n const watchMode = args.includes('--watch')\n\n try {\n const result = await generate({ projectRoot })\n\n console.log(`@contentrain/query — generated client`)\n console.log(` Models: ${result.typesCount}`)\n console.log(` Data modules: ${result.dataModulesCount}`)\n console.log(` Files: ${result.generatedFiles.length}`)\n if (result.packageJsonUpdated) {\n console.log(` package.json: #contentrain imports added`)\n }\n console.log(` Output: .contentrain/client/`)\n\n if (watchMode) {\n startWatch(projectRoot)\n }\n } catch (err) {\n console.error('Generate failed:', (err as Error).message)\n process.exit(1)\n }\n}\n\nfunction startWatch(projectRoot: string) {\n const crDir = join(projectRoot, '.contentrain')\n const modelsDir = join(crDir, 'models')\n const contentDir = join(crDir, 'content')\n const configFile = join(crDir, 'config.json')\n\n let debounceTimer: ReturnType<typeof setTimeout> | null = null\n\n const regenerate = async () => {\n try {\n const result = await generate({ projectRoot })\n console.log(` Regenerated: ${result.typesCount} models, ${result.dataModulesCount} data modules`)\n } catch (err) {\n console.error(' Regenerate failed:', (err as Error).message)\n }\n }\n\n const onChange = (_event: string, filename: string | null) => {\n // Skip changes in the client output directory\n if (filename && filename.startsWith('client')) return\n\n if (debounceTimer) clearTimeout(debounceTimer)\n debounceTimer = setTimeout(() => {\n console.log(` Change detected: ${filename ?? 'unknown'}`)\n regenerate()\n }, 150)\n }\n\n try { watch(modelsDir, { recursive: true }, onChange) } catch { /* dir may not exist */ }\n try { watch(contentDir, { recursive: true }, onChange) } catch { /* dir may not exist */ }\n try { watch(configFile, onChange) } catch { /* file may not exist */ }\n\n console.log('')\n console.log('Watching for changes in .contentrain/ ...')\n console.log('Press Ctrl+C to stop.')\n}\n\nmain()\n"],"mappings":";;;;;AAMA,eAAe,OAAO;CACpB,MAAM,OAAO,QAAQ,KAAK,MAAM,EAAE;AAElC,KAAI,KAAK,OAAO,cAAc,KAAK,WAAW,GAAG;AAC/C,UAAQ,IAAI,8DAA8D;AAC1E,UAAQ,IAAI,GAAG;AACf,UAAQ,IAAI,YAAY;AACxB,UAAQ,IAAI,uEAAuE;AACnF,UAAQ,IAAI,GAAG;AACf,UAAQ,IAAI,WAAW;AACvB,UAAQ,IAAI,sDAAsD;AAClE,UAAQ,IAAI,+DAA+D;AAC3E,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,KAAK,OAAO,aAAa,aAAa,KAAK;AAE3D,KAAI,YAAY,YAAY;AAC1B,UAAQ,MAAM,oBAAoB,UAAU;AAC5C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,KAAK,QAAQ,SAAS;CACtC,MAAM,UAAU,YAAY,KAAK,KAAK,UAAU,KAAK,KAAA;CACrD,MAAM,cAAc,UAAU,QAAQ,QAAQ,GAAG,QAAQ,KAAK;CAC9D,MAAM,YAAY,KAAK,SAAS,UAAU;AAE1C,KAAI;EACF,MAAM,SAAS,MAAM,SAAS,EAAE,aAAa,CAAC;AAE9C,UAAQ,IAAI,wCAAwC;AACpD,UAAQ,IAAI,mBAAmB,OAAO,aAAa;AACnD,UAAQ,IAAI,mBAAmB,OAAO,mBAAmB;AACzD,UAAQ,IAAI,mBAAmB,OAAO,eAAe,SAAS;AAC9D,MAAI,OAAO,mBACT,SAAQ,IAAI,6CAA6C;AAE3D,UAAQ,IAAI,uCAAuC;AAEnD,MAAI,UACF,YAAW,YAAY;UAElB,KAAK;AACZ,UAAQ,MAAM,oBAAqB,IAAc,QAAQ;AACzD,UAAQ,KAAK,EAAE;;;AAInB,SAAS,WAAW,aAAqB;CACvC,MAAM,QAAQ,KAAK,aAAa,eAAe;CAC/C,MAAM,YAAY,KAAK,OAAO,SAAS;CACvC,MAAM,aAAa,KAAK,OAAO,UAAU;CACzC,MAAM,aAAa,KAAK,OAAO,cAAc;CAE7C,IAAI,gBAAsD;CAE1D,MAAM,aAAa,YAAY;AAC7B,MAAI;GACF,MAAM,SAAS,MAAM,SAAS,EAAE,aAAa,CAAC;AAC9C,WAAQ,IAAI,kBAAkB,OAAO,WAAW,WAAW,OAAO,iBAAiB,eAAe;WAC3F,KAAK;AACZ,WAAQ,MAAM,wBAAyB,IAAc,QAAQ;;;CAIjE,MAAM,YAAY,QAAgB,aAA4B;AAE5D,MAAI,YAAY,SAAS,WAAW,SAAS,CAAE;AAE/C,MAAI,cAAe,cAAa,cAAc;AAC9C,kBAAgB,iBAAiB;AAC/B,WAAQ,IAAI,sBAAsB,YAAY,YAAY;AAC1D,eAAY;KACX,IAAI;;AAGT,KAAI;AAAE,QAAM,WAAW,EAAE,WAAW,MAAM,EAAE,SAAS;SAAS;AAC9D,KAAI;AAAE,QAAM,YAAY,EAAE,WAAW,MAAM,EAAE,SAAS;SAAS;AAC/D,KAAI;AAAE,QAAM,YAAY,SAAS;SAAS;AAE1C,SAAQ,IAAI,GAAG;AACf,SAAQ,IAAI,4CAA4C;AACxD,SAAQ,IAAI,wBAAwB;;AAGtC,MAAM"}
|