@arikajs/cli 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.
- package/LICENSE +21 -0
- package/README.md +366 -0
- package/dist/bin/arika.d.ts +3 -0
- package/dist/bin/arika.d.ts.map +1 -0
- package/dist/bin/arika.js +21 -0
- package/dist/bin/arika.js.map +1 -0
- package/dist/src/ApplicationLoader.d.ts +8 -0
- package/dist/src/ApplicationLoader.d.ts.map +1 -0
- package/dist/src/ApplicationLoader.js +31 -0
- package/dist/src/ApplicationLoader.js.map +1 -0
- package/dist/src/Bootstrap.d.ts +5 -0
- package/dist/src/Bootstrap.d.ts.map +1 -0
- package/dist/src/Bootstrap.js +66 -0
- package/dist/src/Bootstrap.js.map +1 -0
- package/dist/src/Commands/CacheTableCommand.d.ts +7 -0
- package/dist/src/Commands/CacheTableCommand.d.ts.map +1 -0
- package/dist/src/Commands/CacheTableCommand.js +45 -0
- package/dist/src/Commands/CacheTableCommand.js.map +1 -0
- package/dist/src/Commands/DatabaseCommand.d.ts +11 -0
- package/dist/src/Commands/DatabaseCommand.d.ts.map +1 -0
- package/dist/src/Commands/DatabaseCommand.js +94 -0
- package/dist/src/Commands/DatabaseCommand.js.map +1 -0
- package/dist/src/Commands/DbSeedCommand.d.ts +10 -0
- package/dist/src/Commands/DbSeedCommand.d.ts.map +1 -0
- package/dist/src/Commands/DbSeedCommand.js +70 -0
- package/dist/src/Commands/DbSeedCommand.js.map +1 -0
- package/dist/src/Commands/DocsGenerateCommand.d.ts +8 -0
- package/dist/src/Commands/DocsGenerateCommand.d.ts.map +1 -0
- package/dist/src/Commands/DocsGenerateCommand.js +102 -0
- package/dist/src/Commands/DocsGenerateCommand.js.map +1 -0
- package/dist/src/Commands/KeyGenerateCommand.d.ts +9 -0
- package/dist/src/Commands/KeyGenerateCommand.d.ts.map +1 -0
- package/dist/src/Commands/KeyGenerateCommand.js +44 -0
- package/dist/src/Commands/KeyGenerateCommand.js.map +1 -0
- package/dist/src/Commands/ListCommand.d.ts +7 -0
- package/dist/src/Commands/ListCommand.d.ts.map +1 -0
- package/dist/src/Commands/ListCommand.js +26 -0
- package/dist/src/Commands/ListCommand.js.map +1 -0
- package/dist/src/Commands/MakeMigrationCommand.d.ts +14 -0
- package/dist/src/Commands/MakeMigrationCommand.d.ts.map +1 -0
- package/dist/src/Commands/MakeMigrationCommand.js +72 -0
- package/dist/src/Commands/MakeMigrationCommand.js.map +1 -0
- package/dist/src/Commands/MakeSeederCommand.d.ts +14 -0
- package/dist/src/Commands/MakeSeederCommand.d.ts.map +1 -0
- package/dist/src/Commands/MakeSeederCommand.js +56 -0
- package/dist/src/Commands/MakeSeederCommand.js.map +1 -0
- package/dist/src/Commands/MigrateCommand.d.ts +10 -0
- package/dist/src/Commands/MigrateCommand.d.ts.map +1 -0
- package/dist/src/Commands/MigrateCommand.js +69 -0
- package/dist/src/Commands/MigrateCommand.js.map +1 -0
- package/dist/src/Commands/MigrateRollbackCommand.d.ts +10 -0
- package/dist/src/Commands/MigrateRollbackCommand.d.ts.map +1 -0
- package/dist/src/Commands/MigrateRollbackCommand.js +69 -0
- package/dist/src/Commands/MigrateRollbackCommand.js.map +1 -0
- package/dist/src/Commands/NewCommand.d.ts +8 -0
- package/dist/src/Commands/NewCommand.d.ts.map +1 -0
- package/dist/src/Commands/NewCommand.js +112 -0
- package/dist/src/Commands/NewCommand.js.map +1 -0
- package/dist/src/Commands/QueueTableCommand.d.ts +7 -0
- package/dist/src/Commands/QueueTableCommand.d.ts.map +1 -0
- package/dist/src/Commands/QueueTableCommand.js +49 -0
- package/dist/src/Commands/QueueTableCommand.js.map +1 -0
- package/dist/src/Commands/ServeCommand.d.ts +7 -0
- package/dist/src/Commands/ServeCommand.d.ts.map +1 -0
- package/dist/src/Commands/ServeCommand.js +60 -0
- package/dist/src/Commands/ServeCommand.js.map +1 -0
- package/dist/src/TemplateManager.d.ts +19 -0
- package/dist/src/TemplateManager.d.ts.map +1 -0
- package/dist/src/TemplateManager.js +133 -0
- package/dist/src/TemplateManager.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +8 -0
- package/dist/src/index.js.map +1 -0
- package/dist/tests/Cli.test.d.ts +2 -0
- package/dist/tests/Cli.test.d.ts.map +1 -0
- package/dist/tests/Cli.test.js +16 -0
- package/dist/tests/Cli.test.js.map +1 -0
- package/package.json +55 -0
- package/templates/app/.env.example +47 -0
- package/templates/app/app/Controllers/UserController.ts +88 -0
- package/templates/app/app/Http/Kernel.ts +18 -0
- package/templates/app/app/Models/User.ts +15 -0
- package/templates/app/bootstrap/app.ts +13 -0
- package/templates/app/config/app.ts +9 -0
- package/templates/app/config/cache.ts +37 -0
- package/templates/app/config/database.ts +36 -0
- package/templates/app/config/filesystems.ts +33 -0
- package/templates/app/config/http.ts +5 -0
- package/templates/app/config/logging.ts +35 -0
- package/templates/app/config/mail.ts +27 -0
- package/templates/app/config/queue.ts +40 -0
- package/templates/app/database/migrations/0001_create_users_table.ts +23 -0
- package/templates/app/package.json +21 -0
- package/templates/app/resources/views/welcome.html +470 -0
- package/templates/app/routes/api.ts +34 -0
- package/templates/app/routes/web.ts +6 -0
- package/templates/app/server.ts +16 -0
- package/templates/app/tsconfig.json +15 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.DatabaseCommand = void 0;
|
|
40
|
+
const console_1 = require("@arikajs/console");
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
const fs_1 = __importDefault(require("fs"));
|
|
43
|
+
const dotenv = __importStar(require("dotenv"));
|
|
44
|
+
/**
|
|
45
|
+
* Base class for database-related commands
|
|
46
|
+
*/
|
|
47
|
+
class DatabaseCommand extends console_1.Command {
|
|
48
|
+
/**
|
|
49
|
+
* Get a DatabaseManager instance configured with application settings
|
|
50
|
+
*/
|
|
51
|
+
async getDatabaseManager() {
|
|
52
|
+
// Load .env from project root
|
|
53
|
+
dotenv.config();
|
|
54
|
+
const root = process.cwd();
|
|
55
|
+
const { DatabaseManager } = await Promise.resolve().then(() => __importStar(require('@arikajs/database')));
|
|
56
|
+
// Try to find database config
|
|
57
|
+
let configPath = path_1.default.join(root, 'config/database.ts');
|
|
58
|
+
if (!fs_1.default.existsSync(configPath)) {
|
|
59
|
+
configPath = path_1.default.join(root, 'config/database.js');
|
|
60
|
+
}
|
|
61
|
+
if (!fs_1.default.existsSync(configPath)) {
|
|
62
|
+
throw new Error('Database configuration not found. Please ensure config/database.ts exists.');
|
|
63
|
+
}
|
|
64
|
+
// Use ts-node for .ts files
|
|
65
|
+
if (configPath.endsWith('.ts')) {
|
|
66
|
+
try {
|
|
67
|
+
// Register ts-node if it exists in the project
|
|
68
|
+
const tsNodePath = path_1.default.join(root, 'node_modules', 'ts-node');
|
|
69
|
+
if (fs_1.default.existsSync(tsNodePath)) {
|
|
70
|
+
require(tsNodePath).register({ transpileOnly: true });
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Fallback to global/environment ts-node register
|
|
74
|
+
require('ts-node/register');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
// Ignore if ts-node/register fails, maybe it's already handled by arika-cli runner
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
// Clear cache for the config file to ensure we get fresh values
|
|
83
|
+
delete require.cache[require.resolve(configPath)];
|
|
84
|
+
const configModule = require(configPath);
|
|
85
|
+
const config = configModule.default || configModule;
|
|
86
|
+
return new DatabaseManager(config);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
throw new Error(`Failed to load database configuration: ${error.message}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.DatabaseCommand = DatabaseCommand;
|
|
94
|
+
//# sourceMappingURL=DatabaseCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseCommand.js","sourceRoot":"","sources":["../../../src/Commands/DatabaseCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,8CAA2C;AAC3C,gDAAwB;AACxB,4CAAoB;AACpB,+CAAiC;AAEjC;;GAEG;AACH,MAAsB,eAAgB,SAAQ,iBAAO;IACjD;;OAEG;IACO,KAAK,CAAC,kBAAkB;QAC9B,8BAA8B;QAC9B,MAAM,CAAC,MAAM,EAAE,CAAC;QAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE3B,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;QAE9D,8BAA8B;QAC9B,IAAI,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QACvD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAClG,CAAC;QAED,4BAA4B;QAC5B,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACD,+CAA+C;gBAC/C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;gBAC9D,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACJ,kDAAkD;oBAClD,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBAChC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,mFAAmF;YACvF,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACD,gEAAgE;YAChE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAClD,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC;YACpD,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC;CACJ;AAhDD,0CAgDC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DatabaseCommand } from './DatabaseCommand';
|
|
2
|
+
/**
|
|
3
|
+
* Command to seed the database
|
|
4
|
+
*/
|
|
5
|
+
export declare class DbSeedCommand extends DatabaseCommand {
|
|
6
|
+
signature: string;
|
|
7
|
+
description: string;
|
|
8
|
+
handle(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=DbSeedCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbSeedCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/DbSeedCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;GAEG;AACH,qBAAa,aAAc,SAAQ,eAAe;IACvC,SAAS,SAAwB;IACjC,WAAW,SAAoC;IAEzC,MAAM;CAoBtB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.DbSeedCommand = void 0;
|
|
40
|
+
const DatabaseCommand_1 = require("./DatabaseCommand");
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
/**
|
|
43
|
+
* Command to seed the database
|
|
44
|
+
*/
|
|
45
|
+
class DbSeedCommand extends DatabaseCommand_1.DatabaseCommand {
|
|
46
|
+
constructor() {
|
|
47
|
+
super(...arguments);
|
|
48
|
+
this.signature = 'db:seed {--class=}';
|
|
49
|
+
this.description = 'Seed the database with records';
|
|
50
|
+
}
|
|
51
|
+
async handle() {
|
|
52
|
+
const seederClass = this.option('class');
|
|
53
|
+
this.info(seederClass ? `Seeding: ${seederClass}` : 'Running database seeders...');
|
|
54
|
+
try {
|
|
55
|
+
const { SeedRunner } = await Promise.resolve().then(() => __importStar(require('@arikajs/database')));
|
|
56
|
+
const db = await this.getDatabaseManager();
|
|
57
|
+
const seedersPath = path_1.default.join(process.cwd(), 'database/seeders');
|
|
58
|
+
const runner = new SeedRunner(db, seedersPath);
|
|
59
|
+
await runner.run(seederClass);
|
|
60
|
+
await db.closeAll();
|
|
61
|
+
this.info('Seeding completed.');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
this.error(`Seeding failed: ${error.message}`);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.DbSeedCommand = DbSeedCommand;
|
|
70
|
+
//# sourceMappingURL=DbSeedCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbSeedCommand.js","sourceRoot":"","sources":["../../../src/Commands/DbSeedCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uDAAoD;AACpD,gDAAwB;AAExB;;GAEG;AACH,MAAa,aAAc,SAAQ,iCAAe;IAAlD;;QACW,cAAS,GAAG,oBAAoB,CAAC;QACjC,gBAAW,GAAG,gCAAgC,CAAC;IAsB1D,CAAC;IApBU,KAAK,CAAC,MAAM;QACf,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;QAEnF,IAAI,CAAC;YACD,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;YACzD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3C,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC/C,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAE9B,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;CACJ;AAxBD,sCAwBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocsGenerateCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/DocsGenerateCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C,qBAAa,mBAAoB,SAAQ,OAAO;IACrC,SAAS,SAAmB;IAC5B,WAAW,SAAsE;IAE3E,MAAM;YAuCL,qBAAqB;CAmBtC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.DocsGenerateCommand = void 0;
|
|
40
|
+
const console_1 = require("@arikajs/console");
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
const fs_1 = __importDefault(require("fs"));
|
|
43
|
+
class DocsGenerateCommand extends console_1.Command {
|
|
44
|
+
constructor() {
|
|
45
|
+
super(...arguments);
|
|
46
|
+
this.signature = 'docs:generate';
|
|
47
|
+
this.description = 'Generate API documentation, Postman collection, and OpenAPI spec';
|
|
48
|
+
}
|
|
49
|
+
async handle() {
|
|
50
|
+
this.info('🔍 Extracting route information...');
|
|
51
|
+
const appDir = process.cwd();
|
|
52
|
+
// We need to load the application to register routes
|
|
53
|
+
// This command assumes it's being run from the root of an ArikaJS project
|
|
54
|
+
try {
|
|
55
|
+
const bootstrapPath = path_1.default.join(appDir, 'bootstrap', 'app.ts');
|
|
56
|
+
if (fs_1.default.existsSync(bootstrapPath)) {
|
|
57
|
+
// In a real scenario, we would need to dynamically import the app
|
|
58
|
+
// and its routes. For the CLI, we can try to require the routes files.
|
|
59
|
+
// We'll use a loader approach.
|
|
60
|
+
await this.loadApplicationRoutes(appDir);
|
|
61
|
+
}
|
|
62
|
+
const { DocumentationGenerator } = await Promise.resolve().then(() => __importStar(require('@arikajs/docs')));
|
|
63
|
+
const generator = new DocumentationGenerator();
|
|
64
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(path_1.default.join(appDir, 'package.json'), 'utf8'));
|
|
65
|
+
const appName = packageJson.name || 'ArikaJS App';
|
|
66
|
+
const outputDir = path_1.default.join(appDir, 'docs');
|
|
67
|
+
this.info(`🚀 Generating documentation in: ${outputDir}`);
|
|
68
|
+
generator.generateAll(appName, outputDir);
|
|
69
|
+
this.info('\n✨ Documentation generated successfully:');
|
|
70
|
+
this.comment(` - ${path_1.default.join('docs', 'api_docs.html')} (Arika-themed HTML)`);
|
|
71
|
+
this.comment(` - ${path_1.default.join('docs', 'DOCS.md')} (Markdown)`);
|
|
72
|
+
this.comment(` - ${path_1.default.join('docs', 'postman_collection.json')} (Postman)`);
|
|
73
|
+
this.comment(` - ${path_1.default.join('docs', 'openapi.json')} (OpenAPI 3.0)`);
|
|
74
|
+
this.info('\nHappy documenting!\n');
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
this.error(`Failed to generate docs: ${error.message}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async loadApplicationRoutes(appDir) {
|
|
81
|
+
// Find routes directory
|
|
82
|
+
const routesDir = path_1.default.join(appDir, 'routes');
|
|
83
|
+
if (fs_1.default.existsSync(routesDir)) {
|
|
84
|
+
const files = fs_1.default.readdirSync(routesDir);
|
|
85
|
+
for (const file of files) {
|
|
86
|
+
if (file.endsWith('.ts') || file.endsWith('.js')) {
|
|
87
|
+
// We use ts-node/register or tsx already in dev,
|
|
88
|
+
// but for a standalone command we might need more setup.
|
|
89
|
+
// For now, we assume the environment is set up.
|
|
90
|
+
try {
|
|
91
|
+
await Promise.resolve(`${path_1.default.join(routesDir, file)}`).then(s => __importStar(require(s)));
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
// Ignore errors if some routes depend on things not yet available
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.DocsGenerateCommand = DocsGenerateCommand;
|
|
102
|
+
//# sourceMappingURL=DocsGenerateCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocsGenerateCommand.js","sourceRoot":"","sources":["../../../src/Commands/DocsGenerateCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from '@arikajs/console';
|
|
2
|
+
export declare class KeyGenerateCommand extends Command {
|
|
3
|
+
signature: string;
|
|
4
|
+
description: string;
|
|
5
|
+
handle(): Promise<void>;
|
|
6
|
+
private generateRandomKey;
|
|
7
|
+
private setKeyInEnvironmentFile;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=KeyGenerateCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyGenerateCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/KeyGenerateCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAK3C,qBAAa,kBAAmB,SAAQ,OAAO;IACpC,SAAS,SAAkB;IAC3B,WAAW,SAA6B;IAElC,MAAM;IAenB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,uBAAuB;CAYlC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.KeyGenerateCommand = void 0;
|
|
7
|
+
const console_1 = require("@arikajs/console");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const crypto_1 = require("crypto");
|
|
11
|
+
class KeyGenerateCommand extends console_1.Command {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.signature = 'key:generate';
|
|
15
|
+
this.description = 'Set the application key';
|
|
16
|
+
}
|
|
17
|
+
async handle() {
|
|
18
|
+
const envPath = path_1.default.join(process.cwd(), '.env');
|
|
19
|
+
if (!fs_1.default.existsSync(envPath)) {
|
|
20
|
+
this.error('.env file not found.');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const key = this.generateRandomKey();
|
|
24
|
+
if (this.setKeyInEnvironmentFile(envPath, key)) {
|
|
25
|
+
this.info('Application key set successfully.');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
generateRandomKey() {
|
|
29
|
+
return 'base64:' + (0, crypto_1.randomBytes)(32).toString('base64');
|
|
30
|
+
}
|
|
31
|
+
setKeyInEnvironmentFile(path, key) {
|
|
32
|
+
let content = fs_1.default.readFileSync(path, 'utf8');
|
|
33
|
+
if (content.includes('APP_KEY=')) {
|
|
34
|
+
content = content.replace(/APP_KEY=.*/, `APP_KEY=${key}`);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
content += `\nAPP_KEY=${key}\n`;
|
|
38
|
+
}
|
|
39
|
+
fs_1.default.writeFileSync(path, content);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.KeyGenerateCommand = KeyGenerateCommand;
|
|
44
|
+
//# sourceMappingURL=KeyGenerateCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyGenerateCommand.js","sourceRoot":"","sources":["../../../src/Commands/KeyGenerateCommand.ts"],"names":[],"mappings":";;;;;;AACA,8CAA2C;AAC3C,4CAAoB;AACpB,gDAAwB;AACxB,mCAAqC;AAErC,MAAa,kBAAmB,SAAQ,iBAAO;IAA/C;;QACW,cAAS,GAAG,cAAc,CAAC;QAC3B,gBAAW,GAAG,yBAAyB,CAAC;IAiCnD,CAAC;IA/BU,KAAK,CAAC,MAAM;QACf,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACnC,OAAO;QACX,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;IAEO,iBAAiB;QACrB,OAAO,SAAS,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAEO,uBAAuB,CAAC,IAAY,EAAE,GAAW;QACrD,IAAI,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5C,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,aAAa,GAAG,IAAI,CAAC;QACpC,CAAC;QAED,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAnCD,gDAmCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/ListCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,qBAAa,WAAY,SAAQ,OAAO;IAC7B,SAAS,SAAU;IACnB,WAAW,SAAiC;IAEtC,MAAM;CAgBtB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ListCommand = void 0;
|
|
4
|
+
const console_1 = require("@arikajs/console");
|
|
5
|
+
class ListCommand extends console_1.Command {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.signature = 'list';
|
|
9
|
+
this.description = 'List all available commands';
|
|
10
|
+
}
|
|
11
|
+
async handle() {
|
|
12
|
+
this.info('\nArikaJS CLI\n');
|
|
13
|
+
this.comment('Available commands:');
|
|
14
|
+
const commands = this.registry.all();
|
|
15
|
+
for (const [name, data] of commands.entries()) {
|
|
16
|
+
const description = data.description || '';
|
|
17
|
+
const paddedName = name.padEnd(20);
|
|
18
|
+
this.write(' - ');
|
|
19
|
+
this.info(paddedName);
|
|
20
|
+
this.comment(description);
|
|
21
|
+
}
|
|
22
|
+
this.writeln('');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.ListCommand = ListCommand;
|
|
26
|
+
//# sourceMappingURL=ListCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListCommand.js","sourceRoot":"","sources":["../../../src/Commands/ListCommand.ts"],"names":[],"mappings":";;;AACA,8CAA2C;AAE3C,MAAa,WAAY,SAAQ,iBAAO;IAAxC;;QACW,cAAS,GAAG,MAAM,CAAC;QACnB,gBAAW,GAAG,6BAA6B,CAAC;IAkBvD,CAAC;IAhBU,KAAK,CAAC,MAAM;QACf,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAErC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;CACJ;AApBD,kCAoBC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@arikajs/console';
|
|
2
|
+
/**
|
|
3
|
+
* Command to create a new migration file
|
|
4
|
+
*/
|
|
5
|
+
export declare class MakeMigrationCommand extends Command {
|
|
6
|
+
signature: string;
|
|
7
|
+
description: string;
|
|
8
|
+
handle(): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Get the migration stub content
|
|
11
|
+
*/
|
|
12
|
+
private getStub;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=MakeMigrationCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MakeMigrationCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/MakeMigrationCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,OAAO;IACtC,SAAS,SAA2B;IACpC,WAAW,SAAiC;IAEtC,MAAM;IA6BnB;;OAEG;IACH,OAAO,CAAC,OAAO;CA0BlB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MakeMigrationCommand = void 0;
|
|
7
|
+
const console_1 = require("@arikajs/console");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
/**
|
|
11
|
+
* Command to create a new migration file
|
|
12
|
+
*/
|
|
13
|
+
class MakeMigrationCommand extends console_1.Command {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.signature = 'make:migration {name}';
|
|
17
|
+
this.description = 'Create a new migration file';
|
|
18
|
+
}
|
|
19
|
+
async handle() {
|
|
20
|
+
const name = this.argument('name');
|
|
21
|
+
if (!name) {
|
|
22
|
+
this.error('Migration name is required.');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const date = new Date();
|
|
26
|
+
const timestamp = date.getFullYear().toString() +
|
|
27
|
+
(date.getMonth() + 1).toString().padStart(2, '0') +
|
|
28
|
+
date.getDate().toString().padStart(2, '0') +
|
|
29
|
+
date.getHours().toString().padStart(2, '0') +
|
|
30
|
+
date.getMinutes().toString().padStart(2, '0') +
|
|
31
|
+
date.getSeconds().toString().padStart(2, '0');
|
|
32
|
+
const fileName = `${timestamp}_${name}.ts`;
|
|
33
|
+
const migrationsDir = path_1.default.join(process.cwd(), 'database/migrations');
|
|
34
|
+
if (!fs_1.default.existsSync(migrationsDir)) {
|
|
35
|
+
fs_1.default.mkdirSync(migrationsDir, { recursive: true });
|
|
36
|
+
}
|
|
37
|
+
const filePath = path_1.default.join(migrationsDir, fileName);
|
|
38
|
+
const stub = this.getStub(name);
|
|
39
|
+
fs_1.default.writeFileSync(filePath, stub);
|
|
40
|
+
this.info(`Migration created: database/migrations/${fileName}`);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get the migration stub content
|
|
44
|
+
*/
|
|
45
|
+
getStub(name) {
|
|
46
|
+
const className = name.split('_').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join('');
|
|
47
|
+
return `import { Migration, SchemaBuilder } from '@arikajs/database';
|
|
48
|
+
|
|
49
|
+
export default class ${className} extends Migration {
|
|
50
|
+
/**
|
|
51
|
+
* Run the migrations.
|
|
52
|
+
*/
|
|
53
|
+
public async up(schema: SchemaBuilder): Promise<void> {
|
|
54
|
+
// await schema.create('table_name', (table) => {
|
|
55
|
+
// table.id();
|
|
56
|
+
// table.string('name');
|
|
57
|
+
// table.timestamps();
|
|
58
|
+
// });
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Reverse the migrations.
|
|
63
|
+
*/
|
|
64
|
+
public async down(schema: SchemaBuilder): Promise<void> {
|
|
65
|
+
// await schema.dropIfExists('table_name');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.MakeMigrationCommand = MakeMigrationCommand;
|
|
72
|
+
//# sourceMappingURL=MakeMigrationCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MakeMigrationCommand.js","sourceRoot":"","sources":["../../../src/Commands/MakeMigrationCommand.ts"],"names":[],"mappings":";;;;;;AACA,8CAA2C;AAC3C,4CAAoB;AACpB,gDAAwB;AAExB;;GAEG;AACH,MAAa,oBAAqB,SAAQ,iBAAO;IAAjD;;QACW,cAAS,GAAG,uBAAuB,CAAC;QACpC,gBAAW,GAAG,6BAA6B,CAAC;IA4DvD,CAAC;IA1DU,KAAK,CAAC,MAAM;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC1C,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;YAC3C,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YACjD,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YAC3C,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YAC7C,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,IAAI,KAAK,CAAC;QAC3C,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAEtE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAChC,YAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhC,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,IAAY;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5F,OAAO;;uBAEQ,SAAS;;;;;;;;;;;;;;;;;;;CAmB/B,CAAC;IACE,CAAC;CACJ;AA9DD,oDA8DC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@arikajs/console';
|
|
2
|
+
/**
|
|
3
|
+
* Command to create a new seeder file
|
|
4
|
+
*/
|
|
5
|
+
export declare class MakeSeederCommand extends Command {
|
|
6
|
+
signature: string;
|
|
7
|
+
description: string;
|
|
8
|
+
handle(): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Get the seeder stub content
|
|
11
|
+
*/
|
|
12
|
+
private getStub;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=MakeSeederCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MakeSeederCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/MakeSeederCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,OAAO;IACnC,SAAS,SAAwB;IACjC,WAAW,SAA8B;IAEnC,MAAM;IAqBnB;;OAEG;IACH,OAAO,CAAC,OAAO;CAgBlB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MakeSeederCommand = void 0;
|
|
7
|
+
const console_1 = require("@arikajs/console");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
/**
|
|
11
|
+
* Command to create a new seeder file
|
|
12
|
+
*/
|
|
13
|
+
class MakeSeederCommand extends console_1.Command {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.signature = 'make:seeder {name}';
|
|
17
|
+
this.description = 'Create a new seeder file';
|
|
18
|
+
}
|
|
19
|
+
async handle() {
|
|
20
|
+
const name = this.argument('name');
|
|
21
|
+
if (!name) {
|
|
22
|
+
this.error('Seeder name is required.');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const fileName = `${name}.ts`;
|
|
26
|
+
const seedersDir = path_1.default.join(process.cwd(), 'database/seeders');
|
|
27
|
+
if (!fs_1.default.existsSync(seedersDir)) {
|
|
28
|
+
fs_1.default.mkdirSync(seedersDir, { recursive: true });
|
|
29
|
+
}
|
|
30
|
+
const filePath = path_1.default.join(seedersDir, fileName);
|
|
31
|
+
const stub = this.getStub(name);
|
|
32
|
+
fs_1.default.writeFileSync(filePath, stub);
|
|
33
|
+
this.info(`Seeder created: database/seeders/${fileName}`);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get the seeder stub content
|
|
37
|
+
*/
|
|
38
|
+
getStub(name) {
|
|
39
|
+
return `import { Seeder, DatabaseManager } from '@arikajs/database';
|
|
40
|
+
|
|
41
|
+
export default class ${name} extends Seeder {
|
|
42
|
+
/**
|
|
43
|
+
* Run the database seeds.
|
|
44
|
+
*/
|
|
45
|
+
public async run(db: DatabaseManager): Promise<void> {
|
|
46
|
+
// await db.table('users').insert({
|
|
47
|
+
// name: 'John Doe',
|
|
48
|
+
// email: 'john@example.com'
|
|
49
|
+
// });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.MakeSeederCommand = MakeSeederCommand;
|
|
56
|
+
//# sourceMappingURL=MakeSeederCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MakeSeederCommand.js","sourceRoot":"","sources":["../../../src/Commands/MakeSeederCommand.ts"],"names":[],"mappings":";;;;;;AACA,8CAA2C;AAC3C,4CAAoB;AACpB,gDAAwB;AAExB;;GAEG;AACH,MAAa,iBAAkB,SAAQ,iBAAO;IAA9C;;QACW,cAAS,GAAG,oBAAoB,CAAC;QACjC,gBAAW,GAAG,0BAA0B,CAAC;IA0CpD,CAAC;IAxCU,KAAK,CAAC,MAAM;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACvC,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC;QAC9B,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAEhE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,YAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhC,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,IAAY;QACxB,OAAO;;uBAEQ,IAAI;;;;;;;;;;;CAW1B,CAAC;IACE,CAAC;CACJ;AA5CD,8CA4CC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DatabaseCommand } from './DatabaseCommand';
|
|
2
|
+
/**
|
|
3
|
+
* Command to run database migrations
|
|
4
|
+
*/
|
|
5
|
+
export declare class MigrateCommand extends DatabaseCommand {
|
|
6
|
+
signature: string;
|
|
7
|
+
description: string;
|
|
8
|
+
handle(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=MigrateCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/MigrateCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;GAEG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACxC,SAAS,SAAa;IACtB,WAAW,SAAiC;IAEtC,MAAM;CAkBtB"}
|