BREAKING CHANGE(update scope to @pushrocks): update
This commit is contained in:
		
							
								
								
									
										109
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
							
						
						
									
										109
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							@@ -3,69 +3,140 @@ image: hosttoday/ht-docker-node:npmci
 | 
			
		||||
 | 
			
		||||
cache:
 | 
			
		||||
  paths:
 | 
			
		||||
  - .yarn/
 | 
			
		||||
  - .npmci_cache/
 | 
			
		||||
  key: "$CI_BUILD_STAGE"
 | 
			
		||||
 | 
			
		||||
stages:
 | 
			
		||||
- security
 | 
			
		||||
- test
 | 
			
		||||
- release
 | 
			
		||||
- trigger
 | 
			
		||||
- pages
 | 
			
		||||
- metadata
 | 
			
		||||
 | 
			
		||||
# ====================
 | 
			
		||||
# security stage
 | 
			
		||||
# ====================
 | 
			
		||||
mirror:
 | 
			
		||||
  stage: security
 | 
			
		||||
  script:
 | 
			
		||||
  - npmci git mirror
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
snyk:
 | 
			
		||||
  stage: security
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci command npm install -g snyk
 | 
			
		||||
    - npmci command npm install --ignore-scripts
 | 
			
		||||
    - npmci command snyk test
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
# ====================
 | 
			
		||||
# test stage
 | 
			
		||||
# ====================
 | 
			
		||||
testLEGACY:
 | 
			
		||||
  stage: test
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci test legacy
 | 
			
		||||
  - npmci node install legacy
 | 
			
		||||
  - npmci npm install
 | 
			
		||||
  - npmci npm test
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
    - docker
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
 | 
			
		||||
testLTS:
 | 
			
		||||
  stage: test
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci test lts
 | 
			
		||||
  - npmci node install lts
 | 
			
		||||
  - npmci npm install
 | 
			
		||||
  - npmci npm test
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
    - docker
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
    
 | 
			
		||||
testSTABLE:
 | 
			
		||||
  stage: test
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci test stable
 | 
			
		||||
  - npmci node install stable
 | 
			
		||||
  - npmci npm install
 | 
			
		||||
  - npmci npm test
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
    - docker
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
release:
 | 
			
		||||
  stage: release
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci publish
 | 
			
		||||
  - npmci node install stable
 | 
			
		||||
  - npmci npm publish
 | 
			
		||||
  only:
 | 
			
		||||
    - tags
 | 
			
		||||
  - tags
 | 
			
		||||
  tags:
 | 
			
		||||
    - docker
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
# ====================
 | 
			
		||||
# metadata stage
 | 
			
		||||
# ====================
 | 
			
		||||
codequality:
 | 
			
		||||
  stage: metadata
 | 
			
		||||
  image: docker:stable
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  services:
 | 
			
		||||
    - docker:stable-dind
 | 
			
		||||
  script:
 | 
			
		||||
    - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
 | 
			
		||||
    - docker run
 | 
			
		||||
        --env SOURCE_CODE="$PWD"
 | 
			
		||||
        --volume "$PWD":/code
 | 
			
		||||
        --volume /var/run/docker.sock:/var/run/docker.sock
 | 
			
		||||
        "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
 | 
			
		||||
  artifacts:
 | 
			
		||||
    paths: [codeclimate.json]
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - priv
 | 
			
		||||
 | 
			
		||||
trigger:
 | 
			
		||||
  stage: trigger
 | 
			
		||||
  stage: metadata
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci trigger
 | 
			
		||||
  - npmci trigger
 | 
			
		||||
  only:
 | 
			
		||||
    - tags
 | 
			
		||||
  - tags
 | 
			
		||||
  tags:
 | 
			
		||||
    - docker
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
pages:
 | 
			
		||||
  image: hosttoday/ht-docker-node:npmci
 | 
			
		||||
  stage: pages
 | 
			
		||||
  stage: metadata
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci command yarn global add npmpage
 | 
			
		||||
    - npmci command npmpage --publish gitlab
 | 
			
		||||
    - npmci command npm install -g typedoc typescript
 | 
			
		||||
    - npmci npm install
 | 
			
		||||
    - npmci command typedoc --module "commonjs" --target "ES2016" --out public/ ts/
 | 
			
		||||
  tags:
 | 
			
		||||
    - docker
 | 
			
		||||
    - notpriv
 | 
			
		||||
  only:
 | 
			
		||||
    - tags
 | 
			
		||||
  artifacts:
 | 
			
		||||
    expire_in: 1 week
 | 
			
		||||
    paths:
 | 
			
		||||
    - public
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
 | 
			
		||||
windowsCompatibility:
 | 
			
		||||
  image: stefanscherer/node-windows:10-build-tools
 | 
			
		||||
  stage: metadata
 | 
			
		||||
  script:
 | 
			
		||||
  - npm install & npm test
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
  - windows
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README.md
									
									
									
									
									
								
							@@ -1,13 +1,16 @@
 | 
			
		||||
# smarthbs
 | 
			
		||||
 | 
			
		||||
handlebars with better fs support
 | 
			
		||||
 | 
			
		||||
## Availabililty
 | 
			
		||||
 | 
			
		||||
