import {Hooks} from '@flecks/core'; export default { [Hooks]: { /** * Hook into neutrino configuration. * @param {string} target The build target; e.g. `server`. * @param {Object} config The neutrino configuration. */ '@flecks/core.build': (target, config) => { if ('something' === target) { config[target].use.push(someNeutrinoMiddleware); } }, /** * Alter build configurations after they have been hooked. * @param {Object} configs The neutrino configurations. */ '@flecks/core.build.alter': (configs) => { // Maybe we want to do something if a config exists..? if (configs.something) { // Do something... // And then maybe we want to remove it from the build configuration..? delete configs.something; } }, /** * Register build configuration. */ '@flecks/core.build.config': () => [ '.myrc.js', ['mygeneralrc.js', {specifier: (specific) => `${specific}.mygeneralrc.js`}], ], /** * Define CLI commands. */ '@flecks/core.commands': (program) => ({ // So this could be invoked like: // npx flecks something -t --blow-up blah something: { action: (...args) => { // Run the command... }, args: [ '', ], description: 'This sure is some command', options: [ '-t, --test', 'Do a test', '-b, --blow-up', 'Blow up instead of running the command', ], }, }), /** * Define configuration. */ '@flecks/core.config': () => ({ whatever: 'configuration', your: 1337, fleck: 'needs', though: 'you should keep the values serializable', }), /** * Invoked when a fleck is HMR'd * @param {string} path The path of the fleck * @param {Module} updatedFleck The updated fleck module. */ '@flecks/core.hmr': (path, updatedFleck) => { if ('my-fleck' === path) { updatedFleck.doSomething(); } }, /** * Invoked when a gathered class is HMR'd. * @param {constructor} Class The class. * @param {string} hook The gather hook; e.g. `@flecks/db/server.models`. */ '@flecks/core.hmr.gathered': (Class, hook) => { // Do something with Class... }, /** * Invoked when the application is starting. Use for order-independent initialization tasks. */ '@flecks/core.starting': (flecks) => { flecks.set('$my-fleck/value', initializeMyValue()); }, /** * Define neutrino build targets. */ '@flecks/core.targets': () => ['sometarget'], /** * Hook into webpack configuration. * @param {string} target The build target; e.g. `server`. * @param {Object} config The neutrino configuration. */ '@flecks/core.webpack': (target, config) => { if ('something' === target) { config.stats = 'verbose'; } }, }, };