Alex A. Naanou d10e042e74 docs...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2021-06-03 16:50:58 +03:00
2017-10-04 14:38:30 +03:00
2021-06-02 11:52:42 +03:00
2019-11-06 03:39:38 +03:00
2021-01-04 16:56:31 +03:00
2021-06-03 16:50:58 +03:00

features.js

features.js organizes sets of actions or object methods into features, applies them, manages merging of features via inter-feature dependencies and external criteria.

Basics

var features = require('ig-features')

Organizational structure

Lifecycle

How features are loaded

The main entities:

FeatureSet(..)

var feature_set = new features.FeatureSet()


// define features...
// ...


// setup features...
feature_set
    .setup([
        'feature-tag',
        //...
    ])

XXX

Feature(..)

feature_set.Feature({
    tag: 'minimal_feature_example',
})

feature_set.Feature({
    // documentation (optional)...
    title: 'Example Feature',
    doc: 'A feature to demo the base API...',

    // feature unique identifier (required)...
    tag: 'feature_example',

    // applicability test (optional)
    isApplicable: function(){ /* ... */ },

    // feature load priority (optional)
    priority: 'medium',

    // list of feature tags to load if available (optional)
    suggested: [],

    // list of feature tags required to load before this feature (optional)
    depends: [],

    // Exclusive tag (optional)
    // NOTE: a feature can be a member of more than one exclusive group,
    //	to list more than one use an Array...
    exclusive: 'Example',

    // feature configuration (optional)
    // NOTE: if not present here this will be taken from .actions.config
    // NOTE: this takes priority over .actions.config, it is not recommended
    //	to define both.
    config: {
    option: 'value',
        // ...
    },

    // actions (optional)
    actions: Actions({
        // alternative configuration location...
        config: {
            // ...
        },
        // ...
    }),

    // action handlers (optional)
    handlers: [
        ['action.pre', function(){ /* ... */ }],
        // ...
    ],
})

XXX

Meta-features

// meta-feature...
feature_set.Feature('meta-feature-tag', [
    'suggested-feature-tag',
    'other-suggested-feature-tag',
    // ...
])

XXX

Description
WARNING: this module configuration is experimental and is likely to get redesigned before stabilizing.
Readme BSD-3-Clause 207 KiB
Languages
JavaScript 100%