[](https://www.npmjs.com/package/smarthbs)
 | 
			
		||||
[](https://GitLab.com/pushrocks/smarthbs)
 | 
			
		||||
[](https://github.com/pushrocks/smarthbs)
 | 
			
		||||
[](https://pushrocks.gitlab.io/smarthbs/)
 | 
			
		||||
 | 
			
		||||
## Status for master
 | 
			
		||||
 | 
			
		||||
[](https://GitLab.com/pushrocks/smarthbs/commits/master)
 | 
			
		||||
[](https://GitLab.com/pushrocks/smarthbs/commits/master)
 | 
			
		||||
[](https://www.npmjs.com/package/smarthbs)
 | 
			
		||||
@@ -19,25 +22,26 @@ handlebars with better fs support
 | 
			
		||||
[](http://standardjs.com/)
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
Use TypeScript for best in class instellisense.
 | 
			
		||||
 | 
			
		||||
For further information read the linked docs at the top of this README.
 | 
			
		||||
 | 
			
		||||
> Note: Why did we decide against a class based architecture?  
 | 
			
		||||
Easy: handlebars.js is already pretty determined how things are handled internally, namely a global partial template registry
 | 
			
		||||
It doesn't make sense to then introduce a scoped partial template approach.
 | 
			
		||||
> Easy: handlebars.js is already pretty determined how things are handled internally, namely a global partial template registry
 | 
			
		||||
> It doesn't make sense to then introduce a scoped partial template approach.
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
import * as smarthbs from 'smarthbs'
 | 
			
		||||
import * as smarthbs from 'smarthbs';
 | 
			
		||||
 | 
			
		||||
// read all .hbs files in a directory and any child directories and use relative path as partial string identifier
 | 
			
		||||
smarthbs.registerPartialDir(testPartialDir)
 | 
			
		||||
smarthbs.registerPartialDir(testPartialDir);
 | 
			
		||||
 | 
			
		||||
// read all .hbs files in a particular directory and level, output them to a destination and specify a .json file to read any referenced data
 | 
			
		||||
smarthbs.compileDirectory(testHbsDir, testResultDir, 'data.json')
 | 
			
		||||
smarthbs.compileDirectory(testHbsDir, testResultDir, 'data.json');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
 | 
			
		||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
 | 
			
		||||
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
 | 
			
		||||
 | 
			
		||||
[](https://push.rocks)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,9 +0,0 @@
 | 
			
		||||
/// <reference types="handlebars" />
 | 
			
		||||
export declare type TTemplateStringType = 'filePath' | 'code';
 | 
			
		||||
export declare let handlebars: typeof Handlebars;
 | 
			
		||||
export * from './smarthbs.compile';
 | 
			
		||||
import './smarthbs.helpers';
 | 
			
		||||
export * from './smarthbs.partials';
 | 
			
		||||
export * from './smarthbs.template';
 | 
			
		||||
export * from './smarthbs.variables';
 | 
			
		||||
export * from './smarthbs.postprocess';
 | 
			
		||||
							
								
								
									
										14
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							@@ -1,14 +0,0 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
function __export(m) {
 | 
			
		||||
    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
 | 
			
		||||
}
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const plugins = require("./smarthbs.plugins");
 | 
			
		||||
exports.handlebars = plugins.handlebars;
 | 
			
		||||
__export(require("./smarthbs.compile"));
 | 
			
		||||
require("./smarthbs.helpers");
 | 
			
		||||
__export(require("./smarthbs.partials"));
 | 
			
		||||
__export(require("./smarthbs.template"));
 | 
			
		||||
__export(require("./smarthbs.variables"));
 | 
			
		||||
__export(require("./smarthbs.postprocess"));
 | 
			
		||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUE2QztBQUdsQyxRQUFBLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFBO0FBQzFDLHdDQUFrQztBQUNsQyw4QkFBMkI7QUFDM0IseUNBQW1DO0FBQ25DLHlDQUFtQztBQUNuQywwQ0FBb0M7QUFDcEMsNENBQXNDIn0=
 | 
			
		||||
							
								
								
									
										4
									
								
								dist/smarthbs.compile.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/smarthbs.compile.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +0,0 @@
 | 
			
		||||
/**
 | 
			
		||||
 * compiles a directory and outputs it
 | 
			
		||||
 */
 | 
			
		||||
export declare let compileDirectory: (originDirPathArg: string, destinationDirPathArg: string, dataFileNameArg: string) => Promise<void>;
 | 
			
		||||
							
								
								
									
										28
									
								
								dist/smarthbs.compile.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								dist/smarthbs.compile.js
									
									
									
									
										vendored
									
									
								
							@@ -1,28 +0,0 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
			
		||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
			
		||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
 | 
			
		||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const plugins = require("./smarthbs.plugins");
 | 
			
		||||
/**
 | 
			
		||||
 * compiles a directory and outputs it
 | 
			
		||||
 */
 | 
			
		||||
exports.compileDirectory = (originDirPathArg, destinationDirPathArg, dataFileNameArg) => __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
    let hbsFilePathArray = plugins.smartfile.fs.listFilesSync(originDirPathArg, /.hbs/);
 | 
			
		||||
    let data = plugins.smartfile.fs.toObjectSync(plugins.path.join(originDirPathArg, dataFileNameArg));
 | 
			
		||||
    for (let hbsFilePath of hbsFilePathArray) {
 | 
			
		||||
        let parsedPath = plugins.path.parse(hbsFilePath);
 | 
			
		||||
        let hbsFileString = plugins.smartfile.fs.toStringSync(plugins.path.join(originDirPathArg, hbsFilePath));
 | 
			
		||||
        let template = plugins.handlebars.compile(hbsFileString);
 | 
			
		||||
        let output = template(data);
 | 
			
		||||
        console.log('hi ' + output + ' hi');
 | 
			
		||||
        yield plugins.smartfile.fs.ensureDir(destinationDirPathArg);
 | 
			
		||||
        plugins.smartfile.memory.toFsSync(output, plugins.path.join(destinationDirPathArg, parsedPath.name + '.html'));
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMuY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0aGJzLmNvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLDhDQUE2QztBQUU3Qzs7R0FFRztBQUNRLFFBQUEsZ0JBQWdCLEdBQUcsQ0FDNUIsZ0JBQXdCLEVBQ3hCLHFCQUE2QixFQUM3QixlQUF1QjtJQUV2QixJQUFJLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNuRixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQTtJQUNsRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDaEQsSUFBSSxhQUFhLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDdkcsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDeEQsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQTtRQUNuQyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBQzNELE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsVUFBVSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ2hILENBQUM7QUFDSCxDQUFDLENBQUEsQ0FBQSJ9
 | 
			
		||||
							
								
								
									
										0
									
								
								dist/smarthbs.helpers.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										0
									
								
								dist/smarthbs.helpers.d.ts
									
									
									
									
										vendored
									
									
								
							
							
								
								
									
										32
									
								
								dist/smarthbs.helpers.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								dist/smarthbs.helpers.js
									
									
									
									
										vendored
									
									
								
							@@ -1,32 +0,0 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const plugins = require("./smarthbs.plugins");
 | 
			
		||||
/**
 | 
			
		||||
 * Helper:
 | 
			
		||||
 * Allows you to analyze a context
 | 
			
		||||
 */
 | 
			
		||||
plugins.handlebars.registerHelper('__analyze', (analyzeContext) => {
 | 
			
		||||
    if (typeof analyzeContext === 'string') {
 | 
			
		||||
        if (plugins.handlebars.partials[analyzeContext]) {
 | 
			
		||||
            plugins.beautylog.log(`The analyzed partial ${analyzeContext} looks like this`);
 | 
			
		||||
            console.log(plugins.handlebars.partials[analyzeContext]);
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            plugins.beautylog.error(`The Partial ${analyzeContext} cannot be found`);
 | 
			
		||||
        }
 | 
			
		||||
        return 'analyzed';
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
/**
 | 
			
		||||
 * Helper:
 | 
			
		||||
 * logs all registered partials to console
 | 
			
		||||
 */
 | 
			
		||||
plugins.handlebars.registerHelper('__allPartialsLog', (analyzeContext) => {
 | 
			
		||||
    console.log(plugins.handlebars.partials);
 | 
			
		||||
    return 'analyzed';
 | 
			
		||||
});
 | 
			
		||||
plugins.handlebars.registerHelper('__compile', (evaluationString, evaluationContext) => {
 | 
			
		||||
    let template = plugins.handlebars.compile(evaluationString);
 | 
			
		||||
    return template(evaluationContext);
 | 
			
		||||
});
 | 
			
		||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0aGJzLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4Q0FBNkM7QUFFN0M7OztHQUdHO0FBQ0gsT0FBTyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsY0FBYztJQUM1RCxFQUFFLENBQUMsQ0FBQyxPQUFPLGNBQWMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsY0FBYyxrQkFBa0IsQ0FBQyxDQUFBO1lBQy9FLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtRQUMxRCxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLGNBQWMsa0JBQWtCLENBQUMsQ0FBQTtRQUMxRSxDQUFDO1FBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUE7QUFFRjs7O0dBR0c7QUFDSCxPQUFPLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLGNBQWM7SUFDbkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3hDLE1BQU0sQ0FBQyxVQUFVLENBQUE7QUFDbkIsQ0FBQyxDQUFDLENBQUE7QUFFRixPQUFPLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUI7SUFDakYsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUMzRCxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUE7QUFDcEMsQ0FBQyxDQUFDLENBQUEifQ==
 | 
			
		||||
							
								
								
									
										4
									
								
								dist/smarthbs.partials.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/smarthbs.partials.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +0,0 @@
 | 
			
		||||
/**
 | 
			
		||||
 * registers a directory of partials to make them available within handlebars compilation
 | 
			
		||||
 */
 | 
			
		||||
export declare let registerPartialDir: (dirPathArg: string) => Promise<any>;
 | 
			
		||||
							
								
								
									
										26
									
								
								dist/smarthbs.partials.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								dist/smarthbs.partials.js
									
									
									
									
										vendored
									
									
								
							@@ -1,26 +0,0 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const plugins = require("./smarthbs.plugins");
 | 
			
		||||
/**
 | 
			
		||||
 * registers a directory of partials to make them available within handlebars compilation
 | 
			
		||||
 */
 | 
			
		||||
exports.registerPartialDir = (dirPathArg) => {
 | 
			
		||||
    let done = plugins.smartq.defer();
 | 
			
		||||
    plugins.smartfile.fs.listFileTree(dirPathArg, '**/*.hbs').then(hbsFileArrayArg => {
 | 
			
		||||
        for (let hbsFilePath of hbsFileArrayArg) {
 | 
			
		||||
            let parsedPath = plugins.path.parse(hbsFilePath);
 | 
			
		||||
            let hbsFileString = plugins.smartfile.fs.toStringSync(plugins.path.join(dirPathArg, hbsFilePath));
 | 
			
		||||
            if (parsedPath.dir === '/') {
 | 
			
		||||
                parsedPath.dir = '';
 | 
			
		||||
            }
 | 
			
		||||
            if (parsedPath.dir !== '') {
 | 
			
		||||
                parsedPath.dir = parsedPath.dir + '/';
 | 
			
		||||
            }
 | 
			
		||||
            let partialName = `partials/${parsedPath.dir}${parsedPath.name}`;
 | 
			
		||||
            plugins.handlebars.registerPartial(partialName, hbsFileString);
 | 
			
		||||
            done.resolve();
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
    return done.promise;
 | 
			
		||||
};
 | 
			
		||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMucGFydGlhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGhicy5wYXJ0aWFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDhDQUE2QztBQUU3Qzs7R0FFRztBQUNRLFFBQUEsa0JBQWtCLEdBQUcsQ0FBQyxVQUFrQjtJQUNqRCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2pDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWU7UUFDNUUsR0FBRyxDQUFDLENBQUMsSUFBSSxXQUFXLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNoRCxJQUFJLGFBQWEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUE7WUFDakcsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixVQUFVLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQTtZQUNyQixDQUFDO1lBQ0QsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixVQUFVLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO1lBQ3ZDLENBQUM7WUFDRCxJQUFJLFdBQVcsR0FBRyxZQUFZLFVBQVUsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ2hFLE9BQU8sQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQTtZQUM5RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDaEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDckIsQ0FBQyxDQUFBIn0=
 | 
			
		||||
							
								
								
									
										8
									
								
								dist/smarthbs.plugins.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								dist/smarthbs.plugins.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,8 +0,0 @@
 | 
			
		||||
import 'typings-global';
 | 
			
		||||
import * as beautylog from 'beautylog';
 | 
			
		||||
import * as handlebars from 'handlebars';
 | 
			
		||||
import * as lodash from 'lodash';
 | 
			
		||||
import * as path from 'path';
 | 
			
		||||
import * as smartfile from 'smartfile';
 | 
			
		||||
import * as smartq from 'smartq';
 | 
			
		||||
export { beautylog, handlebars, lodash, path, smartfile, smartq };
 | 
			
		||||
							
								
								
									
										16
									
								
								dist/smarthbs.plugins.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								dist/smarthbs.plugins.js
									
									
									
									
										vendored
									
									
								
							@@ -1,16 +0,0 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
require("typings-global");
 | 
			
		||||
const beautylog = require("beautylog");
 | 
			
		||||
exports.beautylog = beautylog;
 | 
			
		||||
const handlebars = require("handlebars");
 | 
			
		||||
exports.handlebars = handlebars;
 | 
			
		||||
const lodash = require("lodash");
 | 
			
		||||
exports.lodash = lodash;
 | 
			
		||||
const path = require("path");
 | 
			
		||||
exports.path = path;
 | 
			
		||||
const smartfile = require("smartfile");
 | 
			
		||||
exports.smartfile = smartfile;
 | 
			
		||||
const smartq = require("smartq");
 | 
			
		||||
exports.smartq = smartq;
 | 
			
		||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0aGJzLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBdUI7QUFDdkIsdUNBQXNDO0FBUXBDLDhCQUFTO0FBUFgseUNBQXdDO0FBUXRDLGdDQUFVO0FBUFosaUNBQWdDO0FBUTlCLHdCQUFNO0FBUFIsNkJBQTRCO0FBUTFCLG9CQUFJO0FBUE4sdUNBQXNDO0FBUXBDLDhCQUFTO0FBUFgsaUNBQWdDO0FBUTlCLHdCQUFNIn0=
 | 
			
		||||
							
								
								
									
										5
									
								
								dist/smarthbs.postprocess.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								dist/smarthbs.postprocess.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +0,0 @@
 | 
			
		||||
/**
 | 
			
		||||
 * allows you to keep handlebars in place across multiple iterations
 | 
			
		||||
 * helpful when handlebars syntax is used by more than one tool in a build chain
 | 
			
		||||
 */
 | 
			
		||||
export declare let postprocess: (stringArg: string) => Promise<string>;
 | 
			
		||||
							
								
								
									
										23
									
								
								dist/smarthbs.postprocess.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								dist/smarthbs.postprocess.js
									
									
									
									
										vendored
									
									
								
							@@ -1,23 +0,0 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
			
		||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
			
		||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
 | 
			
		||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
let safeSyntaxBeginRegex = /{-{/g;
 | 
			
		||||
let safeSyntaxEndRegex = /}-}/g;
 | 
			
		||||
/**
 | 
			
		||||
 * allows you to keep handlebars in place across multiple iterations
 | 
			
		||||
 * helpful when handlebars syntax is used by more than one tool in a build chain
 | 
			
		||||
 */
 | 
			
		||||
exports.postprocess = (stringArg) => __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
    let processedString = stringArg;
 | 
			
		||||
    processedString = processedString.replace(safeSyntaxBeginRegex, '{{');
 | 
			
		||||
    processedString = processedString.replace(safeSyntaxEndRegex, '}}');
 | 
			
		||||
    return processedString;
 | 
			
		||||
});
 | 
			
		||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMucG9zdHByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGhicy5wb3N0cHJvY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBSSxvQkFBb0IsR0FBRyxNQUFNLENBQUE7QUFDakMsSUFBSSxrQkFBa0IsR0FBRyxNQUFNLENBQUE7QUFFL0I7OztHQUdHO0FBQ1EsUUFBQSxXQUFXLEdBQUcsQ0FBTyxTQUFpQjtJQUMvQyxJQUFJLGVBQWUsR0FBRyxTQUFTLENBQUE7SUFDL0IsZUFBZSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDckUsZUFBZSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDbkUsTUFBTSxDQUFDLGVBQWUsQ0FBQTtBQUN4QixDQUFDLENBQUEsQ0FBQSJ9
 | 
			
		||||
							
								
								
									
										9
									
								
								dist/smarthbs.template.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								dist/smarthbs.template.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,9 +0,0 @@
 | 
			
		||||
/// <reference types="handlebars" />
 | 
			
		||||
/**
 | 
			
		||||
 * get a template for a file on disk
 | 
			
		||||
 */
 | 
			
		||||
export declare let getTemplateForFile: (filePathArg: string) => Promise<HandlebarsTemplateDelegate>;
 | 
			
		||||
/**
 | 
			
		||||
 * get a template for string
 | 
			
		||||
 */
 | 
			
		||||
export declare let getTemplateForString: (fileStringArg: string) => Promise<HandlebarsTemplateDelegate>;
 | 
			
		||||
							
								
								
									
										25
									
								
								dist/smarthbs.template.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								dist/smarthbs.template.js
									
									
									
									
										vendored
									
									
								
							@@ -1,25 +0,0 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
			
		||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
			
		||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
 | 
			
		||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const plugins = require("./smarthbs.plugins");
 | 
			
		||||
/**
 | 
			
		||||
 * get a template for a file on disk
 | 
			
		||||
 */
 | 
			
		||||
exports.getTemplateForFile = (filePathArg) => __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
    let filePathAbsolute = plugins.path.resolve(filePathArg);
 | 
			
		||||
    return plugins.handlebars.compile(plugins.smartfile.fs.toStringSync(filePathAbsolute));
 | 
			
		||||
});
 | 
			
		||||
/**
 | 
			
		||||
 * get a template for string
 | 
			
		||||
 */
 | 
			
		||||
exports.getTemplateForString = (fileStringArg) => __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
    return plugins.handlebars.compile(fileStringArg);
 | 
			
		||||
});
 | 
			
		||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMudGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGhicy50ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsOENBQTZDO0FBRTdDOztHQUVHO0FBQ1EsUUFBQSxrQkFBa0IsR0FBRyxDQUFPLFdBQW1CO0lBQ3hELElBQUksZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDeEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUE7QUFDeEYsQ0FBQyxDQUFBLENBQUE7QUFFRDs7R0FFRztBQUNRLFFBQUEsb0JBQW9CLEdBQUcsQ0FBTyxhQUFxQjtJQUM1RCxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDbEQsQ0FBQyxDQUFBLENBQUEifQ==
 | 
			
		||||
							
								
								
									
										12
									
								
								dist/smarthbs.variables.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								dist/smarthbs.variables.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,12 +0,0 @@
 | 
			
		||||
/**
 | 
			
		||||
 * finds all variables in a handlebars template
 | 
			
		||||
 * @param hbsStringArg
 | 
			
		||||
 */
 | 
			
		||||
export declare let findVarsInHbsString: (hbsStringArg: string) => Promise<string[]>;
 | 
			
		||||
/**
 | 
			
		||||
 * checks if supplied variables satisfy an handlebars template
 | 
			
		||||
 * @param hbsStringArg
 | 
			
		||||
 * @param varObjectArg
 | 
			
		||||
 * @return string array with missing variable names
 | 
			
		||||
 */
 | 
			
		||||
export declare let checkVarsSatisfaction: (hbsStringArg: string, varObjectArg: any) => Promise<string[]>;
 | 
			
		||||
							
								
								
									
										75
									
								
								dist/smarthbs.variables.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										75
									
								
								dist/smarthbs.variables.js
									
									
									
									
										vendored
									
									
								
							@@ -1,75 +0,0 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
// This file contains code that makes it easy to search handlebar templates for variables.
 | 
			
		||||
// Why? To get a clue if you are missing some.
 | 
			
		||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
			
		||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
			
		||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
 | 
			
		||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const plugins = require("./smarthbs.plugins");
 | 
			
		||||
// the curly regex objects
 | 
			
		||||
let tripleCurlyRegex = /{{{\s*[\w\.]+\s*}}}/g;
 | 
			
		||||
let doubleCurlyRegex = /{{\s*[\w\.]+\s*}}/g;
 | 
			
		||||
let nameInCurlsRegex = /[\w\.]+/;
 | 
			
		||||
/**
 | 
			
		||||
 * finds all variables in a handlebars template
 | 
			
		||||
 * @param hbsStringArg
 | 
			
		||||
 */
 | 
			
		||||
exports.findVarsInHbsString = (hbsStringArg) => __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
    let hbsString = hbsStringArg; // make sure we have a new string object that we may destroy
 | 
			
		||||
    let varNameArray = [];
 | 
			
		||||
    let tripleCurlyMatches = hbsString.match(tripleCurlyRegex);
 | 
			
		||||
    if (tripleCurlyMatches) {
 | 
			
		||||
        hbsString = hbsString.replace(tripleCurlyRegex, '[[[replaced]]]');
 | 
			
		||||
        varNameArray = plugins.lodash.concat(varNameArray, tripleCurlyMatches);
 | 
			
		||||
    }
 | 
			
		||||
    let doubleCurlyMatches = hbsString.match(doubleCurlyRegex);
 | 
			
		||||
    if (doubleCurlyMatches) {
 | 
			
		||||
        varNameArray = plugins.lodash.concat(varNameArray, doubleCurlyMatches);
 | 
			
		||||
    }
 | 
			
		||||
    // make sure we are clean from curly brackets
 | 
			
		||||
    varNameArray = varNameArray.map((x) => {
 | 
			
		||||
        return x.match(nameInCurlsRegex)[0];
 | 
			
		||||
    });
 | 
			
		||||
    // make sure are uniq
 | 
			
		||||
    varNameArray = plugins.lodash.uniq(varNameArray);
 | 
			
		||||
    return varNameArray;
 | 
			
		||||
});
 | 
			
		||||
/**
 | 
			
		||||
 * checks if supplied variables satisfy an handlebars template
 | 
			
		||||
 * @param hbsStringArg
 | 
			
		||||
 * @param varObjectArg
 | 
			
		||||
 * @return string array with missing variable names
 | 
			
		||||
 */
 | 
			
		||||
exports.checkVarsSatisfaction = (hbsStringArg, varObjectArg) => __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
    // required vars as combined deep string with . notation
 | 
			
		||||
    let requiredVarStrings = yield exports.findVarsInHbsString(hbsStringArg);
 | 
			
		||||
    // comparison objects
 | 
			
		||||
    let suppliedVarsObject = varObjectArg;
 | 
			
		||||
    let missingVarsObject = [];
 | 
			
		||||
    // building the 
 | 
			
		||||
    for (let stringVar of requiredVarStrings) {
 | 
			
		||||
        let splittedVars = stringVar.split('.');
 | 
			
		||||
        let requiredPointer = suppliedVarsObject;
 | 
			
		||||
        for (let i = 0; i < splittedVars.length; i++) {
 | 
			
		||||
            let splitVar = splittedVars[i];
 | 
			
		||||
            let varAvailable = (requiredPointer[splitVar] !== undefined);
 | 
			
		||||
            if (varAvailable && splittedVars.length === (i + 1)) {
 | 
			
		||||
                // ok
 | 
			
		||||
            }
 | 
			
		||||
            else if (varAvailable) {
 | 
			
		||||
                requiredPointer = requiredPointer[splitVar];
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                missingVarsObject.push(stringVar);
 | 
			
		||||
                i = splittedVars.length;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return missingVarsObject;
 | 
			
		||||
});
 | 
			
		||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMudmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRoYnMudmFyaWFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwRkFBMEY7QUFDMUYsOENBQThDOzs7Ozs7Ozs7O0FBRTlDLDhDQUE2QztBQUU3QywwQkFBMEI7QUFDMUIsSUFBSSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQTtBQUM3QyxJQUFJLGdCQUFnQixHQUFHLG9CQUFvQixDQUFBO0FBQzNDLElBQUksZ0JBQWdCLEdBQUcsU0FBUyxDQUFBO0FBRWhDOzs7R0FHRztBQUNRLFFBQUEsbUJBQW1CLEdBQUcsQ0FBTyxZQUFvQjtJQUMxRCxJQUFJLFNBQVMsR0FBRyxZQUFZLENBQUEsQ0FBQyw0REFBNEQ7SUFDekYsSUFBSSxZQUFZLEdBQWEsRUFBRSxDQUFBO0lBQy9CLElBQUksa0JBQWtCLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzFELEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztRQUN2QixTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ2pFLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBQ0QsSUFBSSxrQkFBa0IsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDMUQsRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLFlBQVksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFFLENBQUMsQ0FBRSxDQUFBO0lBQ3ZDLENBQUMsQ0FBQyxDQUFBO0lBRUYscUJBQXFCO0lBQ3JCLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNoRCxNQUFNLENBQUMsWUFBWSxDQUFBO0FBQ3JCLENBQUMsQ0FBQSxDQUFBO0FBRUQ7Ozs7O0dBS0c7QUFDUSxRQUFBLHFCQUFxQixHQUFHLENBQU8sWUFBb0IsRUFBRSxZQUFpQjtJQUMvRSx3REFBd0Q7SUFDeEQsSUFBSSxrQkFBa0IsR0FBRyxNQUFNLDJCQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRWhFLHFCQUFxQjtJQUNyQixJQUFJLGtCQUFrQixHQUFHLFlBQVksQ0FBQTtJQUNyQyxJQUFJLGlCQUFpQixHQUFhLEVBQUUsQ0FBQTtJQUVwQyxnQkFBZ0I7SUFDaEIsR0FBRyxDQUFDLENBQUMsSUFBSSxTQUFTLElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDdkMsSUFBSSxlQUFlLEdBQUcsa0JBQWtCLENBQUE7UUFDeEMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0MsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFFLENBQUMsQ0FBRSxDQUFBO1lBQ2hDLElBQUksWUFBWSxHQUFHLENBQUMsZUFBZSxDQUFFLFFBQVEsQ0FBRSxLQUFLLFNBQVMsQ0FBQyxDQUFBO1lBQzlELEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEQsS0FBSztZQUNQLENBQUM7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDeEIsZUFBZSxHQUFHLGVBQWUsQ0FBRSxRQUFRLENBQUUsQ0FBQTtZQUMvQyxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04saUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO2dCQUNqQyxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQTtZQUN6QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLENBQUMsaUJBQWlCLENBQUE7QUFDMUIsQ0FBQyxDQUFBLENBQUEifQ==
 | 
			
		||||
@@ -1,13 +1,16 @@
 | 
			
		||||
# smarthbs
 | 
			
		||||
 | 
			
		||||
handlebars with better fs support
 | 
			
		||||
 | 
			
		||||
## Availabililty
 | 
			
		||||
 | 
			
		||||
[](https://www.npmjs.com/package/smarthbs)
 | 
			
		||||
[](https://GitLab.com/pushrocks/smarthbs)
 | 
			
		||||
[](https://github.com/pushrocks/smarthbs)
 | 
			
		||||
[](https://pushrocks.gitlab.io/smarthbs/)
 | 
			
		||||
 | 
			
		||||
## Status for master
 | 
			
		||||
 | 
			
		||||
[](https://GitLab.com/pushrocks/smarthbs/commits/master)
 | 
			
		||||
[](https://GitLab.com/pushrocks/smarthbs/commits/master)
 | 
			
		||||
[](https://www.npmjs.com/package/smarthbs)
 | 
			
		||||
@@ -19,25 +22,26 @@ handlebars with better fs support
 | 
			
		||||
[](http://standardjs.com/)
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
Use TypeScript for best in class instellisense.
 | 
			
		||||
 | 
			
		||||
For further information read the linked docs at the top of this README.
 | 
			
		||||
 | 
			
		||||
> Note: Why did we decide against a class based architecture?  
 | 
			
		||||
Easy: handlebars.js is already pretty determined how things are handled internally, namely a global partial template registry
 | 
			
		||||
It doesn't make sense to then introduce a scoped partial template approach.
 | 
			
		||||
> Easy: handlebars.js is already pretty determined how things are handled internally, namely a global partial template registry
 | 
			
		||||
> It doesn't make sense to then introduce a scoped partial template approach.
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
import * as smarthbs from 'smarthbs'
 | 
			
		||||
import * as smarthbs from 'smarthbs';
 | 
			
		||||
 | 
			
		||||
// read all .hbs files in a directory and any child directories and use relative path as partial string identifier
 | 
			
		||||
smarthbs.registerPartialDir(testPartialDir)
 | 
			
		||||
smarthbs.registerPartialDir(testPartialDir);
 | 
			
		||||
 | 
			
		||||
// read all .hbs files in a particular directory and level, output them to a destination and specify a .json file to read any referenced data
 | 
			
		||||
smarthbs.compileDirectory(testHbsDir, testResultDir, 'data.json')
 | 
			
		||||
smarthbs.compileDirectory(testHbsDir, testResultDir, 'data.json');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
 | 
			
		||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
 | 
			
		||||
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
 | 
			
		||||
 | 
			
		||||
[](https://push.rocks)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "npmci": {
 | 
			
		||||
        "globalNpmTools": [
 | 
			
		||||
            "npmts"
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
  "npmci": {
 | 
			
		||||
    "npmGlobalTools": [],
 | 
			
		||||
    "npmAccessLevel": "public"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1009
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1009
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										26
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								package.json
									
									
									
									
									
								
							@@ -1,11 +1,13 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "smarthbs",
 | 
			
		||||
  "name": "@pushrocks/smarthbs",
 | 
			
		||||
  "version": "1.0.16",
 | 
			
		||||
  "private": false,
 | 
			
		||||
  "description": "handlebars with better fs support",
 | 
			
		||||
  "main": "dist/index.js",
 | 
			
		||||
  "typings": "dist/index.d.ts",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "test": "(npmts)"
 | 
			
		||||
    "test": "(tstest test/)",
 | 
			
		||||
    "build": "(tsbuild)"
 | 
			
		||||
  },
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
@@ -21,16 +23,18 @@
 | 
			
		||||
  },
 | 
			
		||||
  "homepage": "https://gitlab.com/pkunz/smarthbs#README",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@types/handlebars": "^4.0.32",
 | 
			
		||||
    "@types/lodash": "^4.14.64",
 | 
			
		||||
    "beautylog": "^6.1.10",
 | 
			
		||||
    "handlebars": "^4.0.8",
 | 
			
		||||
    "lodash": "^4.17.4",
 | 
			
		||||
    "smartfile": "^4.2.11",
 | 
			
		||||
    "smartq": "^1.1.1",
 | 
			
		||||
    "typings-global": "^1.0.16"
 | 
			
		||||
    "@pushrocks/smartfile": "^6.0.8",
 | 
			
		||||
    "@pushrocks/smartpromise": "^2.0.5",
 | 
			
		||||
    "@types/handlebars": "^4.0.39",
 | 
			
		||||
    "@types/lodash": "^4.14.116",
 | 
			
		||||
    "handlebars": "^4.0.11",
 | 
			
		||||
    "lodash": "^4.17.10"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "tapbundle": "^1.0.12"
 | 
			
		||||
    "@gitzone/tsbuild": "^2.0.22",
 | 
			
		||||
    "@gitzone/tsrun": "^1.1.12",
 | 
			
		||||
    "@gitzone/tstest": "^1.0.15",
 | 
			
		||||
    "@pushrocks/tapbundle": "^3.0.5",
 | 
			
		||||
    "@types/node": "^10.9.2"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										43
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								test/test.ts
									
									
									
									
									
								
							@@ -1,28 +1,29 @@
 | 
			
		||||
import { expect, tap } from 'tapbundle'
 | 
			
		||||
import * as smarthbs from '../dist/index'
 | 
			
		||||
import * as path from 'path'
 | 
			
		||||
import { expect, tap } from '@pushrocks/tapbundle';
 | 
			
		||||
import * as smarthbs from '../ts/index';
 | 
			
		||||
import * as path from 'path';
 | 
			
		||||
 | 
			
		||||
let testHbsDir = path.join(__dirname, 'hbs_testfiles')
 | 
			
		||||
let testPartialDir = path.join(testHbsDir, 'partials')
 | 
			
		||||
let testResultDir = path.join(__dirname, 'testresult')
 | 
			
		||||
let testHbsDir = path.join(__dirname, 'hbs_testfiles');
 | 
			
		||||
let testPartialDir = path.join(testHbsDir, 'partials');
 | 
			
		||||
let testResultDir = path.join(__dirname, 'testresult');
 | 
			
		||||
 | 
			
		||||
tap.test('smarthbs -> should create partials', async () => {
 | 
			
		||||
  await smarthbs.registerPartialDir(testPartialDir)
 | 
			
		||||
})
 | 
			
		||||
  await smarthbs.registerPartialDir(testPartialDir);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
tap.test('smarthbs -> should compile a directory', async () => {
 | 
			
		||||
  smarthbs.compileDirectory(testHbsDir, testResultDir, 'data.json')
 | 
			
		||||
})
 | 
			
		||||
  smarthbs.compileDirectory(testHbsDir, testResultDir, 'data.json');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
tap.test('', async () => {
 | 
			
		||||
  let templateString = '{{{firstVar}}} {{secondVar}}'
 | 
			
		||||
  let templateVars = await smarthbs.findVarsInHbsString(templateString)
 | 
			
		||||
  expect(templateVars).to.include('firstVar')
 | 
			
		||||
  expect(templateVars).to.include('secondVar')
 | 
			
		||||
})
 | 
			
		||||
  let templateString = '{{{firstVar}}} {{secondVar}}';
 | 
			
		||||
  let templateVars = await smarthbs.findVarsInHbsString(templateString);
 | 
			
		||||
  expect(templateVars).to.include('firstVar');
 | 
			
		||||
  expect(templateVars).to.include('secondVar');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
tap.test('', async () => {
 | 
			
		||||
  let templateString = '{{{firstVar}}} {{secondVar}} {{thirdVar}} {{fourthVar}} {{fourthVar.someKey}} {{fourthVar.otherKey.nextKey}}'
 | 
			
		||||
  let templateString =
 | 
			
		||||
    '{{{firstVar}}} {{secondVar}} {{thirdVar}} {{fourthVar}} {{fourthVar.someKey}} {{fourthVar.otherKey.nextKey}}';
 | 
			
		||||
  let missingVars = await smarthbs.checkVarsSatisfaction(templateString, {
 | 
			
		||||
    firstVar: 'hi',
 | 
			
		||||
    secondVar: 'hello',
 | 
			
		||||
@@ -31,9 +32,9 @@ tap.test('', async () => {
 | 
			
		||||
        nextKey: 'wow'
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
  expect(missingVars).to.contain('thirdVar', 'fourthVar.someKey')
 | 
			
		||||
  expect(missingVars).to.not.contain('secondVar', 'fourthVar.otherKey.nextKey')
 | 
			
		||||
})
 | 
			
		||||
  });
 | 
			
		||||
  expect(missingVars).to.contain('thirdVar', 'fourthVar.someKey');
 | 
			
		||||
  expect(missingVars).to.not.contain('secondVar', 'fourthVar.otherKey.nextKey');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
tap.start()
 | 
			
		||||
tap.start();
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								ts/index.ts
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								ts/index.ts
									
									
									
									
									
								
							@@ -1,10 +1,10 @@
 | 
			
		||||
import * as plugins from './smarthbs.plugins'
 | 
			
		||||
export type TTemplateStringType = 'filePath' | 'code'
 | 
			
		||||
import * as plugins from './smarthbs.plugins';
 | 
			
		||||
export type TTemplateStringType = 'filePath' | 'code';
 | 
			
		||||
 | 
			
		||||
export let handlebars = plugins.handlebars
 | 
			
		||||
export * from './smarthbs.compile'
 | 
			
		||||
import './smarthbs.helpers'
 | 
			
		||||
export * from './smarthbs.partials'
 | 
			
		||||
export * from './smarthbs.template'
 | 
			
		||||
export * from './smarthbs.variables'
 | 
			
		||||
export * from './smarthbs.postprocess'
 | 
			
		||||
export let handlebars = plugins.handlebars;
 | 
			
		||||
export * from './smarthbs.compile';
 | 
			
		||||
import './smarthbs.helpers';
 | 
			
		||||
export * from './smarthbs.partials';
 | 
			
		||||
export * from './smarthbs.template';
 | 
			
		||||
export * from './smarthbs.variables';
 | 
			
		||||
export * from './smarthbs.postprocess';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
import * as plugins from './smarthbs.plugins'
 | 
			
		||||
import * as plugins from './smarthbs.plugins';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * compiles a directory and outputs it
 | 
			
		||||
@@ -8,15 +8,22 @@ export let compileDirectory = async (
 | 
			
		||||
  destinationDirPathArg: string,
 | 
			
		||||
  dataFileNameArg: string
 | 
			
		||||
) => {
 | 
			
		||||
  let hbsFilePathArray = plugins.smartfile.fs.listFilesSync(originDirPathArg, /.hbs/)
 | 
			
		||||
  let data = plugins.smartfile.fs.toObjectSync(plugins.path.join(originDirPathArg, dataFileNameArg))
 | 
			
		||||
  let hbsFilePathArray = plugins.smartfile.fs.listFilesSync(originDirPathArg, /.hbs/);
 | 
			
		||||
  let data = plugins.smartfile.fs.toObjectSync(
 | 
			
		||||
    plugins.path.join(originDirPathArg, dataFileNameArg)
 | 
			
		||||
  );
 | 
			
		||||
  for (let hbsFilePath of hbsFilePathArray) {
 | 
			
		||||
    let parsedPath = plugins.path.parse(hbsFilePath)
 | 
			
		||||
    let hbsFileString = plugins.smartfile.fs.toStringSync(plugins.path.join(originDirPathArg, hbsFilePath))
 | 
			
		||||
    let template = plugins.handlebars.compile(hbsFileString)
 | 
			
		||||
    let output = template(data)
 | 
			
		||||
    console.log('hi ' + output + ' hi')
 | 
			
		||||
    await plugins.smartfile.fs.ensureDir(destinationDirPathArg)
 | 
			
		||||
    plugins.smartfile.memory.toFsSync(output, plugins.path.join(destinationDirPathArg, parsedPath.name + '.html'))
 | 
			
		||||
    let parsedPath = plugins.path.parse(hbsFilePath);
 | 
			
		||||
    let hbsFileString = plugins.smartfile.fs.toStringSync(
 | 
			
		||||
      plugins.path.join(originDirPathArg, hbsFilePath)
 | 
			
		||||
    );
 | 
			
		||||
    let template = plugins.handlebars.compile(hbsFileString);
 | 
			
		||||
    let output = template(data);
 | 
			
		||||
    console.log('hi ' + output + ' hi');
 | 
			
		||||
    await plugins.smartfile.fs.ensureDir(destinationDirPathArg);
 | 
			
		||||
    plugins.smartfile.memory.toFsSync(
 | 
			
		||||
      output,
 | 
			
		||||
      plugins.path.join(destinationDirPathArg, parsedPath.name + '.html')
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,32 +1,31 @@
 | 
			
		||||
import * as plugins from './smarthbs.plugins'
 | 
			
		||||
import * as plugins from './smarthbs.plugins';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Helper:
 | 
			
		||||
 * Allows you to analyze a context
 | 
			
		||||
 */
 | 
			
		||||
plugins.handlebars.registerHelper('__analyze', (analyzeContext) => {
 | 
			
		||||
plugins.handlebars.registerHelper('__analyze', analyzeContext => {
 | 
			
		||||
  if (typeof analyzeContext === 'string') {
 | 
			
		||||
    if (plugins.handlebars.partials[analyzeContext]) {
 | 
			
		||||
      plugins.beautylog.log(`The analyzed partial ${analyzeContext} looks like this`)
 | 
			
		||||
      console.log(plugins.handlebars.partials[analyzeContext])
 | 
			
		||||
      console.log(`The analyzed partial ${analyzeContext} looks like this`);
 | 
			
		||||
      console.log(plugins.handlebars.partials[analyzeContext]);
 | 
			
		||||
    } else {
 | 
			
		||||
      plugins.beautylog.error(`The Partial ${analyzeContext} cannot be found`)
 | 
			
		||||
      console.error(`The Partial ${analyzeContext} cannot be found`);
 | 
			
		||||
    }
 | 
			
		||||
    return 'analyzed'
 | 
			
		||||
    return 'analyzed';
 | 
			
		||||
  }
 | 
			
		||||
})
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Helper:
 | 
			
		||||
 * logs all registered partials to console
 | 
			
		||||
 */
 | 
			
		||||
plugins.handlebars.registerHelper('__allPartialsLog', (analyzeContext) => {
 | 
			
		||||
  console.log(plugins.handlebars.partials)
 | 
			
		||||
  return 'analyzed'
 | 
			
		||||
})
 | 
			
		||||
plugins.handlebars.registerHelper('__allPartialsLog', analyzeContext => {
 | 
			
		||||
  console.log(plugins.handlebars.partials);
 | 
			
		||||
  return 'analyzed';
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
plugins.handlebars.registerHelper('__compile', (evaluationString, evaluationContext) => {
 | 
			
		||||
  let template = plugins.handlebars.compile(evaluationString)
 | 
			
		||||
  return template(evaluationContext)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
  let template = plugins.handlebars.compile(evaluationString);
 | 
			
		||||
  return template(evaluationContext);
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -1,24 +1,26 @@
 | 
			
		||||
import * as plugins from './smarthbs.plugins'
 | 
			
		||||
import * as plugins from './smarthbs.plugins';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * registers a directory of partials to make them available within handlebars compilation
 | 
			
		||||
 */
 | 
			
		||||
export let registerPartialDir = (dirPathArg: string): Promise<any> => {
 | 
			
		||||
  let done = plugins.smartq.defer()
 | 
			
		||||
  let done = plugins.smartpromise.defer();
 | 
			
		||||
  plugins.smartfile.fs.listFileTree(dirPathArg, '**/*.hbs').then(hbsFileArrayArg => {
 | 
			
		||||
    for (let hbsFilePath of hbsFileArrayArg) {
 | 
			
		||||
      let parsedPath = plugins.path.parse(hbsFilePath)
 | 
			
		||||
      let hbsFileString = plugins.smartfile.fs.toStringSync(plugins.path.join(dirPathArg, hbsFilePath))
 | 
			
		||||
      let parsedPath = plugins.path.parse(hbsFilePath);
 | 
			
		||||
      let hbsFileString = plugins.smartfile.fs.toStringSync(
 | 
			
		||||
        plugins.path.join(dirPathArg, hbsFilePath)
 | 
			
		||||
      );
 | 
			
		||||
      if (parsedPath.dir === '/') {
 | 
			
		||||
        parsedPath.dir = ''
 | 
			
		||||
        parsedPath.dir = '';
 | 
			
		||||
      }
 | 
			
		||||
      if (parsedPath.dir !== '') {
 | 
			
		||||
        parsedPath.dir = parsedPath.dir + '/'
 | 
			
		||||
        parsedPath.dir = parsedPath.dir + '/';
 | 
			
		||||
      }
 | 
			
		||||
      let partialName = `partials/${parsedPath.dir}${parsedPath.name}`
 | 
			
		||||
      plugins.handlebars.registerPartial(partialName, hbsFileString)
 | 
			
		||||
      done.resolve()
 | 
			
		||||
      let partialName = `partials/${parsedPath.dir}${parsedPath.name}`;
 | 
			
		||||
      plugins.handlebars.registerPartial(partialName, hbsFileString);
 | 
			
		||||
      done.resolve();
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
  return done.promise
 | 
			
		||||
}
 | 
			
		||||
  });
 | 
			
		||||
  return done.promise;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,7 @@
 | 
			
		||||
import 'typings-global'
 | 
			
		||||
import * as beautylog from 'beautylog'
 | 
			
		||||
import * as handlebars from 'handlebars'
 | 
			
		||||
import * as lodash from 'lodash'
 | 
			
		||||
import * as path from 'path'
 | 
			
		||||
import * as smartfile from 'smartfile'
 | 
			
		||||
import * as smartq from 'smartq'
 | 
			
		||||
import * as handlebars from 'handlebars';
 | 
			
		||||
import * as lodash from 'lodash';
 | 
			
		||||
import * as path from 'path';
 | 
			
		||||
import * as smartfile from '@pushrocks/smartfile';
 | 
			
		||||
import * as smartpromise from '@pushrocks/smartpromise';
 | 
			
		||||
 | 
			
		||||
export {
 | 
			
		||||
  beautylog,
 | 
			
		||||
  handlebars,
 | 
			
		||||
  lodash,
 | 
			
		||||
  path,
 | 
			
		||||
  smartfile,
 | 
			
		||||
  smartq
 | 
			
		||||
}
 | 
			
		||||
export { handlebars, lodash, path, smartfile, smartpromise };
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,15 @@
 | 
			
		||||
import * as plugins from './smarthbs.plugins'
 | 
			
		||||
import * as plugins from './smarthbs.plugins';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
let safeSyntaxBeginRegex = /{-{/g
 | 
			
		||||
let safeSyntaxEndRegex = /}-}/g
 | 
			
		||||
let safeSyntaxBeginRegex = /{-{/g;
 | 
			
		||||
let safeSyntaxEndRegex = /}-}/g;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * allows you to keep handlebars in place across multiple iterations
 | 
			
		||||
 * helpful when handlebars syntax is used by more than one tool in a build chain
 | 
			
		||||
 */
 | 
			
		||||
export let postprocess = async (stringArg: string): Promise<string> => {
 | 
			
		||||
  let processedString = stringArg
 | 
			
		||||
  processedString = processedString.replace(safeSyntaxBeginRegex, '{{')
 | 
			
		||||
  processedString = processedString.replace(safeSyntaxEndRegex, '}}')
 | 
			
		||||
  return processedString
 | 
			
		||||
}
 | 
			
		||||
  let processedString = stringArg;
 | 
			
		||||
  processedString = processedString.replace(safeSyntaxBeginRegex, '{{');
 | 
			
		||||
  processedString = processedString.replace(safeSyntaxEndRegex, '}}');
 | 
			
		||||
  return processedString;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
import * as plugins from './smarthbs.plugins'
 | 
			
		||||
import * as plugins from './smarthbs.plugins';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * get a template for a file on disk
 | 
			
		||||
 */
 | 
			
		||||
export let getTemplateForFile = async (filePathArg: string) => {
 | 
			
		||||
  let filePathAbsolute = plugins.path.resolve(filePathArg)
 | 
			
		||||
  return plugins.handlebars.compile(plugins.smartfile.fs.toStringSync(filePathAbsolute))
 | 
			
		||||
}
 | 
			
		||||
  let filePathAbsolute = plugins.path.resolve(filePathArg);
 | 
			
		||||
  return plugins.handlebars.compile(plugins.smartfile.fs.toStringSync(filePathAbsolute));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * get a template for string
 | 
			
		||||
 */
 | 
			
		||||
export let getTemplateForString = async (fileStringArg: string) => {
 | 
			
		||||
  return plugins.handlebars.compile(fileStringArg)
 | 
			
		||||
}
 | 
			
		||||
  return plugins.handlebars.compile(fileStringArg);
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,39 +1,39 @@
 | 
			
		||||
// This file contains code that makes it easy to search handlebar templates for variables.
 | 
			
		||||
// Why? To get a clue if you are missing some.
 | 
			
		||||
 | 
			
		||||
import * as plugins from './smarthbs.plugins'
 | 
			
		||||
import * as plugins from './smarthbs.plugins';
 | 
			
		||||
 | 
			
		||||
// the curly regex objects
 | 
			
		||||
let tripleCurlyRegex = /{{{\s*[\w\.]+\s*}}}/g
 | 
			
		||||
let doubleCurlyRegex = /{{\s*[\w\.]+\s*}}/g
 | 
			
		||||
let nameInCurlsRegex = /[\w\.]+/
 | 
			
		||||
let tripleCurlyRegex = /{{{\s*[\w\.]+\s*}}}/g;
 | 
			
		||||
let doubleCurlyRegex = /{{\s*[\w\.]+\s*}}/g;
 | 
			
		||||
let nameInCurlsRegex = /[\w\.]+/;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * finds all variables in a handlebars template
 | 
			
		||||
 * @param hbsStringArg
 | 
			
		||||
 */
 | 
			
		||||
export let findVarsInHbsString = async (hbsStringArg: string) => {
 | 
			
		||||
  let hbsString = hbsStringArg // make sure we have a new string object that we may destroy
 | 
			
		||||
  let varNameArray: string[] = []
 | 
			
		||||
  let tripleCurlyMatches = hbsString.match(tripleCurlyRegex)
 | 
			
		||||
  let hbsString = hbsStringArg; // make sure we have a new string object that we may destroy
 | 
			
		||||
  let varNameArray: string[] = [];
 | 
			
		||||
  let tripleCurlyMatches = hbsString.match(tripleCurlyRegex);
 | 
			
		||||
  if (tripleCurlyMatches) {
 | 
			
		||||
    hbsString = hbsString.replace(tripleCurlyRegex, '[[[replaced]]]')
 | 
			
		||||
    varNameArray = plugins.lodash.concat(varNameArray, tripleCurlyMatches)
 | 
			
		||||
    hbsString = hbsString.replace(tripleCurlyRegex, '[[[replaced]]]');
 | 
			
		||||
    varNameArray = plugins.lodash.concat(varNameArray, tripleCurlyMatches);
 | 
			
		||||
  }
 | 
			
		||||
  let doubleCurlyMatches = hbsString.match(doubleCurlyRegex)
 | 
			
		||||
  let doubleCurlyMatches = hbsString.match(doubleCurlyRegex);
 | 
			
		||||
  if (doubleCurlyMatches) {
 | 
			
		||||
    varNameArray = plugins.lodash.concat(varNameArray, doubleCurlyMatches)
 | 
			
		||||
    varNameArray = plugins.lodash.concat(varNameArray, doubleCurlyMatches);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // make sure we are clean from curly brackets
 | 
			
		||||
  varNameArray = varNameArray.map((x) => {
 | 
			
		||||
    return x.match(nameInCurlsRegex)[ 0 ]
 | 
			
		||||
  })
 | 
			
		||||
  varNameArray = varNameArray.map(x => {
 | 
			
		||||
    return x.match(nameInCurlsRegex)[0];
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // make sure are uniq
 | 
			
		||||
  varNameArray = plugins.lodash.uniq(varNameArray)
 | 
			
		||||
  return varNameArray
 | 
			
		||||
}
 | 
			
		||||
  varNameArray = plugins.lodash.uniq(varNameArray);
 | 
			
		||||
  return varNameArray;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * checks if supplied variables satisfy an handlebars template
 | 
			
		||||
@@ -43,28 +43,28 @@ export let findVarsInHbsString = async (hbsStringArg: string) => {
 | 
			
		||||
 */
 | 
			
		||||
export let checkVarsSatisfaction = async (hbsStringArg: string, varObjectArg: any) => {
 | 
			
		||||
  // required vars as combined deep string with . notation
 | 
			
		||||
  let requiredVarStrings = await findVarsInHbsString(hbsStringArg)
 | 
			
		||||
  let requiredVarStrings = await findVarsInHbsString(hbsStringArg);
 | 
			
		||||
 | 
			
		||||
  // comparison objects
 | 
			
		||||
  let suppliedVarsObject = varObjectArg
 | 
			
		||||
  let missingVarsObject: string[] = []
 | 
			
		||||
  let suppliedVarsObject = varObjectArg;
 | 
			
		||||
  let missingVarsObject: string[] = [];
 | 
			
		||||
 | 
			
		||||
  // building the
 | 
			
		||||
  for (let stringVar of requiredVarStrings) {
 | 
			
		||||
    let splittedVars = stringVar.split('.')
 | 
			
		||||
    let requiredPointer = suppliedVarsObject
 | 
			
		||||
    let splittedVars = stringVar.split('.');
 | 
			
		||||
    let requiredPointer = suppliedVarsObject;
 | 
			
		||||
    for (let i = 0; i < splittedVars.length; i++) {
 | 
			
		||||
      let splitVar = splittedVars[ i ]
 | 
			
		||||
      let varAvailable = (requiredPointer[ splitVar ] !== undefined)
 | 
			
		||||
      if (varAvailable && splittedVars.length === (i + 1)) {
 | 
			
		||||
      let splitVar = splittedVars[i];
 | 
			
		||||
      let varAvailable = requiredPointer[splitVar] !== undefined;
 | 
			
		||||
      if (varAvailable && splittedVars.length === i + 1) {
 | 
			
		||||
        // ok
 | 
			
		||||
      } else if (varAvailable) {
 | 
			
		||||
        requiredPointer = requiredPointer[ splitVar ]
 | 
			
		||||
        requiredPointer = requiredPointer[splitVar];
 | 
			
		||||
      } else {
 | 
			
		||||
        missingVarsObject.push(stringVar)
 | 
			
		||||
        i = splittedVars.length
 | 
			
		||||
        missingVarsObject.push(stringVar);
 | 
			
		||||
        i = splittedVars.length;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return missingVarsObject
 | 
			
		||||
}
 | 
			
		||||
  return missingVarsObject;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										751
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										751
									
								
								yarn.lock
									
									
									
									
									
								
							@@ -1,751 +0,0 @@
 | 
			
		||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
 | 
			
		||||
# yarn lockfile v1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
"@types/chai-as-promised@0.0.29":
 | 
			
		||||
  version "0.0.29"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-0.0.29.tgz#43d52892aa998e185a3de3e2477edb8573be1d77"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/chai" "*"
 | 
			
		||||
    "@types/promises-a-plus" "*"
 | 
			
		||||
 | 
			
		||||
"@types/chai-string@^1.1.30":
 | 
			
		||||
  version "1.1.30"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/chai-string/-/chai-string-1.1.30.tgz#4d8744b31a5a2295fc01c981ed1e2d4c8a070f0a"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/chai" "*"
 | 
			
		||||
 | 
			
		||||
"@types/chai@*", "@types/chai@^3.4.35":
 | 
			
		||||
  version "3.5.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e"
 | 
			
		||||
 | 
			
		||||
"@types/fs-extra@3.x.x":
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-3.0.0.tgz#13e5566e4d780618ba52bd55e0dc713d7a687e59"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/node" "*"
 | 
			
		||||
 | 
			
		||||
"@types/handlebars@^4.0.32":
 | 
			
		||||
  version "4.0.32"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/handlebars/-/handlebars-4.0.32.tgz#637e8d945a9354aab47df7125005490fe9f8e592"
 | 
			
		||||
 | 
			
		||||
"@types/lodash@^4.14.55", "@types/lodash@^4.14.64":
 | 
			
		||||
  version "4.14.64"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.64.tgz#979cf3a3d4a368670840bf9b3e448dc33ffe84ee"
 | 
			
		||||
 | 
			
		||||
"@types/node@*":
 | 
			
		||||
  version "7.0.18"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173"
 | 
			
		||||
 | 
			
		||||
"@types/promises-a-plus@*":
 | 
			
		||||
  version "0.0.27"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/promises-a-plus/-/promises-a-plus-0.0.27.tgz#c64651134614c84b8f5d7114ce8901d36a609780"
 | 
			
		||||
 | 
			
		||||
"@types/vinyl@^2.0.0":
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/vinyl/-/vinyl-2.0.0.tgz#fd213bf7f4136dde21fe1895500b12c186f8c268"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/node" "*"
 | 
			
		||||
 | 
			
		||||
align-text@^0.1.1, align-text@^0.1.3:
 | 
			
		||||
  version "0.1.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    kind-of "^3.0.2"
 | 
			
		||||
    longest "^1.0.1"
 | 
			
		||||
    repeat-string "^1.5.2"
 | 
			
		||||
 | 
			
		||||
amdefine@>=0.0.4:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
 | 
			
		||||
 | 
			
		||||
ansi-256-colors@^1.1.0:
 | 
			
		||||
  version "1.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz#910de50efcc7c09e3d82f2f87abd6b700c18818a"
 | 
			
		||||
 | 
			
		||||
ansi-regex@^2.0.0:
 | 
			
		||||
  version "2.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
 | 
			
		||||
 | 
			
		||||
ansi-styles@^2.2.1:
 | 
			
		||||
  version "2.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
 | 
			
		||||
 | 
			
		||||
argparse@^1.0.7:
 | 
			
		||||
  version "1.0.9"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    sprintf-js "~1.0.2"
 | 
			
		||||
 | 
			
		||||
assertion-error@^1.0.1:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c"
 | 
			
		||||
 | 
			
		||||
async@^1.4.0:
 | 
			
		||||
  version "1.5.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
 | 
			
		||||
 | 
			
		||||
balanced-match@^0.4.1:
 | 
			
		||||
  version "0.4.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
 | 
			
		||||
 | 
			
		||||
beautycolor@^1.0.7:
 | 
			
		||||
  version "1.0.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.7.tgz#a4715738ac4c8221371e9cbeb5a6cc6d11ecbf7c"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ansi-256-colors "^1.1.0"
 | 
			
		||||
    typings-global "^1.0.14"
 | 
			
		||||
 | 
			
		||||
beautylog@^6.1.10:
 | 
			
		||||
  version "6.1.10"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/beautylog/-/beautylog-6.1.10.tgz#9c27e566937684cb689f9372d98cfa5415d50b72"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/lodash" "^4.14.55"
 | 
			
		||||
    beautycolor "^1.0.7"
 | 
			
		||||
    figlet "^1.2.0"
 | 
			
		||||
    lodash "^4.17.4"
 | 
			
		||||
    ora "^1.1.0"
 | 
			
		||||
    smartenv "^2.0.0"
 | 
			
		||||
    smartq "^1.1.1"
 | 
			
		||||
    typings-global "^1.0.14"
 | 
			
		||||
 | 
			
		||||
bindings@^1.2.1:
 | 
			
		||||
  version "1.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
 | 
			
		||||
 | 
			
		||||
brace-expansion@^1.1.7:
 | 
			
		||||
  version "1.1.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    balanced-match "^0.4.1"
 | 
			
		||||
    concat-map "0.0.1"
 | 
			
		||||
 | 
			
		||||
buffer-shims@~1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
 | 
			
		||||
 | 
			
		||||
camelcase@^1.0.2:
 | 
			
		||||
  version "1.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
 | 
			
		||||
 | 
			
		||||
center-align@^0.1.1:
 | 
			
		||||
  version "0.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    align-text "^0.1.3"
 | 
			
		||||
    lazy-cache "^1.0.3"
 | 
			
		||||
 | 
			
		||||
chai-as-promised@^6.0.0:
 | 
			
		||||
  version "6.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-6.0.0.tgz#1a02a433a6f24dafac63b9c96fa1684db1aa8da6"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    check-error "^1.0.2"
 | 
			
		||||
 | 
			
		||||
chai-string@^1.3.0:
 | 
			
		||||
  version "1.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/chai-string/-/chai-string-1.3.0.tgz#df6139f294391b1035be5606f60a843b3a5041e7"
 | 
			
		||||
 | 
			
		||||
chai@^3.5.0:
 | 
			
		||||
  version "3.5.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    assertion-error "^1.0.1"
 | 
			
		||||
    deep-eql "^0.1.3"
 | 
			
		||||
    type-detect "^1.0.0"
 | 
			
		||||
 | 
			
		||||
chalk@^1.0.0, chalk@^1.1.1:
 | 
			
		||||
  version "1.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    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"
 | 
			
		||||
 | 
			
		||||
check-error@^1.0.2:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
 | 
			
		||||
 | 
			
		||||
cli-cursor@^2.1.0:
 | 
			
		||||
  version "2.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    restore-cursor "^2.0.0"
 | 
			
		||||
 | 
			
		||||
cli-spinners@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a"
 | 
			
		||||
 | 
			
		||||
cliui@^2.1.0:
 | 
			
		||||
  version "2.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    center-align "^0.1.1"
 | 
			
		||||
    right-align "^0.1.1"
 | 
			
		||||
    wordwrap "0.0.2"
 | 
			
		||||
 | 
			
		||||
clone-buffer@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
 | 
			
		||||
 | 
			
		||||
clone-stats@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
 | 
			
		||||
 | 
			
		||||
clone@^1.0.0:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
 | 
			
		||||
 | 
			
		||||
cloneable-readable@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    inherits "^2.0.1"
 | 
			
		||||
    process-nextick-args "^1.0.6"
 | 
			
		||||
    through2 "^2.0.1"
 | 
			
		||||
 | 
			
		||||
concat-map@0.0.1:
 | 
			
		||||
  version "0.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 | 
			
		||||
 | 
			
		||||
core-util-is@~1.0.0:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
 | 
			
		||||
 | 
			
		||||
decamelize@^1.0.0:
 | 
			
		||||
  version "1.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
 | 
			
		||||
 | 
			
		||||
deep-eql@^0.1.3:
 | 
			
		||||
  version "0.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    type-detect "0.1.1"
 | 
			
		||||
 | 
			
		||||
early@^2.1.1:
 | 
			
		||||
  version "2.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/early/-/early-2.1.1.tgz#841e23254ea5dc54d8afaeee82f5ab65c00ee23c"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    beautycolor "^1.0.7"
 | 
			
		||||
    smartq "^1.1.1"
 | 
			
		||||
    typings-global "^1.0.16"
 | 
			
		||||
 | 
			
		||||
escape-string-regexp@^1.0.2:
 | 
			
		||||
  version "1.0.5"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
 | 
			
		||||
 | 
			
		||||
esprima@^3.1.1:
 | 
			
		||||
  version "3.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
 | 
			
		||||
 | 
			
		||||
figlet@^1.2.0:
 | 
			
		||||
  version "1.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.2.0.tgz#6c46537378fab649146b5a6143dda019b430b410"
 | 
			
		||||
 | 
			
		||||
first-chunk-stream@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    readable-stream "^2.0.2"
 | 
			
		||||
 | 
			
		||||
fs-extra@^3.0.1:
 | 
			
		||||
  version "3.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    graceful-fs "^4.1.2"
 | 
			
		||||
    jsonfile "^3.0.0"
 | 
			
		||||
    universalify "^0.1.0"
 | 
			
		||||
 | 
			
		||||
fs.realpath@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
 | 
			
		||||
 | 
			
		||||
glob@^7.0.0, glob@^7.1.1:
 | 
			
		||||
  version "7.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    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"
 | 
			
		||||
 | 
			
		||||
graceful-fs@^4.1.2, graceful-fs@^4.1.6:
 | 
			
		||||
  version "4.1.11"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
 | 
			
		||||
 | 
			
		||||
handlebars@^4.0.8:
 | 
			
		||||
  version "4.0.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.8.tgz#22b875cd3f0e6cbea30314f144e82bc7a72ff420"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    async "^1.4.0"
 | 
			
		||||
    optimist "^0.6.1"
 | 
			
		||||
    source-map "^0.4.4"
 | 
			
		||||
  optionalDependencies:
 | 
			
		||||
    uglify-js "^2.6"
 | 
			
		||||
 | 
			
		||||
has-ansi@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ansi-regex "^2.0.0"
 | 
			
		||||
 | 
			
		||||
home@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/home/-/home-1.0.1.tgz#96a423ceb49b98378ff5ef3ceae059a557f9dd35"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    os-homedir "^1.0.1"
 | 
			
		||||
 | 
			
		||||
inflight@^1.0.4:
 | 
			
		||||
  version "1.0.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    once "^1.3.0"
 | 
			
		||||
    wrappy "1"
 | 
			
		||||
 | 
			
		||||
inherits@2, inherits@^2.0.1, inherits@~2.0.1:
 | 
			
		||||
  version "2.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
 | 
			
		||||
 | 
			
		||||
interpret@^1.0.0:
 | 
			
		||||
  version "1.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
 | 
			
		||||
 | 
			
		||||
is-buffer@^1.1.5:
 | 
			
		||||
  version "1.1.5"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
 | 
			
		||||
 | 
			
		||||
is-stream@^1.1.0:
 | 
			
		||||
  version "1.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
 | 
			
		||||
 | 
			
		||||
is-utf8@^0.2.0, is-utf8@^0.2.1:
 | 
			
		||||
  version "0.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
 | 
			
		||||
 | 
			
		||||
isarray@~1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
 | 
			
		||||
 | 
			
		||||
js-yaml@^3.8.3:
 | 
			
		||||
  version "3.8.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    argparse "^1.0.7"
 | 
			
		||||
    esprima "^3.1.1"
 | 
			
		||||
 | 
			
		||||
jsonfile@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.0.tgz#92e7c7444e5ffd5fa32e6a9ae8b85034df8347d0"
 | 
			
		||||
  optionalDependencies:
 | 
			
		||||
    graceful-fs "^4.1.6"
 | 
			
		||||
 | 
			
		||||
kind-of@^3.0.2:
 | 
			
		||||
  version "3.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    is-buffer "^1.1.5"
 | 
			
		||||
 | 
			
		||||
lazy-cache@^1.0.3:
 | 
			
		||||
  version "1.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
 | 
			
		||||
 | 
			
		||||
leakage@^0.2.0:
 | 
			
		||||
  version "0.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.2.0.tgz#9e7a8cc1d241d8c8427e348769e192e172fd8733"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    left-pad "^1.1.3"
 | 
			
		||||
    memwatch-next "^0.3.0"
 | 
			
		||||
    minimist "^1.2.0"
 | 
			
		||||
    pretty-bytes "^4.0.2"
 | 
			
		||||
 | 
			
		||||
left-pad@^1.1.3:
 | 
			
		||||
  version "1.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a"
 | 
			
		||||
 | 
			
		||||
lodash@^4.17.4:
 | 
			
		||||
  version "4.17.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
 | 
			
		||||
 | 
			
		||||
log-symbols@^1.0.2:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    chalk "^1.0.0"
 | 
			
		||||
 | 
			
		||||
longest@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
 | 
			
		||||
 | 
			
		||||
memwatch-next@^0.3.0:
 | 
			
		||||
  version "0.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/memwatch-next/-/memwatch-next-0.3.0.tgz#2111050f9a906e0aa2d72a4ec0f0089c78726f8f"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    bindings "^1.2.1"
 | 
			
		||||
    nan "^2.3.2"
 | 
			
		||||
 | 
			
		||||
mimic-fn@^1.0.0:
 | 
			
		||||
  version "1.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
 | 
			
		||||
 | 
			
		||||
minimatch@^3.0.2:
 | 
			
		||||
  version "3.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    brace-expansion "^1.1.7"
 | 
			
		||||
 | 
			
		||||
minimist@^1.2.0:
 | 
			
		||||
  version "1.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
 | 
			
		||||
 | 
			
		||||
minimist@~0.0.1:
 | 
			
		||||
  version "0.0.10"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
 | 
			
		||||
 | 
			
		||||
nan@^2.3.2:
 | 
			
		||||
  version "2.6.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
 | 
			
		||||
 | 
			
		||||
once@^1.3.0:
 | 
			
		||||
  version "1.4.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    wrappy "1"
 | 
			
		||||
 | 
			
		||||
onetime@^2.0.0:
 | 
			
		||||
  version "2.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    mimic-fn "^1.0.0"
 | 
			
		||||
 | 
			
		||||
optimist@^0.6.1:
 | 
			
		||||
  version "0.6.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    minimist "~0.0.1"
 | 
			
		||||
    wordwrap "~0.0.2"
 | 
			
		||||
 | 
			
		||||
ora@^1.1.0:
 | 
			
		||||
  version "1.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ora/-/ora-1.2.0.tgz#32fb3183500efe83f5ea89101785f0ee6060fec9"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    chalk "^1.1.1"
 | 
			
		||||
    cli-cursor "^2.1.0"
 | 
			
		||||
    cli-spinners "^1.0.0"
 | 
			
		||||
    log-symbols "^1.0.2"
 | 
			
		||||
 | 
			
		||||
os-homedir@^1.0.1:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
 | 
			
		||||
 | 
			
		||||
path-is-absolute@^1.0.0:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
 | 
			
		||||
 | 
			
		||||
path-parse@^1.0.5:
 | 
			
		||||
  version "1.0.5"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
 | 
			
		||||
 | 
			
		||||
pify@^2.3.0:
 | 
			
		||||
  version "2.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
 | 
			
		||||
 | 
			
		||||
pretty-bytes@^4.0.2:
 | 
			
		||||
  version "4.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
 | 
			
		||||
 | 
			
		||||
process-nextick-args@^1.0.6, process-nextick-args@~1.0.6:
 | 
			
		||||
  version "1.0.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
 | 
			
		||||
 | 
			
		||||
readable-stream@^2.0.2, readable-stream@^2.1.5:
 | 
			
		||||
  version "2.2.9"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    buffer-shims "~1.0.0"
 | 
			
		||||
    core-util-is "~1.0.0"
 | 
			
		||||
    inherits "~2.0.1"
 | 
			
		||||
    isarray "~1.0.0"
 | 
			
		||||
    process-nextick-args "~1.0.6"
 | 
			
		||||
    string_decoder "~1.0.0"
 | 
			
		||||
    util-deprecate "~1.0.1"
 | 
			
		||||
 | 
			
		||||
rechoir@^0.6.2:
 | 
			
		||||
  version "0.6.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    resolve "^1.1.6"
 | 
			
		||||
 | 
			
		||||
remove-trailing-separator@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4"
 | 
			
		||||
 | 
			
		||||
repeat-string@^1.5.2:
 | 
			
		||||
  version "1.6.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
 | 
			
		||||
 | 
			
		||||
replace-ext@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
 | 
			
		||||
 | 
			
		||||
require-reload@0.2.2:
 | 
			
		||||
  version "0.2.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/require-reload/-/require-reload-0.2.2.tgz#29a7591846caf91b6e8a3cda991683f95f8d7d42"
 | 
			
		||||
 | 
			
		||||
resolve@^1.1.6:
 | 
			
		||||
  version "1.3.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    path-parse "^1.0.5"
 | 
			
		||||
 | 
			
		||||
restore-cursor@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    onetime "^2.0.0"
 | 
			
		||||
    signal-exit "^3.0.2"
 | 
			
		||||
 | 
			
		||||
right-align@^0.1.1:
 | 
			
		||||
  version "0.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    align-text "^0.1.1"
 | 
			
		||||
 | 
			
		||||
semver@^5.3.0:
 | 
			
		||||
  version "5.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
 | 
			
		||||
 | 
			
		||||
shelljs@^0.7.7:
 | 
			
		||||
  version "0.7.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    glob "^7.0.0"
 | 
			
		||||
    interpret "^1.0.0"
 | 
			
		||||
    rechoir "^0.6.2"
 | 
			
		||||
 | 
			
		||||
signal-exit@^3.0.2:
 | 
			
		||||
  version "3.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
 | 
			
		||||
 | 
			
		||||
smartchai@^1.0.3:
 | 
			
		||||
  version "1.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-1.0.3.tgz#de6d010bb8b5aef24cb70b31a5f5334e8c41b72f"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/chai" "^3.4.35"
 | 
			
		||||
    "@types/chai-as-promised" "0.0.29"
 | 
			
		||||
    "@types/chai-string" "^1.1.30"
 | 
			
		||||
    chai "^3.5.0"
 | 
			
		||||
    chai-as-promised "^6.0.0"
 | 
			
		||||
    chai-string "^1.3.0"
 | 
			
		||||
 | 
			
		||||
smartdelay@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.1.tgz#687f8bcc09d7c62c9c5a8a1771c1aba3aff54156"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    typings-global "^1.0.14"
 | 
			
		||||
 | 
			
		||||
smartenv@^2.0.0:
 | 
			
		||||
  version "2.0.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/smartenv/-/smartenv-2.0.6.tgz#b38c679b0c151b9af548f68c3a072c29d1417e8d"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    lodash "^4.17.4"
 | 
			
		||||
    smartq "^1.1.1"
 | 
			
		||||
    typings-global "^1.0.14"
 | 
			
		||||
 | 
			
		||||
smartfile@^4.2.11:
 | 
			
		||||
  version "4.2.11"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/smartfile/-/smartfile-4.2.11.tgz#20bb3a1411722688135499520de2fd00985becdb"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/fs-extra" "3.x.x"
 | 
			
		||||
    "@types/vinyl" "^2.0.0"
 | 
			
		||||
    fs-extra "^3.0.1"
 | 
			
		||||
    glob "^7.1.1"
 | 
			
		||||
    js-yaml "^3.8.3"
 | 
			
		||||
    require-reload "0.2.2"
 | 
			
		||||
    smartpath "^3.2.8"
 | 
			
		||||
    smartq "^1.1.1"
 | 
			
		||||
    smartrequest "^1.0.4"
 | 
			
		||||
    typings-global "^1.0.16"
 | 
			
		||||
    vinyl "^2.0.2"
 | 
			
		||||
    vinyl-file "^3.0.0"
 | 
			
		||||
 | 
			
		||||
smartpath@^3.2.8:
 | 
			
		||||
  version "3.2.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/smartpath/-/smartpath-3.2.8.tgz#4834bd3a8bae2295baacadba23c87a501952f940"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    home "^1.0.1"
 | 
			
		||||
    typings-global "^1.0.14"
 | 
			
		||||
 | 
			
		||||
smartq@^1.1.0, smartq@^1.1.1:
 | 
			
		||||
  version "1.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.1.tgz#efb358705260d41ae18aef7ffd815f7b6fe17dd3"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    typed-promisify "^0.3.0"
 | 
			
		||||
    typings-global "^1.0.14"
 | 
			
		||||
 | 
			
		||||
smartrequest@^1.0.4:
 | 
			
		||||
  version "1.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/smartrequest/-/smartrequest-1.0.4.tgz#86af2163ae28f1031b01c2d8ad8c429733920611"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    smartq "^1.1.0"
 | 
			
		||||
    typings-global "^1.0.14"
 | 
			
		||||
 | 
			
		||||
source-map@^0.4.4:
 | 
			
		||||
  version "0.4.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    amdefine ">=0.0.4"
 | 
			
		||||
 | 
			
		||||
source-map@~0.5.1:
 | 
			
		||||
  version "0.5.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
 | 
			
		||||
 | 
			
		||||
sprintf-js@~1.0.2:
 | 
			
		||||
  version "1.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
 | 
			
		||||
 | 
			
		||||
string_decoder@~1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    buffer-shims "~1.0.0"
 | 
			
		||||
 | 
			
		||||
strip-ansi@^3.0.0:
 | 
			
		||||
  version "3.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ansi-regex "^2.0.0"
 | 
			
		||||
 | 
			
		||||
strip-bom-buf@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    is-utf8 "^0.2.1"
 | 
			
		||||
 | 
			
		||||
strip-bom-stream@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    first-chunk-stream "^2.0.0"
 | 
			
		||||
    strip-bom "^2.0.0"
 | 
			
		||||
 | 
			
		||||
strip-bom@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    is-utf8 "^0.2.0"
 | 
			
		||||
 | 
			
		||||
supports-color@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
 | 
			
		||||
 | 
			
		||||
tapbundle@^1.0.12:
 | 
			
		||||
  version "1.0.12"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.12.tgz#71d29273aad280f5c4e15b2700430b2456a5d364"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    early "^2.1.1"
 | 
			
		||||
    leakage "^0.2.0"
 | 
			
		||||
    smartchai "^1.0.3"
 | 
			
		||||
    smartdelay "^1.0.1"
 | 
			
		||||
    smartq "^1.1.1"
 | 
			
		||||
    typings-global "^1.0.16"
 | 
			
		||||
 | 
			
		||||
through2@^2.0.1:
 | 
			
		||||
  version "2.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    readable-stream "^2.1.5"
 | 
			
		||||
    xtend "~4.0.1"
 | 
			
		||||
 | 
			
		||||
type-detect@0.1.1:
 | 
			
		||||
  version "0.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
 | 
			
		||||
 | 
			
		||||
type-detect@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2"
 | 
			
		||||
 | 
			
		||||
typed-promisify@^0.3.0:
 | 
			
		||||
  version "0.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/typed-promisify/-/typed-promisify-0.3.0.tgz#1ba0af5e444c87d8047406f18ce49092a1191853"
 | 
			
		||||
 | 
			
		||||
typings-global@^1.0.14, typings-global@^1.0.16:
 | 
			
		||||
  version "1.0.16"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.16.tgz#489b71781af24268750c2899316400a5e482961f"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    semver "^5.3.0"
 | 
			
		||||
    shelljs "^0.7.7"
 | 
			
		||||
 | 
			
		||||
uglify-js@^2.6:
 | 
			
		||||
  version "2.8.23"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.23.tgz#8230dd9783371232d62a7821e2cf9a817270a8a0"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    source-map "~0.5.1"
 | 
			
		||||
    yargs "~3.10.0"
 | 
			
		||||
  optionalDependencies:
 | 
			
		||||
    uglify-to-browserify "~1.0.0"
 | 
			
		||||
 | 
			
		||||
uglify-to-browserify@~1.0.0:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
 | 
			
		||||
 | 
			
		||||
universalify@^0.1.0:
 | 
			
		||||
  version "0.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778"
 | 
			
		||||
 | 
			
		||||
util-deprecate@~1.0.1:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
 | 
			
		||||
 | 
			
		||||
vinyl-file@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    graceful-fs "^4.1.2"
 | 
			
		||||
    pify "^2.3.0"
 | 
			
		||||
    strip-bom-buf "^1.0.0"
 | 
			
		||||
    strip-bom-stream "^2.0.0"
 | 
			
		||||
    vinyl "^2.0.1"
 | 
			
		||||
 | 
			
		||||
vinyl@^2.0.1, vinyl@^2.0.2:
 | 
			
		||||
  version "2.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.2.tgz#0a3713d8d4e9221c58f10ca16c0116c9e25eda7c"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    clone "^1.0.0"
 | 
			
		||||
    clone-buffer "^1.0.0"
 | 
			
		||||
    clone-stats "^1.0.0"
 | 
			
		||||
    cloneable-readable "^1.0.0"
 | 
			
		||||
    is-stream "^1.1.0"
 | 
			
		||||
    remove-trailing-separator "^1.0.1"
 | 
			
		||||
    replace-ext "^1.0.0"
 | 
			
		||||
 | 
			
		||||
window-size@0.1.0:
 | 
			
		||||
  version "0.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
 | 
			
		||||
 | 
			
		||||
wordwrap@0.0.2:
 | 
			
		||||
  version "0.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
 | 
			
		||||
 | 
			
		||||
wordwrap@~0.0.2:
 | 
			
		||||
  version "0.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
 | 
			
		||||
 | 
			
		||||
wrappy@1:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
 | 
			
		||||
 | 
			
		||||
xtend@~4.0.1:
 | 
			
		||||
  version "4.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
 | 
			
		||||
 | 
			
		||||
yargs@~3.10.0:
 | 
			
		||||
  version "3.10.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    camelcase "^1.0.2"
 | 
			
		||||
    cliui "^2.1.0"
 | 
			
		||||
    decamelize "^1.0.0"
 | 
			
		||||
    window-size "0.1.0"
 | 
			
		||||
		Reference in New Issue
	
	Block a user