@adonisjs/core 5.9.0 → 6.0.1-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.
- package/README.md +6 -15
- package/build/commands/commands.json +1 -0
- package/build/commands/eject.d.ts +8 -0
- package/build/commands/eject.js +34 -0
- package/build/commands/{GenerateKey.d.ts → generate_key.d.ts} +3 -4
- package/build/commands/generate_key.js +47 -0
- package/build/commands/main.js +36 -0
- package/build/commands/make/_base.d.ts +6 -0
- package/build/commands/make/_base.js +19 -0
- package/build/commands/make/command.d.ts +8 -0
- package/build/commands/make/command.js +25 -0
- package/build/commands/make/controller.d.ts +12 -0
- package/build/commands/make/controller.js +57 -0
- package/build/commands/make/event.d.ts +8 -0
- package/build/commands/make/event.js +25 -0
- package/build/commands/make/listener.d.ts +10 -0
- package/build/commands/make/listener.js +48 -0
- package/build/commands/make/middleware.d.ts +8 -0
- package/build/commands/make/middleware.js +25 -0
- package/build/commands/make/provider.d.ts +8 -0
- package/build/commands/make/provider.js +25 -0
- package/build/factories/app.d.ts +1 -0
- package/build/factories/app.js +1 -0
- package/build/factories/bodyparser.d.ts +1 -0
- package/build/factories/bodyparser.js +1 -0
- package/build/factories/core/ace.d.ts +8 -0
- package/build/factories/core/ace.js +19 -0
- package/build/factories/core/ignitor.d.ts +16 -0
- package/build/factories/core/ignitor.js +76 -0
- package/build/factories/core/main.d.ts +4 -0
- package/build/factories/core/main.js +4 -0
- package/build/factories/core/test_utils.d.ts +8 -0
- package/build/factories/core/test_utils.js +15 -0
- package/build/factories/encryption.d.ts +1 -0
- package/build/factories/encryption.js +1 -0
- package/build/factories/events.d.ts +1 -0
- package/build/factories/events.js +1 -0
- package/build/factories/hash.d.ts +1 -0
- package/build/factories/hash.js +1 -0
- package/build/factories/http.d.ts +1 -0
- package/build/factories/http.js +1 -0
- package/build/factories/logger.d.ts +1 -0
- package/build/factories/logger.js +1 -0
- package/build/factories/stubs.d.ts +15 -0
- package/build/factories/stubs.js +20 -0
- package/build/index.d.ts +140 -0
- package/build/index.js +21 -0
- package/build/legacy/validator.d.ts +1 -0
- package/build/legacy/validator.js +1 -0
- package/build/modules/ace/commands.d.ts +26 -0
- package/build/modules/ace/commands.js +63 -0
- package/build/modules/ace/create_kernel.d.ts +3 -0
- package/build/modules/ace/create_kernel.js +33 -0
- package/build/modules/ace/kernel.d.ts +7 -0
- package/build/modules/ace/kernel.js +14 -0
- package/build/modules/ace/main.d.ts +3 -0
- package/build/modules/ace/main.js +3 -0
- package/build/modules/app.d.ts +1 -0
- package/build/modules/app.js +1 -0
- package/build/modules/bodyparser/bodyparser_middleware.d.ts +2 -0
- package/build/modules/bodyparser/bodyparser_middleware.js +2 -0
- package/build/modules/bodyparser/main.d.ts +1 -0
- package/build/modules/bodyparser/main.js +1 -0
- package/build/modules/config.d.ts +1 -0
- package/build/modules/config.js +1 -0
- package/build/modules/container.d.ts +1 -0
- package/build/modules/container.js +1 -0
- package/build/modules/encryption.d.ts +1 -0
- package/build/modules/encryption.js +1 -0
- package/build/modules/env.d.ts +1 -0
- package/build/modules/env.js +1 -0
- package/build/modules/events.d.ts +1 -0
- package/build/modules/events.js +1 -0
- package/build/modules/hash/define_config.d.ts +15 -0
- package/build/modules/hash/define_config.js +19 -0
- package/build/modules/hash/drivers_collection.d.ts +9 -0
- package/build/modules/hash/drivers_collection.js +22 -0
- package/build/modules/hash/main.d.ts +2 -0
- package/build/modules/hash/main.js +2 -0
- package/build/modules/http.d.ts +1 -0
- package/build/modules/http.js +1 -0
- package/build/modules/logger.d.ts +1 -0
- package/build/modules/logger.js +1 -0
- package/build/providers/app_provider.d.ts +16 -0
- package/build/providers/app_provider.js +74 -0
- package/build/providers/hash_provider.d.ts +9 -0
- package/build/providers/hash_provider.js +29 -0
- package/build/providers/http_provider.d.ts +9 -0
- package/build/providers/http_provider.js +36 -0
- package/build/services/ace.d.ts +3 -0
- package/build/services/ace.js +6 -0
- package/build/services/app.d.ts +4 -12
- package/build/services/app.js +5 -12
- package/build/services/config.d.ts +3 -3
- package/build/services/config.js +6 -12
- package/build/services/emitter.d.ts +3 -0
- package/build/services/emitter.js +7 -0
- package/build/services/encryption.d.ts +3 -3
- package/build/services/encryption.js +7 -12
- package/build/services/hash.d.ts +3 -3
- package/build/services/hash.js +7 -12
- package/build/services/logger.d.ts +3 -0
- package/build/services/logger.js +7 -0
- package/build/services/router.d.ts +3 -0
- package/build/services/router.js +7 -0
- package/build/services/server.d.ts +3 -0
- package/build/services/server.js +7 -0
- package/build/services/test_utils.d.ts +3 -0
- package/build/services/test_utils.js +6 -0
- package/build/src/debug.d.ts +3 -0
- package/build/src/debug.js +2 -0
- package/build/src/helpers/is.d.ts +2 -0
- package/build/src/helpers/is.js +2 -0
- package/build/src/helpers/main.d.ts +2 -0
- package/build/src/helpers/main.js +2 -0
- package/build/src/helpers/string.d.ts +17 -0
- package/build/src/helpers/string.js +26 -0
- package/build/src/helpers/string_builder.d.ts +23 -0
- package/build/src/helpers/string_builder.js +86 -0
- package/build/src/helpers/types.d.ts +24 -0
- package/build/src/helpers/types.js +29 -0
- package/build/src/ignitor/ace.d.ts +8 -0
- package/build/src/ignitor/ace.js +31 -0
- package/build/src/ignitor/http.d.ts +10 -0
- package/build/src/ignitor/http.js +62 -0
- package/build/src/ignitor/main.d.ts +17 -0
- package/build/src/ignitor/main.js +45 -0
- package/build/src/ignitor/test.d.ts +8 -0
- package/build/src/ignitor/test.js +18 -0
- package/build/src/test_utils/http.d.ts +10 -0
- package/build/src/test_utils/http.js +42 -0
- package/build/src/test_utils/main.d.ts +19 -0
- package/build/src/test_utils/main.js +33 -0
- package/build/src/types.d.ts +63 -0
- package/build/src/types.js +1 -0
- package/build/stubs/index.d.ts +1 -0
- package/build/stubs/index.js +2 -0
- package/build/stubs/make/command/main.stub +19 -0
- package/build/stubs/make/controller/api.stub +33 -0
- package/build/stubs/make/controller/main.stub +9 -0
- package/build/stubs/make/controller/resource.stub +43 -0
- package/build/stubs/make/event/main.stub +15 -0
- package/build/stubs/make/listener/for_event.stub +13 -0
- package/build/stubs/make/listener/main.stub +7 -0
- package/build/stubs/make/middleware/main.stub +22 -0
- package/build/stubs/make/provider/main.stub +35 -0
- package/build/types/ace.d.ts +5 -0
- package/build/types/ace.js +1 -0
- package/build/types/app.d.ts +1 -0
- package/build/types/app.js +1 -0
- package/build/types/bodyparser.d.ts +1 -0
- package/build/types/bodyparser.js +1 -0
- package/build/types/container.d.ts +1 -0
- package/build/types/container.js +1 -0
- package/build/types/encryption.d.ts +1 -0
- package/build/types/encryption.js +1 -0
- package/build/types/events.d.ts +1 -0
- package/build/types/events.js +1 -0
- package/build/types/hash.d.ts +1 -0
- package/build/types/hash.js +1 -0
- package/build/types/http.d.ts +1 -0
- package/build/types/http.js +1 -0
- package/build/types/logger.d.ts +1 -0
- package/build/types/logger.js +1 -0
- package/package.json +235 -245
- package/build/adonis-typings/ace.d.ts +0 -5
- package/build/adonis-typings/ace.js +0 -8
- package/build/adonis-typings/assets-manager.d.ts +0 -92
- package/build/adonis-typings/assets-manager.js +0 -8
- package/build/adonis-typings/container.d.ts +0 -14
- package/build/adonis-typings/container.js +0 -8
- package/build/adonis-typings/cors.d.ts +0 -15
- package/build/adonis-typings/cors.js +0 -8
- package/build/adonis-typings/exception-handler.d.ts +0 -31
- package/build/adonis-typings/exception-handler.js +0 -8
- package/build/adonis-typings/health-check.d.ts +0 -40
- package/build/adonis-typings/health-check.js +0 -8
- package/build/adonis-typings/index.d.ts +0 -17
- package/build/adonis-typings/index.js +0 -25
- package/build/adonis-typings/static.d.ts +0 -15
- package/build/adonis-typings/static.js +0 -8
- package/build/adonis-typings/test-utils.d.ts +0 -24
- package/build/adonis-typings/test-utils.js +0 -8
- package/build/adonis-typings/tests.d.ts +0 -13
- package/build/adonis-typings/tests.js +0 -11
- package/build/commands/DumpRc.d.ts +0 -13
- package/build/commands/DumpRc.js +0 -33
- package/build/commands/GenerateKey.js +0 -25
- package/build/commands/ListRoutes/Renderers/Base.d.ts +0 -31
- package/build/commands/ListRoutes/Renderers/Base.js +0 -70
- package/build/commands/ListRoutes/Renderers/PrettyRenderer.d.ts +0 -51
- package/build/commands/ListRoutes/Renderers/PrettyRenderer.js +0 -135
- package/build/commands/ListRoutes/Renderers/TableRenderer.d.ts +0 -36
- package/build/commands/ListRoutes/Renderers/TableRenderer.js +0 -137
- package/build/commands/ListRoutes/index.d.ts +0 -75
- package/build/commands/ListRoutes/index.js +0 -166
- package/build/commands/index.d.ts +0 -2
- package/build/commands/index.js +0 -15
- package/build/config.d.ts +0 -2
- package/build/config.js +0 -15
- package/build/instructions.js +0 -81
- package/build/providers/AppProvider.d.ts +0 -68
- package/build/providers/AppProvider.js +0 -201
- package/build/services/base.d.ts +0 -3
- package/build/services/base.js +0 -23
- package/build/services/bodyparser.d.ts +0 -2
- package/build/services/bodyparser.js +0 -12
- package/build/services/drive.d.ts +0 -3
- package/build/services/drive.js +0 -12
- package/build/services/event.d.ts +0 -3
- package/build/services/event.js +0 -12
- package/build/services/healthChecks.d.ts +0 -3
- package/build/services/healthChecks.js +0 -12
- package/build/services/httpContext.d.ts +0 -3
- package/build/services/httpContext.js +0 -12
- package/build/services/route.d.ts +0 -3
- package/build/services/route.js +0 -12
- package/build/services/validator.d.ts +0 -3
- package/build/services/validator.js +0 -12
- package/build/src/AssetsManager/Drivers/Base.d.ts +0 -27
- package/build/src/AssetsManager/Drivers/Base.js +0 -66
- package/build/src/AssetsManager/Drivers/Encore.d.ts +0 -58
- package/build/src/AssetsManager/Drivers/Encore.js +0 -93
- package/build/src/AssetsManager/Drivers/Fake.d.ts +0 -38
- package/build/src/AssetsManager/Drivers/Fake.js +0 -61
- package/build/src/AssetsManager/Drivers/Vite.d.ts +0 -84
- package/build/src/AssetsManager/Drivers/Vite.js +0 -139
- package/build/src/AssetsManager/index.d.ts +0 -87
- package/build/src/AssetsManager/index.js +0 -184
- package/build/src/Bindings/Repl.d.ts +0 -8
- package/build/src/Bindings/Repl.js +0 -90
- package/build/src/Bindings/Tests.d.ts +0 -7
- package/build/src/Bindings/Tests.js +0 -66
- package/build/src/HealthCheck/Checkers/AppKey.d.ts +0 -6
- package/build/src/HealthCheck/Checkers/AppKey.js +0 -60
- package/build/src/HealthCheck/Checkers/Env.d.ts +0 -6
- package/build/src/HealthCheck/Checkers/Env.js +0 -42
- package/build/src/HealthCheck/index.d.ts +0 -48
- package/build/src/HealthCheck/index.js +0 -99
- package/build/src/Hooks/Cors/index.d.ts +0 -70
- package/build/src/Hooks/Cors/index.js +0 -314
- package/build/src/Hooks/Static/index.d.ts +0 -18
- package/build/src/Hooks/Static/index.js +0 -66
- package/build/src/HttpExceptionHandler/index.d.ts +0 -82
- package/build/src/HttpExceptionHandler/index.js +0 -213
- package/build/src/Ignitor/Ace/App/index.d.ts +0 -60
- package/build/src/Ignitor/Ace/App/index.js +0 -236
- package/build/src/Ignitor/Ace/Exceptions/index.d.ts +0 -4
- package/build/src/Ignitor/Ace/Exceptions/index.js +0 -19
- package/build/src/Ignitor/Ace/GenerateManifest/index.d.ts +0 -28
- package/build/src/Ignitor/Ace/GenerateManifest/index.js +0 -75
- package/build/src/Ignitor/Ace/index.d.ts +0 -11
- package/build/src/Ignitor/Ace/index.js +0 -36
- package/build/src/Ignitor/HttpServer/index.d.ts +0 -56
- package/build/src/Ignitor/HttpServer/index.js +0 -127
- package/build/src/Ignitor/Kernel/index.d.ts +0 -56
- package/build/src/Ignitor/Kernel/index.js +0 -123
- package/build/src/Ignitor/SignalsListener/index.d.ts +0 -23
- package/build/src/Ignitor/SignalsListener/index.js +0 -66
- package/build/src/Ignitor/index.d.ts +0 -32
- package/build/src/Ignitor/index.js +0 -58
- package/build/src/TestUtils/HttpServer/index.d.ts +0 -27
- package/build/src/TestUtils/HttpServer/index.js +0 -56
- package/build/src/TestUtils/index.d.ts +0 -24
- package/build/src/TestUtils/index.js +0 -43
- package/build/src/utils/index.d.ts +0 -18
- package/build/src/utils/index.js +0 -82
- package/build/standalone.d.ts +0 -9
- package/build/standalone.js +0 -52
- package/build/templates/config/app.txt +0 -303
- package/build/templates/config/bodyparser.txt +0 -211
- package/build/templates/config/cors.txt +0 -134
- package/build/templates/config/drive.txt +0 -149
- package/build/templates/config/hash.txt +0 -96
- package/build/templates/config/static.txt +0 -89
- package/build/templates/contracts/drive.txt +0 -13
- package/build/templates/contracts/env.txt +0 -24
- package/build/templates/contracts/events.txt +0 -31
- package/build/templates/contracts/hash.txt +0 -13
- package/build/templates/env.txt +0 -31
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import type { Server as NodeHttpsServer } from 'node:https';
|
|
4
|
+
import { IncomingMessage, ServerResponse, Server as NodeHttpServer } from 'node:http';
|
|
5
|
+
import { Ignitor } from './main.js';
|
|
6
|
+
export declare class HttpServerProcess {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(ignitor: Ignitor);
|
|
9
|
+
start(serverCallback?: (handler: (req: IncomingMessage, res: ServerResponse) => any) => NodeHttpsServer | NodeHttpServer): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createServer } from 'node:http';
|
|
2
|
+
import debug from '../debug.js';
|
|
3
|
+
export class HttpServerProcess {
|
|
4
|
+
#ignitor;
|
|
5
|
+
constructor(ignitor) {
|
|
6
|
+
this.#ignitor = ignitor;
|
|
7
|
+
}
|
|
8
|
+
#close(nodeHttpServer) {
|
|
9
|
+
return new Promise((resolve) => {
|
|
10
|
+
debug('closing http server process');
|
|
11
|
+
nodeHttpServer.close(() => resolve());
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
#monitorAppAndServer(nodeHttpServer, app, logger) {
|
|
15
|
+
app.terminating(async () => {
|
|
16
|
+
debug('terminating signal received');
|
|
17
|
+
await this.#close(nodeHttpServer);
|
|
18
|
+
});
|
|
19
|
+
nodeHttpServer.once('error', (error) => {
|
|
20
|
+
debug('http server crashed with error "%O"', error);
|
|
21
|
+
logger.fatal({ err: error }, error.message);
|
|
22
|
+
process.exitCode = 1;
|
|
23
|
+
app.terminate();
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
#listen(nodeHttpServer) {
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
const host = process.env.HOST || '0.0.0.0';
|
|
29
|
+
const port = Number(process.env.PORT || '3333');
|
|
30
|
+
nodeHttpServer.listen(port, host);
|
|
31
|
+
nodeHttpServer.once('listening', () => {
|
|
32
|
+
debug('listening to http server, host :%s, port: %s', host, port);
|
|
33
|
+
resolve({ port, host });
|
|
34
|
+
});
|
|
35
|
+
nodeHttpServer.once('error', (error) => {
|
|
36
|
+
reject(error);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
#notifyServerHasStarted(app, logger, emitter, payload) {
|
|
41
|
+
app.notify({ isAdonisJS: true, environment: 'web', ...payload });
|
|
42
|
+
logger.info('started HTTP server on %s:%s', payload.host, payload.port);
|
|
43
|
+
emitter.emit('http:server_ready', payload);
|
|
44
|
+
}
|
|
45
|
+
async start(serverCallback) {
|
|
46
|
+
const createHTTPServer = serverCallback || createServer;
|
|
47
|
+
const app = this.#ignitor.createApp('web');
|
|
48
|
+
await app.init();
|
|
49
|
+
await app.boot();
|
|
50
|
+
await app.start(async () => {
|
|
51
|
+
const server = await app.container.make('server');
|
|
52
|
+
await server.boot();
|
|
53
|
+
const httpServer = createHTTPServer(server.handle.bind(server));
|
|
54
|
+
server.setNodeServer(httpServer);
|
|
55
|
+
const logger = await app.container.make('logger');
|
|
56
|
+
const emitter = await app.container.make('emitter');
|
|
57
|
+
const payload = await this.#listen(httpServer);
|
|
58
|
+
this.#notifyServerHasStarted(app, logger, emitter, payload);
|
|
59
|
+
this.#monitorAppAndServer(httpServer, app, logger);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { AceProcess } from './ace.js';
|
|
3
|
+
import { TestRunnerProcess } from './test.js';
|
|
4
|
+
import { HttpServerProcess } from './http.js';
|
|
5
|
+
import type { AppEnvironments } from '../../types/app.js';
|
|
6
|
+
import type { ApplicationService, IgnitorOptions } from '../types.js';
|
|
7
|
+
export declare class Ignitor {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(appRoot: URL, options: IgnitorOptions);
|
|
10
|
+
getApp(): ApplicationService | undefined;
|
|
11
|
+
createApp(environment: AppEnvironments): ApplicationService;
|
|
12
|
+
tap(callback: (app: ApplicationService) => void): this;
|
|
13
|
+
httpServer(): HttpServerProcess;
|
|
14
|
+
ace(): AceProcess;
|
|
15
|
+
testRunner(): TestRunnerProcess;
|
|
16
|
+
terminate(): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import debug from '../debug.js';
|
|
2
|
+
import { AceProcess } from './ace.js';
|
|
3
|
+
import { TestRunnerProcess } from './test.js';
|
|
4
|
+
import { HttpServerProcess } from './http.js';
|
|
5
|
+
import { setApp } from '../../services/app.js';
|
|
6
|
+
import { Application } from '../../modules/app.js';
|
|
7
|
+
export class Ignitor {
|
|
8
|
+
#options;
|
|
9
|
+
#appRoot;
|
|
10
|
+
#app;
|
|
11
|
+
#tapCallbacks = new Set();
|
|
12
|
+
constructor(appRoot, options) {
|
|
13
|
+
this.#appRoot = appRoot;
|
|
14
|
+
this.#options = options;
|
|
15
|
+
}
|
|
16
|
+
#runTapCallbacks(app) {
|
|
17
|
+
this.#tapCallbacks.forEach((tapCallback) => tapCallback(app));
|
|
18
|
+
}
|
|
19
|
+
getApp() {
|
|
20
|
+
return this.#app;
|
|
21
|
+
}
|
|
22
|
+
createApp(environment) {
|
|
23
|
+
debug('creating application instance');
|
|
24
|
+
this.#app = new Application(this.#appRoot, { environment, importer: this.#options.importer });
|
|
25
|
+
setApp(this.#app);
|
|
26
|
+
this.#runTapCallbacks(this.#app);
|
|
27
|
+
return this.#app;
|
|
28
|
+
}
|
|
29
|
+
tap(callback) {
|
|
30
|
+
this.#tapCallbacks.add(callback);
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
httpServer() {
|
|
34
|
+
return new HttpServerProcess(this);
|
|
35
|
+
}
|
|
36
|
+
ace() {
|
|
37
|
+
return new AceProcess(this);
|
|
38
|
+
}
|
|
39
|
+
testRunner() {
|
|
40
|
+
return new TestRunnerProcess(this);
|
|
41
|
+
}
|
|
42
|
+
async terminate() {
|
|
43
|
+
await this.#app?.terminate();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Ignitor } from './main.js';
|
|
2
|
+
import type { ApplicationService } from '../types.js';
|
|
3
|
+
export declare class TestRunnerProcess {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(ignitor: Ignitor);
|
|
6
|
+
configure(callback: (app: ApplicationService) => Promise<void> | void): this;
|
|
7
|
+
run(callback: (app: ApplicationService) => Promise<void> | void): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class TestRunnerProcess {
|
|
2
|
+
#ignitor;
|
|
3
|
+
#configureCallback = () => { };
|
|
4
|
+
constructor(ignitor) {
|
|
5
|
+
this.#ignitor = ignitor;
|
|
6
|
+
}
|
|
7
|
+
configure(callback) {
|
|
8
|
+
this.#configureCallback = callback;
|
|
9
|
+
return this;
|
|
10
|
+
}
|
|
11
|
+
async run(callback) {
|
|
12
|
+
const app = this.#ignitor.createApp('test');
|
|
13
|
+
await app.init();
|
|
14
|
+
await app.boot();
|
|
15
|
+
await app.start(this.#configureCallback);
|
|
16
|
+
await callback(app);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import type { TestUtils } from './main.js';
|
|
4
|
+
import type { Server as NodeHttpsServer } from 'node:https';
|
|
5
|
+
import { IncomingMessage, ServerResponse, Server as NodeHttpServer } from 'node:http';
|
|
6
|
+
export declare class HttpServerUtils {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(utils: TestUtils);
|
|
9
|
+
start(serverCallback?: (handler: (req: IncomingMessage, res: ServerResponse) => any) => NodeHttpsServer | NodeHttpServer): Promise<() => Promise<void>>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import debug from '../debug.js';
|
|
2
|
+
import { createServer } from 'node:http';
|
|
3
|
+
export class HttpServerUtils {
|
|
4
|
+
#utils;
|
|
5
|
+
constructor(utils) {
|
|
6
|
+
this.#utils = utils;
|
|
7
|
+
}
|
|
8
|
+
#listen(nodeHttpServer) {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
const host = process.env.HOST || '0.0.0.0';
|
|
11
|
+
const port = Number(process.env.PORT || '3333');
|
|
12
|
+
nodeHttpServer.listen(port, host);
|
|
13
|
+
nodeHttpServer.once('listening', () => {
|
|
14
|
+
debug('listening to utils http server, host :%s, port: %s', host, port);
|
|
15
|
+
resolve({ port, host });
|
|
16
|
+
});
|
|
17
|
+
nodeHttpServer.once('error', (error) => {
|
|
18
|
+
reject(error);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async start(serverCallback) {
|
|
23
|
+
const createHTTPServer = serverCallback || createServer;
|
|
24
|
+
const server = await this.#utils.app.container.make('server');
|
|
25
|
+
await server.boot();
|
|
26
|
+
const httpServer = createHTTPServer(server.handle.bind(server));
|
|
27
|
+
server.setNodeServer(httpServer);
|
|
28
|
+
await this.#listen(httpServer);
|
|
29
|
+
return () => {
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
httpServer.close((error) => {
|
|
32
|
+
if (error) {
|
|
33
|
+
reject(error);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
resolve();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import Macroable from '@poppinss/macroable';
|
|
3
|
+
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
4
|
+
import { HttpServerUtils } from './http.js';
|
|
5
|
+
import type { ApplicationService } from '../types.js';
|
|
6
|
+
import { CookieClient } from '../../modules/http.js';
|
|
7
|
+
export declare class TestUtils extends Macroable {
|
|
8
|
+
#private;
|
|
9
|
+
app: ApplicationService;
|
|
10
|
+
get isBooted(): boolean;
|
|
11
|
+
cookies: CookieClient;
|
|
12
|
+
constructor(app: ApplicationService);
|
|
13
|
+
boot(): Promise<void>;
|
|
14
|
+
httpServer(): HttpServerUtils;
|
|
15
|
+
createHttpContext(options?: {
|
|
16
|
+
req?: IncomingMessage;
|
|
17
|
+
res?: ServerResponse;
|
|
18
|
+
}): Promise<import("../../modules/http.js").HttpContext>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Socket } from 'node:net';
|
|
2
|
+
import Macroable from '@poppinss/macroable';
|
|
3
|
+
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
4
|
+
import { HttpServerUtils } from './http.js';
|
|
5
|
+
import { CookieClient } from '../../modules/http.js';
|
|
6
|
+
export class TestUtils extends Macroable {
|
|
7
|
+
app;
|
|
8
|
+
#booted = false;
|
|
9
|
+
get isBooted() {
|
|
10
|
+
return this.#booted;
|
|
11
|
+
}
|
|
12
|
+
constructor(app) {
|
|
13
|
+
super();
|
|
14
|
+
this.app = app;
|
|
15
|
+
}
|
|
16
|
+
async boot() {
|
|
17
|
+
if (!this.isBooted) {
|
|
18
|
+
this.#booted = true;
|
|
19
|
+
this.cookies = new CookieClient(await this.app.container.make('encryption'));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
httpServer() {
|
|
23
|
+
return new HttpServerUtils(this);
|
|
24
|
+
}
|
|
25
|
+
async createHttpContext(options = {}) {
|
|
26
|
+
const req = options.req || new IncomingMessage(new Socket());
|
|
27
|
+
const res = options.res || new ServerResponse(req);
|
|
28
|
+
const server = await this.app.container.make('server');
|
|
29
|
+
const request = server.createRequest(req, res);
|
|
30
|
+
const response = server.createResponse(req, res);
|
|
31
|
+
return server.createHttpContext(request, response, this.app.container.createResolver());
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Importer } from '../types/app.js';
|
|
2
|
+
import type { Emitter } from '../modules/events.js';
|
|
3
|
+
import type { Kernel } from '../modules/ace/main.js';
|
|
4
|
+
import type { Application } from '../modules/app.js';
|
|
5
|
+
import type { TestUtils } from './test_utils/main.js';
|
|
6
|
+
import type { Router, Server } from '../modules/http.js';
|
|
7
|
+
import type { LoggerManager } from '../modules/logger.js';
|
|
8
|
+
import type { Encryption } from '../modules/encryption.js';
|
|
9
|
+
import type { HttpRequestFinishedPayload } from '../types/http.js';
|
|
10
|
+
import type { LoggerConfig, LoggerManagerConfig } from '../types/logger.js';
|
|
11
|
+
import type hashDriversCollection from '../modules/hash/drivers_collection.js';
|
|
12
|
+
import type { Argon, Bcrypt, HashManager, Scrypt } from '../modules/hash/main.js';
|
|
13
|
+
import type { ArgonConfig, BcryptConfig, ScryptConfig, ManagerDriverFactory } from '../types/hash.js';
|
|
14
|
+
export type IgnitorOptions = {
|
|
15
|
+
importer: Importer;
|
|
16
|
+
};
|
|
17
|
+
export interface EventsList {
|
|
18
|
+
'http:request_handled': HttpRequestFinishedPayload;
|
|
19
|
+
'http:server_ready': {
|
|
20
|
+
port: number;
|
|
21
|
+
host: string;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface LoggersList {
|
|
25
|
+
}
|
|
26
|
+
export type InferLoggers<T extends LoggerManagerConfig<any>> = T['loggers'];
|
|
27
|
+
export interface HashDriversList {
|
|
28
|
+
bcrypt: (config: BcryptConfig) => Bcrypt;
|
|
29
|
+
argon2: (config: ArgonConfig) => Argon;
|
|
30
|
+
scrypt: (config: ScryptConfig) => Scrypt;
|
|
31
|
+
}
|
|
32
|
+
export interface HashersList {
|
|
33
|
+
}
|
|
34
|
+
export type InferHashers<T extends {
|
|
35
|
+
list: Record<string, ManagerDriverFactory>;
|
|
36
|
+
}> = T['list'];
|
|
37
|
+
export interface ApplicationService extends Application<ContainerBindings extends Record<any, any> ? ContainerBindings : never> {
|
|
38
|
+
}
|
|
39
|
+
export interface LoggerService extends LoggerManager<LoggersList extends Record<string, LoggerConfig> ? LoggersList : never> {
|
|
40
|
+
}
|
|
41
|
+
export interface EmitterService extends Emitter<EventsList> {
|
|
42
|
+
}
|
|
43
|
+
export interface EncryptionService extends Encryption {
|
|
44
|
+
}
|
|
45
|
+
export interface HttpServerService extends Server {
|
|
46
|
+
}
|
|
47
|
+
export interface HttpRouterService extends Router {
|
|
48
|
+
}
|
|
49
|
+
export interface HashService extends HashManager<HashersList extends Record<string, ManagerDriverFactory> ? HashersList : never> {
|
|
50
|
+
}
|
|
51
|
+
export interface ContainerBindings {
|
|
52
|
+
ace: Kernel;
|
|
53
|
+
app: ApplicationService;
|
|
54
|
+
logger: LoggerService;
|
|
55
|
+
config: ApplicationService['config'];
|
|
56
|
+
emitter: EmitterService;
|
|
57
|
+
encryption: EncryptionService;
|
|
58
|
+
hash: HashService;
|
|
59
|
+
hashDrivers: typeof hashDriversCollection;
|
|
60
|
+
server: HttpServerService;
|
|
61
|
+
router: HttpRouterService;
|
|
62
|
+
testUtils: TestUtils;
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const stubsRoot: string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{{#var commandName = generators.commandName(entity.name)}}
|
|
2
|
+
{{#var commandTerminalName = generators.commandTerminalName(entity.name)}}
|
|
3
|
+
{{#var commandFileName = generators.commandFileName(entity.name)}}
|
|
4
|
+
---
|
|
5
|
+
to: {{ app.commandsPath(entity.path, commandFileName) }}
|
|
6
|
+
---
|
|
7
|
+
import { BaseCommand } from '@adonisjs/core/ace'
|
|
8
|
+
import { CommandOptions } from '@adonisjs/core/types'
|
|
9
|
+
|
|
10
|
+
export default class {{ commandName }} extends BaseCommand {
|
|
11
|
+
static commandName = '{{ commandTerminalName }}'
|
|
12
|
+
static description = ''
|
|
13
|
+
|
|
14
|
+
static options: CommandOptions = {}
|
|
15
|
+
|
|
16
|
+
async run() {
|
|
17
|
+
this.info('Hello world from "{{ commandName }}"')
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{{#var controllerName = generators.controllerName(entity.name)}}
|
|
2
|
+
{{#var controllerFileName = generators.controllerFileName(entity.name)}}
|
|
3
|
+
---
|
|
4
|
+
to: {{ app.httpControllersPath(entity.path, controllerFileName) }}
|
|
5
|
+
---
|
|
6
|
+
import { HttpContext } from '@adonisjs/core/http'
|
|
7
|
+
|
|
8
|
+
export default class {{ controllerName }} {
|
|
9
|
+
/**
|
|
10
|
+
* Display a list of resource
|
|
11
|
+
*/
|
|
12
|
+
async index({}: HttpContext) {}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Handle form submission for the create action
|
|
16
|
+
*/
|
|
17
|
+
async store({ request }: HttpContext) {}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Show individual record
|
|
21
|
+
*/
|
|
22
|
+
async show({ params }: HttpContext) {}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Handle form submission for the edit action
|
|
26
|
+
*/
|
|
27
|
+
async update({ params, request }: HttpContext) {}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Delete record
|
|
31
|
+
*/
|
|
32
|
+
async destroy({ params }: HttpContext) {}
|
|
33
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{{#var controllerName = generators.controllerName(entity.name)}}
|
|
2
|
+
{{#var controllerFileName = generators.controllerFileName(entity.name)}}
|
|
3
|
+
---
|
|
4
|
+
to: {{ app.httpControllersPath(entity.path, controllerFileName) }}
|
|
5
|
+
---
|
|
6
|
+
// import { HttpContext } from '@adonisjs/core/http'
|
|
7
|
+
|
|
8
|
+
export default class {{ controllerName }} {
|
|
9
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{{#var controllerName = generators.controllerName(entity.name)}}
|
|
2
|
+
{{#var controllerFileName = generators.controllerFileName(entity.name)}}
|
|
3
|
+
---
|
|
4
|
+
to: {{ app.httpControllersPath(entity.path, controllerFileName) }}
|
|
5
|
+
---
|
|
6
|
+
import { HttpContext } from '@adonisjs/core/http'
|
|
7
|
+
|
|
8
|
+
export default class {{ controllerName }} {
|
|
9
|
+
/**
|
|
10
|
+
* Display a list of resource
|
|
11
|
+
*/
|
|
12
|
+
async index({}: HttpContext) {}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Display form to create a new record
|
|
16
|
+
*/
|
|
17
|
+
async create({}: HttpContext) {}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Handle form submission for the create action
|
|
21
|
+
*/
|
|
22
|
+
async store({ request }: HttpContext) {}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Show individual record
|
|
26
|
+
*/
|
|
27
|
+
async show({ params }: HttpContext) {}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Edit individual record
|
|
31
|
+
*/
|
|
32
|
+
async edit({ params }: HttpContext) {}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Handle form submission for the edit action
|
|
36
|
+
*/
|
|
37
|
+
async update({ params, request }: HttpContext) {}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Delete record
|
|
41
|
+
*/
|
|
42
|
+
async destroy({ params }: HttpContext) {}
|
|
43
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{{#var eventName = generators.eventName(entity.name)}}
|
|
2
|
+
{{#var eventFileName = generators.eventFileName(entity.name)}}
|
|
3
|
+
---
|
|
4
|
+
to: {{ app.eventsPath(entity.path, eventFileName) }}
|
|
5
|
+
---
|
|
6
|
+
import { BaseEvent } from '@adonisjs/core/events'
|
|
7
|
+
|
|
8
|
+
export default class {{ eventName }} extends BaseEvent {
|
|
9
|
+
/**
|
|
10
|
+
* Accept event data as constructor parameters
|
|
11
|
+
*/
|
|
12
|
+
constructor() {
|
|
13
|
+
super()
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{{#var listenerName = generators.listenerName(entity.name)}}
|
|
2
|
+
{{#var listenerFileName = generators.listenerFileName(entity.name)}}
|
|
3
|
+
{{#var eventName = generators.eventName(event.name)}}
|
|
4
|
+
{{#var eventFileName = generators.eventFileName(event.name)}}
|
|
5
|
+
{{#var eventImportPath = generators.importPath('#events', event.path, eventFileName)}}
|
|
6
|
+
---
|
|
7
|
+
to: {{ app.listenersPath(entity.path, listenerFileName) }}
|
|
8
|
+
---
|
|
9
|
+
import {{ eventName }} from '{{ eventImportPath }}'
|
|
10
|
+
|
|
11
|
+
export default class {{ listenerName }} {
|
|
12
|
+
async handle(event: {{ eventName }}) {}
|
|
13
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{{#var middlewareName = generators.middlewareName(entity.name)}}
|
|
2
|
+
{{#var middlewareFileName = generators.middlewareFileName(entity.name)}}
|
|
3
|
+
---
|
|
4
|
+
to: {{ app.middlewarePath(entity.path, middlewareFileName) }}
|
|
5
|
+
---
|
|
6
|
+
import { HttpContext } from '@adonisjs/core/http'
|
|
7
|
+
import { NextFn } from '@adonisjs/core/types/http'
|
|
8
|
+
|
|
9
|
+
export default class {{ middlewareName }} {
|
|
10
|
+
async handle(ctx: HttpContext, next: NextFn) {
|
|
11
|
+
/**
|
|
12
|
+
* Middleware logic goes here (before the next call)
|
|
13
|
+
*/
|
|
14
|
+
console.log(ctx)
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Call next method in the pipeline and return its output
|
|
18
|
+
*/
|
|
19
|
+
const output = await next()
|
|
20
|
+
return output
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{{#var providerName = generators.providerName(entity.name)}}
|
|
2
|
+
{{#var providerFileName = generators.providerFileName(entity.name)}}
|
|
3
|
+
---
|
|
4
|
+
to: {{ app.providersPath(entity.path, providerFileName) }}
|
|
5
|
+
---
|
|
6
|
+
import { ApplicationService } from '@adonisjs/core/types'
|
|
7
|
+
|
|
8
|
+
export default class {{ providerName }} {
|
|
9
|
+
constructor(protected app: ApplicationService) {}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Register bindings to the container
|
|
13
|
+
*/
|
|
14
|
+
register() {}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The container bindings have booted
|
|
18
|
+
*/
|
|
19
|
+
async boot() {}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The application has been booted
|
|
23
|
+
*/
|
|
24
|
+
async start() {}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The process has been started
|
|
28
|
+
*/
|
|
29
|
+
async ready() {}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Preparing to shutdown the app
|
|
33
|
+
*/
|
|
34
|
+
async shutdown() {}
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/ace/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/application/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/application/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/bodyparser/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/bodyparser/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/fold/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/fold/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/encryption/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/encryption/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/events/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/events/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/hash/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/hash/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/http-server/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/http-server/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/logger/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@adonisjs/logger/types';
|