@loopback/boot
Version: 
A collection of Booters for LoopBack 4 Applications
51 lines • 1.82 kB
JavaScript
;
// Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
// Node module: @loopback/boot
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
Object.defineProperty(exports, "__esModule", { value: true });
exports.booter = exports.BOOTER_PHASES = void 0;
const core_1 = require("@loopback/core");
const keys_1 = require("./keys");
/**
 * Export of an array of all the Booter phases supported by the interface
 * above, in the order they should be run.
 */
exports.BOOTER_PHASES = ['configure', 'discover', 'load'];
/**
 * `@booter` decorator to mark a class as a `Booter` and specify the artifact
 * namespace for the configuration of the booter
 *
 * @example
 * ```ts
 * @booter('controllers')
 * export class ControllerBooter extends BaseArtifactBooter {
 *   constructor(
 *     @inject(CoreBindings.APPLICATION_INSTANCE) public app: Application,
 *     @inject(BootBindings.PROJECT_ROOT) projectRoot: string,
 *     @config()
 *    public controllerConfig: ArtifactOptions = {},
 *   ) {
 *   // ...
 *   }
 * }
 * ```
 *
 * @param artifactNamespace - Namespace for the artifact. It will be used to
 * inject configuration from boot options. For example, the Booter class
 * decorated with `@booter('controllers')` can receive its configuration via
 * `@config()` from the `controllers` property of boot options.
 *
 * @param specs - Extra specs for the binding
 */
function booter(artifactNamespace, ...specs) {
    return (0, core_1.injectable)({
        tags: {
            artifactNamespace,
            [keys_1.BootTags.BOOTER]: keys_1.BootTags.BOOTER,
            [core_1.ContextTags.NAMESPACE]: keys_1.BootBindings.BOOTERS,
        },
    }, ...specs);
}
exports.booter = booter;
//# sourceMappingURL=types.js.map