@adonisjs/core
Advanced tools
Comparing version 1.1.0 to 1.2.0
@@ -1,22 +0,34 @@ | ||
declare type PreloadFile = { | ||
import { Ioc } from '@adonisjs/fold'; | ||
declare type PreloadNode = { | ||
file: string; | ||
intent: string; | ||
optional: boolean; | ||
intent?: 'ace' | 'http'; | ||
}; | ||
export declare class Ignitor { | ||
private _intent; | ||
private _baseDir; | ||
private _rcPath; | ||
appRoot: string; | ||
directories: { | ||
[key: string]: string; | ||
[identifier: string]: string; | ||
}; | ||
preloads: PreloadFile[]; | ||
autoloads: { | ||
[alias: string]: string; | ||
}; | ||
typescript: boolean; | ||
ioc: Ioc; | ||
preloads: PreloadNode[]; | ||
server: any; | ||
private _intent; | ||
constructor(appRoot: string); | ||
private _require; | ||
private _parseRcFile; | ||
private _loadRcFile; | ||
private _loadAppFile; | ||
private _instantiateIoCContainer; | ||
private _registerAutoloads; | ||
private _bootProviders; | ||
private _bindHelpers; | ||
private _preloadFiles; | ||
private _ensureIntent; | ||
forAce(): this; | ||
forHttpServer(): this; | ||
start(): void; | ||
private _bootstrap; | ||
private _createHttp; | ||
private _listen; | ||
startHttpServer(serverCallback?: (handler: any) => any): Promise<void>; | ||
} | ||
export {}; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const path_1 = require("path"); | ||
const lodash_1 = require("lodash"); | ||
const http_1 = require("http"); | ||
const utils_1 = require("@adonisjs/utils"); | ||
const fold_1 = require("@adonisjs/fold"); | ||
const Helpers_1 = require("../Helpers"); | ||
const DEFAULTS = { | ||
directories: { | ||
controllers: 'Controllers/Http', | ||
models: 'Models', | ||
listeners: 'Listeners', | ||
exceptions: 'Exceptions', | ||
typescript: false, | ||
autoloads: { | ||
App: './app', | ||
}, | ||
preloads: [], | ||
autoloads: { | ||
app: 'App', | ||
directories: { | ||
config: './config', | ||
public: './public', | ||
database: './database', | ||
migrations: './database/migrations', | ||
seeds: './database/seeds', | ||
resources: './resources', | ||
views: './resources/views', | ||
tmp: './tmp', | ||
start: './start', | ||
}, | ||
runtime: 'javascript', | ||
}; | ||
class Ignitor { | ||
constructor() { | ||
this._baseDir = __dirname; | ||
this._rcPath = path_1.join(this._baseDir, '.adonisrc.json'); | ||
this.directories = {}; | ||
this.preloads = []; | ||
constructor(appRoot) { | ||
this.appRoot = appRoot; | ||
} | ||
_require(filePath, optional = false) { | ||
try { | ||
return require(filePath); | ||
return utils_1.tsRequire(filePath, this.typescript); | ||
} | ||
catch (error) { | ||
if (['ENOENT', 'MODULE_NOT_FOUND'].indexOf(error.code) > -1 && optional) { | ||
if (['MODULE_NOT_FOUND', 'ENOENT'].indexOf(error.code) > -1 && optional) { | ||
return null; | ||
@@ -36,31 +42,90 @@ } | ||
} | ||
_parseRcFile() { | ||
const config = this._require(this._rcPath, true) || {}; | ||
this.directories = Object.assign(DEFAULTS.directories, config.directories); | ||
this.preloads = Object.assign(DEFAULTS.preloads, config.preloads); | ||
_loadRcFile() { | ||
const rcFile = this._require(path_1.join(this.appRoot, '.adonisrc.json'), true) || {}; | ||
this.directories = lodash_1.merge({}, DEFAULTS.directories, rcFile.directories); | ||
this.autoloads = rcFile.autoloads || DEFAULTS.autoloads; | ||
this.typescript = rcFile.typescript || DEFAULTS.typescript; | ||
this.preloads = rcFile.preloads || []; | ||
} | ||
_loadAppFile() { | ||
const appFile = path_1.join(this.appRoot, this.directories.start, 'app'); | ||
const appExports = this._require(appFile); | ||
const requiredExports = ['providers', 'aceProviders', 'commands']; | ||
requiredExports.forEach((prop) => { | ||
if (!appExports[prop]) { | ||
throw new utils_1.Exception(`export \`${prop}\` from \`${this.directories.start}/app\` file`, 500, 'E_MISSING_APP_ESSENTIALS'); | ||
} | ||
}); | ||
return appExports; | ||
} | ||
_instantiateIoCContainer() { | ||
this.ioc = new fold_1.Ioc(false, this.typescript); | ||
} | ||
_registerAutoloads() { | ||
Object.keys(this.autoloads).forEach((alias) => { | ||
this.ioc.autoload(path_1.join(this.appRoot, this.autoloads[alias]), alias); | ||
}); | ||
} | ||
async _bootProviders() { | ||
const registrar = new fold_1.Registrar(this.ioc); | ||
const { providers, aceProviders, aliases } = this._loadAppFile(); | ||
const list = this._intent === 'ace' ? providers.concat(aceProviders) : providers; | ||
const providersInstances = registrar.useProviders(list).register(); | ||
if (aliases) { | ||
Object.keys(aliases).forEach((alias) => { | ||
this.ioc.alias(aliases[alias], alias); | ||
}); | ||
} | ||
await registrar.boot(providersInstances); | ||
} | ||
_bindHelpers() { | ||
this.ioc.singleton('Adonis/Src/Helpers', () => new Helpers_1.Helpers(this.appRoot, this.directories)); | ||
this.ioc.alias('Adonis/Src/Helpers', 'Helpers'); | ||
} | ||
_preloadFiles() { | ||
this.preloads | ||
.filter((file) => !file.intent || file.intent === this._intent) | ||
.forEach((file) => this._require(path_1.join(this._baseDir, file.file), file.optional)); | ||
.filter((node) => node.intent === this._intent || !node.intent) | ||
.forEach((node) => this._require(path_1.join(this.appRoot, node.file), node.optional)); | ||
} | ||
_ensureIntent() { | ||
if (this._intent === undefined) { | ||
throw new utils_1.Exception('Cannot start ignitor as intent is missing', 500, 'E_MISSING_IGNITOR_INTENT'); | ||
} | ||
async _bootstrap() { | ||
this._loadRcFile(); | ||
this._instantiateIoCContainer(); | ||
this._bindHelpers(); | ||
await this._bootProviders(); | ||
this._registerAutoloads(); | ||
this._preloadFiles(); | ||
} | ||
forAce() { | ||
this._intent = 'ace'; | ||
return this; | ||
_createHttp(serverCallback) { | ||
const server = this.ioc.use('Adonis/Src/Server'); | ||
const router = this.ioc.use('Adonis/Src/Route'); | ||
router.commit(); | ||
server.optimize(); | ||
const handler = server.handle.bind(server); | ||
this.server = serverCallback ? serverCallback(handler) : http_1.createServer(server.handle.bind(server)); | ||
} | ||
forHttpServer() { | ||
_listen(port, host) { | ||
return new Promise((resolve, reject) => { | ||
this.server.listen(port, host, (error) => { | ||
if (error) { | ||
reject(error); | ||
} | ||
else { | ||
resolve(); | ||
} | ||
}); | ||
}); | ||
} | ||
async startHttpServer(serverCallback) { | ||
this._intent = 'http'; | ||
return this; | ||
try { | ||
await this._bootstrap(); | ||
this._createHttp(serverCallback); | ||
await this._listen(process.env.PORT, process.env.HOST); | ||
} | ||
catch (error) { | ||
console.log(error); | ||
process.exit(1); | ||
} | ||
} | ||
start() { | ||
this._ensureIntent(); | ||
this._parseRcFile(); | ||
this._preloadFiles(); | ||
} | ||
} | ||
exports.Ignitor = Ignitor; |
@@ -6,8 +6,23 @@ # Change Log | ||
# 1.1.0 (2019-01-26) | ||
# [1.2.0](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/compare/@adonisjs/core@1.1.0...@adonisjs/core@1.2.0) (2019-02-01) | ||
### Bug Fixes | ||
* **core:** fix failing test ([915dcff](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/915dcff)) | ||
* **core:** tests still failing ([2efbc17](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/2efbc17)) | ||
### Features | ||
* **core:** initiate core package ([938af90](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/938af90)) | ||
* **core:** start implementing server and ignitor ([cda3f96](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/cda3f96)) | ||
* **core:** add config module ([f573603](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/f573603)) | ||
* **core:** add env class ([66aa52a](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/66aa52a)) | ||
* **core:** add ignitor module ([eeb3ce5](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/eeb3ce5)) | ||
* **helpers:** add helpers ([7bcdb3f](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/7bcdb3f)) | ||
* **middleware:** add middleware store class ([8edf0a8](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/8edf0a8)) | ||
* **middleware:** implement middleware store ([165a023](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/165a023)) | ||
### Reverts | ||
* **core:** start from blank slate ([ecd2c87](https://github.com/adonisjs/adonis-framework/tree/master/packages/core/commit/ecd2c87)) |
{ | ||
"name": "@adonisjs/core", | ||
"version": "1.1.0", | ||
"description": "AdonisJs core package to run HTTP server", | ||
"version": "1.2.0", | ||
"description": "AdonisJs core package", | ||
"main": "build/index.js", | ||
@@ -20,3 +20,7 @@ "files": [ | ||
}, | ||
"keywords": [], | ||
"keywords": [ | ||
"http", | ||
"http-server", | ||
"adonisjs" | ||
], | ||
"author": "virk", | ||
@@ -29,10 +33,2 @@ "homepage": "https://adonisjs.com", | ||
"license": "MIT", | ||
"dependencies": { | ||
"@adonisjs/request": "^1.1.4", | ||
"@adonisjs/response": "^1.1.4", | ||
"@adonisjs/router": "^1.2.0", | ||
"@adonisjs/utils": "^1.2.0", | ||
"co-compose": "^5.0.2", | ||
"macroable": "^2.0.0" | ||
}, | ||
"nyc": { | ||
@@ -49,3 +45,17 @@ "exclude": [ | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/adonisjs/adonis-framework/issues" | ||
}, | ||
"dependencies": { | ||
"@adonisjs/request": "^1.1.5", | ||
"@adonisjs/response": "^1.1.6", | ||
"@adonisjs/router": "^1.4.0", | ||
"@adonisjs/server": "^1.2.0", | ||
"@adonisjs/utils": "^1.3.0", | ||
"dotenv": "^6.2.0", | ||
"lodash": "^4.17.11", | ||
"require-all": "^3.0.0" | ||
}, | ||
"devDependencies": { | ||
"@adonisjs/fold": "5.0.1", | ||
"clear-module": "^3.1.0", | ||
@@ -55,3 +65,3 @@ "fs-extra": "^7.0.1", | ||
}, | ||
"gitHead": "945c1d53feb454f666ca6e7a24fe1bafd21e98f1" | ||
"gitHead": "63d674532353e511365b08ebd1129a042a631c50" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 6 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
17974
19
421
0
8
4
10
2
+ Added@adonisjs/server@^1.2.0
+ Addeddotenv@^6.2.0
+ Addedlodash@^4.17.11
+ Addedrequire-all@^3.0.0
+ Added@adonisjs/fold@5.0.11(transitive)
+ Added@adonisjs/server@1.3.1(transitive)
+ Added@poppinss/utils@1.0.9(transitive)
+ Addeddotenv@6.2.0(transitive)
+ Addedhaye@2.0.2(transitive)
- Removedco-compose@^5.0.2
- Removedmacroable@^2.0.0
Updated@adonisjs/request@^1.1.5
Updated@adonisjs/response@^1.1.6
Updated@adonisjs/router@^1.4.0
Updated@adonisjs/utils@^1.3.0