From 6e6cb3f0f4c521e936af433abfff6d8b60dace3b Mon Sep 17 00:00:00 2001 From: cha0s Date: Sun, 6 Mar 2022 12:48:51 -0600 Subject: [PATCH] refactor: hook doc --- packages/core/build/dox/hooks.js | 145 ++++++++++++++++++++----------- 1 file changed, 95 insertions(+), 50 deletions(-) diff --git a/packages/core/build/dox/hooks.js b/packages/core/build/dox/hooks.js index 7a70ac3..08d17be 100644 --- a/packages/core/build/dox/hooks.js +++ b/packages/core/build/dox/hooks.js @@ -1,59 +1,104 @@ -/** - * Hook into neutrino configuration. - * @param {string} target - The build target; e.g. `server`. - * @param {Object} config - The neutrino configuration. - */ -hooks['@flecks/core/build'] = (target, config) => {}; +import {Hooks} from '@flecks/core'; -/** - * Alter build configurations after they have been hooked. - * @param {Object} configs - The neutrino configurations. - */ -hooks['@flecks/core/build/alter'] = (configs) => {}; +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); + } + }, -/** - * Define CLI commands. - */ -hooks['@flecks/core/commands'] = (program) => {}; + /** + * 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; + } + }, -/** - * Define configuration. - */ -hooks['@flecks/core/config'] = () => {}; + /** + * 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', + ], + }, + }), -/** - * Alter configuration. - * @param {Object} config - The neutrino configuration. - */ -hooks['@flecks/core/config/alter'] = (config) => {}; + /** + * Define configuration. + */ + '@flecks/core/config': () => ({ + whatever: 'configuration', + your: 1337, + fleck: 'needs', + though: 'you should keep the values serializable', + }), -/** - * 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`. - */ -hooks['@flecks/core/gathered/hmr'] = (Class, hook) => {}; + /** + * 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/gathered/hmr': (Class, hook) => { + // Do something with Class... + }, - /** - * Invoked when a fleck is HMR'd - * @param {constructor} Class - The class. - * @param {string} hook - The gather hook; e.g. `@flecks/db/server/models`. - */ -hooks['@flecks/core/hmr'] = (Class, hook) => {}; + /** + * 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 the application is starting. Use for order-independent initialization tasks. - */ -hooks['@flecks/core/starting'] = () => {}; + /** + * 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. - */ -hooks['@flecks/core/targets'] = () => {}; + /** + * 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'; + } + }, + }, +}; -/** - * Hook into webpack configuration. - * @param {string} target - The build target; e.g. `server`. - * @param {Object} config - The neutrino configuration. - */ -hooks['@flecks/core/webpack'] = (target, config) => {};