crudora 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/cli.js +55 -65
  2. package/dist/cli.js.map +1 -1
  3. package/dist/index.cjs +1732 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +438 -0
  6. package/dist/index.d.ts +438 -15
  7. package/dist/index.js +1725 -27
  8. package/dist/index.js.map +1 -1
  9. package/dist/scripts/copy-assets.js +0 -21
  10. package/package.json +5 -4
  11. package/scripts/copy-assets.js +0 -21
  12. package/dist/core/crudora.d.ts +0 -49
  13. package/dist/core/crudora.d.ts.map +0 -1
  14. package/dist/core/crudora.js +0 -370
  15. package/dist/core/crudora.js.map +0 -1
  16. package/dist/core/crudoraServer.d.ts +0 -84
  17. package/dist/core/crudoraServer.d.ts.map +0 -1
  18. package/dist/core/crudoraServer.js +0 -202
  19. package/dist/core/crudoraServer.js.map +0 -1
  20. package/dist/core/drizzleTableBuilder.d.ts +0 -6
  21. package/dist/core/drizzleTableBuilder.d.ts.map +0 -1
  22. package/dist/core/drizzleTableBuilder.js +0 -175
  23. package/dist/core/drizzleTableBuilder.js.map +0 -1
  24. package/dist/core/model.d.ts +0 -58
  25. package/dist/core/model.d.ts.map +0 -1
  26. package/dist/core/model.js +0 -64
  27. package/dist/core/model.js.map +0 -1
  28. package/dist/core/repository.d.ts +0 -106
  29. package/dist/core/repository.d.ts.map +0 -1
  30. package/dist/core/repository.js +0 -607
  31. package/dist/core/repository.js.map +0 -1
  32. package/dist/core/schemaGenerator.d.ts +0 -6
  33. package/dist/core/schemaGenerator.d.ts.map +0 -1
  34. package/dist/core/schemaGenerator.js +0 -248
  35. package/dist/core/schemaGenerator.js.map +0 -1
  36. package/dist/decorators/model.d.ts +0 -64
  37. package/dist/decorators/model.d.ts.map +0 -1
  38. package/dist/decorators/model.js +0 -138
  39. package/dist/decorators/model.js.map +0 -1
  40. package/dist/index.d.ts.map +0 -1
  41. package/dist/types/logger.type.d.ts +0 -7
  42. package/dist/types/logger.type.d.ts.map +0 -1
  43. package/dist/types/logger.type.js +0 -3
  44. package/dist/types/logger.type.js.map +0 -1
  45. package/dist/types/model.type.d.ts +0 -38
  46. package/dist/types/model.type.d.ts.map +0 -1
  47. package/dist/types/model.type.js +0 -3
  48. package/dist/types/model.type.js.map +0 -1
  49. package/dist/utils/validation.d.ts +0 -7
  50. package/dist/utils/validation.d.ts.map +0 -1
  51. package/dist/utils/validation.js +0 -107
  52. package/dist/utils/validation.js.map +0 -1
package/dist/cli.js CHANGED
@@ -1,72 +1,62 @@
1
1
  #!/usr/bin/env node
