diff --git a/.gitignore b/.gitignore index 12d09b83..e02f9cdb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,6 @@ node_modules/ -typings/ cache/ -*.js -*.d.ts +dist/ *.log.* *.log *.tgz diff --git a/.npmignore b/.npmignore index 3aed0526..89801822 100644 --- a/.npmignore +++ b/.npmignore @@ -1,5 +1,4 @@ node_modules/ -typings/ cache/ src/ .travis.yml diff --git a/package.json b/package.json index bddd555e..aa5f5e27 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "scripts": { "tsc": "tsc", "typings": "typings", - "prepublish": "typings install && tsc", + "prepublish": "tsc -p src", "test": "node cxsd-cli.js --help" }, "author": "Juha Järvi", @@ -30,14 +30,17 @@ "typescript" ], "dependencies": { - "bluebird": "^3.4.1", - "cget": "~0.0.5", - "commander": "~2.9.0", - "cxml": "~0.1.0", - "node-expat": "~2.3.15" + "@types/bluebird": "^3.5.18", + "@types/commander": "^2.11.0", + "@types/node": "^8.0.47", + "bluebird": "^3.4.7", + "cget": "^0.2.1", + "commander": "^2.11.0", + "cxml": "~0.1.1", + "node-expat": "^2.3.16" }, "devDependencies": { - "typescript": "^1.8.10", - "typings": "^1.3.2" + "tslint": "^5.8.0", + "typescript": "^2.5.3" } } diff --git a/src/cli.ts b/src/cli.ts index 6b89b985..f29ddb4e 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -13,6 +13,7 @@ import {exportNamespace} from './xsd/Exporter'; import * as schema from './schema'; import {AddImports} from './schema/transform/AddImports'; import {Sanitize} from './schema/transform/Sanitize'; +import * as URL from 'url'; type _ICommand = typeof cmd; interface ICommand extends _ICommand { @@ -40,14 +41,16 @@ function handleConvert(urlRemote: string, opts: { [key: string]: any }) { var fetchOptions: FetchOptions = {}; if(opts['forceHost']) { - fetchOptions.forceHost = opts['forceHost']; - if(opts['forcePort']) fetchOptions.forcePort = opts['forcePort']; - - Cache.patchRequest(); + fetchOptions.rewrite = (url: string) => { + const currentURL = URL.parse(url); + currentURL.hostname = opts.forceHost; + if(opts['forcePort']) currentURL.port = opts['forcePort']; + return currentURL.toString(); + } } - var jsCache = new Cache(opts['outJs'] || 'xmlns', '_index.js'); - var tsCache = new Cache(opts['outTs'] || 'xmlns', '_index.d.ts'); + var jsCache = new Cache(opts['outJs'] || 'xmlns', { indexName: '_index.js' }); + var tsCache = new Cache(opts['outTs'] || 'xmlns', { indexName: '_index.d.ts' }); var loader = new Loader(xsdContext, fetchOptions); diff --git a/typings-custom/node-expat.d.ts b/src/node-expat.d.ts similarity index 100% rename from typings-custom/node-expat.d.ts rename to src/node-expat.d.ts diff --git a/src/schema/exporter/Exporter.ts b/src/schema/exporter/Exporter.ts index 7ca98f41..76ca5c51 100644 --- a/src/schema/exporter/Exporter.ts +++ b/src/schema/exporter/Exporter.ts @@ -1,22 +1,28 @@ // This file is part of cxsd, copyright (c) 2015-2016 BusFaster Ltd. // Released under the MIT license, see LICENSE. +import { Packet } from '_debugger'; import * as Promise from 'bluebird'; import * as path from 'path'; import {Address, Cache} from 'cget' +import { FileSystemCache } from 'cget/dist/strategy'; import {Transform} from '../transform/Transform'; import {Type} from '../Type'; export interface State { cache: Cache; + fsStrategy: FileSystemCache; } -export abstract class Exporter extends Transform { +export abstract class Exporter extends Transform { constructor(doc: Type, cache: Cache) { super(doc); - this.state = { cache: cache }; + this.state = { + cache, + fsStrategy: cache && cache.storePipeline[0] as FileSystemCache + } } writeHeader() { @@ -41,12 +47,15 @@ export abstract class Exporter extends Transform { if(!doc) return(null); this.cacheDir = path.dirname( - this.state.cache.getCachePathSync(new Address(doc.namespace.name)) + this.state.fsStrategy.getCachePathSync(doc.namespace.name) ); + + let outName = this.getOutName(doc.namespace.name); + if (doc.namespace.isPrimitiveSpace || new Address(outName).isLocal) { + outName = `urn:cxsd:${outName}` // FIXME: Hacl to generate "remote" UR{I,L} + } - var outName = this.getOutName(doc.namespace.name); - - return(this.state.cache.ifCached(outName).then((isCached: boolean) => { + return((this.state.fsStrategy.isCached(outName) as Promise).then((isCached: boolean) => { if(isCached) return(null) return(this.state.cache.store( @@ -64,7 +73,7 @@ export abstract class Exporter extends Transform { // Append and then strip a file extension so references to a parent // directory will target the directory by name instead of .. or similar. - var targetPath = this.state.cache.getCachePathSync(new Address(name)) + '.js'; + const targetPath = this.state.fsStrategy.getCachePathSync(name) + '.js'; // Always output forward slashes. // If path.sep is a backslash as on Windows, we need to escape it (as a double-backslash) for it to be a valid Regex. diff --git a/tsconfig.json b/src/tsconfig.json similarity index 55% rename from tsconfig.json rename to src/tsconfig.json index d1b9aef5..d87da4c4 100644 --- a/tsconfig.json +++ b/src/tsconfig.json @@ -5,13 +5,15 @@ "module": "commonjs", "moduleResolution": "node", "noImplicitAny": true, - "outDir": "dist", - "target": "es5" + "noImplicitThis": true, + "outDir": "../dist", + "removeComments": false, + "target": "es5", + "lib": ["es6"] }, "files": [ - "typings/index.d.ts", - "typings-custom/node-expat.d.ts", + "node-expat.d.ts", - "src/cli.ts" + "cli.ts" ] } diff --git a/src/xsd/Loader.ts b/src/xsd/Loader.ts index 8bb8246c..084ba717 100644 --- a/src/xsd/Loader.ts +++ b/src/xsd/Loader.ts @@ -3,19 +3,35 @@ import * as Promise from 'bluebird'; -import {Address, FetchOptions, Cache, CacheResult, util} from 'cget'; +import {FetchOptions, Cache, CacheResult} from 'cget'; import {Context} from './Context'; import {Namespace} from './Namespace'; import {Source} from './Source'; import {Parser} from './Parser'; +/** Copy all members of src object to dst object. */ + +export function extend(dst: {[key: string]: any}, src: {[key: string]: any}) { + for(var key of Object.keys(src)) { + dst[key] = src[key]; + } + return(dst); +} + +/** Make shallow clone of object. */ + +export function clone(src: Object) { + return(extend({}, src)); +} + + /** Loader handles caching schema definitions and calling parser stages. */ export class Loader { constructor(context: Context, options?: FetchOptions) { this.context = context; - this.options = util.clone(options); + this.options = clone(options || {}); this.parser = new Parser(context); } @@ -31,15 +47,14 @@ export class Loader { } importFile(urlRemote: string, namespace?: Namespace) { - var options = this.options; - options.address = new Address(urlRemote); + const options = this.options; var source = Loader.sourceTbl[urlRemote]; if(!source) { source = new Source(urlRemote, this.context, namespace); - Loader.cache.fetch(options).then((cached: CacheResult) => { + Loader.cache.fetch(urlRemote, options).then((cached: CacheResult) => { source.updateUrl(urlRemote, cached.address.url); return(this.parser.init(cached, source, this)); @@ -64,7 +79,7 @@ export class Loader { getOptions() { return(this.options); } - private static cache = new Cache('cache/xsd', '_index.xsd'); + private static cache = new Cache('cache/xsd', { indexName: '_index.xsd'}); private static sourceTbl: {[url: string]: Source} = {}; private context: Context; diff --git a/src/xsd/types/Attribute.ts b/src/xsd/types/Attribute.ts index 71c125d7..c708eab3 100644 --- a/src/xsd/types/Attribute.ts +++ b/src/xsd/types/Attribute.ts @@ -28,6 +28,6 @@ export class Attribute extends MemberBase { var attribute = this.resolveMember(state, 'attribute') as Attribute; } - use: string = null; - default: XmlAttribute = null; + use: string | null = null; + default: XmlAttribute | null = null; } diff --git a/src/xsd/types/AttributeGroup.ts b/src/xsd/types/AttributeGroup.ts index daaddcaf..ad8e9d18 100644 --- a/src/xsd/types/AttributeGroup.ts +++ b/src/xsd/types/AttributeGroup.ts @@ -20,10 +20,11 @@ export class AttributeGroup extends types.Base { } resolve(state: State) { - var attributeGroup: AttributeGroup = this; + let attributeGroup: AttributeGroup = this; + let ref: QName = null; if(this.ref) { - var ref = new QName(this.ref, state.source); + ref = new QName(this.ref, state.source); attributeGroup = this.scope.lookup(ref, 'attributeGroup') as AttributeGroup; } @@ -38,7 +39,7 @@ export class AttributeGroup extends types.Base { } } - id: string = null; - name: string = null; - ref: string = null; + id: string | null = null; + name: string | null = null; + ref: string | null = null; } diff --git a/src/xsd/types/Base.ts b/src/xsd/types/Base.ts index 37036845..75c4d3e0 100644 --- a/src/xsd/types/Base.ts +++ b/src/xsd/types/Base.ts @@ -67,6 +67,5 @@ export class Base { bytePos: number; name: string; - static name: string; static rule: Rule; } diff --git a/src/xsd/types/DerivationBase.ts b/src/xsd/types/DerivationBase.ts index 13f09872..099683d9 100644 --- a/src/xsd/types/DerivationBase.ts +++ b/src/xsd/types/DerivationBase.ts @@ -29,6 +29,6 @@ export class DerivationBase extends types.Base { this.scope.addAllToParent('attributeGroup'); } - id: string = null; - base: string = null; + id: string | null = null; + base: string | null = null; } diff --git a/src/xsd/types/Element.ts b/src/xsd/types/Element.ts index e758cdbd..f1f8cc15 100644 --- a/src/xsd/types/Element.ts +++ b/src/xsd/types/Element.ts @@ -55,12 +55,12 @@ export class Element extends MemberBase implements ElementLike { minOccurs: string = "1"; maxOccurs: string = "1"; - default: string = null; + default: string | null = null; /** Abstract elements are disallowed in the XML document, * and another member of the same substitution group should be used. */ - abstract: string = null; // boolean - substitutionGroup: string = null; + abstract: string | null = null; // boolean + substitutionGroup: string | null = null; substitutes: Element; isSubstituted: boolean; diff --git a/src/xsd/types/MemberBase.ts b/src/xsd/types/MemberBase.ts index 82652580..df701ec5 100644 --- a/src/xsd/types/MemberBase.ts +++ b/src/xsd/types/MemberBase.ts @@ -60,10 +60,10 @@ export class MemberBase extends TypedBase { return(false); } - id: string = null; - name: string = null; - ref: string = null; - type: string = null; + id: string | null = null + name: string | null = null + ref: string | null = null + type: string | null = null min: number; max: number; diff --git a/src/xsd/types/TypeBase.ts b/src/xsd/types/TypeBase.ts index ee639d4d..5994fb73 100644 --- a/src/xsd/types/TypeBase.ts +++ b/src/xsd/types/TypeBase.ts @@ -7,6 +7,8 @@ import {QName} from '../QName'; import {NamedTypeMember} from '../Scope'; import * as schema from '../../schema'; +export interface TypeBaseChild extends TypeBase {} + export class TypeBase extends Base { init(state: State) { if(!this.scope) this.scope = state.getScope(); @@ -37,9 +39,9 @@ export class TypeBase extends Base { /** Find parent type inheriting from a base type. */ - getParent(base: BaseClass, breakAtContent: boolean) { - var next: TypeBase | QName = this; - var type: TypeBase | QName; + getParent(base: BaseClass, breakAtContent: boolean): TypeBase { + var next: TypeBaseChild | QName = this; + var type: TypeBaseChild | QName; /** Maximum iterations in case type inheritance forms a loop. */ var iter = 100; @@ -48,11 +50,11 @@ export class TypeBase extends Base { if(!(type instanceof TypeBase)) break; else if(type instanceof base) return(type); - else if(breakAtContent && type.scope && ( - type.scope.dumpTypes('attribute') || - type.scope.dumpTypes('attributeGroup') + else if(breakAtContent && (type as TypeBase).scope && ( + (type as TypeBase).scope.dumpTypes('attribute') || + (type as TypeBase).scope.dumpTypes('attributeGroup') )) break; - else next = type.parent; + else next = (type as TypeBase).parent; } return(null); diff --git a/typings.json b/typings.json deleted file mode 100644 index 7526f9ec..00000000 --- a/typings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "cxsd", - "dependencies": { - "bluebird": "registry:npm/bluebird#3.4.1+20160811213708", - "request": "registry:npm/request#2.69.0+20160428223725" - }, - "globalDependencies": { - "commander": "registry:dt/commander#2.3.0+20160317120654", - "node": "registry:dt/node#6.0.0+20160807145350" - } -} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..f96694d0 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,588 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/bluebird@^3.0.37", "@types/bluebird@^3.5.10", "@types/bluebird@^3.5.18": + version "3.5.18" + resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.18.tgz#6a60435d4663e290f3709898a4f75014f279c4d6" + +"@types/commander@^2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@types/commander/-/commander-2.11.0.tgz#7fc765ccad14827e2babd6a99583359ff3e40563" + dependencies: + "@types/node" "*" + +"@types/form-data@*": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-2.2.0.tgz#a98aac91dc99857b6af24caef7ca6df302f31565" + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@^8.0.28", "@types/node@^8.0.47": + version "8.0.47" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.47.tgz#968e596f91acd59069054558a00708c445ca30c2" + +"@types/node@^7.0.0": + version "7.0.46" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.46.tgz#c3dedd25558c676b3d6303e51799abb9c3f8f314" + +"@types/request@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/request/-/request-2.0.3.tgz#bdf0fba9488c822f77e97de3dd8fe357b2fb8c06" + dependencies: + "@types/form-data" "*" + "@types/node" "*" + +"@types/sax@0.0.28": + version "0.0.28" + resolved "https://registry.yarnpkg.com/@types/sax/-/sax-0.0.28.tgz#08bc2bed7697f97b0f345a0ba5d93e5f163c89e2" + dependencies: + "@types/node" "*" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +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" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +bindings@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" + +bluebird@^3.4.7, bluebird@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +cdata@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/cdata/-/cdata-0.1.1.tgz#0523c8e6c7954e6146b85493533be1ba8c859d5c" + +cget@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cget/-/cget-0.2.1.tgz#98ab5cbb1f7f55b3c66ebd26130f3f21110b8976" + dependencies: + "@types/bluebird" "^3.5.10" + "@types/node" "^8.0.28" + "@types/request" "2.0.3" + bluebird "^3.5.0" + cwait "^1.1.1" + request "~2.81.0" + +chalk@^1.1.3: + 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" + +chalk@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@^2.11.0, commander@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + +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.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +cwait@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/cwait/-/cwait-1.1.1.tgz#cebfe84274fa699cc49c0763c41f89d886177b10" + dependencies: + cdata "^0.1.1" + +cxml@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/cxml/-/cxml-0.1.1.tgz#e30ce3624dd03b47d7652f8ac7523db79b6164f1" + dependencies: + "@types/bluebird" "^3.0.37" + "@types/node" "^7.0.0" + "@types/sax" "0.0.28" + bluebird "^3.4.7" + sax "~1.2.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +diff@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +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" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +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: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +mime-db@~1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.17" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" + dependencies: + mime-db "~1.30.0" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +nan@^2.3.5: + version "2.7.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + +node-expat@^2.3.16: + version "2.3.16" + resolved "https://registry.yarnpkg.com/node-expat/-/node-expat-2.3.16.tgz#adb22174e1aaa5305996bd5b1aa6f2c8d5c0f239" + dependencies: + bindings "^1.2.1" + nan "^2.3.5" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +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" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +request@~2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +resolve@^1.3.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + +safe-buffer@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +sax@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +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" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" + +tough-cookie@~2.3.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + dependencies: + punycode "^1.4.1" + +tslib@^1.7.1: + version "1.8.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.0.tgz#dc604ebad64bcbf696d613da6c954aa0e7ea1eb6" + +tslint@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.8.0.tgz#1f49ad5b2e77c76c3af4ddcae552ae4e3612eb13" + dependencies: + babel-code-frame "^6.22.0" + builtin-modules "^1.1.1" + chalk "^2.1.0" + commander "^2.9.0" + diff "^3.2.0" + glob "^7.1.1" + minimatch "^3.0.4" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.7.1" + tsutils "^2.12.1" + +tsutils@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.12.1.tgz#f4d95ce3391c8971e46e54c4cf0edb0a21dd5b24" + dependencies: + tslib "^1.7.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +typescript@^2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" + +uuid@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"