diff --git a/.gitignore b/.gitignore
index 0452c5f..80982a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
-puphpet/config-custom.yaml
-public/asset
\ No newline at end of file
+.idea
+vendor
+src/public/asset
\ No newline at end of file
diff --git a/Gruntfile.js b/Gruntfile.js
deleted file mode 100644
index bba017b..0000000
--- a/Gruntfile.js
+++ /dev/null
@@ -1,32 +0,0 @@
-module.exports = function (grunt) {
- const sass = require('node-sass');
-
- grunt.initConfig({
- pkg: grunt.file.readJSON('package.json'),
- sass: {
- theme: {
- options: {
- implementation: sass,
- sourceMap: true
- },
- files: {
- 'plugin/example/asset/css/example.css': 'plugin/example/asset/scss/example.scss',
- 'plugin/debug/asset/debug.css': 'plugin/debug/asset/debug.scss'
- }
- }
- },
- watch: {
- sass: {
- files: ['**/*.scss'],
- tasks: [
- 'sass:theme'
- ]
- }
- }
- });
- grunt.loadNpmTasks('grunt-sass');
- grunt.loadNpmTasks('grunt-contrib-watch');
- grunt.registerTask('default', [
- 'sass:theme'
- ]);
-};
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 6d6031e..f1e38e0 100644
--- a/composer.json
+++ b/composer.json
@@ -1,14 +1,24 @@
{
- "name": "alexandergw/deft",
- "type": "deft-kernel",
- "require": {
- "ext-fileinfo": "*",
- "ext-gd": "*",
- "ext-json": "*",
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5",
- "johnkary/phpunit-speedtrap": "^3.2"
+ "name": "alexandergw/deft",
+ "type": "deft-kernel",
+ "require": {
+ "ext-fileinfo": "*",
+ "ext-gd": "*",
+ "ext-json": "*",
+ "php": ">=5.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5",
+ "johnkary/phpunit-speedtrap": "^3.2"
+ },
+ "autoload": {
+ "classmap": [
+ "src/Deft.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Deft\\Tests\\": "tests/"
}
+ }
}
diff --git a/composer.lock b/composer.lock
deleted file mode 100644
index 9ea8884..0000000
--- a/composer.lock
+++ /dev/null
@@ -1,1582 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
- "This file is @generated automatically"
- ],
- "content-hash": "6901ed8b9834bfc78772cd289e179b9d",
- "packages": [],
- "packages-dev": [
- {
- "name": "doctrine/instantiator",
- "version": "1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
- "reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpbench/phpbench": "^0.13",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-shim": "^0.11",
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "time": "2019-10-21T16:45:58+00:00"
- },
- {
- "name": "johnkary/phpunit-speedtrap",
- "version": "v3.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/johnkary/phpunit-speedtrap.git",
- "reference": "8c0e149b80c6e86c33315f05699512678655c158"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/johnkary/phpunit-speedtrap/zipball/8c0e149b80c6e86c33315f05699512678655c158",
- "reference": "8c0e149b80c6e86c33315f05699512678655c158",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.2-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "JohnKary\\PHPUnit\\Listener\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "John Kary",
- "email": "john@johnkary.net"
- }
- ],
- "description": "Find and report on slow tests in your PHPUnit test suite",
- "homepage": "https://github.com/johnkary/phpunit-speedtrap",
- "keywords": [
- "phpunit",
- "profile",
- "slow"
- ],
- "time": "2020-02-12T16:19:51+00:00"
- },
- {
- "name": "myclabs/deep-copy",
- "version": "1.9.5",
- "source": {
- "type": "git",
- "url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef",
- "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "replace": {
- "myclabs/deep-copy": "self.version"
- },
- "require-dev": {
- "doctrine/collections": "^1.0",
- "doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- },
- "files": [
- "src/DeepCopy/deep_copy.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Create deep copies (clones) of your objects",
- "keywords": [
- "clone",
- "copy",
- "duplicate",
- "object",
- "object graph"
- ],
- "time": "2020-01-17T21:11:47+00:00"
- },
- {
- "name": "phar-io/manifest",
- "version": "1.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/manifest.git",
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-phar": "*",
- "phar-io/version": "^2.0",
- "php": "^5.6 || ^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
- "time": "2018-07-08T19:23:20+00:00"
- },
- {
- "name": "phar-io/version",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/version.git",
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Library for handling version information and constraints",
- "time": "2018-07-08T19:19:57+00:00"
- },
- {
- "name": "phpdocumentor/reflection-common",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
- "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "~6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
- }
- ],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
- "keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
- ],
- "time": "2018-08-07T13:53:10+00:00"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
- "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
- "shasum": ""
- },
- "require": {
- "ext-filter": "^7.1",
- "php": "^7.2",
- "phpdocumentor/reflection-common": "^2.0",
- "phpdocumentor/type-resolver": "^1.0",
- "webmozart/assert": "^1"
- },
- "require-dev": {
- "doctrine/instantiator": "^1",
- "mockery/mockery": "^1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- },
- {
- "name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
- }
- ],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2020-02-22T12:28:44+00:00"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "7462d5f123dfc080dfdf26897032a6513644fc95"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95",
- "reference": "7462d5f123dfc080dfdf26897032a6513644fc95",
- "shasum": ""
- },
- "require": {
- "php": "^7.2",
- "phpdocumentor/reflection-common": "^2.0"
- },
- "require-dev": {
- "ext-tokenizer": "^7.2",
- "mockery/mockery": "~1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "time": "2020-02-18T18:59:58+00:00"
- },
- {
- "name": "phpspec/prophecy",
- "version": "v1.10.3",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "451c3cd1418cf640de218914901e51b064abb093"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
- "reference": "451c3cd1418cf640de218914901e51b064abb093",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
- "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
- "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
- },
- "require-dev": {
- "phpspec/phpspec": "^2.5 || ^3.2",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.10.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Prophecy\\": "src/Prophecy"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
- }
- ],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2020-03-05T15:02:03+00:00"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "7.0.10",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf",
- "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-xmlwriter": "*",
- "php": "^7.2",
- "phpunit/php-file-iterator": "^2.0.2",
- "phpunit/php-text-template": "^1.2.1",
- "phpunit/php-token-stream": "^3.1.1",
- "sebastian/code-unit-reverse-lookup": "^1.0.1",
- "sebastian/environment": "^4.2.2",
- "sebastian/version": "^2.0.1",
- "theseer/tokenizer": "^1.1.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.2.2"
- },
- "suggest": {
- "ext-xdebug": "^2.7.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "7.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "time": "2019-11-20T13:55:58+00:00"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "2.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "050bedf145a257b1ff02746c31894800e5122946"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946",
- "reference": "050bedf145a257b1ff02746c31894800e5122946",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "time": "2018-09-13T20:33:42+00:00"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "time": "2015-06-21T13:50:34+00:00"
- },
- {
- "name": "phpunit/php-timer",
- "version": "2.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "1038454804406b0b5f5f520358e78c1c2f71501e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e",
- "reference": "1038454804406b0b5f5f520358e78c1c2f71501e",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "time": "2019-06-07T04:22:29+00:00"
- },
- {
- "name": "phpunit/php-token-stream",
- "version": "3.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff",
- "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
- "keywords": [
- "tokenizer"
- ],
- "time": "2019-09-17T06:23:10+00:00"
- },
- {
- "name": "phpunit/phpunit",
- "version": "8.5.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "67750516bc02f300e2742fed2f50177f8f37bedf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/67750516bc02f300e2742fed2f50177f8f37bedf",
- "reference": "67750516bc02f300e2742fed2f50177f8f37bedf",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.2.0",
- "ext-dom": "*",
- "ext-json": "*",
- "ext-libxml": "*",
- "ext-mbstring": "*",
- "ext-xml": "*",
- "ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.9.1",
- "phar-io/manifest": "^1.0.3",
- "phar-io/version": "^2.0.1",
- "php": "^7.2",
- "phpspec/prophecy": "^1.8.1",
- "phpunit/php-code-coverage": "^7.0.7",
- "phpunit/php-file-iterator": "^2.0.2",
- "phpunit/php-text-template": "^1.2.1",
- "phpunit/php-timer": "^2.1.2",
- "sebastian/comparator": "^3.0.2",
- "sebastian/diff": "^3.0.2",
- "sebastian/environment": "^4.2.2",
- "sebastian/exporter": "^3.1.1",
- "sebastian/global-state": "^3.0.0",
- "sebastian/object-enumerator": "^3.0.3",
- "sebastian/resource-operations": "^2.0.1",
- "sebastian/type": "^1.1.3",
- "sebastian/version": "^2.0.1"
- },
- "require-dev": {
- "ext-pdo": "*"
- },
- "suggest": {
- "ext-soap": "*",
- "ext-xdebug": "*",
- "phpunit/php-invoker": "^2.0.0"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.5-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "time": "2020-03-31T08:52:04+00:00"
- },
- {
- "name": "sebastian/code-unit-reverse-lookup",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Looks up which function or method a line of code belongs to",
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
- "time": "2017-03-04T06:30:41+00:00"
- },
- {
- "name": "sebastian/comparator",
- "version": "3.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
- "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
- "shasum": ""
- },
- "require": {
- "php": "^7.1",
- "sebastian/diff": "^3.0",
- "sebastian/exporter": "^3.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "https://github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "time": "2018-07-12T15:12:46+00:00"
- },
- {
- "name": "sebastian/diff",
- "version": "3.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
- "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.5 || ^8.0",
- "symfony/process": "^2 || ^3.3 || ^4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "https://github.com/sebastianbergmann/diff",
- "keywords": [
- "diff",
- "udiff",
- "unidiff",
- "unified diff"
- ],
- "time": "2019-02-04T06:01:07+00:00"
- },
- {
- "name": "sebastian/environment",
- "version": "4.2.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
- "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.5"
- },
- "suggest": {
- "ext-posix": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.2-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "time": "2019-11-20T08:46:58+00:00"
- },
- {
- "name": "sebastian/exporter",
- "version": "3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
- "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
- "shasum": ""
- },
- "require": {
- "php": "^7.0",
- "sebastian/recursion-context": "^3.0"
- },
- "require-dev": {
- "ext-mbstring": "*",
- "phpunit/phpunit": "^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "time": "2019-09-14T09:02:43+00:00"
- },
- {
- "name": "sebastian/global-state",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4",
- "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4",
- "shasum": ""
- },
- "require": {
- "php": "^7.2",
- "sebastian/object-reflector": "^1.1.1",
- "sebastian/recursion-context": "^3.0"
- },
- "require-dev": {
- "ext-dom": "*",
- "phpunit/phpunit": "^8.0"
- },
- "suggest": {
- "ext-uopz": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "time": "2019-02-01T05:30:01+00:00"
- },
- {
- "name": "sebastian/object-enumerator",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
- "shasum": ""
- },
- "require": {
- "php": "^7.0",
- "sebastian/object-reflector": "^1.1.1",
- "sebastian/recursion-context": "^3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
- "time": "2017-08-03T12:35:26+00:00"
- },
- {
- "name": "sebastian/object-reflector",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "773f97c67f28de00d397be301821b06708fca0be"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
- "reference": "773f97c67f28de00d397be301821b06708fca0be",
- "shasum": ""
- },
- "require": {
- "php": "^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
- "homepage": "https://github.com/sebastianbergmann/object-reflector/",
- "time": "2017-03-29T09:07:27+00:00"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
- "shasum": ""
- },
- "require": {
- "php": "^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2017-03-03T06:23:57+00:00"
- },
- {
- "name": "sebastian/resource-operations",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
- "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides a list of PHP built-in functions that operate on resources",
- "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
- "time": "2018-10-04T04:07:39+00:00"
- },
- {
- "name": "sebastian/type",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/type.git",
- "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3",
- "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3",
- "shasum": ""
- },
- "require": {
- "php": "^7.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Collection of value objects that represent the types of the PHP type system",
- "homepage": "https://github.com/sebastianbergmann/type",
- "time": "2019-07-02T08:10:15+00:00"
- },
- {
- "name": "sebastian/version",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2016-10-03T07:35:21+00:00"
- },
- {
- "name": "symfony/polyfill-ctype",
- "version": "v1.15.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
- "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.15-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
- "time": "2020-02-27T09:26:54+00:00"
- },
- {
- "name": "theseer/tokenizer",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/theseer/tokenizer.git",
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-tokenizer": "*",
- "ext-xmlwriter": "*",
- "php": "^7.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- }
- ],
- "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
- "time": "2019-06-13T22:48:21+00:00"
- },
- {
- "name": "webmozart/assert",
- "version": "1.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "aed98a490f9a8f78468232db345ab9cf606cf598"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598",
- "reference": "aed98a490f9a8f78468232db345ab9cf606cf598",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "vimeo/psalm": "<3.6.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Webmozart\\Assert\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Assertions to validate method input/output with nice error messages.",
- "keywords": [
- "assert",
- "check",
- "validate"
- ],
- "time": "2020-02-14T12:15:55+00:00"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": [],
- "platform-dev": []
-}
diff --git a/config/cache/memcached.php b/config/cache/memcached.php
deleted file mode 100644
index 23d5337..0000000
--- a/config/cache/memcached.php
+++ /dev/null
@@ -1,7 +0,0 @@
- '127.0.0.1',
- 'port' => 11211,
- 'expire' => 1800
-);
\ No newline at end of file
diff --git a/config/deft.php b/config/deft.php
deleted file mode 100644
index 2ddb9f1..0000000
--- a/config/deft.php
+++ /dev/null
@@ -1,14 +0,0 @@
- array(
- 'example',
- 'test',
- 'debug'
- )
-);
\ No newline at end of file
diff --git a/config/form/user-locale.php b/config/form/user-locale.php
deleted file mode 100644
index 9ec84d1..0000000
--- a/config/form/user-locale.php
+++ /dev/null
@@ -1,137 +0,0 @@
- array(
- '@tag' => 'input',
- 'label' => 'Idioma',
- 'description' => 'Select a locale then click Submit to save your preferences.',
- 'options' => array(
- 'en-GB' => 'en-GB',
- 'es-ES' => 'es-ES'
- ),
- '@props' => array(
- 'type' => 'radio',
- 'name' => 'locale',
- 'id' => null,
- 'value' => 'es-ES'
- )
- ),
- '1' => array(
- '@tag' => 'input',
- 'label' => 'Idioma',
- 'description' => 'Select a locale then click Submit to save your preferences.',
- 'options' => array(
- 'en-GB' => 'en-GB',
- 'es-ES' => 'es-ES'
- ),
- '@props' => array(
- 'type' => 'checkbox',
- 'name' => 'locale2',
- 'id' => null,
- 'value' => 'es-ES'
- )
- ),
- '2' => array(
- '@tag' => 'select',
- 'label' => 'Idioma',
- 'description' => 'Select a locale then click Submit to save your preferences.',
- 'options' => array(
- 'en-GB' => 'en-GB',
- 'es-ES' => 'es-ES'
- ),
- '@props' => array(
- 'type' => null,
- 'name' => 'locale3',
- 'id' => null,
- 'value' => 'es-ES'
- )
- ),
- '3' => array(
- '@tag' => 'input',
- 'label' => 'Input (text)',
- 'description' => 'Input text test',
- 'options' => array(
- ),
- '@props' => array(
- 'type' => 'text',
- 'name' => 'field-2b7ffdab0d1b1f9f00408d2b76cbff60',
- 'id' => null,
- 'value' => 'Lorem ipsum dolor sit amet'
- )
- ),
- '4' => array(
- '@tag' => 'input',
- 'label' => 'Input (color)',
- 'description' => 'Input color test',
- 'options' => array(
- ),
- '@props' => array(
- 'type' => 'color',
- 'name' => 'field-551fb9b04c5a73bd8ed46e2b2872d58f',
- 'id' => null,
- 'value' => '#feed01'
- )
- ),
- '5' => array(
- '@tag' => 'input',
- 'label' => 'Input (number)',
- 'description' => 'Input number test',
- 'options' => array(
- ),
- '@props' => array(
- 'type' => 'number',
- 'name' => 'field-194849d097897adc2773e5fe2885b1c1',
- 'id' => null,
- 'value' => 5
- )
- ),
- '6' => array(
- '@tag' => 'input',
- 'label' => 'Input (range)',
- 'description' => 'Input range test',
- 'options' => array(
- ),
- '@props' => array(
- 'type' => 'range',
- 'name' => 'field-c4ef9a57d439208de5d25660b12c81af',
- 'id' => null,
- 'min' => 0,
- 'step' => 5,
- 'max' => 10,
- 'value' => 5
- )
- ),
- '7' => array(
- '@tag' => 'textarea',
- 'label' => 'Textarea',
- 'description' => 'Textarea test',
- 'options' => array(
- ),
- '@props' => array(
- 'type' => null,
- 'name' => 'field-9315805eaedf4f0540a5ee29b8fc5360',
- 'id' => null,
- 'value' => 'Lorem ipsum dolor sit amet.',
- 'cols' => 40
- )
- ),
- '8' => array(
- '@tag' => 'input',
- 'label' => null,
- 'description' => null,
- 'options' => array(
- ),
- '@props' => array(
- 'type' => 'submit',
- 'name' => 'field-d8bf69c448627bcb8f2447eac2971044',
- 'id' => null,
- 'value' => 'Submit'
- )
- )
-);
\ No newline at end of file
diff --git a/lib/filesystem/local.php b/lib/filesystem/local.php
deleted file mode 100644
index 16ace81..0000000
--- a/lib/filesystem/local.php
+++ /dev/null
@@ -1,183 +0,0 @@
-makeRelative($path);
-
- $directories = explode('/', $path);
- $path = DEFT_PATH;
- foreach ($directories as $directory) {
- $path .= "/{$directory}";
- if (!is_dir($path)) {
- if (!mkdir($path))
- return FALSE;
- chmod($path, $mode);
- }
- }
-
- return TRUE;
- }
-
- /**
- *
- */
- public function scan($path = NULL, $recursive = FALSE, $maxdepth = -1, $ignore = []) {
- if (is_dir($path)) {
- $array = [];
- if (!is_bool($recursive) && !is_int($recursive))
- $recursive = FALSE;
-
- // Items to exclude from the returned array
- if( !is_array($ignore) || !count($ignore))
- $ignore = ['.', '..'];
-
- $ignore = \Deft::filter()->exec('filesystemIgnore', $ignore);
-
- // TODO: Recursion limit not honoured
-
- $items = scandir($path);
- if ($items) {
- foreach ($items as $item) {
- if (!in_array($item, $ignore)) {
- $path_item = $path . '/' . $item;
- if (is_dir($path_item)) {
- if ($recursive >= 0 && ($maxdepth === -1 || ($maxdepth > 0 && $recursive < $maxdepth)))
- $array[$item] = $this->scan(
- $path_item,
- ($recursive+1),
- $maxdepth,
- $ignore
- );
- else
- $array[$item] = TRUE;
- } else {
- $array[$item] = $path_item;
- }
- }
- }
- }
- return $array;
- }
- return FALSE;
- }
-
- /**
- *
- */
- public function touch($path = NULL) {
- if (!is_null($path)) {
- if (!is_dir($path) && is_writable($path)) {
- if (file_exists($path))
- touch($path);
- elseif (file_put_contents($path, NULL) === 0)
- return TRUE;
- }
- }
- return FALSE;
- }
-
- /**
- *
- */
- public function read($path = NULL) {
- if (is_readable($path)) {
- if (is_dir($path))
- return TRUE;
- if (is_file($path))
- return file_get_contents($path);
- return FALSE;
- }
- return NULL;
- }
-
- /**
- *
- */
- public function write($path = NULL, $data = NULL) {
- if (!is_dir($path))
- return file_put_contents($path, $data);
- return NULL;
- }
-
- /**
- *
- */
- public function delete($path = NULL, $recursive = FALSE) {
- if (!is_dir($path) && is_file($path))
- return unlink($path);
-
- if (!is_bool($recursive))
- $recursive = FALSE;
-
- $path = $this->makeRelative($path);
-
- // Recursive deletion, get all items to process
- if ($recursive) {
- $failed = FALSE;
- $items = $this->scan($path, TRUE, 1);
- if ($items) {
- foreach ($items as $key => $value) {
-
- // Delete file, $value is the full path
- if (is_string($value)) {
- $result = unlink($value);
- if (!$result)
- $failed = TRUE;
- }
-
- // Delete the content of the directory
- elseif($value === TRUE) {
- $path_directory = DEFT_PATH . DS . $path . '/' . $key;
- if ($this->delete($path_directory, TRUE) === FALSE) {
- $failed = TRUE;
- break;
- }
- }
- }
-
- if ($failed)
- return FALSE;
- }
- }
-
- // Delete directory
- $result = rmdir(DEFT_PATH . DS . $path);
- return $result;
- }
-}
\ No newline at end of file
diff --git a/lib/storage/database/mysql.php b/lib/storage/database/mysql.php
deleted file mode 100644
index 3ea0634..0000000
--- a/lib/storage/database/mysql.php
+++ /dev/null
@@ -1,27 +0,0 @@
-args = self::getArgs($args);
-
- // Establish the PDO connection
- parent::__construct($this->args, $class);
-
- if (
- $this->connected
- && version_compare(PHP_VERSION, '5.3.6', '<')
- )
- $this->link->exec(Filter::exec('onDatabaseConstructQueryUtf8', 'SET NAMES utf8'));
- }
-}
\ No newline at end of file
diff --git a/locale/es-es.php b/locale/es-es.php
deleted file mode 100644
index 5ea4a01..0000000
--- a/locale/es-es.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- *
- * This file is part of Deft.
- *
- * Deft is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Deft is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Deft. If not, see .
- */
-
-return array(
- array(
- 'direction' => 'ltr',
- 'encoding' => 'utf-8',
- 'iso2' => 'es',
- 'iso3' => 'esp',
- 'locale' => 'es-ES',
- 'timezone' => 'Europe/Madrid'
- ),
- array(
- 'Environment settings' => 'La configuraciĆ³n del entorno',
- 'Hello' => 'Hola',
- 'Language' => 'Idioma',
- 'Welcome' => 'Bienvenido'
- )
-);
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index e7e878a..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,2095 +0,0 @@
-{
- "name": "deft",
- "version": "1.0.0",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
- "ajv": {
- "version": "6.12.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
- "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
- "dev": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- },
- "dependencies": {
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- }
- }
- },
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
- "dev": true
- },
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- },
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
- "async-foreach": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
- "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
- "dev": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "dev": true
- },
- "aws4": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz",
- "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dev": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "block-stream": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "dev": true,
- "requires": {
- "inherits": "~2.0.0"
- }
- },
- "body": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz",
- "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=",
- "dev": true,
- "requires": {
- "continuable-cache": "^0.3.1",
- "error": "^7.0.0",
- "raw-body": "~1.1.0",
- "safe-json-parse": "~1.0.1"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "bytes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
- "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=",
- "dev": true
- },
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true
- },
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
- "dev": true,
- "requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
- }
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
- },
- "coffeescript": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz",
- "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=",
- "dev": true
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "colors": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
- "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "dev": true
- },
- "continuable-cache": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz",
- "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=",
- "dev": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "dev": true
- },
- "cross-spawn": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
- "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- },
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "dev": true,
- "requires": {
- "array-find-index": "^1.0.1"
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "dateformat": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
- "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
- "dev": true,
- "requires": {
- "get-stdin": "^4.0.1",
- "meow": "^3.3.0"
- }
- },
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
- "dev": true
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dev": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "error": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz",
- "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==",
- "dev": true,
- "requires": {
- "string-template": "~0.2.1"
- }
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "eventemitter2": {
- "version": "0.4.14",
- "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
- "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
- "dev": true
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
- "dev": true
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "faye-websocket": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
- "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
- "dev": true,
- "requires": {
- "websocket-driver": ">=0.5.1"
- }
- },
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "findup-sync": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
- "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
- "dev": true,
- "requires": {
- "glob": "~5.0.0"
- },
- "dependencies": {
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
- }
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "dev": true
- },
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- },
- "dependencies": {
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- }
- }
- },
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "dev": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "gaze": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
- "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
- "dev": true,
- "requires": {
- "globule": "^1.0.0"
- }
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
- "dev": true
- },
- "getobject": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
- "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
- "dev": true
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "glob": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
- "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.2",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "globule": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz",
- "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==",
- "dev": true,
- "requires": {
- "glob": "~7.1.1",
- "lodash": "~4.17.10",
- "minimatch": "~3.0.2"
- },
- "dependencies": {
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
- }
- },
- "graceful-fs": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
- "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
- "dev": true
- },
- "grunt": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.1.0.tgz",
- "integrity": "sha512-+NGod0grmviZ7Nzdi9am7vuRS/h76PcWDsV635mEXF0PEQMUV6Kb+OjTdsVxbi0PZmfQOjCMKb3w8CVZcqsn1g==",
- "dev": true,
- "requires": {
- "coffeescript": "~1.10.0",
- "dateformat": "~1.0.12",
- "eventemitter2": "~0.4.13",
- "exit": "~0.1.1",
- "findup-sync": "~0.3.0",
- "glob": "~7.0.0",
- "grunt-cli": "~1.2.0",
- "grunt-known-options": "~1.1.0",
- "grunt-legacy-log": "~2.0.0",
- "grunt-legacy-util": "~1.1.1",
- "iconv-lite": "~0.4.13",
- "js-yaml": "~3.13.1",
- "minimatch": "~3.0.2",
- "mkdirp": "~1.0.3",
- "nopt": "~3.0.6",
- "path-is-absolute": "~1.0.0",
- "rimraf": "~2.6.2"
- },
- "dependencies": {
- "grunt-cli": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz",
- "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=",
- "dev": true,
- "requires": {
- "findup-sync": "~0.3.0",
- "grunt-known-options": "~1.1.0",
- "nopt": "~3.0.6",
- "resolve": "~1.1.0"
- }
- },
- "resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
- }
- }
- },
- "grunt-contrib-watch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz",
- "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==",
- "dev": true,
- "requires": {
- "async": "^2.6.0",
- "gaze": "^1.1.0",
- "lodash": "^4.17.10",
- "tiny-lr": "^1.1.1"
- },
- "dependencies": {
- "async": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
- "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.14"
- }
- }
- }
- },
- "grunt-known-options": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz",
- "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==",
- "dev": true
- },
- "grunt-legacy-log": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz",
- "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==",
- "dev": true,
- "requires": {
- "colors": "~1.1.2",
- "grunt-legacy-log-utils": "~2.0.0",
- "hooker": "~0.2.3",
- "lodash": "~4.17.5"
- }
- },
- "grunt-legacy-log-utils": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz",
- "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==",
- "dev": true,
- "requires": {
- "chalk": "~2.4.1",
- "lodash": "~4.17.10"
- }
- },
- "grunt-legacy-util": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz",
- "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==",
- "dev": true,
- "requires": {
- "async": "~1.5.2",
- "exit": "~0.1.1",
- "getobject": "~0.1.0",
- "hooker": "~0.2.3",
- "lodash": "~4.17.10",
- "underscore.string": "~3.3.4",
- "which": "~1.3.0"
- }
- },
- "grunt-sass": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/grunt-sass/-/grunt-sass-3.1.0.tgz",
- "integrity": "sha512-90s27H7FoCDcA8C8+R0GwC+ntYD3lG6S/jqcavWm3bn9RiJTmSfOvfbFa1PXx4NbBWuiGQMLfQTj/JvvqT5w6A==",
- "dev": true
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "dev": true
- },
- "har-validator": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
- "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
- "dev": true,
- "requires": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
- }
- },
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "dev": true
- },
- "hooker": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
- "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
- "dev": true
- },
- "hosted-git-info": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
- "dev": true
- },
- "http-parser-js": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz",
- "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==",
- "dev": true
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "in-publish": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
- "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
- "dev": true
- },
- "indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
- "dev": true,
- "requires": {
- "repeating": "^2.0.0"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "is-finite": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
- "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "dev": true
- },
- "js-base64": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.1.tgz",
- "integrity": "sha512-G5x2saUTupU9D/xBY9snJs3TxvwX8EkpLFiYlPpDt/VmMHOXprnSU1nxiTmFbijCX4BLF/cMRIfAcC5BiMYgFQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "livereload-js": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
- "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==",
- "dev": true
- },
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "dependencies": {
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
- }
- },
- "lodash": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
- "dev": true
- },
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "dev": true,
- "requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
- }
- },
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- },
- "meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
- "dev": true,
- "requires": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
- }
- },
- "mime-db": {
- "version": "1.44.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
- "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.27",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
- "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
- "dev": true,
- "requires": {
- "mime-db": "1.44.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "dev": true
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "nan": {
- "version": "2.14.1",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
- "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
- "dev": true
- },
- "node-gyp": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
- "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
- "dev": true,
- "requires": {
- "fstream": "^1.0.0",
- "glob": "^7.0.3",
- "graceful-fs": "^4.1.2",
- "mkdirp": "^0.5.0",
- "nopt": "2 || 3",
- "npmlog": "0 || 1 || 2 || 3 || 4",
- "osenv": "0",
- "request": "^2.87.0",
- "rimraf": "2",
- "semver": "~5.3.0",
- "tar": "^2.0.0",
- "which": "1"
- },
- "dependencies": {
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
- "dev": true
- }
- }
- },
- "node-sass": {
- "version": "4.14.1",
- "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
- "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
- "dev": true,
- "requires": {
- "async-foreach": "^0.1.3",
- "chalk": "^1.1.1",
- "cross-spawn": "^3.0.0",
- "gaze": "^1.0.0",
- "get-stdin": "^4.0.1",
- "glob": "^7.0.3",
- "in-publish": "^2.0.0",
- "lodash": "^4.17.15",
- "meow": "^3.7.0",
- "mkdirp": "^0.5.1",
- "nan": "^2.13.2",
- "node-gyp": "^3.8.0",
- "npmlog": "^4.0.0",
- "request": "^2.88.0",
- "sass-graph": "2.2.5",
- "stdout-stream": "^1.4.0",
- "true-case-path": "^1.0.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "dev": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
- "dev": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "dev": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "dev": true
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
- "dev": true
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "qs": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
- "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==",
- "dev": true
- },
- "raw-body": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz",
- "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=",
- "dev": true,
- "requires": {
- "bytes": "1",
- "string_decoder": "0.10"
- }
- },
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
- "dev": true,
- "requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
- "dev": true,
- "requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
- "dev": true,
- "requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
- }
- },
- "repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
- "dev": true,
- "requires": {
- "is-finite": "^1.0.0"
- }
- },
- "request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "dev": true
- }
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
- },
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
- "resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "rimraf": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- },
- "dependencies": {
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- },
- "safe-json-parse": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz",
- "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=",
- "dev": true
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "sass-graph": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
- "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
- "dev": true,
- "requires": {
- "glob": "^7.0.0",
- "lodash": "^4.0.0",
- "scss-tokenizer": "^0.2.3",
- "yargs": "^13.3.2"
- }
- },
- "scss-tokenizer": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
- "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
- "dev": true,
- "requires": {
- "js-base64": "^2.1.8",
- "source-map": "^0.4.2"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
- "dev": true
- },
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
- "dev": true
- },
- "sprintf-js": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
- "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
- "dev": true
- },
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "dev": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "stdout-stream": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
- "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.1"
- }
- },
- "string-template": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz",
- "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=",
- "dev": true
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "dev": true,
- "requires": {
- "is-utf8": "^0.2.0"
- }
- },
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
- "dev": true,
- "requires": {
- "get-stdin": "^4.0.1"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "tar": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
- "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
- "dev": true,
- "requires": {
- "block-stream": "*",
- "fstream": "^1.0.12",
- "inherits": "2"
- }
- },
- "tiny-lr": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz",
- "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==",
- "dev": true,
- "requires": {
- "body": "^5.1.0",
- "debug": "^3.1.0",
- "faye-websocket": "~0.10.0",
- "livereload-js": "^2.3.0",
- "object-assign": "^4.1.0",
- "qs": "^6.4.0"
- }
- },
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dev": true,
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
- "dev": true
- },
- "true-case-path": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
- "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
- "dev": true,
- "requires": {
- "glob": "^7.1.2"
- },
- "dependencies": {
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true
- },
- "underscore.string": {
- "version": "3.3.5",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",
- "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==",
- "dev": true,
- "requires": {
- "sprintf-js": "^1.0.3",
- "util-deprecate": "^1.0.2"
- }
- },
- "uri-js": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
- "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "dev": true
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "websocket-driver": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
- "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
- "dev": true,
- "requires": {
- "http-parser-js": ">=0.5.1",
- "safe-buffer": ">=5.1.0",
- "websocket-extensions": ">=0.1.1"
- }
- },
- "websocket-extensions": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
- "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
- "dev": true
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "dev": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "y18n": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- },
- "yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
- "dev": true,
- "requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
- }
- },
- "yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- }
- }
- }
- }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index f8bda16..0000000
--- a/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "deft",
- "version": "1.0.0",
- "description": "A PHP micro framework",
- "main": "Gruntfile.js",
- "directories": {
- "test": "tests"
- },
- "scripts": {
- "up": "php -S localhost:8000 -t ./public",
- "test": "./vendor/bin/phpunit --configuration ./phpunit.xml --verbose",
- "debug": "./vendor/bin/phpunit --debug --configuration ./phpunit.xml",
- "postinstall": "grunt"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/AlexanderGW/Deft.git"
- },
- "author": "Alexander Gailey-White",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/AlexanderGW/Deft/issues"
- },
- "homepage": "https://github.com/AlexanderGW/Deft#readme",
- "devDependencies": {
- "grunt": "^1.1.0",
- "grunt-contrib-watch": "^1.1.0",
- "grunt-sass": "^3.0.2",
- "node-sass": "^4.11.0"
- }
-}
diff --git a/plugin/google-helper.php b/plugin/google-helper.php
deleted file mode 100644
index dc18f7b..0000000
--- a/plugin/google-helper.php
+++ /dev/null
@@ -1,84 +0,0 @@
-
- *
- * This file is part of Deft.
- *
- * Deft is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Deft is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Deft. If not, see .
- */
-
-class Deft_Google_Helper_Plugin {
- public static function addFonts() {
- if( count( Google::$fonts ) ) {
- $fonts = array();
- foreach( Google::$fonts as $name => $args ) {
- $font = str_replace( ' ', '+', $name );
- if( count( $args['weights'] ) ) {
- sort( $args['weights'] );
- $font .= ':' . implode( ',', $args['weights'] );
- }
- if( count( $args['sets'] ) ) {
- sort( $args['sets'] );
- $font .= '&subset=' . implode( ',', $args['sets'] );
- }
- $fonts[] = $font;
- }
-
- \Deft::response()->addStyle( 'https://fonts.googleapis.com/css?family=' . implode( '|', $fonts ), 99 );
- }
- }
-}
-
-class Google {
- private static $font_weights = array( '300', '300i', '400', '400i', '500', '500i', '600', '600i', '700', '700i', '800', '800i' );
- private static $font_subsets = array( 'cyrillic', 'cyrillic-ext', 'greek', 'greek-ext', 'latin-ext', 'vietnamese' );
- public static $fonts = array();
-
- public static function addFont( $name, $weights = '', $sets = '' ) {
- $weights = explode( ',', $weights );
- if( strlen( $weights[0] ) ) {
- foreach( $weights as $i => $weight ) {
- if( !in_array( $weight, self::$font_weights ) )
- unset( $weights[ $i ] );
- }
- } else
- $weights = array();
-
- $sets = explode( ',', $sets );
- if( strlen( $sets[0] ) ) {
- foreach( $sets as $i => $set ) {
- if( !in_array( $set, self::$font_subsets ) )
- unset( $sets[ $i ] );
- }
- } else
- $sets = array();
-
- if( !array_key_exists( $name, self::$fonts ) )
- self::$fonts[ $name ] = array(
- 'weights' => $weights,
- 'sets' => $sets
- );
- else {
- self::$fonts[ $name ] = array(
- 'weights' => array_keys( array_flip( array_merge( $weights, self::$fonts[ $name ]['weights'] ) ) ),
- 'sets' => array_keys( array_flip( array_merge( $sets, self::$fonts[ $name ]['sets'] ) ) )
- );
- }
- }
-}
-
-Event::set( 'beforeDocumentGetHead', array( 'Deft_Google_Helper_Plugin', 'addFonts' ) );
diff --git a/plugin/memcached.php b/plugin/memcached.php
deleted file mode 100644
index f32d414..0000000
--- a/plugin/memcached.php
+++ /dev/null
@@ -1,47 +0,0 @@
-
- *
- * This file is part of Deft.
- *
- * Deft is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Deft is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Deft. If not, see .
- */
-
-/**
- * Attempt to fetch a cached version of the request
- */
-Event::set('documentInit', function() {
- if (Deft::request()->isPost() === false) {
- $document = \Deft::lib('cache.memcached')->getLink()->get('deft.document.' . md5(DEFT_ROUTE));
- if ($document) {
- die($document);
- }
- }
-});
-
-/**
- * Cache rendered document for future requests
- */
-Filter::add('documentOutput', function($content) {
- \Deft::lib('cache.memcached')->getLink()->set(
- 'deft.document.' . md5(DEFT_ROUTE),
- $content,
- \Deft::config('cache.memcached')->get('expire', 900)
- );
-
- return $content;
-});
\ No newline at end of file
diff --git a/plugin/test.php b/plugin/test.php
deleted file mode 100644
index b3d9bbc..0000000
--- a/plugin/test.php
+++ /dev/null
@@ -1 +0,0 @@
- 'php',
'debug' => 0,
- 'directory.lib' => 'lib',
- 'directory.plugin' => 'plugin',
+ 'directory.lib' => 'Lib',
+ 'directory.plugin' => 'Plugin',
'directory.storage' => 'storage',
- 'directory.storage.tmp' => 'tmp',
+ 'directory.tmp' => 'tmp',
'directory.public' => 'public',
'directory.public.asset' => 'asset',
'plugins' => array('debug', 'example'),
@@ -130,16 +130,32 @@ static function init ($config = []) {
if (!defined('DEFT_ABS_PATH'))
define('DEFT_ABS_PATH', __DIR__);
- // App pathes
+ // App paths
define('DEFT_PATH', str_replace("\\", '/', DEFT_ABS_PATH));
+
define('DEFT_LIB_PATH', DEFT_PATH . DS . self::$config['directory.lib']);
if (!is_dir(DEFT_LIB_PATH) || !is_readable(DEFT_LIB_PATH))
self::error('Cannot read from library directory: %1$s', DEFT_LIB_PATH);
- define('DEFT_STORAGE_PATH', DEFT_PATH . DS . self::$config['directory.storage']);
- define('DEFT_TMP_PATH', DEFT_PATH . DS . self::$config['directory.storage.tmp']);
+
+ // Storage path
+ if (!array_key_exists('path.storage', self::$config))
+ self::$config['path.storage'] = DEFT_PATH . DS . self::$config['directory.storage'];
+ define('DEFT_STORAGE_PATH', self::$config['path.storage']);
+
+ // Temporary path
+ if (!array_key_exists('path.tmp', self::$config))
+ self::$config['path.tmp'] = DEFT_STORAGE_PATH . DS . self::$config['directory.tmp'];
+ define('DEFT_TMP_PATH', self::$config['path.tmp']);
+
define('DEFT_PLUGIN_PATH', DEFT_PATH . DS . self::$config['directory.plugin']);
- define('DEFT_PUBLIC_PATH', DEFT_PATH . DS . self::$config['directory.public']);
- define('DEFT_PUBLIC_ASSET_PATH', DEFT_PUBLIC_PATH . DS . self::$config['directory.public.asset']);
+
+ if (!array_key_exists('path.public', self::$config))
+ self::$config['path.public'] = DEFT_PATH . DS . self::$config['directory.public'];
+ define('DEFT_PUBLIC_PATH', self::$config['path.public']);
+
+ if (!array_key_exists('path.public.asset', self::$config))
+ self::$config['path.public.asset'] = DEFT_PUBLIC_PATH . DS . self::$config['directory.public.asset'];
+ define('DEFT_PUBLIC_ASSET_PATH', self::$config['path.public.asset']);
// Libraries to load
$array = self::import(
@@ -214,29 +230,43 @@ static function init ($config = []) {
// Runtime plugins
if (count(self::$config['plugins'])) {
- foreach (self::$config['plugins'] as $plugin) {
- $state = Deft::PLUGIN_MISSING;
- $path = DEFT_PLUGIN_PATH . DS . $plugin;
- $ext = '.php';
-
- if (file_exists($path . $ext)) {
- $state = Deft::PLUGIN_EXISTS;
- } elseif (is_dir($path) && file_exists($path . DS . $plugin . $ext)) {
- $state = Deft::PLUGIN_EXISTS;
- $path .= DS . $plugin;
- }
- $start = 0;
- if ($state === Deft::PLUGIN_EXISTS) {
- $start = \Deft\Lib\Helper::getMicroTime();
- include $path . $ext;
- $state = Deft::PLUGIN_LOADED;
- }
+ // Prepare plugin paths
+ $paths = [];
+ if (array_key_exists('path.plugins', self::$config))
+ $paths[] = self::$config['path.plugins'];
+ $paths[] = DEFT_PLUGIN_PATH;
+
+ $plugins = self::$config['plugins'];
+ $ext = '.php';
+
+ foreach ($paths as $i => $path) {
+ foreach ($plugins as $k => $plugin) {
+ $state = Deft::PLUGIN_MISSING;
+ $plugin_path = $path . DS . $plugin;
+
+ if (file_exists($plugin_path . $ext)) {
+ $state = Deft::PLUGIN_EXISTS;
+ } elseif (is_dir($plugin_path) && file_exists($plugin_path . DS . $plugin . $ext)) {
+ $state = Deft::PLUGIN_EXISTS;
+ $plugin_path .= DS . $plugin;
+ }
- self::stack('plugin/' . $plugin, array(
- 'time' => ($state ? \Deft\Lib\Helper::getMoment($start) : 0),
- 'loaded' => $state
- ));
+ $start = 0;
+ if ($state === Deft::PLUGIN_EXISTS) {
+ $start = \Deft\Lib\Helper::getMicroTime();
+ $plugin_path .= $ext;
+ include $plugin_path;
+ $state = Deft::PLUGIN_LOADED;
+ unset($plugins[$k]);
+ }
+
+ self::stack('plugin/' . $plugin, array(
+ 'time' => ($state ? \Deft\Lib\Helper::getMoment($start) : 0),
+ 'loaded' => $state,
+ 'path' => $plugin_path
+ ));
+ }
}
}
@@ -279,7 +309,11 @@ static function import ( /*polymorphic*/) {
continue;
}
- $path = DEFT_PATH . DS . str_replace('.', DS, $arg) . '.php';
+ $pieces = explode('.', $arg);
+ foreach ($pieces as $i => $piece)
+ $pieces[$i] = ucfirst($piece);
+
+ $path = DEFT_PATH . DS . implode(DS, $pieces) . '.php';
if (!is_readable($path) || !is_file($path)) {
$result[] = $path;
} else {
@@ -462,7 +496,7 @@ public static function config ($args = array()) {
'filesystem.type' => 'local'
), $args);
- if (empty($args['format']))
+ if (array_key_exists('format', $args) && is_string($args['format']))
$args['format'] = 'php';
$scope = "config.{$args['format']}";
@@ -474,7 +508,9 @@ public static function config ($args = array()) {
public static function database ($args = []) {
$config = self::config();
- $args = array_merge(array(
+ return self::storage(array_merge(array(
+ 'structure' => $config->get('database.structure', 'relational'),
+ 'type' => $config->get('database.type', 'sql'),
'driver' => $config->get('database.driver'),
'host' => $config->get('database.hostname'),
'username' => $config->get('database.username'),
@@ -482,10 +518,24 @@ public static function database ($args = []) {
'dbname' => $config->get('database.name'),
'table_prefix' => $config->get('database.table.prefix'),
'port' => $config->get('database.port')
+ ), $args));
+ }
+
+ public static function storage ($args = []) {
+ $c = self::config();
+ $args = array_merge(array(
+ 'structure' => $c->get('storage.structure', 'filesystem'),
+ 'type' => $c->get('storage.type', 'local')
), $args);
- $scope = 'storage.database';
- if ($args['driver'])
+ $scope = 'storage';
+ self::import('lib.' . $scope);
+ $scope .= '.' . $args['structure'];
+ self::import('lib.' . $scope);
+ $scope .= '.' . $args['type'];
+ self::import('lib.' . $scope);
+
+ if (array_key_exists('driver', $args) && is_string($args['driver']))
$scope .= '.'.$args['driver'];
return self::lib($scope, $args);
@@ -547,13 +597,11 @@ public static function route () {
public static function filesystem ($args = []) {
$config = self::config();
- if ($config) {
- $args = array_merge(array(
- 'type' => $config->get('filesystem.type', 'local')
- ), $args);
- }
-
- return self::lib('filesystem', $args);
+ /** @returns \Deft\Lib\Storage\Filesystem\Local */
+ return self::storage($args = array_merge(array(
+ 'structure' => $config->get('filesystem.type', 'filesystem'),
+ 'type' => $config->get('filesystem.type', 'local')
+ ), $args));
}
/**
@@ -642,44 +690,53 @@ static function decode ($string = null) {
/**
* Capture and return output of a script.
*
- * @param null $path
- *
- * @return bool|mixed|string|void
+ * @param null $scope
+ * @param null $hash
*/
- static function capture ($scope = null) {
+ static function capture ($scope = null, $hash = null) {
if (!is_string($scope)) {
return;
}
$config = self::config();
- $hash = $config->get('capture_hash');
+ if (is_null($hash))
+ $hash = $config->get('capture_hash');
+
if (is_null($hash)) {
$hash = \Deft\Lib\Random::getMd5();
$config->set('capture_hash', $hash);
- $config->save();
}
- ${'scope_' . $hash} = \Deft::filter()->exec('beforeCapture', $scope);
- ${'path_' . $hash} = DEFT_PATH . DS . str_replace('.', DS, ${'scope_' . $hash}) . '.php';
+ ${'capture_scope__' . $hash} = strtolower(\Deft::filter()->exec('beforeCapture', $scope));
- if (!file_exists(${'path_' . $hash})) {
+ $path = ${'capture_scope__' . $hash};
+ if (substr($path, 0, 7) === 'plugin.')
+ $path = ucfirst($path);
+
+ $path = DEFT_PATH . DS . str_replace('.', DS, $path) . '.php';
+
+ if (!file_exists($path)) {
return;
}
- \Deft::event()->exec('beforeCapture', ${'scope_' . $hash});
+ ${'capture_path__' . $hash} = $path;
+ \Deft::event()->exec('beforeCapture',
+ \Deft::event()->exec('beforeCapture__' . $hash, ${'capture_scope__' . $hash})
+ );
+
- ${'start_' . $hash} = \Deft\Lib\Helper::getMicroTime();
+ ${'capture_start__' . $hash} = \Deft\Lib\Helper::getMicroTime();
ob_start();
- include ${'path_' . $hash};
- ${'content_' . $hash} = ob_get_contents();
+ include ${'capture_path__' . $hash};
+ ${'capture_content__' . $hash} = ob_get_contents();
ob_end_clean();
- self::stack('capture/' . ${'scope_' . $hash}, array(
- 'time' => \Deft\Lib\Helper::getMoment(${'start_' . $hash})
+ self::stack('capture/' . ${'capture_scope__' . $hash}, array(
+ 'time' => \Deft\Lib\Helper::getMoment(${'capture_start__' . $hash})
));
- return \Deft::filter()->exec('captureContent', ${'content_' . $hash});
+ return \Deft::filter()->exec('captureContent', ${'capture_content__' . $hash});
}
/**
diff --git a/lib/cache.php b/src/Lib/Cache.php
similarity index 71%
rename from lib/cache.php
rename to src/Lib/Cache.php
index 5a9de64..c4bc7fe 100644
--- a/lib/cache.php
+++ b/src/Lib/Cache.php
@@ -34,6 +34,8 @@ class Cache extends \Deft_Concrete {
private $data = array();
+ private $storage = NULL;
+
/**
*
*/
@@ -52,6 +54,19 @@ public static function init() {
*/
function __construct ($scope = null) {
$this->scope = self::getArgs($scope);
+// $config = \Deft::config('cache.' . $scope);
+
+ $config = \Deft::config();
+ $this->storage = \Deft::storage(array(
+ 'structure' => $config->get('cache.structure', 'dictionary'),
+ 'type' => $config->get('cache.type', 'memcached'),
+ 'host' => $config->get('cache.hostname'),
+ 'username' => $config->get('cache.username'),
+ 'password' => $config->get('cache.password'),
+ 'dbname' => $config->get('cache.name'),
+ 'table_prefix' => $config->get('cache.table.prefix'),
+ 'port' => $config->get('cache.port')
+ ));
}
/**
@@ -67,9 +82,17 @@ public static function getArgs ($args = null) {
return $args;
}
+ public function storage($args = NULL) {
+ if (is_null($args))
+ return $this->storage;
+ }
+
public function get($key = null) {
// if (!is_null($key) AND array_key_exists($key, $this->data)) {
$key = md5($key);
+ if (array_key_exists($key, $this->data)) {
+ $this->data[$key] = $this->storage()->get($key);
+ }
return ($this->data[$key]);
// }
return;
diff --git a/lib/cli.php b/src/Lib/Cli.php
similarity index 100%
rename from lib/cli.php
rename to src/Lib/Cli.php
diff --git a/lib/config.php b/src/Lib/Config.php
similarity index 100%
rename from lib/config.php
rename to src/Lib/Config.php
diff --git a/lib/config/php.php b/src/Lib/Config/Php.php
similarity index 100%
rename from lib/config/php.php
rename to src/Lib/Config/Php.php
diff --git a/lib/element.php b/src/Lib/Element.php
similarity index 100%
rename from lib/element.php
rename to src/Lib/Element.php
diff --git a/lib/event.php b/src/Lib/Event.php
similarity index 100%
rename from lib/event.php
rename to src/Lib/Event.php
diff --git a/bootstrap.php b/src/Lib/Filesystem.php
similarity index 80%
rename from bootstrap.php
rename to src/Lib/Filesystem.php
index 68c3029..ce11221 100644
--- a/bootstrap.php
+++ b/src/Lib/Filesystem.php
@@ -21,12 +21,8 @@
* along with Deft. If not, see .
*/
-// Composer
-if (file_exists('vendor/autoload.php'))
- $loader = include_once 'vendor/autoload.php';
+namespace Deft\Lib;
-// Get the framework
-require 'deft.php';
+class Filesystem extends \Deft_Concrete {
-// Init Deft
-\Deft::init(require 'config/deft.php');
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/lib/filter.php b/src/Lib/Filter.php
similarity index 100%
rename from lib/filter.php
rename to src/Lib/Filter.php
diff --git a/lib/form.php b/src/Lib/Form.php
similarity index 100%
rename from lib/form.php
rename to src/Lib/Form.php
diff --git a/lib/helper.php b/src/Lib/Helper.php
similarity index 100%
rename from lib/helper.php
rename to src/Lib/Helper.php
diff --git a/lib/http.php b/src/Lib/Http.php
similarity index 100%
rename from lib/http.php
rename to src/Lib/Http.php
diff --git a/lib/locale.php b/src/Lib/Locale.php
similarity index 100%
rename from lib/locale.php
rename to src/Lib/Locale.php
diff --git a/lib/log.php b/src/Lib/Log.php
similarity index 100%
rename from lib/log.php
rename to src/Lib/Log.php
diff --git a/lib/plugin.php b/src/Lib/Plugin.php
similarity index 100%
rename from lib/plugin.php
rename to src/Lib/Plugin.php
diff --git a/lib/random.php b/src/Lib/Random.php
similarity index 100%
rename from lib/random.php
rename to src/Lib/Random.php
diff --git a/lib/request.php b/src/Lib/Request.php
similarity index 100%
rename from lib/request.php
rename to src/Lib/Request.php
diff --git a/lib/request/cli.php b/src/Lib/Request/Cli.php
similarity index 100%
rename from lib/request/cli.php
rename to src/Lib/Request/Cli.php
diff --git a/lib/request/http.php b/src/Lib/Request/Http.php
similarity index 100%
rename from lib/request/http.php
rename to src/Lib/Request/Http.php
diff --git a/lib/response.php b/src/Lib/Response.php
similarity index 100%
rename from lib/response.php
rename to src/Lib/Response.php
diff --git a/lib/response/cli.php b/src/Lib/Response/Cli.php
similarity index 100%
rename from lib/response/cli.php
rename to src/Lib/Response/Cli.php
diff --git a/lib/response/http.php b/src/Lib/Response/Http.php
similarity index 95%
rename from lib/response/http.php
rename to src/Lib/Response/Http.php
index fdaa4e6..4a36017 100644
--- a/lib/response/http.php
+++ b/src/Lib/Response/Http.php
@@ -105,12 +105,12 @@ public function status( $code = null ) {
header( sprintf( 'HTTP/1.1 %d %s', $code, $codes[ $code ] ), true );
// If empty response, show an error template
- if( $this->isEmpty() ) {
- $content = \Deft::capture( 'template.' . $code );
- if( is_string( $content ) ) {
- $this->setBody( $content );
- }
- }
+// if( $this->isEmpty() ) {
+// $content = \Deft::capture( 'template.' . $code );
+// if( is_string( $content ) ) {
+// $this->buffer( $content );
+// }
+// }
return TRUE;
}
diff --git a/lib/response/http/html.php b/src/Lib/Response/Http/Html.php
similarity index 98%
rename from lib/response/http/html.php
rename to src/Lib/Response/Http/Html.php
index 566990c..4f223af 100644
--- a/lib/response/http/html.php
+++ b/src/Lib/Response/Http/Html.php
@@ -775,6 +775,9 @@ public function getHead () {
foreach ($hashes as $hash) {
$this->links[$hash]['href'] = Sanitize::forText($this->links[$hash]['href']);
+ if (strpos($this->links[$hash]['href'], 'plugin/') === 0)
+ $this->links[$hash]['href'] = 'Plugin/' . substr($this->links[$hash]['href'], 7);
+
// Add meta..
if (
@@ -1133,7 +1136,10 @@ public function getBody () {
$scripts = array();
foreach ($this->scripts['_'] as $priority => $hashes) {
foreach ($hashes as $hash) {
- $this->links[$hash]['@props']['src'] = array_key_exists('src', $this->scripts[$hash]['@props']) ? Sanitize::forText($this->scripts[$hash]['@props']['src']) : NULL;
+ $this->scripts[$hash]['@props']['src'] = array_key_exists('src', $this->scripts[$hash]['@props']) ? Sanitize::forText($this->scripts[$hash]['@props']['src']) : NULL;
+
+ if (strpos($this->scripts[$hash]['@props']['src'], 'plugin/') === 0)
+ $this->scripts[$hash]['@props']['src'] = 'Plugin/' . substr($this->scripts[$hash]['@props']['src'], 7);
// Add script..
if (
diff --git a/lib/response/http/json.php b/src/Lib/Response/Http/Json.php
similarity index 95%
rename from lib/response/http/json.php
rename to src/Lib/Response/Http/Json.php
index 5207c11..119e28d 100644
--- a/lib/response/http/json.php
+++ b/src/Lib/Response/Http/Json.php
@@ -54,6 +54,13 @@ public function buffer($buffer = NULL) {
return TRUE;
}
+ /**
+ * @return bool
+ */
+ public function isEmpty () {
+ return !strlen($this->buffer);
+ }
+
/**
* @param null $scope
*
diff --git a/lib/route.php b/src/Lib/Route.php
similarity index 100%
rename from lib/route.php
rename to src/Lib/Route.php
diff --git a/lib/sanitize.php b/src/Lib/Sanitize.php
similarity index 100%
rename from lib/sanitize.php
rename to src/Lib/Sanitize.php
diff --git a/lib/storage.php b/src/Lib/Storage.php
similarity index 99%
rename from lib/storage.php
rename to src/Lib/Storage.php
index d836853..8197c66 100644
--- a/lib/storage.php
+++ b/src/Lib/Storage.php
@@ -23,7 +23,6 @@
namespace Deft\Lib;
-
class Storage extends \Deft_Concrete {
}
\ No newline at end of file
diff --git a/plugin/gdpr/gdpr.php b/src/Lib/Storage/Dictionary.php
similarity index 80%
rename from plugin/gdpr/gdpr.php
rename to src/Lib/Storage/Dictionary.php
index 0e4b7b0..01b2a78 100644
--- a/plugin/gdpr/gdpr.php
+++ b/src/Lib/Storage/Dictionary.php
@@ -21,18 +21,12 @@
* along with Deft. If not, see .
*/
-namespace Deft\Plugin;
+namespace Deft\Lib\Storage;
-class GDPR extends \Deft_Concrete {
- public function __construct() {
+use Deft\Lib\Event;
+use Deft\Lib\Filter;
+use Deft\Lib\Storage;
- }
+class Dictionary extends Storage {
- public function consent() {
- return true;
- }
-
- public function revoke() {
- return true;
- }
}
\ No newline at end of file
diff --git a/lib/cache/memcached.php b/src/Lib/Storage/Dictionary/Memcached.php
similarity index 95%
rename from lib/cache/memcached.php
rename to src/Lib/Storage/Dictionary/Memcached.php
index 305632c..1f91640 100644
--- a/lib/cache/memcached.php
+++ b/src/Lib/Storage/Dictionary/Memcached.php
@@ -1,13 +1,12 @@
.
*/
-return array(
- array(
- 'direction' => 'ltr',
- 'encoding' => 'utf-8',
- 'iso2' => 'es',
- 'iso3' => 'esp',
- 'locale' => 'es-ES'
- ),
- array(
- 'User environment' => 'La configuraciĆ³n del entorno',
- 'Hello' => 'Hola',
- 'Language' => 'Idioma',
- 'Welcome' => 'Bienvenido'
- )
-);
\ No newline at end of file
+namespace Deft\Lib\Storage;
+
+use Deft\Lib\Storage;
+
+class Filesystem extends Storage {
+
+}
\ No newline at end of file
diff --git a/lib/fIlesystem.php b/src/Lib/Storage/Filesystem/Local.php
similarity index 66%
rename from lib/fIlesystem.php
rename to src/Lib/Storage/Filesystem/Local.php
index 4be4fda..00a313b 100644
--- a/lib/fIlesystem.php
+++ b/src/Lib/Storage/Filesystem/Local.php
@@ -1,11 +1,29 @@
+ *
+ * This file is part of Deft.
+ *
+ * Deft is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Deft is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Deft. If not, see .
+ */
+
+namespace Deft\Lib\Storage\Filesystem;
+
+class Local extends \Deft_Concrete {
/**
*
@@ -25,8 +43,10 @@ public function isRelative($path = NULL) {
*
*/
public function makeRelative($path) {
- $path = substr($path, strlen(DEFT_PATH)+1);
- $path = str_replace('\\', '/', $path);
+ if (strpos($path, DEFT_PATH) === 0) {
+ $path = substr($path, strlen(DEFT_PATH)+1);
+ $path = str_replace('\\', '/', $path);
+ }
return $path;
}
@@ -34,22 +54,26 @@ public function makeRelative($path) {
*
*/
public function install($path = NULL, $mode = NULL) {
- if (strpos($path, DEFT_PATH) !== 0)
- return NULL;
-
if (is_null($mode))
$mode = 0750;
$mode = intval($mode, 8);
- $path = $this->makeRelative($path);
+
+// $path = $this->makeRelative($path);
$directories = explode('/', $path);
- $path = DEFT_PATH;
- foreach ($directories as $directory) {
- $path .= "/{$directory}";
- if (!is_dir($path)) {
- if (!mkdir($path))
+ $result = '';
+ foreach ($directories as $i => $directory) {
+ if (is_null($directory))
+ continue;
+ if ($i)
+ $result .= '/';
+ $result .= "{$directory}";
+ if (strlen($result) && !is_dir($result)) {
+ if (!mkdir($result)) {
return FALSE;
- chmod($path, $mode);
+ }
+
+ chmod($result, $mode);
}
}
@@ -141,19 +165,20 @@ public function write($path = NULL, $data = NULL) {
*
*/
public function delete($path = NULL, $recursive = FALSE) {
+ $result = FALSE;
if (!is_dir($path) && is_file($path))
return unlink($path);
if (!is_bool($recursive))
$recursive = FALSE;
- $path = $this->makeRelative($path);
+// $path = $this->makeRelative($path);
// Recursive deletion, get all items to process
if ($recursive) {
- $failed = FALSE;
$items = $this->scan($path, TRUE, 1);
if ($items) {
+ $failed = FALSE;
foreach ($items as $key => $value) {
// Delete file, $value is the full path
@@ -164,8 +189,8 @@ public function delete($path = NULL, $recursive = FALSE) {
}
// Delete the content of the directory
- elseif($value === TRUE) {
- $path_directory = DEFT_PATH . DS . $path . '/' . $key;
+ elseif ($value === TRUE) {
+ $path_directory = $path . '/' . $key;
if ($this->delete($path_directory, TRUE) === FALSE) {
$failed = TRUE;
break;
@@ -179,7 +204,8 @@ public function delete($path = NULL, $recursive = FALSE) {
}
// Delete directory
- $result = rmdir(DEFT_PATH . DS . $path);
+ if (is_dir($path))
+ $result = rmdir($path);
return $result;
}
}
\ No newline at end of file
diff --git a/src/Lib/Storage/Relational.php b/src/Lib/Storage/Relational.php
new file mode 100644
index 0000000..ab48301
--- /dev/null
+++ b/src/Lib/Storage/Relational.php
@@ -0,0 +1,30 @@
+
+ *
+ * This file is part of Deft.
+ *
+ * Deft is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Deft is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Deft. If not, see .
+ */
+
+namespace Deft\Lib\Storage;
+
+use Deft\Lib\Storage;
+
+class Relational extends Storage {
+
+}
\ No newline at end of file
diff --git a/lib/storage/database.php b/src/Lib/Storage/Relational/Sql.php
similarity index 82%
rename from lib/storage/database.php
rename to src/Lib/Storage/Relational/Sql.php
index 5d9c10f..58cb129 100644
--- a/lib/storage/database.php
+++ b/src/Lib/Storage/Relational/Sql.php
@@ -21,14 +21,15 @@
* along with Deft. If not, see .
*/
-namespace Deft\Lib\Storage;
+namespace Deft\Lib\Storage\Relational;
use Deft\Lib\Helper;
+use Deft\Lib\Log;
use Deft\Lib\Sanitize;
-use Deft\Lib\Storage;
+use Deft\Lib\Storage\Relational;
use Deft\Lib\Watchdog;
-class Database extends Storage {
+class Sql extends Relational {
var $args = array();
var $connected = null;
var $link = false;
@@ -80,15 +81,17 @@ function __construct ($args = array(), $class = __CLASS__) {
* @return array
*/
public static function getArgs ($args = array()) {
- $config = \Deft::config();
+ $c = \Deft::config();
$args = array_merge(array(
- 'driver' => $config->get('database.driver', 'mysql'),
- 'host' => $config->get('database.hostname', 'localhost'),
- 'username' => $config->get('database.username'),
- 'password' => $config->get('database.password'),
- 'dbname' => $config->get('database.name'),
- 'table_prefix' => $config->get('database.table.prefix'),
- 'port' => $config->get('database.port')
+ 'structure' => 'relational',
+ 'type' => 'sql',
+ 'driver' => $c->get('storage.relational.sql.driver'),
+ 'host' => $c->get('storage.relational.sql.hostname', '127.0.0.1'),
+ 'username' => $c->get('storage.relational.sql.username'),
+ 'password' => $c->get('storage.relational.sql.password'),
+ 'name' => $c->get('storage.relational.sql.name'),
+ 'table_prefix' => $c->get('storage.relational.sql.table.prefix'),
+ 'port' => $c->get('storage.relational.sql.port')
), $args);
return $args;
@@ -108,6 +111,15 @@ public function isConnected () {
return $this->connected;
}
+ /**
+ * @param null $str
+ *
+ * @return string|string[]|null
+ */
+ public function addTablePrefix($str = NULL) {
+ return str_replace('#_', $this->args['table_prefix'], $str);
+ }
+
/**
* @return string
*/
@@ -117,7 +129,7 @@ public function sql ( /*polymorphic*/) {
}
$values = func_get_args();
- $statement = str_replace('#_', $this->args['table_prefix'], array_shift($values));
+ $statement = $this->addTablePrefix(array_shift($values));
if (!count($values)) {
return $statement;
} else {
@@ -176,7 +188,7 @@ public function query ( /*polymorphic*/) {
// Non-conditional query
else {
- $this->statement = str_replace('#_', $this->args['table_prefix'], $args[0]);
+ $this->statement = $this->addTablePrefix($args[0]);
}
// Debug timer
@@ -189,10 +201,10 @@ public function query ( /*polymorphic*/) {
$this->resource = $this->link->query($this->statement);
}
catch (\PDOException $e) {
- \Deft::log()->add($e->getMessage(), $e->getCode(), $this->getStack());
+ \Deft::log()->add($e->getCode() . ': ' . $e->getMessage(), $this->getStack(), Log::ERROR);
}
- // TODO: This is messing up due to the getArgs() != to Deft::database() args
+ // TODO: This is messing up due to the getArgs() != to Deft::storage() args
// if (DEFT_DEBUG > 0) {
// $statement = Sanitize::forText($this->statement);
// $entry = array(
@@ -250,9 +262,11 @@ public function insert ($table = null, $args = array()) {
return;
}
- $table = str_replace('#_', $this->args['table_prefix'], $table);
+ $table = $this->addTablePrefix($table);
- $statement = "INSERT INTO `" . $table . "` ( `" . implode("`,`", array_keys($args)) . "` ) VALUES( " . preg_replace('/, $/', '', str_repeat('?, ', count($args))) . " )";
+ $statement = "INSERT INTO `" . $table . "` "
+ . "( `" . implode("`,`", array_keys($args)) . "` ) "
+ . "VALUES( " . preg_replace('/, $/', '', str_repeat('?, ', count($args))) . " )";
$array = array_values($args);
array_unshift($array, $statement);
@@ -270,11 +284,11 @@ public function insert ($table = null, $args = array()) {
* @return int
*/
public function update ($table = null, $args = array(), $conditonal = array()) {
- if (!is_string($table) or !is_array($args) or !count($args) or !is_array($args) or !count($conditonal)) {
+ if (!is_string($table) or !is_array($args) or !count($args) or !count($conditonal)) {
return;
}
- $table = str_replace('#_', $this->args['table_prefix'], $table);
+ $table = $this->addTablePrefix($table);
$set = array();
foreach ($args AS $arg => $value) {
@@ -286,7 +300,9 @@ public function update ($table = null, $args = array(), $conditonal = array()) {
$where[] = "`" . $arg . "` = ?";
}
- $statement = "UPDATE `" . $table . "` SET " . implode(' AND ', $set) . " WHERE ( " . implode(' AND ', $where) . " )";
+ $statement = "UPDATE `" . $table . "` "
+ . "SET " . implode(' AND ', $set) . " "
+ . "WHERE ( " . implode(' AND ', $where) . " );";
$array = array_merge(array_values($args), array_values($conditonal));
array_unshift($array, $statement);
@@ -307,14 +323,15 @@ public function delete ($table = null, $args = array()) {
return;
}
- $table = str_replace('#_', $this->args['table_prefix'], $table);
+ $table = $this->addTablePrefix($table);
$where = array();
foreach ($args AS $arg => $value) {
$where[] = "`" . $arg . "` = ?";
}
- $statement = "DELETE FROM `" . $table . "` WHERE ( " . implode(' AND ', $where) . " )";
+ $statement = "DELETE FROM `" . $table . "` "
+ . "WHERE ( " . implode(' AND ', $where) . " );";
$array = array_values($args);
array_unshift($array, $statement);
@@ -334,7 +351,7 @@ public function getField ($index = 0) {
return false;
if (!$this->resource)
- return;
+ return NULL;
if ($this->resource instanceof \PDOStatement) {
$row = $this->resource->fetch(\PDO::FETCH_NUM);
diff --git a/src/Lib/Storage/Relational/Sql/Mysql.php b/src/Lib/Storage/Relational/Sql/Mysql.php
new file mode 100644
index 0000000..e29eff5
--- /dev/null
+++ b/src/Lib/Storage/Relational/Sql/Mysql.php
@@ -0,0 +1,49 @@
+args = self::getArgs($args);
+
+ // Establish the PDO connection
+ parent::__construct($this->args, $class);
+
+ if (
+ $this->connected
+ && version_compare(PHP_VERSION, '5.3.6', '<')
+ )
+ $this->link->exec(Filter::exec('onDatabaseConstructQueryUtf8', 'SET NAMES utf8'));
+ }
+
+ /**
+ * @param array $args
+ *
+ * @return array
+ */
+ public static function getArgs ($args = array()) {
+ $c = \Deft::config();
+ $args = array_merge(array(
+ 'structure' => 'relational',
+ 'type' => 'sql',
+ 'driver' => 'mysql',
+ 'host' => $c->get('storage.relational.sql.mysql.hostname', '127.0.0.1'),
+ 'username' => $c->get('storage.relational.sql.mysql.username', 'root'),
+ 'password' => $c->get('storage.relational.sql.mysql.password'),
+ 'name' => $c->get('storage.relational.sql.mysql.name', 'test'),
+ 'table_prefix' => $c->get('storage.relational.sql.mysql.table.prefix'),
+ 'port' => $c->get('storage.relational.sql.mysql.port', 3306)
+ ), $args);
+
+ return $args;
+ }
+}
\ No newline at end of file
diff --git a/lib/token.php b/src/Lib/Token.php
similarity index 98%
rename from lib/token.php
rename to src/Lib/Token.php
index 20b581e..25ddde7 100644
--- a/lib/token.php
+++ b/src/Lib/Token.php
@@ -46,7 +46,7 @@ public static function init() {
$hash = self::getHash();
$data = null;
- if( array_key_exists( $hash, $_SESSION ) )
+ if( !empty($_SESSION) && array_key_exists( $hash, $_SESSION ) )
$data =& $_SESSION[ $hash ];
elseif( array_key_exists( $hash, $_COOKIE ) ) {
$data =& $_COOKIE[ $hash ];
diff --git a/plugin/debug/.gitignore b/src/Plugin/debug/.gitignore
similarity index 100%
rename from plugin/debug/.gitignore
rename to src/Plugin/debug/.gitignore
diff --git a/src/Plugin/debug/asset/debug.css.map b/src/Plugin/debug/asset/debug.css.map
new file mode 100644
index 0000000..2323520
--- /dev/null
+++ b/src/Plugin/debug/asset/debug.css.map
@@ -0,0 +1,9 @@
+{
+ "version": 3,
+ "file": "debug.css",
+ "sources": [
+ "debug.scss"
+ ],
+ "names": [],
+ "mappings": "AAAA,AAAA,OAAO,AAAA,WAAW,CAAC;EAClB,UAAU,EAAE,gBAAgB;EAC5B,UAAU,EAAE,mFAMX;EACD,UAAU,EAAE,EAAE;EACd,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,MAAM,GAgIjB;EA3ID,AAaC,OAbM,AAAA,WAAW,GAaf,OAAO,AAAA,WAAW,CAAC;IACpB,UAAU,EAAE,CAAC,GACb;EAfF,AAiBC,OAjBM,AAAA,WAAW,GAiBf,GAAG,CAAC;IACL,QAAQ,EAAE,QAAQ;IAClB,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,MAAM;IACjB,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,OAAO,GAgCd;IAzDF,AA2BE,OA3BK,AAAA,WAAW,GAiBf,GAAG,CAUJ,KAAK,CAAC;MACL,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM,GA2BlB;MAxDH,AA+BG,OA/BI,AAAA,WAAW,GAiBf,GAAG,CAUJ,KAAK,CAIJ,EAAE,CAAC;QACF,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,GAAG;QACnB,WAAW,EAAE,SAAS,GAqBtB;QAvDJ,AAoCI,OApCG,AAAA,WAAW,GAiBf,GAAG,CAUJ,KAAK,CAIJ,EAAE,AAKA,UAAW,CAAA,GAAG,EAAE;UAChB,UAAU,EAAE,KAAK;UACjB,WAAW,EAAE,GAAG,GAChB;QAvCL,AAyCI,OAzCG,AAAA,WAAW,GAiBf,GAAG,CAUJ,KAAK,CAIJ,EAAE,AAUA,UAAW,CAAA,IAAI,EAAE;UACjB,gBAAgB,EAAE,OAAO;UACzB,UAAU,EAAE,IAAI,GAChB;QA5CL,AAgDI,OAhDG,AAAA,WAAW,GAiBf,GAAG,CAUJ,KAAK,CAIJ,EAAE,CAiBD,KAAK,CAAC;UACL,UAAU,EAAE,UAAU;UACtB,KAAK,EAAE,IAAI;UACX,eAAe,EAAE,QAAQ;UACzB,cAAc,EAAE,OAAO;UACvB,gBAAgB,EAAE,OAAO,GACzB;EAtDL,AA2DC,OA3DM,AAAA,WAAW,CA2DjB,SAAS,CAAC;IACT,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,MAAM,GAehB;IA7EF,AA+DE,OA/DK,AAAA,WAAW,CA2DjB,SAAS,AAIP,MAAM,CAAC;MACP,gBAAgB,EAAE,OAAO,GACzB;IAjEH,AAkEE,OAlEK,AAAA,WAAW,CA2DjB,SAAS,GAON,GAAG,CAAC;MACL,OAAO,EAAE,KAAK;MACd,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,IAAI,EAAE,CAAC;MACP,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,MAAM;MACb,UAAU,EAAE,WAAW;MACvB,gBAAgB,EAAE,GAAG,GAErB;EA5EH,AA+EC,OA/EM,AAAA,WAAW,CA+EjB,EAAE,CAAC;IACF,MAAM,EAAE,CAAC;IACT,OAAO,EAAG,CAAC;IACX,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,GAAG,GAChB;EApFF,AAsFC,OAtFM,AAAA,WAAW,CAsFjB,EAAE,EAtFH,OAAO,AAAA,WAAW,CAsFb,EAAE,CAAC;IACN,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,gBAAgB,EAAE,WAAW,GAC7B;EA1FF,AA4FC,OA5FM,AAAA,WAAW,CA4FjB,EAAE,CAAC;IACF,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,KAAK;IACd,gBAAgB,EAAE,OAAO,GACzB;EAhGF,AAkGC,OAlGM,AAAA,WAAW,CAkGjB,EAAE,CAAC;IACF,MAAM,EAAE,MAAM,GACd;EApGF,AAwGG,OAxGI,AAAA,WAAW,CAsGjB,OAAO,AACL,UAAU,CACV,EAAE,AAAA,OAAO,CAAC;IACT,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,GAAG;IAClB,gBAAgB,EAAE,IAAI;IACtB,SAAS,EAAE,kBAAkB,GAC7B;EAnHJ,AAqHG,OArHI,AAAA,WAAW,CAsGjB,OAAO,AACL,UAAU,CAcV,GAAG,AAAA,OAAO,CAAC;IACV,OAAO,EAAE,IAAI,GACb;EAvHJ,AA2HG,OA3HI,AAAA,WAAW,CAsGjB,OAAO,AAoBL,SAAS,CACT,GAAG,AAAA,OAAO,CAAC;IACV,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,SAAS,GACtB;EAhIJ,AAmIE,OAnIK,AAAA,WAAW,CAsGjB,OAAO,GA6BJ,GAAG,CAAC;IACL,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,gBAAgB,GAIxB;IAzIH,AAsIG,OAtII,AAAA,WAAW,CAsGjB,OAAO,GA6BJ,GAAG,GAGF,GAAG,CAAC;MACL,UAAU,EAAE,CAAC,GACb"
+}
\ No newline at end of file
diff --git a/plugin/debug/asset/debug.js b/src/Plugin/debug/asset/debug.js
similarity index 100%
rename from plugin/debug/asset/debug.js
rename to src/Plugin/debug/asset/debug.js
diff --git a/plugin/debug/asset/debug.scss b/src/Plugin/debug/asset/debug.scss
similarity index 100%
rename from plugin/debug/asset/debug.scss
rename to src/Plugin/debug/asset/debug.scss
diff --git a/plugin/debug/debug.php b/src/Plugin/debug/debug.php
similarity index 100%
rename from plugin/debug/debug.php
rename to src/Plugin/debug/debug.php
diff --git a/plugin/debug/template/json.php b/src/Plugin/debug/template/json.php
similarity index 100%
rename from plugin/debug/template/json.php
rename to src/Plugin/debug/template/json.php
diff --git a/plugin/example/.gitignore b/src/Plugin/example/.gitignore
similarity index 100%
rename from plugin/example/.gitignore
rename to src/Plugin/example/.gitignore
diff --git a/plugin/example/asset/js/main.js b/src/Plugin/example/asset/js/main.js
similarity index 100%
rename from plugin/example/asset/js/main.js
rename to src/Plugin/example/asset/js/main.js
diff --git a/plugin/example/asset/js/request.js b/src/Plugin/example/asset/js/request.js
similarity index 100%
rename from plugin/example/asset/js/request.js
rename to src/Plugin/example/asset/js/request.js
diff --git a/plugin/example/asset/scss/example.scss b/src/Plugin/example/asset/scss/example.scss
similarity index 100%
rename from plugin/example/asset/scss/example.scss
rename to src/Plugin/example/asset/scss/example.scss
diff --git a/plugin/example/example.php b/src/Plugin/example/example.php
similarity index 99%
rename from plugin/example/example.php
rename to src/Plugin/example/example.php
index 4259d0d..df3c6f0 100644
--- a/plugin/example/example.php
+++ b/src/Plugin/example/example.php
@@ -117,7 +117,7 @@ public static function beforeDocumentGetHead() {
$res = \Deft::response();
$res->addStyle( 'plugin/example/asset/css/example.css' );
$res->addScript( 'plugin/example/asset/js/main.js' );
- $res->addScript( 'lib/deft.js' );
+ $res->addScript( 'deft.js' );
$res->setVpWidth( 0 );
$res->addStyle( 'https://fonts.googleapis.com/css?family=Raleway:400,700' );
$res->setTitleSeparator( ' • ' );
diff --git a/plugin/example/page/index.php b/src/Plugin/example/page/index.php
similarity index 100%
rename from plugin/example/page/index.php
rename to src/Plugin/example/page/index.php
diff --git a/plugin/example/page/request.php b/src/Plugin/example/page/request.php
similarity index 100%
rename from plugin/example/page/request.php
rename to src/Plugin/example/page/request.php
diff --git a/plugin/example/page/response.php b/src/Plugin/example/page/response.php
similarity index 100%
rename from plugin/example/page/response.php
rename to src/Plugin/example/page/response.php
diff --git a/plugin/example/page/user.php b/src/Plugin/example/page/user.php
similarity index 100%
rename from plugin/example/page/user.php
rename to src/Plugin/example/page/user.php
diff --git a/public/lib/deft.js b/src/deft.js
similarity index 100%
rename from public/lib/deft.js
rename to src/deft.js
diff --git a/public/.htaccess b/src/public/.htaccess
similarity index 100%
rename from public/.htaccess
rename to src/public/.htaccess
diff --git a/config/.gitkeep b/src/public/asset/.gitkeep
similarity index 100%
rename from config/.gitkeep
rename to src/public/asset/.gitkeep
diff --git a/public/index.php b/src/public/index.php
similarity index 84%
rename from public/index.php
rename to src/public/index.php
index d1d6efc..45c6afc 100644
--- a/public/index.php
+++ b/src/public/index.php
@@ -21,8 +21,13 @@
* along with Deft. If not, see .
*/
-// Bootstrap Deft
-require '../bootstrap.php';
+require '../../vendor/autoload.php';
+
+// Init Deft
+Deft::init([
+ 'debug' => 3,
+ 'path.storage' => sys_get_temp_dir()
+]);
// Echo response
-echo \Deft::response();
\ No newline at end of file
+echo Deft::response();
\ No newline at end of file
diff --git a/template/404.php b/src/template/404.php
similarity index 100%
rename from template/404.php
rename to src/template/404.php
diff --git a/template/response/html5.php b/src/template/response/html5.php
similarity index 100%
rename from template/response/html5.php
rename to src/template/response/html5.php
diff --git a/tests/includes/bootstrap.php b/tests/includes/bootstrap.php
index 62c01a1..c0924df 100644
--- a/tests/includes/bootstrap.php
+++ b/tests/includes/bootstrap.php
@@ -6,7 +6,7 @@
define('DEFT_TESTING', true);
// Replace separators on Windows for test passing
-define('DEFT_ABS_PATH', str_replace("\\", '/', realpath(__DIR__ . '/../..')));
+define('DEFT_ABS_PATH', str_replace("\\", '/', realpath(__DIR__ . '/../../src')));
define('DEFT_INITIATOR', DEFT_ABS_PATH . '/deft.php');
@@ -20,13 +20,11 @@
if (file_exists('vendor/autoload.php'))
$loader = include_once 'vendor/autoload.php';
-// Get the framework
-require 'deft.php';
-
// Init Deft with a test config
\Deft::init([
+ 'path.storage' => sys_get_temp_dir(),
'plugins' => [
- 'example',
- 'test'
+ 'debug',
+ 'example'
]
]);
\ No newline at end of file
diff --git a/tests/integration/core.php b/tests/integration/core.php
index d85f4f1..53738c9 100644
--- a/tests/integration/core.php
+++ b/tests/integration/core.php
@@ -59,7 +59,7 @@ public function test_constants() {
"The root Deft path does not match"
);
- $path = DEFT_ABS_PATH . DS . 'lib';
+ $path = DEFT_ABS_PATH . DS . 'Lib';
$this->assertEquals(
$path,
@@ -67,15 +67,15 @@ public function test_constants() {
"The default Deft 'lib' path '" . DEFT_LIB_PATH . "' does not match '$path'"
);
- $path = DEFT_ABS_PATH . DS . 'tmp';
+// $path = $_SERVER['TEMP'] . DS . 'tmp';
+//
+// $this->assertEquals(
+// $path,
+// DEFT_TMP_PATH,
+// "The default Deft 'tmp' path '" . DEFT_TMP_PATH . "' does not match '$path'"
+// );
- $this->assertEquals(
- $path,
- DEFT_TMP_PATH,
- "The default Deft 'tmp' path '" . DEFT_TMP_PATH . "' does not match '$path'"
- );
-
- $path = DEFT_ABS_PATH . DS . 'plugin';
+ $path = DEFT_ABS_PATH . DS . 'Plugin';
$this->assertEquals(
$path,
@@ -130,15 +130,6 @@ public function test_constants() {
"The DEFT_ASSET_URL (The URL to Deft public assets) '" . DEFT_ASSET_URL . "' does not match '$url_asset'"
);
- // Check the Deft URL for plugins
- $url_plugin = "{$uri}/plugin/";
-
- $this->assertEquals(
- $url_plugin,
- DEFT_PLUGIN_URL,
- "The DEFT_PLUGIN_URL (The URL to Deft public assets) '" . DEFT_PLUGIN_URL . "' does not match '$url_plugin'"
- );
-
// Check the Deft route path
$path_route = '';
@@ -158,11 +149,11 @@ public function test_plugin_management() {
// We only have the 'example' plugin.
$this->assertEquals(
[
- 'example',
- 'test'
+ 'debug',
+ 'example'
],
$plugins,
- "The 'example' and 'test' plugins was not present in the 'plugins' config"
+ "The 'debug', and 'example' plugins was not present in the 'plugins' config"
);
$log = Deft::stack("plugin/example");
@@ -193,32 +184,32 @@ public function test_plugin_management() {
"The 'example' plugin time returned 0"
);
- $log = Deft::stack("plugin/test");
+ $log = Deft::stack("plugin/debug");
$count = count($log);
- // Check that 1 stack log exists for the file-based 'test' plugin
+ // Check that 1 stack log exists for the file-based 'debug' plugin
$this->assertCount(
1,
$log,
- "Stack log for plugin 'test' count returned $count, instead of 1"
+ "Stack log for plugin 'debug' count returned $count, instead of 1"
);
- // Is the state of the 'test' plugin, Deft::PLUGIN_LOADED.
+ // Is the state of the 'debug' plugin, Deft::PLUGIN_LOADED.
$state = $log[0]['loaded'];
$this->assertEquals(
Deft::PLUGIN_LOADED,
$state,
- "The 'test' plugin is not in the loaded state"
+ "The 'debug' plugin is not in the loaded state"
);
- // Is the 'test' plugin load time, greater than 0
+ // Is the 'debug' plugin load time, greater than 0
$time = $log[0]['time'];
$this->assertGreaterThan(
0,
$time,
- "The 'test' plugin time returned 0"
+ "The 'debug' plugin time returned 0"
);
}
diff --git a/tests/unit/core.php b/tests/unit/core.php
index 9abbc29..34e1d21 100644
--- a/tests/unit/core.php
+++ b/tests/unit/core.php
@@ -73,14 +73,14 @@ public function test_import() {
*/
public function test_havePlugin() {
$result = Deft::havePlugin(
- 'example'
+ 'debug'
);
- $this->assertEquals(Deft::PLUGIN_LOADED, $result);
+ $this->assertGreaterThan(Deft::PLUGIN_EXISTS, $result);
$result = Deft::havePlugin(
- 'debug'
+ 'example'
);
- $this->assertEquals(Deft::PLUGIN_EXISTS, $result);
+ $this->assertEquals(Deft::PLUGIN_LOADED, $result);
$result = Deft::havePlugin(
'foobar'
diff --git a/tests/unit/filesystem.php b/tests/unit/filesystem.php
index 1465ad9..429146c 100644
--- a/tests/unit/filesystem.php
+++ b/tests/unit/filesystem.php
@@ -76,7 +76,7 @@ public function test_filesystem_install() {
$this->assertTrue(
$result,
- "Failed to install filesystem path"
+ "Failed to install filesystem path '{$this->path}'"
);
}
@@ -152,14 +152,6 @@ public function test_filesystem_delete() {
$parent_path = realpath($this->path.'/..');
- // Check file delete returns TRUE
- $result = \Deft::filesystem()->delete($this->file);
-
- $this->assertTrue(
- $result,
- "Deleting an existing file should return TRUE, instead '$result'"
- );
-
// Check non-recursive directory delete (wth content) returns FALSE
$result = \Deft::filesystem()->delete($parent_path, FALSE);
@@ -168,12 +160,20 @@ public function test_filesystem_delete() {
"Attempt to non-recursive remove directory with content, should return FALSE, instead '$result'"
);
+ // Check file delete returns TRUE
+ $result = \Deft::filesystem()->delete($this->file);
+
+ $this->assertTrue(
+ $result,
+ "Deleting an existing file should return TRUE, instead '$result'"
+ );
+
// Check not empty directory non-recursive delete, returns FALSE
$result = \Deft::filesystem()->delete($parent_path, TRUE);
$this->assertTrue(
$result,
- "Attempt to recursive remove directory with content, should return TRUE, instead $result"
+ "Attempt to recursive remove directory with content, should return TRUE, instead '$result'"
);
}
}
\ No newline at end of file