Allows to create a whole configuratiuon based on libraries names and versions.
You first create the object with a database connection to the CDN database:
$db = new \bbn\Db([
'engine' => 'sqlite',
'db' => BBN_CDN_DB
]);
$lib = new \bbn\Cdn\Library($db, 'fr');
```
It can give you information about the given library:
```php
$info = $lib->info('moment|2.12.0')
// {
// "name": "moment",
// "fname": "moment",
// "title": "Moment",
// "latest": "2.12.0",
// "website": "http://momentjs.com/",
// "last_update": "2016-04-17 19:24:33",
// "last_check": "2016-04-17 19:24:33",
// "id": 146,
// "version": "2.12.0",
// "content": {
// "files": [
// "moment-with-locales.min.js",
// ],
// "lang": [
// ],
// "theme_files": [
// ],
// },
// "internal": 0,
// "prepend": [
// ],
// }
```
Or you can add all the libraries you want:
```php
$lib->add('jquery-ui') // jQuery will also be added
->add('axios', false); // no dependency will be added here
```
Then get an array of all the files needed to be loaded:
```php
$cfg = $lib->getConfig()
// {
// "libraries": {
// "axios": "v0.19.2",
// "animate-css": "3.7.2",
// "moment": "2.12.0",
// "bbnjs": "1.0.1",
// "vuejs": "v2.6.10",
// "bbn-vue": "2.0.2",
// },
// "prepend": {
// "lib/bbnjs/1.0.1/src/css/01-basic.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/02-background.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/03-text.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/04-border.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/05-padding.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/06-margin.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/07-align.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/08-radius.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/09-dimension.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/10-position.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/11-align.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/11-containers.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/12-state.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// "lib/bbnjs/1.0.1/src/css/13-components.less": [
// "lib/bbnjs/1.0.1/src/css/themes/default.less",
// "lib/bbnjs/1.0.1/src/css/themes/dark.less",
// ],
// },
// "js": [
// "lib/axios/v0.19.2/dist/axios.min.js",
// "lib/moment/2.12.0/moment-with-locales.min.js",
// "lib/bbnjs/1.0.1/src/bbn.js",
// "lib/bbnjs/1.0.1/src/functions.js",
// "lib/bbnjs/1.0.1/src/env/_def.js",
// "lib/bbnjs/1.0.1/src/var/_def.js",
// "lib/bbnjs/1.0.1/src/var/diacritic.js",
// "lib/bbnjs/1.0.1/src/fn/_def.js",
// "lib/bbnjs/1.0.1/src/fn/ajax.js",
// "lib/bbnjs/1.0.1/src/fn/form.js",
// "lib/bbnjs/1.0.1/src/fn/history.js",
// "lib/bbnjs/1.0.1/src/fn/init.js",
// "lib/bbnjs/1.0.1/src/fn/locale.js",
// "lib/bbnjs/1.0.1/src/fn/misc.js",
// "lib/bbnjs/1.0.1/src/fn/object.js",
// "lib/bbnjs/1.0.1/src/fn/size.js",
// "lib/bbnjs/1.0.1/src/fn/string.js",
// "lib/bbnjs/1.0.1/src/fn/style.js",
// "lib/bbnjs/1.0.1/src/fn/type.js",
// "lib/vuejs/v2.6.10/dist/vue.min.js",
// "lib/bbn-vue/2.0.2/src/vars.js",
// "lib/bbn-vue/2.0.2/src/methods.js",
// "lib/bbn-vue/2.0.2/src/mixins/basic.js",
// "lib/bbn-vue/2.0.2/src/mixins/empty.js",
// "lib/bbn-vue/2.0.2/src/mixins/dimensions.js",
// "lib/bbn-vue/2.0.2/src/mixins/position.js",
// "lib/bbn-vue/2.0.2/src/mixins/dropdown.js",
// "lib/bbn-vue/2.0.2/src/mixins/keynav.js",
// "lib/bbn-vue/2.0.2/src/mixins/toggle.js",
// "lib/bbn-vue/2.0.2/src/mixins/localStorage.js",
// "lib/bbn-vue/2.0.2/src/mixins/data.js",
// "lib/bbn-vue/2.0.2/src/mixins/dataEditor.js",
// "lib/bbn-vue/2.0.2/src/mixins/events.js",
// "lib/bbn-vue/2.0.2/src/mixins/list.js",
// "lib/bbn-vue/2.0.2/src/mixins/memory.js",
// "lib/bbn-vue/2.0.2/src/mixins/input.js",
// "lib/bbn-vue/2.0.2/src/mixins/resizer.js",
// "lib/bbn-vue/2.0.2/src/mixins/close.js",
// "lib/bbn-vue/2.0.2/src/mixins/field.js",
// "lib/bbn-vue/2.0.2/src/mixins/view.js",
// "lib/bbn-vue/2.0.2/src/mixins/observer.js",
// "lib/bbn-vue/2.0.2/src/mixins/keepCool.js",
// "lib/bbn-vue/2.0.2/src/mixins/url.js",
// "lib/bbn-vue/2.0.2/src/mixins.js",
// "lib/bbn-vue/2.0.2/src/defaults.js",
// "lib/bbn-vue/2.0.2/src/init.js",
// ],
// "css": [
// "lib/animate-css/3.7.2/animate.min.css",
// "lib/bbnjs/1.0.1/src/css/01-basic.less",
// "lib/bbnjs/1.0.1/src/css/02-background.less",
// "lib/bbnjs/1.0.1/src/css/03-text.less",
// "lib/bbnjs/1.0.1/src/css/04-border.less",
// "lib/bbnjs/1.0.1/src/css/05-padding.less",
// "lib/bbnjs/1.0.1/src/css/06-margin.less",
// "lib/bbnjs/1.0.1/src/css/07-align.less",
// "lib/bbnjs/1.0.1/src/css/08-radius.less",
// "lib/bbnjs/1.0.1/src/css/09-dimension.less",
// "lib/bbnjs/1.0.1/src/css/10-position.less",
// "lib/bbnjs/1.0.1/src/css/11-align.less",
// "lib/bbnjs/1.0.1/src/css/11-containers.less",
// "lib/bbnjs/1.0.1/src/css/12-state.less",
// "lib/bbnjs/1.0.1/src/css/13-components.less",
// ],
// }