2
- import 'reflect-metadata';
3
- import { Command } from 'commander';
4
- import { readFileSync, writeFileSync, existsSync } from 'fs';
5
- import { resolve } from 'path';
6
- import { fileURLToPath, pathToFileURL } from 'url';
7
- import { createRequire } from 'module';
8
- import path from 'path';
9
- const __filename = fileURLToPath(import.meta.url);
10
- const __dirname = path.dirname(__filename);
11
- const _require = createRequire(import.meta.url);
12
- const pkg = JSON.parse(readFileSync(resolve(__dirname, '..', 'package.json'), 'utf-8'));
13
- const program = new Command();
14
- program
15
- .name('crudora')
16
- .description('Crudora CLI tools for Crudora projects')
17
- .version(pkg.version ?? '0.0.0');
18
- program
19
- .command('generate-schema')
20
- .description('Generate a Drizzle TypeScript schema file from registered Crudora models')
21
- .option('-e, --entry <file>', 'Entry file (JS/TS) that exports a CrudoraServer or Crudora instance', 'src/server.ts')
22
- .option('-o, --output <file>', 'Output path for the generated schema', 'src/db/schema.ts')
23
- .action(async (opts) => {
24
- const entryPath = resolve(process.cwd(), opts.entry);
25
- if (!existsSync(entryPath)) {
26
- console.error(`Error: entry file not found — ${entryPath}`);
27
- process.exit(1);
28
- }
2
+
3
+ // src/cli.ts
4
+ import "reflect-metadata";
5
+ import { Command } from "commander";
6
+ import { readFileSync, writeFileSync, existsSync } from "fs";
7
+ import { resolve } from "path";
8
+ import { fileURLToPath, pathToFileURL } from "url";
9
+ import { createRequire } from "module";
10
+ import path from "path";
11
+ var __filename = fileURLToPath(import.meta.url);
12
+ var __dirname = path.dirname(__filename);
13
+ var _require = createRequire(import.meta.url);
14
+ var pkg = JSON.parse(readFileSync(resolve(__dirname, "..", "package.json"), "utf-8"));
15
+ var program = new Command();
16
+ program.name("crudora").description("Crudora CLI \u2014 tools for Crudora projects").version(pkg.version ?? "0.0.0");
17
+ program.command("generate-schema").description("Generate a Drizzle TypeScript schema file from registered Crudora models").option("-e, --entry <file>", "Entry file (JS/TS) that exports a CrudoraServer or Crudora instance", "src/server.ts").option("-o, --output <file>", "Output path for the generated schema", "src/db/schema.ts").action(async (opts) => {
18
+ const entryPath = resolve(process.cwd(), opts.entry);
19
+ if (!existsSync(entryPath)) {
20
+ console.error(`Error: entry file not found \u2014 ${entryPath}`);
21
+ process.exit(1);
22
+ }
23
+ try {
24
+ let mod;
29
25
  try {
30
- let mod;
31
- try {
32
- // ESM dynamic import — works for compiled .js / .mjs entry files
33
- mod = await import(pathToFileURL(entryPath).href);
34
- }
35
- catch {
36
- // Fallback: CJS require — for pre-compiled CommonJS output
37
- try {
38
- _require('ts-node/register');
39
- }
40
- catch {
41
- // ts-node not installed entry must be pre-compiled JS
42
- }
43
- mod = _require(entryPath);
44
- }
45
- const instance = mod.default ?? mod.server ?? mod.crudora;
46
- if (!instance) {
47
- console.error('Error: entry file must export a CrudoraServer or Crudora instance as default, "server", or "crudora".');
48
- process.exit(1);
49
- }
50
- const crudora = typeof instance.getCrudora === 'function' ? instance.getCrudora() : instance;
51
- if (typeof crudora.generateDrizzleSchema !== 'function') {
52
- console.error('Error: could not find generateDrizzleSchema() on the exported instance.');
53
- process.exit(1);
54
- }
55
- const schema = crudora.generateDrizzleSchema();
56
- const outputPath = resolve(process.cwd(), opts.output);
57
- const cwd = process.cwd() + path.sep;
58
- if (!outputPath.startsWith(cwd)) {
59
- console.error('Error: output path must be within the project directory.');
60
- process.exit(1);
61
- }
62
- writeFileSync(outputPath, schema, 'utf-8');
63
- console.log(`Schema written to ${outputPath}`);
64
- console.log('Run: npx drizzle-kit push — to apply the schema to your database.');
26
+ mod = await import(pathToFileURL(entryPath).href);
27
+ } catch {
28
+ try {
29
+ _require("ts-node/register");
30
+ } catch {
31
+ }
32
+ mod = _require(entryPath);
33
+ }
34
+ const instance = mod.default ?? mod.server ?? mod.crudora;
35
+ if (!instance) {
36
+ console.error(
37
+ 'Error: entry file must export a CrudoraServer or Crudora instance as default, "server", or "crudora".'
38
+ );
39
+ process.exit(1);
40
+ }
41
+ const crudora = typeof instance.getCrudora === "function" ? instance.getCrudora() : instance;
42
+ if (typeof crudora.generateDrizzleSchema !== "function") {
43
+ console.error("Error: could not find generateDrizzleSchema() on the exported instance.");
44
+ process.exit(1);
65
45
  }
66
- catch (err) {
67
- console.error('Error generating schema:', err.message);
68
- process.exit(1);
46
+ const schema = crudora.generateDrizzleSchema();
47
+ const outputPath = resolve(process.cwd(), opts.output);
48
+ const cwd = process.cwd() + path.sep;
49
+ if (!outputPath.startsWith(cwd)) {
50
+ console.error("Error: output path must be within the project directory.");
51
+ process.exit(1);
69
52
  }
53
+ writeFileSync(outputPath, schema, "utf-8");
54
+ console.log(`Schema written to ${outputPath}`);
55
+ console.log("Run: npx drizzle-kit push \u2014 to apply the schema to your database.");
56
+ } catch (err) {
57
+ console.error("Error generating schema:", err.message);
58
+ process.exit(1);
59
+ }
70
60
  });
71
61
  program.parse();
72
62
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport 'reflect-metadata';\nimport { Command } from 'commander';\nimport { readFileSync, writeFileSync, existsSync } from 'fs';\nimport { resolve } from 'path';\nimport { fileURLToPath, pathToFileURL } from 'url';\nimport { createRequire } from 'module';\nimport path from 'path';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\nconst _require = createRequire(import.meta.url);\n\nconst pkg = JSON.parse(readFileSync(resolve(__dirname, '..', 'package.json'), 'utf-8'));\n\nconst program = new Command();\n\nprogram\n .name('crudora')\n .description('Crudora CLI — tools for Crudora projects')\n .version(pkg.version ?? '0.0.0');\n\nprogram\n .command('generate-schema')\n .description('Generate a Drizzle TypeScript schema file from registered Crudora models')\n .option('-e, --entry <file>', 'Entry file (JS/TS) that exports a CrudoraServer or Crudora instance', 'src/server.ts')\n .option('-o, --output <file>', 'Output path for the generated schema', 'src/db/schema.ts')\n .action(async (opts) => {\n const entryPath = resolve(process.cwd(), opts.entry);\n if (!existsSync(entryPath)) {\n console.error(`Error: entry file not found — ${entryPath}`);\n process.exit(1);\n }\n\n try {\n let mod: any;\n try {\n // ESM dynamic import — works for compiled .js / .mjs entry files\n mod = await import(pathToFileURL(entryPath).href);\n } catch {\n // Fallback: CJS require — for pre-compiled CommonJS output\n try {\n _require('ts-node/register');\n } catch {\n // ts-node not installed — entry must be pre-compiled JS\n }\n mod = _require(entryPath);\n }\n const instance = mod.default ?? mod.server ?? mod.crudora;\n\n if (!instance) {\n console.error(\n 'Error: entry file must export a CrudoraServer or Crudora instance as default, \"server\", or \"crudora\".',\n );\n process.exit(1);\n }\n\n const crudora = typeof instance.getCrudora === 'function' ? instance.getCrudora() : instance;\n\n if (typeof crudora.generateDrizzleSchema !== 'function') {\n console.error('Error: could not find generateDrizzleSchema() on the exported instance.');\n process.exit(1);\n }\n\n const schema: string = crudora.generateDrizzleSchema();\n const outputPath = resolve(process.cwd(), opts.output);\n const cwd = process.cwd() + path.sep;\n if (!outputPath.startsWith(cwd)) {\n console.error('Error: output path must be within the project directory.');\n process.exit(1);\n }\n writeFileSync(outputPath, schema, 'utf-8');\n console.log(`Schema written to ${outputPath}`);\n console.log('Run: npx drizzle-kit push — to apply the schema to your database.');\n } catch (err: any) {\n console.error('Error generating schema:', err.message);\n process.exit(1);\n }\n });\n\nprogram.parse();\n"],"mappings":";;;AACA,OAAO;AACP,SAAS,eAAe;AACxB,SAAS,cAAc,eAAe,kBAAkB;AACxD,SAAS,eAAe;AACxB,SAAS,eAAe,qBAAqB;AAC7C,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AAEjB,IAAM,aAAa,cAAc,YAAY,GAAG;AAChD,IAAM,YAAY,KAAK,QAAQ,UAAU;AACzC,IAAM,WAAW,cAAc,YAAY,GAAG;AAE9C,IAAM,MAAM,KAAK,MAAM,aAAa,QAAQ,WAAW,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtF,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACG,KAAK,SAAS,EACd,YAAY,+CAA0C,EACtD,QAAQ,IAAI,WAAW,OAAO;AAEjC,QACG,QAAQ,iBAAiB,EACzB,YAAY,0EAA0E,EACtF,OAAO,sBAAsB,uEAAuE,eAAe,EACnH,OAAO,uBAAuB,wCAAwC,kBAAkB,EACxF,OAAO,OAAO,SAAS;AACtB,QAAM,YAAY,QAAQ,QAAQ,IAAI,GAAG,KAAK,KAAK;AACnD,MAAI,CAAC,WAAW,SAAS,GAAG;AAC1B,YAAQ,MAAM,sCAAiC,SAAS,EAAE;AAC1D,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI;AACF,QAAI;AACJ,QAAI;AAEF,YAAM,MAAM,OAAO,cAAc,SAAS,EAAE;AAAA,IAC9C,QAAQ;AAEN,UAAI;AACF,iBAAS,kBAAkB;AAAA,MAC7B,QAAQ;AAAA,MAER;AACA,YAAM,SAAS,SAAS;AAAA,IAC1B;AACA,UAAM,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI;AAElD,QAAI,CAAC,UAAU;AACb,cAAQ;AAAA,QACN;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,UAAU,OAAO,SAAS,eAAe,aAAa,SAAS,WAAW,IAAI;AAEpF,QAAI,OAAO,QAAQ,0BAA0B,YAAY;AACvD,cAAQ,MAAM,yEAAyE;AACvF,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,SAAiB,QAAQ,sBAAsB;AACrD,UAAM,aAAa,QAAQ,QAAQ,IAAI,GAAG,KAAK,MAAM;AACrD,UAAM,MAAM,QAAQ,IAAI,IAAI,KAAK;AACjC,QAAI,CAAC,WAAW,WAAW,GAAG,GAAG;AAC/B,cAAQ,MAAM,0DAA0D;AACxE,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,kBAAc,YAAY,QAAQ,OAAO;AACzC,YAAQ,IAAI,qBAAqB,UAAU,EAAE;AAC7C,YAAQ,IAAI,yEAAoE;AAAA,EAClF,SAAS,KAAU;AACjB,YAAQ,MAAM,4BAA4B,IAAI,OAAO;AACrD,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF,CAAC;AAEH,QAAQ,MAAM;","names":[]}