@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,69 @@
|
|
|
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.MigrateCommand = void 0;
|
|
40
|
+
const DatabaseCommand_1 = require("./DatabaseCommand");
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
/**
|
|
43
|
+
* Command to run database migrations
|
|
44
|
+
*/
|
|
45
|
+
class MigrateCommand extends DatabaseCommand_1.DatabaseCommand {
|
|
46
|
+
constructor() {
|
|
47
|
+
super(...arguments);
|
|
48
|
+
this.signature = 'migrate';
|
|
49
|
+
this.description = 'Run the database migrations';
|
|
50
|
+
}
|
|
51
|
+
async handle() {
|
|
52
|
+
this.info('Running migrations...');
|
|
53
|
+
try {
|
|
54
|
+
const { Migrator } = await Promise.resolve().then(() => __importStar(require('@arikajs/database')));
|
|
55
|
+
const db = await this.getDatabaseManager();
|
|
56
|
+
const migrationsPath = path_1.default.join(process.cwd(), 'database/migrations');
|
|
57
|
+
const migrator = new Migrator(db, migrationsPath);
|
|
58
|
+
await migrator.migrate();
|
|
59
|
+
await db.closeAll();
|
|
60
|
+
this.info('Migration sequence completed.');
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
this.error(`Migration failed: ${error.message}`);
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.MigrateCommand = MigrateCommand;
|
|
69
|
+
//# sourceMappingURL=MigrateCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateCommand.js","sourceRoot":"","sources":["../../../src/Commands/MigrateCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uDAAoD;AACpD,gDAAwB;AAExB;;GAEG;AACH,MAAa,cAAe,SAAQ,iCAAe;IAAnD;;QACW,cAAS,GAAG,SAAS,CAAC;QACtB,gBAAW,GAAG,6BAA6B,CAAC;IAoBvD,CAAC;IAlBU,KAAK,CAAC,MAAM;QACf,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEnC,IAAI,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;YACvD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3C,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;YAEvE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YAClD,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YAEzB,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;CACJ;AAtBD,wCAsBC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DatabaseCommand } from './DatabaseCommand';
|
|
2
|
+
/**
|
|
3
|
+
* Command to rollback the last database migration batch
|
|
4
|
+
*/
|
|
5
|
+
export declare class MigrateRollbackCommand extends DatabaseCommand {
|
|
6
|
+
signature: string;
|
|
7
|
+
description: string;
|
|
8
|
+
handle(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=MigrateRollbackCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateRollbackCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/MigrateRollbackCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,eAAe;IAChD,SAAS,SAAsB;IAC/B,WAAW,SAA0C;IAE/C,MAAM;CAkBtB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
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.MigrateRollbackCommand = void 0;
|
|
40
|
+
const DatabaseCommand_1 = require("./DatabaseCommand");
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
/**
|
|
43
|
+
* Command to rollback the last database migration batch
|
|
44
|
+
*/
|
|
45
|
+
class MigrateRollbackCommand extends DatabaseCommand_1.DatabaseCommand {
|
|
46
|
+
constructor() {
|
|
47
|
+
super(...arguments);
|
|
48
|
+
this.signature = 'migrate:rollback';
|
|
49
|
+
this.description = 'Rollback the last database migration';
|
|
50
|
+
}
|
|
51
|
+
async handle() {
|
|
52
|
+
this.info('Rolling back last migration batch...');
|
|
53
|
+
try {
|
|
54
|
+
const { Migrator } = await Promise.resolve().then(() => __importStar(require('@arikajs/database')));
|
|
55
|
+
const db = await this.getDatabaseManager();
|
|
56
|
+
const migrationsPath = path_1.default.join(process.cwd(), 'database/migrations');
|
|
57
|
+
const migrator = new Migrator(db, migrationsPath);
|
|
58
|
+
await migrator.rollback();
|
|
59
|
+
await db.closeAll();
|
|
60
|
+
this.info('Rollback sequence completed.');
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
this.error(`Rollback failed: ${error.message}`);
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.MigrateRollbackCommand = MigrateRollbackCommand;
|
|
69
|
+
//# sourceMappingURL=MigrateRollbackCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateRollbackCommand.js","sourceRoot":"","sources":["../../../src/Commands/MigrateRollbackCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uDAAoD;AACpD,gDAAwB;AAExB;;GAEG;AACH,MAAa,sBAAuB,SAAQ,iCAAe;IAA3D;;QACW,cAAS,GAAG,kBAAkB,CAAC;QAC/B,gBAAW,GAAG,sCAAsC,CAAC;IAoBhE,CAAC;IAlBU,KAAK,CAAC,MAAM;QACf,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAElD,IAAI,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;YACvD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3C,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;YAEvE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YAClD,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAE1B,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;CACJ;AAtBD,wDAsBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/NewCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAK3C,qBAAa,UAAW,SAAQ,OAAO;IAC5B,SAAS,SAAgB;IACzB,WAAW,SAAsC;IAE3C,MAAM;IAsDnB,OAAO,CAAC,mBAAmB;CAiB9B"}
|
|
@@ -0,0 +1,112 @@
|
|
|
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.NewCommand = void 0;
|
|
40
|
+
const console_1 = require("@arikajs/console");
|
|
41
|
+
const fs_1 = __importDefault(require("fs"));
|
|
42
|
+
const path_1 = __importDefault(require("path"));
|
|
43
|
+
const child_process_1 = require("child_process");
|
|
44
|
+
class NewCommand extends console_1.Command {
|
|
45
|
+
constructor() {
|
|
46
|
+
super(...arguments);
|
|
47
|
+
this.signature = 'new {name}';
|
|
48
|
+
this.description = 'Create a new ArikaJS application';
|
|
49
|
+
}
|
|
50
|
+
async handle() {
|
|
51
|
+
const name = this.argument('name');
|
|
52
|
+
const targetDir = path_1.default.resolve(process.cwd(), name);
|
|
53
|
+
const relativePath = path_1.default.relative(process.cwd(), targetDir) || '.';
|
|
54
|
+
if (fs_1.default.existsSync(targetDir)) {
|
|
55
|
+
this.error(`Directory "${name}" already exists.`);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const { default: inquirer } = await Promise.resolve().then(() => __importStar(require('inquirer')));
|
|
59
|
+
const { TemplateManager } = await Promise.resolve().then(() => __importStar(require('../TemplateManager')));
|
|
60
|
+
const templateManager = new TemplateManager();
|
|
61
|
+
this.info(`\n🚀 Creating a new ArikaJS application: ${targetDir}\n`);
|
|
62
|
+
const answers = await inquirer.prompt([
|
|
63
|
+
{
|
|
64
|
+
type: 'confirm',
|
|
65
|
+
name: 'install',
|
|
66
|
+
message: 'Would you like to install dependencies automatically?',
|
|
67
|
+
default: true
|
|
68
|
+
}
|
|
69
|
+
]);
|
|
70
|
+
const shouldInstall = answers.install;
|
|
71
|
+
try {
|
|
72
|
+
const templatePath = templateManager.resolveTemplatePath();
|
|
73
|
+
this.info(`\nScaffolding project in ${targetDir}...`);
|
|
74
|
+
templateManager.copyTemplate(templatePath, targetDir, name);
|
|
75
|
+
templateManager.setupEnvironmentFiles(targetDir, name);
|
|
76
|
+
if (shouldInstall) {
|
|
77
|
+
this.info('\n📦 Installing dependencies (this may take a moment)...');
|
|
78
|
+
await this.installDependencies(targetDir);
|
|
79
|
+
}
|
|
80
|
+
this.info('\n✨ Project created successfully!');
|
|
81
|
+
this.info('\nNext steps:');
|
|
82
|
+
this.comment(` cd ${relativePath}`);
|
|
83
|
+
if (!shouldInstall) {
|
|
84
|
+
this.comment(' npm install');
|
|
85
|
+
}
|
|
86
|
+
this.comment(' npm run dev');
|
|
87
|
+
this.info('\nHappy coding with ArikaJS!\n');
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
this.error(`Failed to create project: ${error.message}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
installDependencies(targetDir) {
|
|
94
|
+
return new Promise((resolve, reject) => {
|
|
95
|
+
const child = (0, child_process_1.spawn)('npm', ['install'], {
|
|
96
|
+
cwd: targetDir,
|
|
97
|
+
stdio: 'inherit',
|
|
98
|
+
shell: true
|
|
99
|
+
});
|
|
100
|
+
child.on('close', (code) => {
|
|
101
|
+
if (code === 0) {
|
|
102
|
+
resolve();
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
reject(new Error(`npm install failed with code ${code}`));
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.NewCommand = NewCommand;
|
|
112
|
+
//# sourceMappingURL=NewCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewCommand.js","sourceRoot":"","sources":["../../../src/Commands/NewCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueueTableCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/QueueTableCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C,qBAAa,iBAAkB,SAAQ,OAAO;IACnC,SAAS,SAAiB;IAC1B,WAAW,SAA0D;IAE/D,MAAM;CAmCtB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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.QueueTableCommand = void 0;
|
|
7
|
+
const console_1 = require("@arikajs/console");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
class QueueTableCommand extends console_1.Command {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.signature = 'queue:table';
|
|
14
|
+
this.description = 'Create a migration for the queue jobs database table';
|
|
15
|
+
}
|
|
16
|
+
async handle() {
|
|
17
|
+
const migrationsDir = path_1.default.join(process.cwd(), 'database/migrations');
|
|
18
|
+
if (!fs_1.default.existsSync(migrationsDir)) {
|
|
19
|
+
fs_1.default.mkdirSync(migrationsDir, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
const timestamp = new Date().toISOString().replace(/[-:T]/g, '').split('.')[0];
|
|
22
|
+
const fileName = `${timestamp}_create_jobs_table.ts`;
|
|
23
|
+
const filePath = path_1.default.join(migrationsDir, fileName);
|
|
24
|
+
const content = `import { Schema, Blueprint } from '@arikajs/database';
|
|
25
|
+
|
|
26
|
+
export default class CreateJobsTable {
|
|
27
|
+
public async up() {
|
|
28
|
+
await Schema.create('jobs', (table: Blueprint) => {
|
|
29
|
+
table.id();
|
|
30
|
+
table.string('queue').index();
|
|
31
|
+
table.longText('payload');
|
|
32
|
+
table.unsignedTinyInteger('attempts');
|
|
33
|
+
table.unsignedInteger('reserved_at').nullable();
|
|
34
|
+
table.unsignedInteger('available_at');
|
|
35
|
+
table.unsignedInteger('created_at');
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public async down() {
|
|
40
|
+
await Schema.dropIfExists('jobs');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
44
|
+
fs_1.default.writeFileSync(filePath, content);
|
|
45
|
+
this.info(`Migration created: ${filePath}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.QueueTableCommand = QueueTableCommand;
|
|
49
|
+
//# sourceMappingURL=QueueTableCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueueTableCommand.js","sourceRoot":"","sources":["../../../src/Commands/QueueTableCommand.ts"],"names":[],"mappings":";;;;;;AACA,8CAA2C;AAC3C,4CAAoB;AACpB,gDAAwB;AAExB,MAAa,iBAAkB,SAAQ,iBAAO;IAA9C;;QACW,cAAS,GAAG,aAAa,CAAC;QAC1B,gBAAW,GAAG,sDAAsD,CAAC;IAqChF,CAAC;IAnCU,KAAK,CAAC,MAAM;QACf,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,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,GAAG,SAAS,uBAAuB,CAAC;QACrD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;CAmBvB,CAAC;QAEM,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;CACJ;AAvCD,8CAuCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServeCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/ServeCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAK3C,qBAAa,YAAa,SAAQ,OAAO;IAC9B,SAAS,SAAW;IACpB,WAAW,SAAqD;IAE1D,MAAM;CAiDtB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
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.ServeCommand = void 0;
|
|
7
|
+
const console_1 = require("@arikajs/console");
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
class ServeCommand extends console_1.Command {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.signature = 'serve';
|
|
15
|
+
this.description = 'Serve the application on the development server';
|
|
16
|
+
}
|
|
17
|
+
async handle() {
|
|
18
|
+
const root = process.cwd();
|
|
19
|
+
const pkgPath = path_1.default.join(root, 'package.json');
|
|
20
|
+
if (!fs_1.default.existsSync(pkgPath)) {
|
|
21
|
+
this.error('No package.json found. Make sure you are in an ArikaJS project root.');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const isTypeScript = fs_1.default.existsSync(path_1.default.join(root, 'tsconfig.json'));
|
|
25
|
+
const serverFile = isTypeScript ? 'server.ts' : 'server.js';
|
|
26
|
+
if (!fs_1.default.existsSync(path_1.default.join(root, serverFile))) {
|
|
27
|
+
this.error(`Could not find ${serverFile} in the current directory.`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
this.info(`Starting ArikaJS development server...`);
|
|
31
|
+
const command = isTypeScript ? 'npx' : 'node';
|
|
32
|
+
const args = isTypeScript ? ['--yes', 'tsx', 'watch', serverFile] : [serverFile];
|
|
33
|
+
if (isTypeScript) {
|
|
34
|
+
this.comment('Using tsx to run TypeScript server with hot-reload...');
|
|
35
|
+
}
|
|
36
|
+
const server = (0, child_process_1.spawn)(command, args, {
|
|
37
|
+
cwd: root,
|
|
38
|
+
stdio: 'inherit',
|
|
39
|
+
shell: true,
|
|
40
|
+
env: { ...process.env, PROJECT_ROOT: root }
|
|
41
|
+
});
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
server.on('close', (code) => {
|
|
44
|
+
if (code === 0) {
|
|
45
|
+
resolve();
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.error(`Server exited with code ${code}`);
|
|
49
|
+
resolve(); // Resolve anyway so the CLI can exit gracefully
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
process.on('SIGINT', () => {
|
|
53
|
+
server.kill('SIGINT');
|
|
54
|
+
resolve();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.ServeCommand = ServeCommand;
|
|
60
|
+
//# sourceMappingURL=ServeCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServeCommand.js","sourceRoot":"","sources":["../../../src/Commands/ServeCommand.ts"],"names":[],"mappings":";;;;;;AACA,8CAA2C;AAC3C,iDAAsC;AACtC,gDAAwB;AACxB,4CAAoB;AAEpB,MAAa,YAAa,SAAQ,iBAAO;IAAzC;;QACW,cAAS,GAAG,OAAO,CAAC;QACpB,gBAAW,GAAG,iDAAiD,CAAC;IAmD3E,CAAC;IAjDU,KAAK,CAAC,MAAM;QACf,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAEhD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;YACnF,OAAO;QACX,CAAC;QAED,MAAM,YAAY,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QAE5D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,kBAAkB,UAAU,4BAA4B,CAAC,CAAC;YACrE,OAAO;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAEjF,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,IAAI;YACT,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE;SAC9C,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACb,OAAO,EAAE,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;oBAC9C,OAAO,EAAE,CAAC,CAAC,gDAAgD;gBAC/D,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACtB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtB,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AArDD,oCAqDC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare class TemplateManager {
|
|
2
|
+
private templatesDir;
|
|
3
|
+
constructor();
|
|
4
|
+
/**
|
|
5
|
+
* Resolve the template directory path.
|
|
6
|
+
*/
|
|
7
|
+
resolveTemplatePath(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Copy template files to the target directory.
|
|
10
|
+
*/
|
|
11
|
+
copyTemplate(templatePath: string, targetDir: string, appName: string): void;
|
|
12
|
+
/**
|
|
13
|
+
* Create .env and .env.example if they don't exist.
|
|
14
|
+
*/
|
|
15
|
+
setupEnvironmentFiles(targetDir: string, appName: string): void;
|
|
16
|
+
private copyRecursiveSync;
|
|
17
|
+
private processPlaceholders;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=TemplateManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateManager.d.ts","sourceRoot":"","sources":["../../src/TemplateManager.ts"],"names":[],"mappings":"AAOA,qBAAa,eAAe;IACxB,OAAO,CAAC,YAAY,CAAS;;IAO7B;;OAEG;IACI,mBAAmB,IAAI,MAAM;IAUpC;;OAEG;IACI,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAOnF;;OAEG;IACI,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAoBtE,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,mBAAmB;CAkE9B"}
|
|
@@ -0,0 +1,133 @@
|
|
|
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.TemplateManager = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const crypto_1 = require("crypto");
|
|
10
|
+
class TemplateManager {
|
|
11
|
+
constructor() {
|
|
12
|
+
// Templates are located relative to the dist/src directory when running
|
|
13
|
+
this.templatesDir = path_1.default.resolve(__dirname, '../../templates');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Resolve the template directory path.
|
|
17
|
+
*/
|
|
18
|
+
resolveTemplatePath() {
|
|
19
|
+
const templatePath = path_1.default.join(this.templatesDir, 'app');
|
|
20
|
+
if (!fs_1.default.existsSync(templatePath)) {
|
|
21
|
+
throw new Error(`Template "app" not found in ${this.templatesDir}`);
|
|
22
|
+
}
|
|
23
|
+
return templatePath;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Copy template files to the target directory.
|
|
27
|
+
*/
|
|
28
|
+
copyTemplate(templatePath, targetDir, appName) {
|
|
29
|
+
this.copyRecursiveSync(templatePath, targetDir);
|
|
30
|
+
// Post-process files if needed (e.g., replacing placeholders)
|
|
31
|
+
this.processPlaceholders(targetDir, appName);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create .env and .env.example if they don't exist.
|
|
35
|
+
*/
|
|
36
|
+
setupEnvironmentFiles(targetDir, appName) {
|
|
37
|
+
const examplePath = path_1.default.join(targetDir, '.env.example');
|
|
38
|
+
const envPath = path_1.default.join(targetDir, '.env');
|
|
39
|
+
if (fs_1.default.existsSync(examplePath) && !fs_1.default.existsSync(envPath)) {
|
|
40
|
+
let content = fs_1.default.readFileSync(examplePath, 'utf8');
|
|
41
|
+
content = content.replace(/APP_NAME=.*/, `APP_NAME=${appName}`);
|
|
42
|
+
// Automatically generate app key
|
|
43
|
+
const appKey = 'base64:' + (0, crypto_1.randomBytes)(32).toString('base64');
|
|
44
|
+
if (content.includes('APP_KEY=')) {
|
|
45
|
+
content = content.replace(/APP_KEY=.*/, `APP_KEY=${appKey}`);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
content += `\nAPP_KEY=${appKey}\n`;
|
|
49
|
+
}
|
|
50
|
+
fs_1.default.writeFileSync(envPath, content);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
copyRecursiveSync(src, dest) {
|
|
54
|
+
const exists = fs_1.default.existsSync(src);
|
|
55
|
+
if (!exists)
|
|
56
|
+
return;
|
|
57
|
+
const stats = fs_1.default.statSync(src);
|
|
58
|
+
const isDirectory = stats.isDirectory();
|
|
59
|
+
if (isDirectory) {
|
|
60
|
+
if (!fs_1.default.existsSync(dest)) {
|
|
61
|
+
fs_1.default.mkdirSync(dest, { recursive: true });
|
|
62
|
+
}
|
|
63
|
+
fs_1.default.readdirSync(src).forEach((childItemName) => {
|
|
64
|
+
this.copyRecursiveSync(path_1.default.join(src, childItemName), path_1.default.join(dest, childItemName));
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
fs_1.default.copyFileSync(src, dest);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
processPlaceholders(targetDir, appName) {
|
|
72
|
+
const packageJsonPath = path_1.default.join(targetDir, 'package.json');
|
|
73
|
+
if (fs_1.default.existsSync(packageJsonPath)) {
|
|
74
|
+
let pkg = JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf8'));
|
|
75
|
+
// Replace app name
|
|
76
|
+
pkg.name = appName;
|
|
77
|
+
// Handle local @arikajs dependencies for development
|
|
78
|
+
// templatesDir is /path/to/cli/templates
|
|
79
|
+
// ArikaJs root is /path/to/
|
|
80
|
+
const devWorkspaceRoot = path_1.default.resolve(this.templatesDir, '../../../');
|
|
81
|
+
const handleDeps = (deps) => {
|
|
82
|
+
if (!deps)
|
|
83
|
+
return;
|
|
84
|
+
Object.keys(deps).forEach(dep => {
|
|
85
|
+
let depName = '';
|
|
86
|
+
if (dep.startsWith('@arikajs/')) {
|
|
87
|
+
depName = dep.split('/')[1];
|
|
88
|
+
// Map 'core' package to 'arikajs' directory if 'core' directory doesn't exist
|
|
89
|
+
if (depName === 'core') {
|
|
90
|
+
const coreDir = path_1.default.join(devWorkspaceRoot, 'core');
|
|
91
|
+
if (!fs_1.default.existsSync(coreDir)) {
|
|
92
|
+
depName = 'arikajs';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else if (dep === 'arikajs') {
|
|
97
|
+
depName = 'arikajs';
|
|
98
|
+
}
|
|
99
|
+
if (depName && process.env.ARIKA_DEV === 'true') {
|
|
100
|
+
const localPath = path_1.default.join(devWorkspaceRoot, depName);
|
|
101
|
+
if (fs_1.default.existsSync(localPath)) {
|
|
102
|
+
// Calculate relative path from target directory to local package
|
|
103
|
+
let relativePath = path_1.default.relative(targetDir, localPath);
|
|
104
|
+
// Ensure it starts with ./ or ../
|
|
105
|
+
if (!relativePath.startsWith('.')) {
|
|
106
|
+
relativePath = './' + relativePath;
|
|
107
|
+
}
|
|
108
|
+
deps[dep] = `file:${relativePath}`;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
handleDeps(pkg.dependencies);
|
|
114
|
+
handleDeps(pkg.devDependencies);
|
|
115
|
+
fs_1.default.writeFileSync(packageJsonPath, JSON.stringify(pkg, null, 2));
|
|
116
|
+
}
|
|
117
|
+
// Replace placeholders in view files
|
|
118
|
+
const viewsDir = path_1.default.join(targetDir, 'resources/views');
|
|
119
|
+
if (fs_1.default.existsSync(viewsDir)) {
|
|
120
|
+
const files = fs_1.default.readdirSync(viewsDir);
|
|
121
|
+
files.forEach(file => {
|
|
122
|
+
if (file.endsWith('.html')) {
|
|
123
|
+
const filePath = path_1.default.join(viewsDir, file);
|
|
124
|
+
let content = fs_1.default.readFileSync(filePath, 'utf8');
|
|
125
|
+
content = content.replace(/{{name}}/g, appName);
|
|
126
|
+
fs_1.default.writeFileSync(filePath, content);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.TemplateManager = TemplateManager;
|
|
133
|
+
//# sourceMappingURL=TemplateManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateManager.js","sourceRoot":"","sources":["../../src/TemplateManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApplicationLoader = exports.Bootstrap = void 0;
|
|
4
|
+
var Bootstrap_1 = require("./Bootstrap");
|
|
5
|
+
Object.defineProperty(exports, "Bootstrap", { enumerable: true, get: function () { return Bootstrap_1.Bootstrap; } });
|
|
6
|
+
var ApplicationLoader_1 = require("./ApplicationLoader");
|
|
7
|
+
Object.defineProperty(exports, "ApplicationLoader", { enumerable: true, get: function () { return ApplicationLoader_1.ApplicationLoader; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cli.test.d.ts","sourceRoot":"","sources":["../../tests/Cli.test.ts"],"names":[],"mappings":""}
|