From f178e5d910a5418b926033c934cd7526c40084b7 Mon Sep 17 00:00:00 2001 From: deepak Date: Sun, 12 Nov 2017 20:56:26 +0530 Subject: [PATCH] Seems working --- .gitignore | 13 +- dist/@stomp/ng2-stompjs.es5.js | 339 ++++++++++ dist/@stomp/ng2-stompjs.es5.js.map | 26 + dist/@stomp/ng2-stompjs.js | 318 +++++++++ dist/@stomp/ng2-stompjs.js.map | 1 + dist/README.md | 346 ++++++++++ dist/bundles/ng2-stompjs.umd.js | 343 ++++++++++ dist/bundles/ng2-stompjs.umd.js.map | 1 + dist/bundles/ng2-stompjs.umd.min.js | 2 + dist/bundles/ng2-stompjs.umd.min.js.map | 1 + dist/index.d.ts | 4 + dist/ng2-stompjs.d.ts | 4 + dist/ng2-stompjs.metadata.json | 1 + dist/package.json | 74 +++ dist/src/stomp-headers.d.ts | 4 + dist/src/stomp-r.service.d.ts | 126 ++++ dist/src/stomp-state.d.ts | 9 + dist/src/stomp.config.d.ts | 50 ++ dist/src/stomp.service.d.ts | 22 + docs/assets/css/main.css.map | 7 + ng-package.json | 17 +- package.json | 1 + yarn.lock | 844 +++++++++++++++++++++++- 23 files changed, 2507 insertions(+), 46 deletions(-) create mode 100644 dist/@stomp/ng2-stompjs.es5.js create mode 100644 dist/@stomp/ng2-stompjs.es5.js.map create mode 100644 dist/@stomp/ng2-stompjs.js create mode 100644 dist/@stomp/ng2-stompjs.js.map create mode 100644 dist/README.md create mode 100644 dist/bundles/ng2-stompjs.umd.js create mode 100644 dist/bundles/ng2-stompjs.umd.js.map create mode 100644 dist/bundles/ng2-stompjs.umd.min.js create mode 100644 dist/bundles/ng2-stompjs.umd.min.js.map create mode 100644 dist/index.d.ts create mode 100644 dist/ng2-stompjs.d.ts create mode 100644 dist/ng2-stompjs.metadata.json create mode 100644 dist/package.json create mode 100644 dist/src/stomp-headers.d.ts create mode 100644 dist/src/stomp-r.service.d.ts create mode 100644 dist/src/stomp-state.d.ts create mode 100644 dist/src/stomp.config.d.ts create mode 100644 dist/src/stomp.service.d.ts create mode 100644 docs/assets/css/main.css.map diff --git a/.gitignore b/.gitignore index 0aa6c72..8098c99 100644 --- a/.gitignore +++ b/.gitignore @@ -4,8 +4,8 @@ npm-debug.log # TypeScript # *.js -*.map -*.d.ts +#*.map +#*.d.ts # JetBrains .idea @@ -26,11 +26,8 @@ Desktop.ini **/.DS_Store # Ngc generated files -**/*.ngfactory.ts -*.metadata.json -*.ngsummary.json +#**/*.ngfactory.ts +#*.metadata.json +#*.ngsummary.json # bin/npm-publish - -# Ignore Dist -dist/ diff --git a/dist/@stomp/ng2-stompjs.es5.js b/dist/@stomp/ng2-stompjs.es5.js new file mode 100644 index 0000000..d3e3841 --- /dev/null +++ b/dist/@stomp/ng2-stompjs.es5.js @@ -0,0 +1,339 @@ +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +import { Injectable } from '@angular/core'; +import { BehaviorSubject as BehaviorSubject$1 } from 'rxjs/BehaviorSubject'; +import { Observable as Observable$1 } from 'rxjs/Observable'; +import { Subject as Subject$1 } from 'rxjs/Subject'; +import 'rxjs/add/operator/filter'; +import 'rxjs/add/operator/share'; +import { client, over } from '@stomp/stompjs/index'; +var StompState = {}; +StompState.CLOSED = 0; +StompState.TRYING = 1; +StompState.CONNECTED = 2; +StompState.DISCONNECTING = 3; +StompState[StompState.CLOSED] = "CLOSED"; +StompState[StompState.TRYING] = "TRYING"; +StompState[StompState.CONNECTED] = "CONNECTED"; +StompState[StompState.DISCONNECTING] = "DISCONNECTING"; +/** + * Angular2 STOMP Raw Service using \@stomp/stomp.js + * + * \@description This service handles subscribing to a + * message queue using the stomp.js library, and returns + * values via the ES6 Observable specification for + * asynchronous value streaming by wiring the STOMP + * messages into an observable. + * + * If you will like to pass the configuration as a dependency, + * please use StompService class. + */ +var StompRService = (function () { + /** + * Constructor + * + * See README and samples for configuration examples + */ + function StompRService() { + var _this = this; + /** + * Internal array to hold locally queued messages when STOMP broker is not connected. + */ + this.queuedMessages = []; + /** + * Callback Functions + * + * Note the method signature: () => preserves lexical scope + * if we need to use this.x inside the function + */ + this.debug = function (args) { + console.log(new Date(), args); + }; + /** + * Callback run on successfully connecting to server + */ + this.on_connect = function () { + _this.debug('Connected'); + // Indicate our connected state to observers + _this.state.next(StompState.CONNECTED); + }; + /** + * Handle errors from stomp.js + */ + this.on_error = function (error) { + // Trigger the error subject + _this.errorSubject.next(error); + if (typeof error === 'object') { + error = error.body; + } + _this.debug("Error: " + error); + // Check for dropped connection and try reconnecting + if (!_this.client.connected) { + // Reset state indicator + _this.state.next(StompState.CLOSED); + } + }; + this.state = new BehaviorSubject$1(StompState.CLOSED); + this.connectObservable = this.state + .filter(function (currentState) { + return currentState === StompState.CONNECTED; + }); + // Setup sending queuedMessages + this.connectObservable.subscribe(function () { + _this.sendQueuedMessages(); + }); + this.errorSubject = new Subject$1(); + } + Object.defineProperty(StompRService.prototype, "config", { + /** + * Set configuration + * @param {?} value + * @return {?} + */ + set: function (value) { + this._config = value; + }, + enumerable: true, + configurable: true + }); + /** + * Initialize STOMP Client + * @return {?} + */ + StompRService.prototype.initStompClient = function () { + // disconnect if connected + this.disconnect(); + // url takes precedence over socketFn + if (typeof (this._config.url) === 'string') { + this.client = client(this._config.url); + } + else { + this.client = over(this._config.url); + } + // Configure client heart-beating + this.client.heartbeat.incoming = this._config.heartbeat_in; + this.client.heartbeat.outgoing = this._config.heartbeat_out; + // Auto reconnect + this.client.reconnect_delay = this._config.reconnect_delay; + if (!this._config.debug) { + this.debug = function () { }; + } + // Set function to debug print messages + this.client.debug = this.debug; + }; + /** + * Perform connection to STOMP broker + * @return {?} + */ + StompRService.prototype.initAndConnect = function () { + this.initStompClient(); + if (!this._config.headers) { + this._config.headers = {}; + } + // Attempt connection, passing in a callback + this.client.connect(this._config.headers, this.on_connect, this.on_error); + this.debug('Connecting...'); + this.state.next(StompState.TRYING); + }; + /** + * Disconnect the connection to the STOMP broker and clean up, + * not sure how this method will get called, if ever. + * Call this method only if you know what you are doing. + * @return {?} + */ + StompRService.prototype.disconnect = function () { + var _this = this; + // Disconnect if connected. Callback will set CLOSED state + if (this.client && this.client.connected) { + // Notify observers that we are disconnecting! + this.state.next(StompState.DISCONNECTING); + this.client.disconnect(function () { return _this.state.next(StompState.CLOSED); }); + } + }; + /** + * The current connection status with the STOMP broker + * @return {?} + */ + StompRService.prototype.connected = function () { + return this.state.getValue() === StompState.CONNECTED; + }; + /** + * Send a message to a named destination. The message must be string. + * + * The message will get locally queued if the STOMP broker is not connected. Attempt + * will be made to publish queued messages as soon as the broker gets connected. + * + * @param {?} queueName + * @param {?} message + * @param {?=} headers + * @return {?} + */ + StompRService.prototype.publish = function (queueName, message, headers) { + if (headers === void 0) { headers = {}; } + if (this.connected()) { + this.client.send(queueName, headers, message); + } + else { + this.debug("Not connected, queueing " + message); + this.queuedMessages.push({ queueName: /** @type {?} */ (queueName), message: /** @type {?} */ (message), headers: headers }); + } + }; + /** + * Send queued messages + * @return {?} + */ + StompRService.prototype.sendQueuedMessages = function () { + var /** @type {?} */ queuedMessages = this.queuedMessages; + this.queuedMessages = []; + this.debug("Will try sending queued messages " + queuedMessages); + for (var _i = 0, queuedMessages_1 = queuedMessages; _i < queuedMessages_1.length; _i++) { + var queuedMessage = queuedMessages_1[_i]; + this.debug("Attempting to send " + queuedMessage); + this.publish(queuedMessage.queueName, queuedMessage.message, queuedMessage.headers); + } + }; + /** + * Subscribe to server message queues + * + * This method can safely be called even when STOMP broker is not connected. Further + * if the underlying STOMP connection drops and reconnects, it will resubscribe transparently. + * + * If a header field 'ack' is not explicitly passed, 'ack' will be set to 'auto'. If you + * do not understand what it means, please leave it as is. + * + * Please note, however, while working with temporary queues, where the subscription request + * creates the + * underlying queue, during reconnect it might miss messages. This issue is not specific + * to this library but the way STOMP brokers are designed to work. + * + * @param {?} queueName + * @param {?=} headers + * @return {?} + */ + StompRService.prototype.subscribe = function (queueName, headers) { + var _this = this; + if (headers === void 0) { headers = {}; } + /* Well the logic is complicated but works beautifully. RxJS is indeed wonderful. + * + * We need to activate the underlying subscription immediately if Stomp is connected. If not it should + * subscribe when it gets next connected. Further it should re establish the subscription whenever Stomp + * successfully reconnects. + * + * Actual implementation is simple, we filter the BehaviourSubject 'state' so that we can trigger whenever Stomp is + * connected. Since 'state' is a BehaviourSubject, if Stomp is already connected, it will immediately trigger. + * + * The observable that we return to caller remains same across all reconnects, so no special handling needed at + * the message subscriber. + */ + this.debug("Request to subscribe " + queueName); + // By default auto acknowledgement of messages + if (!headers['ack']) { + headers['ack'] = 'auto'; + } + var /** @type {?} */ coldObservable = Observable$1.create(function (messages) { + /* + * These variables will be used as part of the closure and work their magic during unsubscribe + */ + var /** @type {?} */ stompSubscription; + var /** @type {?} */ stompConnectedSubscription; + stompConnectedSubscription = _this.connectObservable + .subscribe(function () { + _this.debug("Will subscribe to " + queueName); + stompSubscription = _this.client.subscribe(queueName, function (message) { + messages.next(message); + }, headers); + }); + return function () { + _this.debug("Stop watching connection state (for " + queueName + ")"); + stompConnectedSubscription.unsubscribe(); + if (_this.state.getValue() === StompState.CONNECTED) { + _this.debug("Will unsubscribe from " + queueName + " at Stomp"); + stompSubscription.unsubscribe(); + } + else { + _this.debug("Stomp not connected, no need to unsubscribe from " + queueName + " at Stomp"); + } + }; + }); + /** + * Important - convert it to hot Observable - otherwise, if the user code subscribes + * to this observable twice, it will subscribe twice to Stomp broker. (This was happening in the current example). + * A long but good explanatory article at https://medium.com/@benlesh/hot-vs-cold-observables-f8094ed53339 + */ + return coldObservable.share(); + }; + return StompRService; +}()); +StompRService.decorators = [ + { type: Injectable }, +]; +/** + * @nocollapse + */ +StompRService.ctorParameters = function () { return []; }; +/** + * Represents a configuration object for the + * STOMPService to connect to. + */ +var StompConfig = (function () { + function StompConfig() { + } + return StompConfig; +}()); +StompConfig.decorators = [ + { type: Injectable }, +]; +/** + * @nocollapse + */ +StompConfig.ctorParameters = function () { return []; }; +/** + * Angular2 STOMP Service using \@stomp/stomp.js + * + * \@description This service handles subscribing to a + * message queue using the stomp.js library, and returns + * values via the ES6 Observable specification for + * asynchronous value streaming by wiring the STOMP + * messages into an observable. + * + * If you want to manually configure and initialize the service + * please use StompRService + */ +var StompService = (function (_super) { + __extends(StompService, _super); + /** + * Constructor + * + * See README and samples for configuration examples + * @param {?} config + */ + function StompService(config) { + var _this = _super.call(this) || this; + _this.config = config; + _this.initAndConnect(); + return _this; + } + return StompService; +}(StompRService)); +StompService.decorators = [ + { type: Injectable }, +]; +/** + * @nocollapse + */ +StompService.ctorParameters = function () { return [ + { type: StompConfig, }, +]; }; +/** + * Generated bundle index. Do not edit. + */ +export { StompRService, StompService, StompState, StompConfig }; +//# sourceMappingURL=ng2-stompjs.es5.js.map diff --git a/dist/@stomp/ng2-stompjs.es5.js.map b/dist/@stomp/ng2-stompjs.es5.js.map new file mode 100644 index 0000000..651ea21 --- /dev/null +++ b/dist/@stomp/ng2-stompjs.es5.js.map @@ -0,0 +1,26 @@ +{ + "version": 3, + "file": "ng2-stompjs.es5.js", + "sources": [ + "~/@stomp/ng2-stompjs/ng2-stompjs.ts", + "~/@stomp/ng2-stompjs/src/stomp.service.ts", + "~/@stomp/ng2-stompjs/src/stomp.config.ts", + "~/@stomp/ng2-stompjs/src/stomp-r.service.ts", + "~/@stomp/ng2-stompjs/src/stomp-state.ts" + ], + "sourcesContent": [ + "/**\n * Generated bundle index. Do not edit.\n */\n\nexport {StompRService,StompService,StompState,StompConfig} from './index';\n", + "import { Injectable } from '@angular/core';\n\nimport { StompConfig } from './stomp.config';\n\nimport { StompRService } from './stomp-r.service';\n/**\n * Angular2 STOMP Service using \\@stomp/stomp.js\n * \n * \\@description This service handles subscribing to a\n * message queue using the stomp.js library, and returns\n * values via the ES6 Observable specification for\n * asynchronous value streaming by wiring the STOMP\n * messages into an observable.\n * \n * If you want to manually configure and initialize the service\n * please use StompRService\n */\nexport class StompService extends StompRService {\n/**\n * Constructor\n * \n * See README and samples for configuration examples\n * @param {?} config\n */\npublic constructor(config: StompConfig) {\n super();\n\n this.config = config;\n this.initAndConnect();\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: StompConfig, },\n];\n}\n\nfunction StompService_tsickle_Closure_declarations() {\n/** @type {?} */\nStompService.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompService.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n", + "import { StompHeaders } from './stomp-headers';\nimport { Injectable } from '@angular/core';\n/**\n * Represents a configuration object for the\n * STOMPService to connect to.\n */\nexport class StompConfig {\n/**\n * Server URL to connect to. Please refer to your STOMP broker documentation for details.\n * \n * Example: ws://127.0.0.1:15674/ws (for a RabbitMQ default setup running on localhost)\n * \n * Alternatively this parameter can be a function that returns an object similar to WebSocket\n * (typically SockJS instance).\n * \n * Example:\n * \n * () => {\n * return new SockJS('http://127.0.0.1:15674/stomp');\n * }\n */\nurl: string | (() => any);\n/**\n * Headers\n * Typical keys: login: string, passcode: string.\n * host:string will neeed to be passed for virtual hosts in RabbitMQ\n */\nheaders: StompHeaders;\n/**\n * How often to incoming heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 0 - disabled\n */\nheartbeat_in: number;\n/**\n * How often to outgoing heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 20000 - every 20 seconds\n */\nheartbeat_out: number;\n/**\n * Wait in milliseconds before attempting auto reconnect\n * Set to 0 to disable\n * \n * Typical value 5000 (5 seconds)\n */\nreconnect_delay: number;\n/**\n * Enable client debugging?\n */\ndebug: boolean;\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction StompConfig_tsickle_Closure_declarations() {\n/** @type {?} */\nStompConfig.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompConfig.ctorParameters;\n/**\n * Server URL to connect to. Please refer to your STOMP broker documentation for details.\n * \n * Example: ws://127.0.0.1:15674/ws (for a RabbitMQ default setup running on localhost)\n * \n * Alternatively this parameter can be a function that returns an object similar to WebSocket\n * (typically SockJS instance).\n * \n * Example:\n * \n * () => {\n * return new SockJS('http://127.0.0.1:15674/stomp');\n * }\n * @type {?}\n */\nStompConfig.prototype.url;\n/**\n * Headers\n * Typical keys: login: string, passcode: string.\n * host:string will neeed to be passed for virtual hosts in RabbitMQ\n * @type {?}\n */\nStompConfig.prototype.headers;\n/**\n * How often to incoming heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 0 - disabled\n * @type {?}\n */\nStompConfig.prototype.heartbeat_in;\n/**\n * How often to outgoing heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 20000 - every 20 seconds\n * @type {?}\n */\nStompConfig.prototype.heartbeat_out;\n/**\n * Wait in milliseconds before attempting auto reconnect\n * Set to 0 to disable\n * \n * Typical value 5000 (5 seconds)\n * @type {?}\n */\nStompConfig.prototype.reconnect_delay;\n/**\n * Enable client debugging?\n * @type {?}\n */\nStompConfig.prototype.debug;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n", + "import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { Observable } from 'rxjs/Observable';\nimport { Observer } from 'rxjs/Observer';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport'rxjs/add/operator/filter';\nimport'rxjs/add/operator/share';\n\nimport { StompConfig } from './stomp.config';\n\nimport * as Stomp from '@stomp/stompjs/index';\nimport { StompSubscription } from '@stomp/stompjs/index';\nimport { StompHeaders } from './stomp-headers';\nimport { StompState } from './stomp-state';\n/**\n * Angular2 STOMP Raw Service using \\@stomp/stomp.js\n * \n * \\@description This service handles subscribing to a\n * message queue using the stomp.js library, and returns\n * values via the ES6 Observable specification for\n * asynchronous value streaming by wiring the STOMP\n * messages into an observable.\n * \n * If you will like to pass the configuration as a dependency,\n * please use StompService class.\n */\nexport class StompRService {\n/**\n * State of the STOMPService\n * \n * It is a BehaviorSubject and will emit current status immediately. This will typically get\n * used to show current status to the end user.\n */\npublic state: BehaviorSubject;\n/**\n * Will trigger when connection is established. Use this to carry out initialization.\n * It will trigger every time a (re)connection occurs. If it is already connected\n * it will trigger immediately. You can safely ignore the value, as it will always be\n * StompState.CONNECTED\n */\npublic connectObservable: Observable;\n/**\n * Will trigger when an error occurs. This Subject can be used to handle errors from\n * the stomp broker.\n */\npublic errorSubject: Subject;\n/**\n * Internal array to hold locally queued messages when STOMP broker is not connected.\n */\nprotected queuedMessages: {queueName: string, message: string, headers: StompHeaders}[]= [];\n/**\n * Configuration\n */\nprivate _config: StompConfig;\n/**\n * STOMP Client from \\@stomp/stomp.js\n */\nprotected client: Stomp.Client;\n/**\n * Constructor\n * \n * See README and samples for configuration examples\n */\npublic constructor() {\n this.state = new BehaviorSubject(StompState.CLOSED);\n\n this.connectObservable = this.state\n .filter((currentState: number) => {\n return currentState === StompState.CONNECTED;\n });\n\n // Setup sending queuedMessages\n this.connectObservable.subscribe(() => {\n this.sendQueuedMessages();\n });\n\n this.errorSubject = new Subject();\n }\n/**\n * Set configuration\n * @param {?} value\n * @return {?}\n */\nset config(value: StompConfig) {\n this._config = value;\n }\n/**\n * Initialize STOMP Client\n * @return {?}\n */\nprotected initStompClient(): void {\n // disconnect if connected\n this.disconnect();\n\n // url takes precedence over socketFn\n if (typeof(this._config.url) === 'string') {\n this.client = Stomp.client(this._config.url);\n } else {\n this.client = Stomp.over(this._config.url);\n }\n\n // Configure client heart-beating\n this.client.heartbeat.incoming = this._config.heartbeat_in;\n this.client.heartbeat.outgoing = this._config.heartbeat_out;\n\n // Auto reconnect\n this.client.reconnect_delay = this._config.reconnect_delay;\n\n if (!this._config.debug) {\n this.debug = function() {};\n }\n // Set function to debug print messages\n this.client.debug = this.debug;\n }\n/**\n * Perform connection to STOMP broker\n * @return {?}\n */\npublic initAndConnect(): void {\n this.initStompClient();\n\n if (!this._config.headers) {\n this._config.headers = {};\n }\n\n // Attempt connection, passing in a callback\n this.client.connect(\n this._config.headers,\n this.on_connect,\n this.on_error\n );\n\n this.debug('Connecting...');\n this.state.next(StompState.TRYING);\n }\n/**\n * Disconnect the connection to the STOMP broker and clean up,\n * not sure how this method will get called, if ever.\n * Call this method only if you know what you are doing.\n * @return {?}\n */\npublic disconnect(): void {\n\n // Disconnect if connected. Callback will set CLOSED state\n if (this.client && this.client.connected) {\n // Notify observers that we are disconnecting!\n this.state.next(StompState.DISCONNECTING);\n\n this.client.disconnect(\n () => this.state.next(StompState.CLOSED)\n );\n }\n }\n/**\n * The current connection status with the STOMP broker\n * @return {?}\n */\npublic connected(): boolean {\n return this.state.getValue() === StompState.CONNECTED;\n }\n/**\n * Send a message to a named destination. The message must be string.\n * \n * The message will get locally queued if the STOMP broker is not connected. Attempt\n * will be made to publish queued messages as soon as the broker gets connected.\n * \n * @param {?} queueName\n * @param {?} message\n * @param {?=} headers\n * @return {?}\n */\npublic publish(queueName: string, message: string, headers: StompHeaders = {}): void {\n if (this.connected()) {\n this.client.send(queueName, headers, message);\n } else {\n this.debug(`Not connected, queueing ${message}`);\n this.queuedMessages.push({queueName: /** @type {?} */(( queueName)), message: /** @type {?} */(( message)), headers: headers});\n }\n }\n/**\n * Send queued messages\n * @return {?}\n */\nprotected sendQueuedMessages(): void {\n const /** @type {?} */ queuedMessages = this.queuedMessages;\n this.queuedMessages = [];\n\n this.debug(`Will try sending queued messages ${queuedMessages}`);\n\n for (const /** @type {?} */ queuedMessage of queuedMessages) {\n this.debug(`Attempting to send ${queuedMessage}`);\n this.publish(queuedMessage.queueName, queuedMessage.message, queuedMessage.headers);\n }\n }\n/**\n * Subscribe to server message queues\n * \n * This method can safely be called even when STOMP broker is not connected. Further\n * if the underlying STOMP connection drops and reconnects, it will resubscribe transparently.\n * \n * If a header field 'ack' is not explicitly passed, 'ack' will be set to 'auto'. If you\n * do not understand what it means, please leave it as is.\n * \n * Please note, however, while working with temporary queues, where the subscription request\n * creates the\n * underlying queue, during reconnect it might miss messages. This issue is not specific\n * to this library but the way STOMP brokers are designed to work.\n * \n * @param {?} queueName\n * @param {?=} headers\n * @return {?}\n */\npublic subscribe(queueName: string, headers: StompHeaders = {}): Observable {\n\n /* Well the logic is complicated but works beautifully. RxJS is indeed wonderful.\n *\n * We need to activate the underlying subscription immediately if Stomp is connected. If not it should\n * subscribe when it gets next connected. Further it should re establish the subscription whenever Stomp\n * successfully reconnects.\n *\n * Actual implementation is simple, we filter the BehaviourSubject 'state' so that we can trigger whenever Stomp is\n * connected. Since 'state' is a BehaviourSubject, if Stomp is already connected, it will immediately trigger.\n *\n * The observable that we return to caller remains same across all reconnects, so no special handling needed at\n * the message subscriber.\n */\n this.debug(`Request to subscribe ${queueName}`);\n\n // By default auto acknowledgement of messages\n if (!headers['ack']) {\n headers['ack'] = 'auto';\n }\n\n const /** @type {?} */ coldObservable = Observable.create(\n (messages: Observer) => {\n /*\n * These variables will be used as part of the closure and work their magic during unsubscribe\n */\n let /** @type {?} */ stompSubscription: StompSubscription;\n\n let /** @type {?} */ stompConnectedSubscription: Subscription;\n\n stompConnectedSubscription = this.connectObservable\n .subscribe(() => {\n this.debug(`Will subscribe to ${queueName}`);\n stompSubscription = this.client.subscribe(queueName, (message: Stomp.Message) => {\n messages.next(message);\n },\n headers);\n });\n\n return () => { /* cleanup function, will be called when no subscribers are left */\n this.debug(`Stop watching connection state (for ${queueName})`);\n stompConnectedSubscription.unsubscribe();\n\n if (this.state.getValue() === StompState.CONNECTED) {\n this.debug(`Will unsubscribe from ${queueName} at Stomp`);\n stompSubscription.unsubscribe();\n } else {\n this.debug(`Stomp not connected, no need to unsubscribe from ${queueName} at Stomp`);\n }\n };\n });\n\n /**\n * Important - convert it to hot Observable - otherwise, if the user code subscribes\n * to this observable twice, it will subscribe twice to Stomp broker. (This was happening in the current example).\n * A long but good explanatory article at https://medium.com/@benlesh/hot-vs-cold-observables-f8094ed53339\n */\n return coldObservable.share();\n }\n/**\n * Callback Functions\n * \n * Note the method signature: () => preserves lexical scope\n * if we need to use this.x inside the function\n */\nprotected debug = (args: any): void => {\n console.log(new Date(), args);\n }\n/**\n * Callback run on successfully connecting to server\n */\nprotected on_connect = () => {\n\n this.debug('Connected');\n\n // Indicate our connected state to observers\n this.state.next(StompState.CONNECTED);\n }\n/**\n * Handle errors from stomp.js\n */\nprotected on_error = (error: string | Stomp.Message) => {\n\n // Trigger the error subject\n this.errorSubject.next(error);\n\n if (typeof error === 'object') {\n error = (error).body;\n }\n\n this.debug(`Error: ${error}`);\n\n // Check for dropped connection and try reconnecting\n if (!this.client.connected) {\n // Reset state indicator\n this.state.next(StompState.CLOSED);\n }\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction StompRService_tsickle_Closure_declarations() {\n/** @type {?} */\nStompRService.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompRService.ctorParameters;\n/**\n * State of the STOMPService\n * \n * It is a BehaviorSubject and will emit current status immediately. This will typically get\n * used to show current status to the end user.\n * @type {?}\n */\nStompRService.prototype.state;\n/**\n * Will trigger when connection is established. Use this to carry out initialization.\n * It will trigger every time a (re)connection occurs. If it is already connected\n * it will trigger immediately. You can safely ignore the value, as it will always be\n * StompState.CONNECTED\n * @type {?}\n */\nStompRService.prototype.connectObservable;\n/**\n * Will trigger when an error occurs. This Subject can be used to handle errors from\n * the stomp broker.\n * @type {?}\n */\nStompRService.prototype.errorSubject;\n/**\n * Internal array to hold locally queued messages when STOMP broker is not connected.\n * @type {?}\n */\nStompRService.prototype.queuedMessages;\n/**\n * Configuration\n * @type {?}\n */\nStompRService.prototype._config;\n/**\n * STOMP Client from \\@stomp/stomp.js\n * @type {?}\n */\nStompRService.prototype.client;\n/**\n * Callback Functions\n * \n * Note the method signature: () => preserves lexical scope\n * if we need to use this.x inside the function\n * @type {?}\n */\nStompRService.prototype.debug;\n/**\n * Callback run on successfully connecting to server\n * @type {?}\n */\nStompRService.prototype.on_connect;\n/**\n * Handle errors from stomp.js\n * @type {?}\n */\nStompRService.prototype.on_error;\n}\n\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n", + "\nexport type StompState = number;\nexport let StompState: any = {};\nStompState.CLOSED = 0;\nStompState.TRYING = 1;\nStompState.CONNECTED = 2;\nStompState.DISCONNECTING = 3;\nStompState[StompState.CLOSED] = \"CLOSED\";\nStompState[StompState.TRYING] = \"TRYING\";\nStompState[StompState.CONNECTED] = \"CONNECTED\";\nStompState[StompState.DISCONNECTING] = \"DISCONNECTING\";\n\n" + ], + "names": [ + "Observable", + "Stomp.over", + "Stomp.client", + "Subject", + "BehaviorSubject" + ], + "mappings": ";;;;;;;;;;;;;;;;;AIEO,IAAI,UAAU,GAAQ,EAAE,CAAC;AAChC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;AACzB,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7B,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACzC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACzC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;AAC/C,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,eAAe,CAAC;ADMvD;;;;;;;;;;;;AAYA;;;;;;IAqCA;QAAA,iBAcG;;;;QAvBA,IAAH,CAAA,cAAG,GAAA,EAAA,CAAA;;;;;;;QAsOA,IAAH,CAAA,KAAG,GAAA,UAAA,IAAA;YANG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACpC,CAAG,CAAA;;;;QAUA,IAAH,CAAA,UAAG,GAAA;YAJC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;;YAGxB,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAG,CAAA;;;;QASA,IAAH,CAAA,QAAG,GAAA,UAAA,KAAA;;YAFC,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE9B,EAAJ,CAAA,CAAQ,OAAO,KAAK,KAAK,QAAQ,CAAjC,CAAmC,CAAnC;gBACM,KAAK,GAAmB,KAAM,CAAC,IAAI,CAAC;YAC1C,CAAK;YAED,KAAI,CAAC,KAAK,CAAC,YAAU,KAAO,CAAC,CAAC;;YAG9B,EAAJ,CAAA,CAAQ,CAAC,KAAI,CAAC,MAAM,CAAC,SAAS,CAA9B,CAAgC,CAAhC;;gBAEM,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACzC,CAAK;QACL,CAAG,CAAA;QArPC,IAAI,CAAC,KAAK,GAAG,IAAII,iBAAe,CAAa,UAAU,CAAC,MAAM,CAAC,CAAC;QAEhE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK;aAChC,MAAM,CAAC,UAAC,YAAoB;YAC3B,MAAR,CAAe,YAAY,KAAK,UAAU,CAAC,SAAS,CAAC;QACrD,CAAO,CAAC,CAAC;;QAGL,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC/B,KAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,CAAK,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,IAAID,SAAO,EAAE,CAAC;IACtC,CAAG;IAMH,sBAKG,iCAAA;;;;;;aALH,UAKG,KAAA;YAJC,IAAI,CAKC,OAAC,GAAS,KAAA,CAAM;QAJzB,CAAG;;;OAAA;;;;;IAQA,uCAAA,GAAA;;QADC,IAAI,CAGC,UAAC,EAAU,CAAE;;QAAlB,EAAJ,CAAA,CAAQ,OAAR,CAGe,IAAC,CAAI,OAAC,CAAO,GAAC,CAAG,KAAK,QAAA,CAHrC,CAG+C,CAH/C;YACM,IAAI,CAGC,MAAC,GAAQD,MAAO,CAAM,IAAC,CAAI,OAAC,CAAO,GAAC,CAAG,CAAC;QAFnD,CAAK;QAGL,IAAA,CAAW,CAAX;YAFM,IAAI,CAGC,MAAC,GAAQD,IAAO,CAAI,IAAC,CAAI,OAAC,CAAO,GAAC,CAAG,CAAC;QAFjD,CAAK;;QAGD,IAAI,CAGC,MAAC,CAAM,SAAC,CAAS,QAAC,GAAU,IAAA,CAAK,OAAC,CAAO,YAAC,CAAY;QAF3D,IAAI,CAGC,MAAC,CAAM,SAAC,CAAS,QAAC,GAAU,IAAA,CAAK,OAAC,CAAO,aAAC,CAAa;;QAA5D,IAAI,CAGC,MAAC,CAAM,eAAC,GAAiB,IAAA,CAAK,OAAC,CAAO,eAAC,CAAe;QAD3D,EAAJ,CAAA,CAAQ,CAGC,IAAC,CAAI,OAAC,CAAO,KAAC,CAHvB,CAG6B,CAH7B;YACM,IAAI,CAGC,KAAC,GAAO,cAHnB,CAG8B,CAAG;QAFjC,CAAK;;QAED,IAAI,CAGC,MAAC,CAAM,KAAC,GAAO,IAAA,CAAK,KAAC,CAAK;IAFnC,CAAG;;;;;IASA,sCAAA,GAAA;QAHC,IAAI,CAIC,eAAC,EAAe,CAAE;QAFvB,EAAJ,CAAA,CAAQ,CAIC,IAAC,CAAI,OAAC,CAAO,OAAC,CAJvB,CAI+B,CAJ/B;YACM,IAAI,CAIC,OAAC,CAAO,OAAC,GAAS,EAAA,CAAG;QAHhC,CAAK;;QAGD,IAAI,CAIC,MAAC,CAAM,OAAC,CAHX,IAAI,CAIC,OAAC,CAAO,OAAC,EAHd,IAAI,CAIC,UAAC,EAHN,IAAI,CAIC,QAAC,CAHP,CAIC;QAFF,IAAI,CAIC,KAAC,CAAK,eAAC,CAAe,CAAC;QAH5B,IAAI,CAIC,KAAC,CAAK,IAAC,CAAI,UAAC,CAAU,MAAC,CAAM,CAAC;IAHvC,CAAG;;;;;;;IAYA,kCAAA,GAAA;QAAA,iBAMA;;QARC,EAAJ,CAAA,CAAQ,IAKC,CAAI,MAAC,IAAS,IAAA,CAAK,MAAC,CAAM,SAAC,CALpC,CAK8C,CAL9C;;YAEM,IAAI,CAKC,KAAC,CAAK,IAAC,CAAI,UAAC,CAAU,aAAC,CAAa,CAAC;YAH1C,IAAI,CAKC,MAAC,CAAM,UAAC,CAJX,cAKM,OAAA,KAAA,CAAK,KAAC,CAAK,IAAC,CAAI,UAAC,CAAU,MAAC,CAAM,EAAlC,CAAkC,CAJzC,CAKC;QAJR,CAAK;IACL,CAAG;;;;;IAWA,iCAAA,GAAA;QALC,MAAJ,CAMW,IAAA,CAAK,KAAC,CAAK,QAAC,EAAQ,KAAM,UAAA,CAAW,SAAC,CAAS;IAL1D,CAAG;;;;;;;;;;;;IAkBA,+BAAA,GAAA,UAAA,SAAA,EAAA,OAAA,EAAA,OAAA;QAAA,wBAAA,EAAA,YAAA;QALC,EAAJ,CAAA,CAAQ,IAMC,CAAI,SAAC,EAAS,CANvB,CAM0B,CAN1B;YACM,IAAI,CAMC,MAAC,CAAM,IAAC,CAAI,SAAC,EAAU,OAAA,EAAS,OAAA,CAAQ,CAAC;QALpD,CAAK;QAML,IAAA,CAAW,CAAX;YALM,IAAI,CAMC,KAAC,CAAK,6BAAC,OAAkC,CAAE,CAAC;YALjD,IAAI,CAMC,cAAC,CAAc,IAAC,CAAI,EAAC,SAAC,EANjC,gBAAA,CAAA,CAMmD,SAAC,CAAA,EAAU,OAAA,EAN9D,gBAAA,CAAA,CAM+E,OAAC,CAAA,EAAQ,OAAA,EAAS,OAAA,EAAQ,CAAC,CAAC;QAL3G,CAAK;IACL,CAAG;;;;;IASA,0CAAA,GAAA;QAHC,IAAJ,gBAAA,CAIU,cAAA,GAAiB,IAAA,CAAK,cAAC,CAAc;QAH3C,IAAI,CAIC,cAAC,GAAgB,EAAA,CAAG;QAFzB,IAAI,CAIC,KAAC,CAAK,sCAAC,cAAkD,CAAE,CAAC;QAFjE,GAAJ,CAAA,CAIgC,UAAA,EAAA,iCAAA,EAAA,4BAAA,EAAA,IAAA;YAJvB,IAIM,aAAA,uBAAA;YAHT,IAAI,CAIC,KAAC,CAAK,wBAAC,aAAmC,CAAE,CAAC;YAHlD,IAAI,CAIC,OAAC,CAAO,aAAC,CAAa,SAAC,EAAU,aAAA,CAAc,OAAC,EAAQ,aAAA,CAAc,OAAC,CAAO,CAAC;SAHrF;IACL,CAAG;;;;;;;;;;;;;;;;;;;IAwBA,iCAAA,GAAA,UAAA,SAAA,EAAA,OAAA;QAAA,iBAqDA;QArDA,wBAAA,EAAA,YAAA;;;;;;;;;;;;;QASC,IAAI,CAKC,KAAC,CAAK,0BAAC,SAAiC,CAAE,CAAC;;QAFhD,EAAJ,CAAA,CAAQ,CAKC,OAAC,CAAO,KAAC,CAAK,CALvB,CAKyB,CALzB;YACM,OAAO,CAKC,KAAC,CAAK,GAAG,MAAA,CAAO;QAJ9B,CAAK;QAED,IAAJ,gBAAA,CAKU,cAAA,GAAiBD,YAAA,CAAW,MAAC,CAJjC,UAAC,QAKiC;;;;YADhC,IAAR,gBAAA,CAKY,iBAAmB,CAAkB;YAHzC,IAAR,gBAAA,CAKY,0BAA4B,CAAa;YAH7C,0BAA0B,GAKG,KAAA,CAAK,iBAAC;iBAJhC,SAKC,CAAS;gBAJT,KAAI,CAKC,KAAC,CAAK,uBAAC,SAA8B,CAAE,CAAC;gBAJ7C,iBAAiB,GAKG,KAAA,CAAK,MAAC,CAAM,SAAC,CAAS,SAAC,EAAU,UAAA,OAAiB;oBAJlE,QAAQ,CAKC,IAAC,CAAI,OAAC,CAAO,CAAC;gBAJvC,CAAe,EACD,OAAO,CAKC,CAAC;YAJvB,CAAW,CAKC,CAAC;YAHL,MAAR,CAKe;gBAJL,KAAI,CAKC,KAAC,CAAK,yCAAC,SAAuC,MAAS,CAAG,CAAC;gBAJhE,0BAA0B,CAKC,WAAC,EAAW,CAAE;gBAHzC,EAAV,CAAA,CAAc,KAKC,CAAI,KAAC,CAAK,QAAC,EAAQ,KAAM,UAAA,CAAW,SAAC,CALpD,CAK8D,CAL9D;oBACY,KAAI,CAKC,KAAC,CAAK,2BAAC,SAAyB,cAAS,CAAW,CAAC;oBAJ1D,iBAAiB,CAKC,WAAC,EAAW,CAAE;gBAJ5C,CAAW;gBAKX,IAAA,CAAiB,CAAjB;oBAJY,KAAI,CAKC,KAAC,CAAK,sDAAC,SAAoD,cAAS,CAAW,CAAC;gBAJjG,CAAW;YACX,CAAS,CAKC;QAJV,CAAO,CAKC,CAAC;;;;;;QAEL,MAAJ,CAKW,cAAA,CAAe,KAAC,EAAK,CAAE;IAJlC,CAAG;;CApPH;AAiSO,aAAP,CAAA,UAAO,GAAoC;IAJ3C,EAKE,IAAA,EAAM,UAAA,EAAW;CAJlB,CAKC;;;;AAED,aAAD,CAAA,cAAC,GAAA,cAAA,OAAA,EAFA,EAEA,CAFA,CAAC;AD7TF;;;;AAIA;IAAA;;;CAAA;AAmDO,WAAP,CAAA,UAAO,GAAoC;IAH3C,EAIE,IAAA,EAAM,UAAA,EAAW;CAHlB,CAIC;;;;AAED,WAAD,CAAA,cAAC,GAAA,cAAA,OAAA,EADA,EACA,CADA,CAAC;ADvDF;;;;;;;;;;;;AAYA;IAEC,gCAAA;;;;;;;IAKD,sBAEG,MAA0B;QAF7B,YACI,iBAAO,SAIR;QAFC,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAI,CAAC,cAAc,EAAE,CAAC;;IAC1B,CAAG;;CAZH,CAEC,aAAA;AAaM,YAAP,CAAA,UAAO,GAAoC;IAD3C,EAEE,IAAA,EAAM,UAAA,EAAW;CADlB,CAEC;;;;AAED,YAAD,CAAA,cAAC,GAAA,cAAA,OAAA;IACD,EAAC,IAAI,EAAE,WAAW,GAAG;CACpB,EAFA,CAEA,CAAC;ADtCF;;GAEG;" +} diff --git a/dist/@stomp/ng2-stompjs.js b/dist/@stomp/ng2-stompjs.js new file mode 100644 index 0000000..95ba6d6 --- /dev/null +++ b/dist/@stomp/ng2-stompjs.js @@ -0,0 +1,318 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject as BehaviorSubject$1 } from 'rxjs/BehaviorSubject'; +import { Observable as Observable$1 } from 'rxjs/Observable'; +import { Subject as Subject$1 } from 'rxjs/Subject'; +import 'rxjs/add/operator/filter'; +import 'rxjs/add/operator/share'; +import { client, over } from '@stomp/stompjs/index'; + +let StompState = {}; +StompState.CLOSED = 0; +StompState.TRYING = 1; +StompState.CONNECTED = 2; +StompState.DISCONNECTING = 3; +StompState[StompState.CLOSED] = "CLOSED"; +StompState[StompState.TRYING] = "TRYING"; +StompState[StompState.CONNECTED] = "CONNECTED"; +StompState[StompState.DISCONNECTING] = "DISCONNECTING"; + +/** + * Angular2 STOMP Raw Service using \@stomp/stomp.js + * + * \@description This service handles subscribing to a + * message queue using the stomp.js library, and returns + * values via the ES6 Observable specification for + * asynchronous value streaming by wiring the STOMP + * messages into an observable. + * + * If you will like to pass the configuration as a dependency, + * please use StompService class. + */ +class StompRService { + /** + * Constructor + * + * See README and samples for configuration examples + */ + constructor() { + /** + * Internal array to hold locally queued messages when STOMP broker is not connected. + */ + this.queuedMessages = []; + /** + * Callback Functions + * + * Note the method signature: () => preserves lexical scope + * if we need to use this.x inside the function + */ + this.debug = (args) => { + console.log(new Date(), args); + }; + /** + * Callback run on successfully connecting to server + */ + this.on_connect = () => { + this.debug('Connected'); + // Indicate our connected state to observers + this.state.next(StompState.CONNECTED); + }; + /** + * Handle errors from stomp.js + */ + this.on_error = (error) => { + // Trigger the error subject + this.errorSubject.next(error); + if (typeof error === 'object') { + error = error.body; + } + this.debug(`Error: ${error}`); + // Check for dropped connection and try reconnecting + if (!this.client.connected) { + // Reset state indicator + this.state.next(StompState.CLOSED); + } + }; + this.state = new BehaviorSubject$1(StompState.CLOSED); + this.connectObservable = this.state + .filter((currentState) => { + return currentState === StompState.CONNECTED; + }); + // Setup sending queuedMessages + this.connectObservable.subscribe(() => { + this.sendQueuedMessages(); + }); + this.errorSubject = new Subject$1(); + } + /** + * Set configuration + * @param {?} value + * @return {?} + */ + set config(value) { + this._config = value; + } + /** + * Initialize STOMP Client + * @return {?} + */ + initStompClient() { + // disconnect if connected + this.disconnect(); + // url takes precedence over socketFn + if (typeof (this._config.url) === 'string') { + this.client = client(this._config.url); + } + else { + this.client = over(this._config.url); + } + // Configure client heart-beating + this.client.heartbeat.incoming = this._config.heartbeat_in; + this.client.heartbeat.outgoing = this._config.heartbeat_out; + // Auto reconnect + this.client.reconnect_delay = this._config.reconnect_delay; + if (!this._config.debug) { + this.debug = function () { }; + } + // Set function to debug print messages + this.client.debug = this.debug; + } + /** + * Perform connection to STOMP broker + * @return {?} + */ + initAndConnect() { + this.initStompClient(); + if (!this._config.headers) { + this._config.headers = {}; + } + // Attempt connection, passing in a callback + this.client.connect(this._config.headers, this.on_connect, this.on_error); + this.debug('Connecting...'); + this.state.next(StompState.TRYING); + } + /** + * Disconnect the connection to the STOMP broker and clean up, + * not sure how this method will get called, if ever. + * Call this method only if you know what you are doing. + * @return {?} + */ + disconnect() { + // Disconnect if connected. Callback will set CLOSED state + if (this.client && this.client.connected) { + // Notify observers that we are disconnecting! + this.state.next(StompState.DISCONNECTING); + this.client.disconnect(() => this.state.next(StompState.CLOSED)); + } + } + /** + * The current connection status with the STOMP broker + * @return {?} + */ + connected() { + return this.state.getValue() === StompState.CONNECTED; + } + /** + * Send a message to a named destination. The message must be string. + * + * The message will get locally queued if the STOMP broker is not connected. Attempt + * will be made to publish queued messages as soon as the broker gets connected. + * + * @param {?} queueName + * @param {?} message + * @param {?=} headers + * @return {?} + */ + publish(queueName, message, headers = {}) { + if (this.connected()) { + this.client.send(queueName, headers, message); + } + else { + this.debug(`Not connected, queueing ${message}`); + this.queuedMessages.push({ queueName: /** @type {?} */ (queueName), message: /** @type {?} */ (message), headers: headers }); + } + } + /** + * Send queued messages + * @return {?} + */ + sendQueuedMessages() { + const /** @type {?} */ queuedMessages = this.queuedMessages; + this.queuedMessages = []; + this.debug(`Will try sending queued messages ${queuedMessages}`); + for (const /** @type {?} */ queuedMessage of queuedMessages) { + this.debug(`Attempting to send ${queuedMessage}`); + this.publish(queuedMessage.queueName, queuedMessage.message, queuedMessage.headers); + } + } + /** + * Subscribe to server message queues + * + * This method can safely be called even when STOMP broker is not connected. Further + * if the underlying STOMP connection drops and reconnects, it will resubscribe transparently. + * + * If a header field 'ack' is not explicitly passed, 'ack' will be set to 'auto'. If you + * do not understand what it means, please leave it as is. + * + * Please note, however, while working with temporary queues, where the subscription request + * creates the + * underlying queue, during reconnect it might miss messages. This issue is not specific + * to this library but the way STOMP brokers are designed to work. + * + * @param {?} queueName + * @param {?=} headers + * @return {?} + */ + subscribe(queueName, headers = {}) { + /* Well the logic is complicated but works beautifully. RxJS is indeed wonderful. + * + * We need to activate the underlying subscription immediately if Stomp is connected. If not it should + * subscribe when it gets next connected. Further it should re establish the subscription whenever Stomp + * successfully reconnects. + * + * Actual implementation is simple, we filter the BehaviourSubject 'state' so that we can trigger whenever Stomp is + * connected. Since 'state' is a BehaviourSubject, if Stomp is already connected, it will immediately trigger. + * + * The observable that we return to caller remains same across all reconnects, so no special handling needed at + * the message subscriber. + */ + this.debug(`Request to subscribe ${queueName}`); + // By default auto acknowledgement of messages + if (!headers['ack']) { + headers['ack'] = 'auto'; + } + const /** @type {?} */ coldObservable = Observable$1.create((messages) => { + /* + * These variables will be used as part of the closure and work their magic during unsubscribe + */ + let /** @type {?} */ stompSubscription; + let /** @type {?} */ stompConnectedSubscription; + stompConnectedSubscription = this.connectObservable + .subscribe(() => { + this.debug(`Will subscribe to ${queueName}`); + stompSubscription = this.client.subscribe(queueName, (message) => { + messages.next(message); + }, headers); + }); + return () => { + this.debug(`Stop watching connection state (for ${queueName})`); + stompConnectedSubscription.unsubscribe(); + if (this.state.getValue() === StompState.CONNECTED) { + this.debug(`Will unsubscribe from ${queueName} at Stomp`); + stompSubscription.unsubscribe(); + } + else { + this.debug(`Stomp not connected, no need to unsubscribe from ${queueName} at Stomp`); + } + }; + }); + /** + * Important - convert it to hot Observable - otherwise, if the user code subscribes + * to this observable twice, it will subscribe twice to Stomp broker. (This was happening in the current example). + * A long but good explanatory article at https://medium.com/@benlesh/hot-vs-cold-observables-f8094ed53339 + */ + return coldObservable.share(); + } +} +StompRService.decorators = [ + { type: Injectable }, +]; +/** + * @nocollapse + */ +StompRService.ctorParameters = () => []; + +/** + * Represents a configuration object for the + * STOMPService to connect to. + */ +class StompConfig { +} +StompConfig.decorators = [ + { type: Injectable }, +]; +/** + * @nocollapse + */ +StompConfig.ctorParameters = () => []; + +/** + * Angular2 STOMP Service using \@stomp/stomp.js + * + * \@description This service handles subscribing to a + * message queue using the stomp.js library, and returns + * values via the ES6 Observable specification for + * asynchronous value streaming by wiring the STOMP + * messages into an observable. + * + * If you want to manually configure and initialize the service + * please use StompRService + */ +class StompService extends StompRService { + /** + * Constructor + * + * See README and samples for configuration examples + * @param {?} config + */ + constructor(config) { + super(); + this.config = config; + this.initAndConnect(); + } +} +StompService.decorators = [ + { type: Injectable }, +]; +/** + * @nocollapse + */ +StompService.ctorParameters = () => [ + { type: StompConfig, }, +]; + +/** + * Generated bundle index. Do not edit. + */ + +export { StompRService, StompService, StompState, StompConfig }; +//# sourceMappingURL=ng2-stompjs.js.map diff --git a/dist/@stomp/ng2-stompjs.js.map b/dist/@stomp/ng2-stompjs.js.map new file mode 100644 index 0000000..0db0907 --- /dev/null +++ b/dist/@stomp/ng2-stompjs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ng2-stompjs.js","sources":["~/@stomp/ng2-stompjs/ng2-stompjs.ts","~/@stomp/ng2-stompjs/src/stomp.service.ts","~/@stomp/ng2-stompjs/src/stomp.config.ts","~/@stomp/ng2-stompjs/src/stomp-r.service.ts","~/@stomp/ng2-stompjs/src/stomp-state.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport {StompRService,StompService,StompState,StompConfig} from './index';\n","import { Injectable } from '@angular/core';\n\nimport { StompConfig } from './stomp.config';\n\nimport { StompRService } from './stomp-r.service';\n/**\n * Angular2 STOMP Service using \\@stomp/stomp.js\n * \n * \\@description This service handles subscribing to a\n * message queue using the stomp.js library, and returns\n * values via the ES6 Observable specification for\n * asynchronous value streaming by wiring the STOMP\n * messages into an observable.\n * \n * If you want to manually configure and initialize the service\n * please use StompRService\n */\nexport class StompService extends StompRService {\n/**\n * Constructor\n * \n * See README and samples for configuration examples\n * @param {?} config\n */\npublic constructor(config: StompConfig) {\n super();\n\n this.config = config;\n this.initAndConnect();\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: StompConfig, },\n];\n}\n\nfunction StompService_tsickle_Closure_declarations() {\n/** @type {?} */\nStompService.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompService.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","import { StompHeaders } from './stomp-headers';\nimport { Injectable } from '@angular/core';\n/**\n * Represents a configuration object for the\n * STOMPService to connect to.\n */\nexport class StompConfig {\n/**\n * Server URL to connect to. Please refer to your STOMP broker documentation for details.\n * \n * Example: ws://127.0.0.1:15674/ws (for a RabbitMQ default setup running on localhost)\n * \n * Alternatively this parameter can be a function that returns an object similar to WebSocket\n * (typically SockJS instance).\n * \n * Example:\n * \n * () => {\n * return new SockJS('http://127.0.0.1:15674/stomp');\n * }\n */\nurl: string | (() => any);\n/**\n * Headers\n * Typical keys: login: string, passcode: string.\n * host:string will neeed to be passed for virtual hosts in RabbitMQ\n */\nheaders: StompHeaders;\n/**\n * How often to incoming heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 0 - disabled\n */\nheartbeat_in: number;\n/**\n * How often to outgoing heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 20000 - every 20 seconds\n */\nheartbeat_out: number;\n/**\n * Wait in milliseconds before attempting auto reconnect\n * Set to 0 to disable\n * \n * Typical value 5000 (5 seconds)\n */\nreconnect_delay: number;\n/**\n * Enable client debugging?\n */\ndebug: boolean;\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction StompConfig_tsickle_Closure_declarations() {\n/** @type {?} */\nStompConfig.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompConfig.ctorParameters;\n/**\n * Server URL to connect to. Please refer to your STOMP broker documentation for details.\n * \n * Example: ws://127.0.0.1:15674/ws (for a RabbitMQ default setup running on localhost)\n * \n * Alternatively this parameter can be a function that returns an object similar to WebSocket\n * (typically SockJS instance).\n * \n * Example:\n * \n * () => {\n * return new SockJS('http://127.0.0.1:15674/stomp');\n * }\n * @type {?}\n */\nStompConfig.prototype.url;\n/**\n * Headers\n * Typical keys: login: string, passcode: string.\n * host:string will neeed to be passed for virtual hosts in RabbitMQ\n * @type {?}\n */\nStompConfig.prototype.headers;\n/**\n * How often to incoming heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 0 - disabled\n * @type {?}\n */\nStompConfig.prototype.heartbeat_in;\n/**\n * How often to outgoing heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 20000 - every 20 seconds\n * @type {?}\n */\nStompConfig.prototype.heartbeat_out;\n/**\n * Wait in milliseconds before attempting auto reconnect\n * Set to 0 to disable\n * \n * Typical value 5000 (5 seconds)\n * @type {?}\n */\nStompConfig.prototype.reconnect_delay;\n/**\n * Enable client debugging?\n * @type {?}\n */\nStompConfig.prototype.debug;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { Observable } from 'rxjs/Observable';\nimport { Observer } from 'rxjs/Observer';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport'rxjs/add/operator/filter';\nimport'rxjs/add/operator/share';\n\nimport { StompConfig } from './stomp.config';\n\nimport * as Stomp from '@stomp/stompjs/index';\nimport { StompSubscription } from '@stomp/stompjs/index';\nimport { StompHeaders } from './stomp-headers';\nimport { StompState } from './stomp-state';\n/**\n * Angular2 STOMP Raw Service using \\@stomp/stomp.js\n * \n * \\@description This service handles subscribing to a\n * message queue using the stomp.js library, and returns\n * values via the ES6 Observable specification for\n * asynchronous value streaming by wiring the STOMP\n * messages into an observable.\n * \n * If you will like to pass the configuration as a dependency,\n * please use StompService class.\n */\nexport class StompRService {\n/**\n * State of the STOMPService\n * \n * It is a BehaviorSubject and will emit current status immediately. This will typically get\n * used to show current status to the end user.\n */\npublic state: BehaviorSubject;\n/**\n * Will trigger when connection is established. Use this to carry out initialization.\n * It will trigger every time a (re)connection occurs. If it is already connected\n * it will trigger immediately. You can safely ignore the value, as it will always be\n * StompState.CONNECTED\n */\npublic connectObservable: Observable;\n/**\n * Will trigger when an error occurs. This Subject can be used to handle errors from\n * the stomp broker.\n */\npublic errorSubject: Subject;\n/**\n * Internal array to hold locally queued messages when STOMP broker is not connected.\n */\nprotected queuedMessages: {queueName: string, message: string, headers: StompHeaders}[]= [];\n/**\n * Configuration\n */\nprivate _config: StompConfig;\n/**\n * STOMP Client from \\@stomp/stomp.js\n */\nprotected client: Stomp.Client;\n/**\n * Constructor\n * \n * See README and samples for configuration examples\n */\npublic constructor() {\n this.state = new BehaviorSubject(StompState.CLOSED);\n\n this.connectObservable = this.state\n .filter((currentState: number) => {\n return currentState === StompState.CONNECTED;\n });\n\n // Setup sending queuedMessages\n this.connectObservable.subscribe(() => {\n this.sendQueuedMessages();\n });\n\n this.errorSubject = new Subject();\n }\n/**\n * Set configuration\n * @param {?} value\n * @return {?}\n */\nset config(value: StompConfig) {\n this._config = value;\n }\n/**\n * Initialize STOMP Client\n * @return {?}\n */\nprotected initStompClient(): void {\n // disconnect if connected\n this.disconnect();\n\n // url takes precedence over socketFn\n if (typeof(this._config.url) === 'string') {\n this.client = Stomp.client(this._config.url);\n } else {\n this.client = Stomp.over(this._config.url);\n }\n\n // Configure client heart-beating\n this.client.heartbeat.incoming = this._config.heartbeat_in;\n this.client.heartbeat.outgoing = this._config.heartbeat_out;\n\n // Auto reconnect\n this.client.reconnect_delay = this._config.reconnect_delay;\n\n if (!this._config.debug) {\n this.debug = function() {};\n }\n // Set function to debug print messages\n this.client.debug = this.debug;\n }\n/**\n * Perform connection to STOMP broker\n * @return {?}\n */\npublic initAndConnect(): void {\n this.initStompClient();\n\n if (!this._config.headers) {\n this._config.headers = {};\n }\n\n // Attempt connection, passing in a callback\n this.client.connect(\n this._config.headers,\n this.on_connect,\n this.on_error\n );\n\n this.debug('Connecting...');\n this.state.next(StompState.TRYING);\n }\n/**\n * Disconnect the connection to the STOMP broker and clean up,\n * not sure how this method will get called, if ever.\n * Call this method only if you know what you are doing.\n * @return {?}\n */\npublic disconnect(): void {\n\n // Disconnect if connected. Callback will set CLOSED state\n if (this.client && this.client.connected) {\n // Notify observers that we are disconnecting!\n this.state.next(StompState.DISCONNECTING);\n\n this.client.disconnect(\n () => this.state.next(StompState.CLOSED)\n );\n }\n }\n/**\n * The current connection status with the STOMP broker\n * @return {?}\n */\npublic connected(): boolean {\n return this.state.getValue() === StompState.CONNECTED;\n }\n/**\n * Send a message to a named destination. The message must be string.\n * \n * The message will get locally queued if the STOMP broker is not connected. Attempt\n * will be made to publish queued messages as soon as the broker gets connected.\n * \n * @param {?} queueName\n * @param {?} message\n * @param {?=} headers\n * @return {?}\n */\npublic publish(queueName: string, message: string, headers: StompHeaders = {}): void {\n if (this.connected()) {\n this.client.send(queueName, headers, message);\n } else {\n this.debug(`Not connected, queueing ${message}`);\n this.queuedMessages.push({queueName: /** @type {?} */(( queueName)), message: /** @type {?} */(( message)), headers: headers});\n }\n }\n/**\n * Send queued messages\n * @return {?}\n */\nprotected sendQueuedMessages(): void {\n const /** @type {?} */ queuedMessages = this.queuedMessages;\n this.queuedMessages = [];\n\n this.debug(`Will try sending queued messages ${queuedMessages}`);\n\n for (const /** @type {?} */ queuedMessage of queuedMessages) {\n this.debug(`Attempting to send ${queuedMessage}`);\n this.publish(queuedMessage.queueName, queuedMessage.message, queuedMessage.headers);\n }\n }\n/**\n * Subscribe to server message queues\n * \n * This method can safely be called even when STOMP broker is not connected. Further\n * if the underlying STOMP connection drops and reconnects, it will resubscribe transparently.\n * \n * If a header field 'ack' is not explicitly passed, 'ack' will be set to 'auto'. If you\n * do not understand what it means, please leave it as is.\n * \n * Please note, however, while working with temporary queues, where the subscription request\n * creates the\n * underlying queue, during reconnect it might miss messages. This issue is not specific\n * to this library but the way STOMP brokers are designed to work.\n * \n * @param {?} queueName\n * @param {?=} headers\n * @return {?}\n */\npublic subscribe(queueName: string, headers: StompHeaders = {}): Observable {\n\n /* Well the logic is complicated but works beautifully. RxJS is indeed wonderful.\n *\n * We need to activate the underlying subscription immediately if Stomp is connected. If not it should\n * subscribe when it gets next connected. Further it should re establish the subscription whenever Stomp\n * successfully reconnects.\n *\n * Actual implementation is simple, we filter the BehaviourSubject 'state' so that we can trigger whenever Stomp is\n * connected. Since 'state' is a BehaviourSubject, if Stomp is already connected, it will immediately trigger.\n *\n * The observable that we return to caller remains same across all reconnects, so no special handling needed at\n * the message subscriber.\n */\n this.debug(`Request to subscribe ${queueName}`);\n\n // By default auto acknowledgement of messages\n if (!headers['ack']) {\n headers['ack'] = 'auto';\n }\n\n const /** @type {?} */ coldObservable = Observable.create(\n (messages: Observer) => {\n /*\n * These variables will be used as part of the closure and work their magic during unsubscribe\n */\n let /** @type {?} */ stompSubscription: StompSubscription;\n\n let /** @type {?} */ stompConnectedSubscription: Subscription;\n\n stompConnectedSubscription = this.connectObservable\n .subscribe(() => {\n this.debug(`Will subscribe to ${queueName}`);\n stompSubscription = this.client.subscribe(queueName, (message: Stomp.Message) => {\n messages.next(message);\n },\n headers);\n });\n\n return () => { /* cleanup function, will be called when no subscribers are left */\n this.debug(`Stop watching connection state (for ${queueName})`);\n stompConnectedSubscription.unsubscribe();\n\n if (this.state.getValue() === StompState.CONNECTED) {\n this.debug(`Will unsubscribe from ${queueName} at Stomp`);\n stompSubscription.unsubscribe();\n } else {\n this.debug(`Stomp not connected, no need to unsubscribe from ${queueName} at Stomp`);\n }\n };\n });\n\n /**\n * Important - convert it to hot Observable - otherwise, if the user code subscribes\n * to this observable twice, it will subscribe twice to Stomp broker. (This was happening in the current example).\n * A long but good explanatory article at https://medium.com/@benlesh/hot-vs-cold-observables-f8094ed53339\n */\n return coldObservable.share();\n }\n/**\n * Callback Functions\n * \n * Note the method signature: () => preserves lexical scope\n * if we need to use this.x inside the function\n */\nprotected debug = (args: any): void => {\n console.log(new Date(), args);\n }\n/**\n * Callback run on successfully connecting to server\n */\nprotected on_connect = () => {\n\n this.debug('Connected');\n\n // Indicate our connected state to observers\n this.state.next(StompState.CONNECTED);\n }\n/**\n * Handle errors from stomp.js\n */\nprotected on_error = (error: string | Stomp.Message) => {\n\n // Trigger the error subject\n this.errorSubject.next(error);\n\n if (typeof error === 'object') {\n error = (error).body;\n }\n\n this.debug(`Error: ${error}`);\n\n // Check for dropped connection and try reconnecting\n if (!this.client.connected) {\n // Reset state indicator\n this.state.next(StompState.CLOSED);\n }\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction StompRService_tsickle_Closure_declarations() {\n/** @type {?} */\nStompRService.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompRService.ctorParameters;\n/**\n * State of the STOMPService\n * \n * It is a BehaviorSubject and will emit current status immediately. This will typically get\n * used to show current status to the end user.\n * @type {?}\n */\nStompRService.prototype.state;\n/**\n * Will trigger when connection is established. Use this to carry out initialization.\n * It will trigger every time a (re)connection occurs. If it is already connected\n * it will trigger immediately. You can safely ignore the value, as it will always be\n * StompState.CONNECTED\n * @type {?}\n */\nStompRService.prototype.connectObservable;\n/**\n * Will trigger when an error occurs. This Subject can be used to handle errors from\n * the stomp broker.\n * @type {?}\n */\nStompRService.prototype.errorSubject;\n/**\n * Internal array to hold locally queued messages when STOMP broker is not connected.\n * @type {?}\n */\nStompRService.prototype.queuedMessages;\n/**\n * Configuration\n * @type {?}\n */\nStompRService.prototype._config;\n/**\n * STOMP Client from \\@stomp/stomp.js\n * @type {?}\n */\nStompRService.prototype.client;\n/**\n * Callback Functions\n * \n * Note the method signature: () => preserves lexical scope\n * if we need to use this.x inside the function\n * @type {?}\n */\nStompRService.prototype.debug;\n/**\n * Callback run on successfully connecting to server\n * @type {?}\n */\nStompRService.prototype.on_connect;\n/**\n * Handle errors from stomp.js\n * @type {?}\n */\nStompRService.prototype.on_error;\n}\n\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","\nexport type StompState = number;\nexport let StompState: any = {};\nStompState.CLOSED = 0;\nStompState.TRYING = 1;\nStompState.CONNECTED = 2;\nStompState.DISCONNECTING = 3;\nStompState[StompState.CLOSED] = \"CLOSED\";\nStompState[StompState.TRYING] = \"TRYING\";\nStompState[StompState.CONNECTED] = \"CONNECTED\";\nStompState[StompState.DISCONNECTING] = \"DISCONNECTING\";\n\n"],"names":["Observable","Stomp.over","Stomp.client","Subject","BehaviorSubject"],"mappings":"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"} diff --git a/dist/README.md b/dist/README.md new file mode 100644 index 0000000..b510834 --- /dev/null +++ b/dist/README.md @@ -0,0 +1,346 @@ +# @stomp/ng2-stompjs + +An Angular (Angular2, Angular4, ...) style wrapper for @stomp/stompjs. + +## Compatibility + +There were compatibility issues reported, so this project has now switched to +source distribution. In case it does not work for your +setup, please raise a ticket. + +Tested with Angular2 (2.4.0), Angular4 (4.0.0), Angular (5.0.0), and +ionic projects created with Angular CLI. + +See notes below for Angular 5 and ionic. + +## Changelog + +### 0.4.3 + +- Ability to delay initialization. +- Angular 5 compatibility + +### 0.4.2 + +Initial [SockJS Support](https://github.com/stomp-js/ng2-stompjs/blob/master/SockJS.md). +Sample at https://github.com/stomp-js/ng4-stompjs-demo/tree/sockjs + +### 0.4.0 + +Updated to make it compliant to possible use of APP_INITIALIZER. Please note +that way to initiate the service has changed. It no longer uses StompConfigService. +StompConfig is directly injected as dependency into StompService. + +### 0.3.8 + +- Switched to source distribution. The npm bundle now only has .ts files. + +### 0.3.5 + +- Test case at https://github.com/stomp-js/ng2-stompjs-testbed these + will be merged into main repository in future. Currently unable + to configure Karma correctly in the main project. Any help appreciated. + +### 0.3.4 + +- added references to GitHub pages. + +### 0.3.0 + +- Configuration structure has changed, user/password are not part of header. +- Support for headers in connect, subscribe, and publish. +- Typedoc for API documentation. + +## Installation + +To install this library, run: + +```bash +$ npm install @stomp/ng2-stompjs --save +``` +or, if using yarn + +```bash +$ yarn add @stomp/ng2-stompjs +``` + +This will addtionally install @stomp/stompjs +from https://github.com/stomp-js/stomp-websocket + +## Usage + +- See API documentation at + https://stomp-js.github.io/ng2-stompjs/classes/stompservice.html + and https://stomp-js.github.io/ng2-stompjs/index.html +- See https://github.com/stomp-js/ng4-stompjs-demo for a working sample + using Angular4 and Angular CLI. +- See https://github.com/stomp-js/ng2-stompjs-demo for a working sample + using Angular2 and Angular CLI. This version also demonstrates fetching + Stomp configuration using an http call (APP_INITIALIZER). +- See [SockJS Support](https://github.com/stomp-js/ng2-stompjs/blob/master/SockJS.md). + https://github.com/stomp-js/ng4-stompjs-demo/tree/sockjs for a sample + using SockJS. + +### Agular 5 & Ionic + +This project is distributed as ts files. +You need to instruct the compiler to include files from this library to be compiled +as part of the build process. + +#### Angular 5 + +- Sample at https://github.com/stomp-js/ng5-stompjs-demo +- In `src/tsconfig.app.json` place the following in `compilerOptions`: +```javascript + "paths": { + "@stomp/ng2-stompjs": ["../node_modules/@stomp/ng2-stompjs"] + } +``` +See: https://github.com/stomp-js/ng5-stompjs-demo/blob/3594c458f98e7c4523b7d274c6dbf94e600f2c8c/src/tsconfig.app.json#L7 + +#### Ionic +- Sample at https://github.com/sjbwylbs/ionic-ng2-stompjs +- In `tsconfig.json` ensure the following: +```javascript +{ + "compilerOptions": { + ... + "baseUrl": "./src", + "paths": { + "@stomp/ng2-stompjs": ["../node_modules/@stomp/ng2-stompjs"] + }, + ... + } + ... +} +``` +- See: https://github.com/sjbwylbs/ionic-ng2-stompjs/blob/c0bd2e0d216c289fbb0225992969d826ee8d2459/tsconfig.json#L15 + +### Prerequisites + +- You will need to have a Stomp broker running. +- Sample code on this page assumes you have + RabbitMQ running with default settings and Web STOMP plugin activated. + (see: https://www.rabbitmq.com/web-stomp.html). + +### All the Hard Work + +- The main service is StompService, which will need to be provided. +- The STOMP Broker connection details will need to be provided via + class StompConfig. See the samples for several ways to configure. + See https://angular.io/docs/ts/latest/guide/dependency-injection.html for + background reading. +- Sample config: + +```typescript + const stompConfig: StompConfig = { + // Which server? + url: 'ws://127.0.0.1:15674/ws', + + // Headers + // Typical keys: login, passcode, host + headers: { + login: 'guest', + passcode: 'guest' + }, + + // How often to heartbeat? + // Interval in milliseconds, set to 0 to disable + heartbeat_in: 0, // Typical value 0 - disabled + heartbeat_out: 20000, // Typical value 20000 - every 20 seconds + + // Wait in milliseconds before attempting auto reconnect + // Set to 0 to disable + // Typical value 5000 (5 seconds) + reconnect_delay: 5000, + + // Will log diagnostics on console + debug: true + }; +``` + +- See https://github.com/stomp-js/ng4-stompjs-demo/blob/master/src/app/app.module.ts + for a sample code file with configuration passed from a local + hash. Feel free to copy and modify this file. +- See https://github.com/stomp-js/ng2-stompjs-demo/blob/master/src/app/app.module.ts + for a sample code file with configuration fetched from a http + resource. +- Assuming the config specified as a `const`, code sample to + provide `StompService` and `StompConfig` will look like: + +```typescript + providers: [ + StompService, + { + provide: StompConfig, + useValue: stompConfig + } + ] +``` + +- See https://github.com/stomp-js/ng4-stompjs-demo/blob/master/src/app/app.module.ts + for a sample file. + +### Reap the Benefits + +#### Inject StompService + +In your constructor (typically of a component or a service), inject + `StompService` as a dependency: + +```typescript +constructor(private _stompService: StompService) { } +``` + +#### Subscribe to a queue + +The queue name structure and semantics vary +based on your specific STOMP Broker, +see: https://www.rabbitmq.com/stomp.html +for RabbitMQ specific details. + +Call `subscribe(queueName: string, headers: StompHeaders = {})` +with name of the queue which returns an Observable (details at: +https://stomp-js.github.io/ng2-stompjs/classes/stompservice.html#subscribe). Any +of Observable specific operators (map, filter, subscribe, etc.) can be +applied on it. This can also be set into a template with `async` pipe. + +Example: + +```typescript + let stomp_subscription = this._stompService.subscribe('/topic/ng-demo-sub'); + + stomp_subscription.map((message: Message) => { + return message.body; + }).subscribe((msg_body: string) => { + console.log(`Received: ${msg_body}`); + }); + +``` + +The `Message` class comes from `@stomp/stompjs`. So, you will need the +following import in the classes where you consume messages: + +```typescript +import {Message} from '@stomp/stompjs'; +``` + +#### Unsubscribe from a queue + +Not a likely chance that you would need it. + +You will need to unsubscribe from stomp_subscription (which is an Observer), +it will then internally unsubscribe from the underlying STOMP queue +subscription. + +#### Publishing messages + +Call `publish(queueName: string, message: string, headers: StompHeaders = {})` +(details at: https://stomp-js.github.io/ng2-stompjs/classes/stompservice.html#publish). +Example: + +```typescript +this._stompService.publish('/topic/ng-demo-sub', 'My important message'); +``` + +Please note that message is actually string. So, if you need to send JSON +you will need to convert it into string (typically using +`JSON.stringify()`) + +#### Watching for Stomp connection status + +- `stompService.state` is a `BehaviorSubject` which maintains and switches + its value as per the underlying Stomp Connection status. +- The value is from an enum with these possible values: + CLOSED, TRYING, CONNECTED, and DISCONNECTING. +- The following code will subscribe to `stompService.state` and covert + the enum value (which is a number) to the corresponding string value: + +```typescript + this._stompService.state + .map((state: number) => StompState[state]) + .subscribe((status: string) => { + console.log(`Stomp connection status: ${status}`); + }); +``` + +If you are interested in watching only when connection is established, you can +subscribe to `this._stompService.connectObservable`. + +#### Delayed initialization + +While often it is possible using Angular dependency injection techniques and +APP_INITIALIZER to delay the initialization till the configuration is ready +(may be fetched using an API call). See a sample at: +https://github.com/stomp-js/ng2-stompjs-demo + +If a manual control is needed on the initialization process there is an additional +class `StompRService`, inject it instead of `StompService`. This has few additional +methods to assign a configuration and manually connect. + +```typescript +// Do not provide StompService or StompConfig, only provide StompRService + + providers: [ + StompRService + ] + +``` + +```typescript +class YourClass {} + constructor(private _stompService: StompRService) { } + + public initStomp() { + StompConfig config; + + cofig = this.fetchConfigFromSomeWhere(); + + this._stompService.config = config; + this._stompService.initAndConnect(); + } +} +``` + +`subscribe` and `publish` can be called even before call to `initAndConnect`. +These however will be interally queued till actual connection is successful. + +For the curious - `initAndConnect` may be called more than once with potentially +updated config. + +## Development + +After checking out, install the dependencies: + +```bash +$ npm install +``` +or, if using yarn + +```bash +$ yarn +``` + +To generate documentation: + +```bash +$ npm run doc +``` + +To lint all `*.ts` files: + +```bash +$ npm run lint +``` + +## Contributors + +- [Sam Finnigan](https://github.com/sjmf) +- [Jimi (Dimitris) Charalampidis](https://github.com/JimiC) +- [Deepak Kumar](https://github.com/kum-deepak) +- Everyone involved at https://github.com/stomp-js/stomp-websocket + + +## License + +MIT diff --git a/dist/bundles/ng2-stompjs.umd.js b/dist/bundles/ng2-stompjs.umd.js new file mode 100644 index 0000000..4f8f37a --- /dev/null +++ b/dist/bundles/ng2-stompjs.umd.js @@ -0,0 +1,343 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs/BehaviorSubject'), require('rxjs/Observable'), require('rxjs/Subject'), require('rxjs/add/operator/filter'), require('rxjs/add/operator/share'), require('@stomp/stompjs/index')) : + typeof define === 'function' && define.amd ? define(['exports', '@angular/core', 'rxjs/BehaviorSubject', 'rxjs/Observable', 'rxjs/Subject', 'rxjs/add/operator/filter', 'rxjs/add/operator/share', '@stomp/stompjs/index'], factory) : + (factory((global['ng2-stompjs'] = {}),global.ng.core,global.Rx,global.Rx,global.Rx,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global['']['/node_modules/@stomp/stompjs/index'].js)); +}(this, (function (exports,core,BehaviorSubject,Observable,Subject,filter,share,index) { 'use strict'; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var StompState = {}; +StompState.CLOSED = 0; +StompState.TRYING = 1; +StompState.CONNECTED = 2; +StompState.DISCONNECTING = 3; +StompState[StompState.CLOSED] = "CLOSED"; +StompState[StompState.TRYING] = "TRYING"; +StompState[StompState.CONNECTED] = "CONNECTED"; +StompState[StompState.DISCONNECTING] = "DISCONNECTING"; +/** + * Angular2 STOMP Raw Service using \@stomp/stomp.js + * + * \@description This service handles subscribing to a + * message queue using the stomp.js library, and returns + * values via the ES6 Observable specification for + * asynchronous value streaming by wiring the STOMP + * messages into an observable. + * + * If you will like to pass the configuration as a dependency, + * please use StompService class. + */ +var StompRService = (function () { + /** + * Constructor + * + * See README and samples for configuration examples + */ + function StompRService() { + var _this = this; + /** + * Internal array to hold locally queued messages when STOMP broker is not connected. + */ + this.queuedMessages = []; + /** + * Callback Functions + * + * Note the method signature: () => preserves lexical scope + * if we need to use this.x inside the function + */ + this.debug = function (args) { + console.log(new Date(), args); + }; + /** + * Callback run on successfully connecting to server + */ + this.on_connect = function () { + _this.debug('Connected'); + // Indicate our connected state to observers + _this.state.next(StompState.CONNECTED); + }; + /** + * Handle errors from stomp.js + */ + this.on_error = function (error) { + // Trigger the error subject + _this.errorSubject.next(error); + if (typeof error === 'object') { + error = error.body; + } + _this.debug("Error: " + error); + // Check for dropped connection and try reconnecting + if (!_this.client.connected) { + // Reset state indicator + _this.state.next(StompState.CLOSED); + } + }; + this.state = new BehaviorSubject.BehaviorSubject(StompState.CLOSED); + this.connectObservable = this.state + .filter(function (currentState) { + return currentState === StompState.CONNECTED; + }); + // Setup sending queuedMessages + this.connectObservable.subscribe(function () { + _this.sendQueuedMessages(); + }); + this.errorSubject = new Subject.Subject(); + } + Object.defineProperty(StompRService.prototype, "config", { + /** + * Set configuration + * @param {?} value + * @return {?} + */ + set: function (value) { + this._config = value; + }, + enumerable: true, + configurable: true + }); + /** + * Initialize STOMP Client + * @return {?} + */ + StompRService.prototype.initStompClient = function () { + // disconnect if connected + this.disconnect(); + // url takes precedence over socketFn + if (typeof (this._config.url) === 'string') { + this.client = index.client(this._config.url); + } + else { + this.client = index.over(this._config.url); + } + // Configure client heart-beating + this.client.heartbeat.incoming = this._config.heartbeat_in; + this.client.heartbeat.outgoing = this._config.heartbeat_out; + // Auto reconnect + this.client.reconnect_delay = this._config.reconnect_delay; + if (!this._config.debug) { + this.debug = function () { }; + } + // Set function to debug print messages + this.client.debug = this.debug; + }; + /** + * Perform connection to STOMP broker + * @return {?} + */ + StompRService.prototype.initAndConnect = function () { + this.initStompClient(); + if (!this._config.headers) { + this._config.headers = {}; + } + // Attempt connection, passing in a callback + this.client.connect(this._config.headers, this.on_connect, this.on_error); + this.debug('Connecting...'); + this.state.next(StompState.TRYING); + }; + /** + * Disconnect the connection to the STOMP broker and clean up, + * not sure how this method will get called, if ever. + * Call this method only if you know what you are doing. + * @return {?} + */ + StompRService.prototype.disconnect = function () { + var _this = this; + // Disconnect if connected. Callback will set CLOSED state + if (this.client && this.client.connected) { + // Notify observers that we are disconnecting! + this.state.next(StompState.DISCONNECTING); + this.client.disconnect(function () { return _this.state.next(StompState.CLOSED); }); + } + }; + /** + * The current connection status with the STOMP broker + * @return {?} + */ + StompRService.prototype.connected = function () { + return this.state.getValue() === StompState.CONNECTED; + }; + /** + * Send a message to a named destination. The message must be string. + * + * The message will get locally queued if the STOMP broker is not connected. Attempt + * will be made to publish queued messages as soon as the broker gets connected. + * + * @param {?} queueName + * @param {?} message + * @param {?=} headers + * @return {?} + */ + StompRService.prototype.publish = function (queueName, message, headers) { + if (headers === void 0) { headers = {}; } + if (this.connected()) { + this.client.send(queueName, headers, message); + } + else { + this.debug("Not connected, queueing " + message); + this.queuedMessages.push({ queueName: /** @type {?} */ (queueName), message: /** @type {?} */ (message), headers: headers }); + } + }; + /** + * Send queued messages + * @return {?} + */ + StompRService.prototype.sendQueuedMessages = function () { + var /** @type {?} */ queuedMessages = this.queuedMessages; + this.queuedMessages = []; + this.debug("Will try sending queued messages " + queuedMessages); + for (var _i = 0, queuedMessages_1 = queuedMessages; _i < queuedMessages_1.length; _i++) { + var queuedMessage = queuedMessages_1[_i]; + this.debug("Attempting to send " + queuedMessage); + this.publish(queuedMessage.queueName, queuedMessage.message, queuedMessage.headers); + } + }; + /** + * Subscribe to server message queues + * + * This method can safely be called even when STOMP broker is not connected. Further + * if the underlying STOMP connection drops and reconnects, it will resubscribe transparently. + * + * If a header field 'ack' is not explicitly passed, 'ack' will be set to 'auto'. If you + * do not understand what it means, please leave it as is. + * + * Please note, however, while working with temporary queues, where the subscription request + * creates the + * underlying queue, during reconnect it might miss messages. This issue is not specific + * to this library but the way STOMP brokers are designed to work. + * + * @param {?} queueName + * @param {?=} headers + * @return {?} + */ + StompRService.prototype.subscribe = function (queueName, headers) { + var _this = this; + if (headers === void 0) { headers = {}; } + /* Well the logic is complicated but works beautifully. RxJS is indeed wonderful. + * + * We need to activate the underlying subscription immediately if Stomp is connected. If not it should + * subscribe when it gets next connected. Further it should re establish the subscription whenever Stomp + * successfully reconnects. + * + * Actual implementation is simple, we filter the BehaviourSubject 'state' so that we can trigger whenever Stomp is + * connected. Since 'state' is a BehaviourSubject, if Stomp is already connected, it will immediately trigger. + * + * The observable that we return to caller remains same across all reconnects, so no special handling needed at + * the message subscriber. + */ + this.debug("Request to subscribe " + queueName); + // By default auto acknowledgement of messages + if (!headers['ack']) { + headers['ack'] = 'auto'; + } + var /** @type {?} */ coldObservable = Observable.Observable.create(function (messages) { + /* + * These variables will be used as part of the closure and work their magic during unsubscribe + */ + var /** @type {?} */ stompSubscription; + var /** @type {?} */ stompConnectedSubscription; + stompConnectedSubscription = _this.connectObservable + .subscribe(function () { + _this.debug("Will subscribe to " + queueName); + stompSubscription = _this.client.subscribe(queueName, function (message) { + messages.next(message); + }, headers); + }); + return function () { + _this.debug("Stop watching connection state (for " + queueName + ")"); + stompConnectedSubscription.unsubscribe(); + if (_this.state.getValue() === StompState.CONNECTED) { + _this.debug("Will unsubscribe from " + queueName + " at Stomp"); + stompSubscription.unsubscribe(); + } + else { + _this.debug("Stomp not connected, no need to unsubscribe from " + queueName + " at Stomp"); + } + }; + }); + /** + * Important - convert it to hot Observable - otherwise, if the user code subscribes + * to this observable twice, it will subscribe twice to Stomp broker. (This was happening in the current example). + * A long but good explanatory article at https://medium.com/@benlesh/hot-vs-cold-observables-f8094ed53339 + */ + return coldObservable.share(); + }; + return StompRService; +}()); +StompRService.decorators = [ + { type: core.Injectable }, +]; +/** + * @nocollapse + */ +StompRService.ctorParameters = function () { return []; }; +/** + * Represents a configuration object for the + * STOMPService to connect to. + */ +var StompConfig = (function () { + function StompConfig() { + } + return StompConfig; +}()); +StompConfig.decorators = [ + { type: core.Injectable }, +]; +/** + * @nocollapse + */ +StompConfig.ctorParameters = function () { return []; }; +/** + * Angular2 STOMP Service using \@stomp/stomp.js + * + * \@description This service handles subscribing to a + * message queue using the stomp.js library, and returns + * values via the ES6 Observable specification for + * asynchronous value streaming by wiring the STOMP + * messages into an observable. + * + * If you want to manually configure and initialize the service + * please use StompRService + */ +var StompService = (function (_super) { + __extends(StompService, _super); + /** + * Constructor + * + * See README and samples for configuration examples + * @param {?} config + */ + function StompService(config) { + var _this = _super.call(this) || this; + _this.config = config; + _this.initAndConnect(); + return _this; + } + return StompService; +}(StompRService)); +StompService.decorators = [ + { type: core.Injectable }, +]; +/** + * @nocollapse + */ +StompService.ctorParameters = function () { return [ + { type: StompConfig, }, +]; }; + +exports.StompRService = StompRService; +exports.StompService = StompService; +exports.StompState = StompState; +exports.StompConfig = StompConfig; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=ng2-stompjs.umd.js.map diff --git a/dist/bundles/ng2-stompjs.umd.js.map b/dist/bundles/ng2-stompjs.umd.js.map new file mode 100644 index 0000000..2eb376c --- /dev/null +++ b/dist/bundles/ng2-stompjs.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ng2-stompjs.umd.js","sources":["~/@stomp/ng2-stompjs/src/stomp.service.ts","~/@stomp/ng2-stompjs/src/stomp.config.ts","~/@stomp/ng2-stompjs/src/stomp-r.service.ts","~/@stomp/ng2-stompjs/src/stomp-state.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { StompConfig } from './stomp.config';\n\nimport { StompRService } from './stomp-r.service';\n/**\n * Angular2 STOMP Service using \\@stomp/stomp.js\n * \n * \\@description This service handles subscribing to a\n * message queue using the stomp.js library, and returns\n * values via the ES6 Observable specification for\n * asynchronous value streaming by wiring the STOMP\n * messages into an observable.\n * \n * If you want to manually configure and initialize the service\n * please use StompRService\n */\nexport class StompService extends StompRService {\n/**\n * Constructor\n * \n * See README and samples for configuration examples\n * @param {?} config\n */\npublic constructor(config: StompConfig) {\n super();\n\n this.config = config;\n this.initAndConnect();\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: StompConfig, },\n];\n}\n\nfunction StompService_tsickle_Closure_declarations() {\n/** @type {?} */\nStompService.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompService.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","import { StompHeaders } from './stomp-headers';\nimport { Injectable } from '@angular/core';\n/**\n * Represents a configuration object for the\n * STOMPService to connect to.\n */\nexport class StompConfig {\n/**\n * Server URL to connect to. Please refer to your STOMP broker documentation for details.\n * \n * Example: ws://127.0.0.1:15674/ws (for a RabbitMQ default setup running on localhost)\n * \n * Alternatively this parameter can be a function that returns an object similar to WebSocket\n * (typically SockJS instance).\n * \n * Example:\n * \n * () => {\n * return new SockJS('http://127.0.0.1:15674/stomp');\n * }\n */\nurl: string | (() => any);\n/**\n * Headers\n * Typical keys: login: string, passcode: string.\n * host:string will neeed to be passed for virtual hosts in RabbitMQ\n */\nheaders: StompHeaders;\n/**\n * How often to incoming heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 0 - disabled\n */\nheartbeat_in: number;\n/**\n * How often to outgoing heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 20000 - every 20 seconds\n */\nheartbeat_out: number;\n/**\n * Wait in milliseconds before attempting auto reconnect\n * Set to 0 to disable\n * \n * Typical value 5000 (5 seconds)\n */\nreconnect_delay: number;\n/**\n * Enable client debugging?\n */\ndebug: boolean;\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction StompConfig_tsickle_Closure_declarations() {\n/** @type {?} */\nStompConfig.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompConfig.ctorParameters;\n/**\n * Server URL to connect to. Please refer to your STOMP broker documentation for details.\n * \n * Example: ws://127.0.0.1:15674/ws (for a RabbitMQ default setup running on localhost)\n * \n * Alternatively this parameter can be a function that returns an object similar to WebSocket\n * (typically SockJS instance).\n * \n * Example:\n * \n * () => {\n * return new SockJS('http://127.0.0.1:15674/stomp');\n * }\n * @type {?}\n */\nStompConfig.prototype.url;\n/**\n * Headers\n * Typical keys: login: string, passcode: string.\n * host:string will neeed to be passed for virtual hosts in RabbitMQ\n * @type {?}\n */\nStompConfig.prototype.headers;\n/**\n * How often to incoming heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 0 - disabled\n * @type {?}\n */\nStompConfig.prototype.heartbeat_in;\n/**\n * How often to outgoing heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 20000 - every 20 seconds\n * @type {?}\n */\nStompConfig.prototype.heartbeat_out;\n/**\n * Wait in milliseconds before attempting auto reconnect\n * Set to 0 to disable\n * \n * Typical value 5000 (5 seconds)\n * @type {?}\n */\nStompConfig.prototype.reconnect_delay;\n/**\n * Enable client debugging?\n * @type {?}\n */\nStompConfig.prototype.debug;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { Observable } from 'rxjs/Observable';\nimport { Observer } from 'rxjs/Observer';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport'rxjs/add/operator/filter';\nimport'rxjs/add/operator/share';\n\nimport { StompConfig } from './stomp.config';\n\nimport * as Stomp from '@stomp/stompjs/index';\nimport { StompSubscription } from '@stomp/stompjs/index';\nimport { StompHeaders } from './stomp-headers';\nimport { StompState } from './stomp-state';\n/**\n * Angular2 STOMP Raw Service using \\@stomp/stomp.js\n * \n * \\@description This service handles subscribing to a\n * message queue using the stomp.js library, and returns\n * values via the ES6 Observable specification for\n * asynchronous value streaming by wiring the STOMP\n * messages into an observable.\n * \n * If you will like to pass the configuration as a dependency,\n * please use StompService class.\n */\nexport class StompRService {\n/**\n * State of the STOMPService\n * \n * It is a BehaviorSubject and will emit current status immediately. This will typically get\n * used to show current status to the end user.\n */\npublic state: BehaviorSubject;\n/**\n * Will trigger when connection is established. Use this to carry out initialization.\n * It will trigger every time a (re)connection occurs. If it is already connected\n * it will trigger immediately. You can safely ignore the value, as it will always be\n * StompState.CONNECTED\n */\npublic connectObservable: Observable;\n/**\n * Will trigger when an error occurs. This Subject can be used to handle errors from\n * the stomp broker.\n */\npublic errorSubject: Subject;\n/**\n * Internal array to hold locally queued messages when STOMP broker is not connected.\n */\nprotected queuedMessages: {queueName: string, message: string, headers: StompHeaders}[]= [];\n/**\n * Configuration\n */\nprivate _config: StompConfig;\n/**\n * STOMP Client from \\@stomp/stomp.js\n */\nprotected client: Stomp.Client;\n/**\n * Constructor\n * \n * See README and samples for configuration examples\n */\npublic constructor() {\n this.state = new BehaviorSubject(StompState.CLOSED);\n\n this.connectObservable = this.state\n .filter((currentState: number) => {\n return currentState === StompState.CONNECTED;\n });\n\n // Setup sending queuedMessages\n this.connectObservable.subscribe(() => {\n this.sendQueuedMessages();\n });\n\n this.errorSubject = new Subject();\n }\n/**\n * Set configuration\n * @param {?} value\n * @return {?}\n */\nset config(value: StompConfig) {\n this._config = value;\n }\n/**\n * Initialize STOMP Client\n * @return {?}\n */\nprotected initStompClient(): void {\n // disconnect if connected\n this.disconnect();\n\n // url takes precedence over socketFn\n if (typeof(this._config.url) === 'string') {\n this.client = Stomp.client(this._config.url);\n } else {\n this.client = Stomp.over(this._config.url);\n }\n\n // Configure client heart-beating\n this.client.heartbeat.incoming = this._config.heartbeat_in;\n this.client.heartbeat.outgoing = this._config.heartbeat_out;\n\n // Auto reconnect\n this.client.reconnect_delay = this._config.reconnect_delay;\n\n if (!this._config.debug) {\n this.debug = function() {};\n }\n // Set function to debug print messages\n this.client.debug = this.debug;\n }\n/**\n * Perform connection to STOMP broker\n * @return {?}\n */\npublic initAndConnect(): void {\n this.initStompClient();\n\n if (!this._config.headers) {\n this._config.headers = {};\n }\n\n // Attempt connection, passing in a callback\n this.client.connect(\n this._config.headers,\n this.on_connect,\n this.on_error\n );\n\n this.debug('Connecting...');\n this.state.next(StompState.TRYING);\n }\n/**\n * Disconnect the connection to the STOMP broker and clean up,\n * not sure how this method will get called, if ever.\n * Call this method only if you know what you are doing.\n * @return {?}\n */\npublic disconnect(): void {\n\n // Disconnect if connected. Callback will set CLOSED state\n if (this.client && this.client.connected) {\n // Notify observers that we are disconnecting!\n this.state.next(StompState.DISCONNECTING);\n\n this.client.disconnect(\n () => this.state.next(StompState.CLOSED)\n );\n }\n }\n/**\n * The current connection status with the STOMP broker\n * @return {?}\n */\npublic connected(): boolean {\n return this.state.getValue() === StompState.CONNECTED;\n }\n/**\n * Send a message to a named destination. The message must be string.\n * \n * The message will get locally queued if the STOMP broker is not connected. Attempt\n * will be made to publish queued messages as soon as the broker gets connected.\n * \n * @param {?} queueName\n * @param {?} message\n * @param {?=} headers\n * @return {?}\n */\npublic publish(queueName: string, message: string, headers: StompHeaders = {}): void {\n if (this.connected()) {\n this.client.send(queueName, headers, message);\n } else {\n this.debug(`Not connected, queueing ${message}`);\n this.queuedMessages.push({queueName: /** @type {?} */(( queueName)), message: /** @type {?} */(( message)), headers: headers});\n }\n }\n/**\n * Send queued messages\n * @return {?}\n */\nprotected sendQueuedMessages(): void {\n const /** @type {?} */ queuedMessages = this.queuedMessages;\n this.queuedMessages = [];\n\n this.debug(`Will try sending queued messages ${queuedMessages}`);\n\n for (const /** @type {?} */ queuedMessage of queuedMessages) {\n this.debug(`Attempting to send ${queuedMessage}`);\n this.publish(queuedMessage.queueName, queuedMessage.message, queuedMessage.headers);\n }\n }\n/**\n * Subscribe to server message queues\n * \n * This method can safely be called even when STOMP broker is not connected. Further\n * if the underlying STOMP connection drops and reconnects, it will resubscribe transparently.\n * \n * If a header field 'ack' is not explicitly passed, 'ack' will be set to 'auto'. If you\n * do not understand what it means, please leave it as is.\n * \n * Please note, however, while working with temporary queues, where the subscription request\n * creates the\n * underlying queue, during reconnect it might miss messages. This issue is not specific\n * to this library but the way STOMP brokers are designed to work.\n * \n * @param {?} queueName\n * @param {?=} headers\n * @return {?}\n */\npublic subscribe(queueName: string, headers: StompHeaders = {}): Observable {\n\n /* Well the logic is complicated but works beautifully. RxJS is indeed wonderful.\n *\n * We need to activate the underlying subscription immediately if Stomp is connected. If not it should\n * subscribe when it gets next connected. Further it should re establish the subscription whenever Stomp\n * successfully reconnects.\n *\n * Actual implementation is simple, we filter the BehaviourSubject 'state' so that we can trigger whenever Stomp is\n * connected. Since 'state' is a BehaviourSubject, if Stomp is already connected, it will immediately trigger.\n *\n * The observable that we return to caller remains same across all reconnects, so no special handling needed at\n * the message subscriber.\n */\n this.debug(`Request to subscribe ${queueName}`);\n\n // By default auto acknowledgement of messages\n if (!headers['ack']) {\n headers['ack'] = 'auto';\n }\n\n const /** @type {?} */ coldObservable = Observable.create(\n (messages: Observer) => {\n /*\n * These variables will be used as part of the closure and work their magic during unsubscribe\n */\n let /** @type {?} */ stompSubscription: StompSubscription;\n\n let /** @type {?} */ stompConnectedSubscription: Subscription;\n\n stompConnectedSubscription = this.connectObservable\n .subscribe(() => {\n this.debug(`Will subscribe to ${queueName}`);\n stompSubscription = this.client.subscribe(queueName, (message: Stomp.Message) => {\n messages.next(message);\n },\n headers);\n });\n\n return () => { /* cleanup function, will be called when no subscribers are left */\n this.debug(`Stop watching connection state (for ${queueName})`);\n stompConnectedSubscription.unsubscribe();\n\n if (this.state.getValue() === StompState.CONNECTED) {\n this.debug(`Will unsubscribe from ${queueName} at Stomp`);\n stompSubscription.unsubscribe();\n } else {\n this.debug(`Stomp not connected, no need to unsubscribe from ${queueName} at Stomp`);\n }\n };\n });\n\n /**\n * Important - convert it to hot Observable - otherwise, if the user code subscribes\n * to this observable twice, it will subscribe twice to Stomp broker. (This was happening in the current example).\n * A long but good explanatory article at https://medium.com/@benlesh/hot-vs-cold-observables-f8094ed53339\n */\n return coldObservable.share();\n }\n/**\n * Callback Functions\n * \n * Note the method signature: () => preserves lexical scope\n * if we need to use this.x inside the function\n */\nprotected debug = (args: any): void => {\n console.log(new Date(), args);\n }\n/**\n * Callback run on successfully connecting to server\n */\nprotected on_connect = () => {\n\n this.debug('Connected');\n\n // Indicate our connected state to observers\n this.state.next(StompState.CONNECTED);\n }\n/**\n * Handle errors from stomp.js\n */\nprotected on_error = (error: string | Stomp.Message) => {\n\n // Trigger the error subject\n this.errorSubject.next(error);\n\n if (typeof error === 'object') {\n error = (error).body;\n }\n\n this.debug(`Error: ${error}`);\n\n // Check for dropped connection and try reconnecting\n if (!this.client.connected) {\n // Reset state indicator\n this.state.next(StompState.CLOSED);\n }\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction StompRService_tsickle_Closure_declarations() {\n/** @type {?} */\nStompRService.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompRService.ctorParameters;\n/**\n * State of the STOMPService\n * \n * It is a BehaviorSubject and will emit current status immediately. This will typically get\n * used to show current status to the end user.\n * @type {?}\n */\nStompRService.prototype.state;\n/**\n * Will trigger when connection is established. Use this to carry out initialization.\n * It will trigger every time a (re)connection occurs. If it is already connected\n * it will trigger immediately. You can safely ignore the value, as it will always be\n * StompState.CONNECTED\n * @type {?}\n */\nStompRService.prototype.connectObservable;\n/**\n * Will trigger when an error occurs. This Subject can be used to handle errors from\n * the stomp broker.\n * @type {?}\n */\nStompRService.prototype.errorSubject;\n/**\n * Internal array to hold locally queued messages when STOMP broker is not connected.\n * @type {?}\n */\nStompRService.prototype.queuedMessages;\n/**\n * Configuration\n * @type {?}\n */\nStompRService.prototype._config;\n/**\n * STOMP Client from \\@stomp/stomp.js\n * @type {?}\n */\nStompRService.prototype.client;\n/**\n * Callback Functions\n * \n * Note the method signature: () => preserves lexical scope\n * if we need to use this.x inside the function\n * @type {?}\n */\nStompRService.prototype.debug;\n/**\n * Callback run on successfully connecting to server\n * @type {?}\n */\nStompRService.prototype.on_connect;\n/**\n * Handle errors from stomp.js\n * @type {?}\n */\nStompRService.prototype.on_error;\n}\n\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","\nexport type StompState = number;\nexport let StompState: any = {};\nStompState.CLOSED = 0;\nStompState.TRYING = 1;\nStompState.CONNECTED = 2;\nStompState.DISCONNECTING = 3;\nStompState[StompState.CLOSED] = \"CLOSED\";\nStompState[StompState.TRYING] = \"TRYING\";\nStompState[StompState.CONNECTED] = \"CONNECTED\";\nStompState[StompState.DISCONNECTING] = \"DISCONNECTING\";\n\n"],"names":["Injectable","Observable","Stomp.over","Stomp.client","Subject","BehaviorSubject"],"mappings":"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"} diff --git a/dist/bundles/ng2-stompjs.umd.min.js b/dist/bundles/ng2-stompjs.umd.min.js new file mode 100644 index 0000000..2d6bfc4 --- /dev/null +++ b/dist/bundles/ng2-stompjs.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs/BehaviorSubject"),require("rxjs/Observable"),require("rxjs/Subject"),require("rxjs/add/operator/filter"),require("rxjs/add/operator/share"),require("@stomp/stompjs/index")):"function"==typeof define&&define.amd?define(["exports","@angular/core","rxjs/BehaviorSubject","rxjs/Observable","rxjs/Subject","rxjs/add/operator/filter","rxjs/add/operator/share","@stomp/stompjs/index"],t):t(e["ng2-stompjs"]={},e.ng.core,e.Rx,e.Rx,e.Rx,e.Rx.Observable.prototype,e.Rx.Observable.prototype,e[""]["/node_modules/@stomp/stompjs/index"].js)}(this,function(e,t,n,o,i,r,s,c){"use strict";var u=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),a={};a.CLOSED=0,a.TRYING=1,a.CONNECTED=2,a.DISCONNECTING=3,a[a.CLOSED]="CLOSED",a[a.TRYING]="TRYING",a[a.CONNECTED]="CONNECTED",a[a.DISCONNECTING]="DISCONNECTING";var h=function(){function e(){var e=this;this.queuedMessages=[],this.debug=function(e){console.log(new Date,e)},this.on_connect=function(){e.debug("Connected"),e.state.next(a.CONNECTED)},this.on_error=function(t){e.errorSubject.next(t),"object"==typeof t&&(t=t.body),e.debug("Error: "+t),e.client.connected||e.state.next(a.CLOSED)},this.state=new n.BehaviorSubject(a.CLOSED),this.connectObservable=this.state.filter(function(e){return e===a.CONNECTED}),this.connectObservable.subscribe(function(){e.sendQueuedMessages()}),this.errorSubject=new i.Subject}return Object.defineProperty(e.prototype,"config",{set:function(e){this._config=e},enumerable:!0,configurable:!0}),e.prototype.initStompClient=function(){this.disconnect(),"string"==typeof this._config.url?this.client=c.client(this._config.url):this.client=c.over(this._config.url),this.client.heartbeat.incoming=this._config.heartbeat_in,this.client.heartbeat.outgoing=this._config.heartbeat_out,this.client.reconnect_delay=this._config.reconnect_delay,this._config.debug||(this.debug=function(){}),this.client.debug=this.debug},e.prototype.initAndConnect=function(){this.initStompClient(),this._config.headers||(this._config.headers={}),this.client.connect(this._config.headers,this.on_connect,this.on_error),this.debug("Connecting..."),this.state.next(a.TRYING)},e.prototype.disconnect=function(){var e=this;this.client&&this.client.connected&&(this.state.next(a.DISCONNECTING),this.client.disconnect(function(){return e.state.next(a.CLOSED)}))},e.prototype.connected=function(){return this.state.getValue()===a.CONNECTED},e.prototype.publish=function(e,t,n){void 0===n&&(n={}),this.connected()?this.client.send(e,n,t):(this.debug("Not connected, queueing "+t),this.queuedMessages.push({queueName:e,message:t,headers:n}))},e.prototype.sendQueuedMessages=function(){var e=this.queuedMessages;this.queuedMessages=[],this.debug("Will try sending queued messages "+e);for(var t=0,n=e;t;\n/**\n * Will trigger when connection is established. Use this to carry out initialization.\n * It will trigger every time a (re)connection occurs. If it is already connected\n * it will trigger immediately. You can safely ignore the value, as it will always be\n * StompState.CONNECTED\n */\npublic connectObservable: Observable;\n/**\n * Will trigger when an error occurs. This Subject can be used to handle errors from\n * the stomp broker.\n */\npublic errorSubject: Subject;\n/**\n * Internal array to hold locally queued messages when STOMP broker is not connected.\n */\nprotected queuedMessages: {queueName: string, message: string, headers: StompHeaders}[]= [];\n/**\n * Configuration\n */\nprivate _config: StompConfig;\n/**\n * STOMP Client from \\@stomp/stomp.js\n */\nprotected client: Stomp.Client;\n/**\n * Constructor\n * \n * See README and samples for configuration examples\n */\npublic constructor() {\n this.state = new BehaviorSubject(StompState.CLOSED);\n\n this.connectObservable = this.state\n .filter((currentState: number) => {\n return currentState === StompState.CONNECTED;\n });\n\n // Setup sending queuedMessages\n this.connectObservable.subscribe(() => {\n this.sendQueuedMessages();\n });\n\n this.errorSubject = new Subject();\n }\n/**\n * Set configuration\n * @param {?} value\n * @return {?}\n */\nset config(value: StompConfig) {\n this._config = value;\n }\n/**\n * Initialize STOMP Client\n * @return {?}\n */\nprotected initStompClient(): void {\n // disconnect if connected\n this.disconnect();\n\n // url takes precedence over socketFn\n if (typeof(this._config.url) === 'string') {\n this.client = Stomp.client(this._config.url);\n } else {\n this.client = Stomp.over(this._config.url);\n }\n\n // Configure client heart-beating\n this.client.heartbeat.incoming = this._config.heartbeat_in;\n this.client.heartbeat.outgoing = this._config.heartbeat_out;\n\n // Auto reconnect\n this.client.reconnect_delay = this._config.reconnect_delay;\n\n if (!this._config.debug) {\n this.debug = function() {};\n }\n // Set function to debug print messages\n this.client.debug = this.debug;\n }\n/**\n * Perform connection to STOMP broker\n * @return {?}\n */\npublic initAndConnect(): void {\n this.initStompClient();\n\n if (!this._config.headers) {\n this._config.headers = {};\n }\n\n // Attempt connection, passing in a callback\n this.client.connect(\n this._config.headers,\n this.on_connect,\n this.on_error\n );\n\n this.debug('Connecting...');\n this.state.next(StompState.TRYING);\n }\n/**\n * Disconnect the connection to the STOMP broker and clean up,\n * not sure how this method will get called, if ever.\n * Call this method only if you know what you are doing.\n * @return {?}\n */\npublic disconnect(): void {\n\n // Disconnect if connected. Callback will set CLOSED state\n if (this.client && this.client.connected) {\n // Notify observers that we are disconnecting!\n this.state.next(StompState.DISCONNECTING);\n\n this.client.disconnect(\n () => this.state.next(StompState.CLOSED)\n );\n }\n }\n/**\n * The current connection status with the STOMP broker\n * @return {?}\n */\npublic connected(): boolean {\n return this.state.getValue() === StompState.CONNECTED;\n }\n/**\n * Send a message to a named destination. The message must be string.\n * \n * The message will get locally queued if the STOMP broker is not connected. Attempt\n * will be made to publish queued messages as soon as the broker gets connected.\n * \n * @param {?} queueName\n * @param {?} message\n * @param {?=} headers\n * @return {?}\n */\npublic publish(queueName: string, message: string, headers: StompHeaders = {}): void {\n if (this.connected()) {\n this.client.send(queueName, headers, message);\n } else {\n this.debug(`Not connected, queueing ${message}`);\n this.queuedMessages.push({queueName: /** @type {?} */(( queueName)), message: /** @type {?} */(( message)), headers: headers});\n }\n }\n/**\n * Send queued messages\n * @return {?}\n */\nprotected sendQueuedMessages(): void {\n const /** @type {?} */ queuedMessages = this.queuedMessages;\n this.queuedMessages = [];\n\n this.debug(`Will try sending queued messages ${queuedMessages}`);\n\n for (const /** @type {?} */ queuedMessage of queuedMessages) {\n this.debug(`Attempting to send ${queuedMessage}`);\n this.publish(queuedMessage.queueName, queuedMessage.message, queuedMessage.headers);\n }\n }\n/**\n * Subscribe to server message queues\n * \n * This method can safely be called even when STOMP broker is not connected. Further\n * if the underlying STOMP connection drops and reconnects, it will resubscribe transparently.\n * \n * If a header field 'ack' is not explicitly passed, 'ack' will be set to 'auto'. If you\n * do not understand what it means, please leave it as is.\n * \n * Please note, however, while working with temporary queues, where the subscription request\n * creates the\n * underlying queue, during reconnect it might miss messages. This issue is not specific\n * to this library but the way STOMP brokers are designed to work.\n * \n * @param {?} queueName\n * @param {?=} headers\n * @return {?}\n */\npublic subscribe(queueName: string, headers: StompHeaders = {}): Observable {\n\n /* Well the logic is complicated but works beautifully. RxJS is indeed wonderful.\n *\n * We need to activate the underlying subscription immediately if Stomp is connected. If not it should\n * subscribe when it gets next connected. Further it should re establish the subscription whenever Stomp\n * successfully reconnects.\n *\n * Actual implementation is simple, we filter the BehaviourSubject 'state' so that we can trigger whenever Stomp is\n * connected. Since 'state' is a BehaviourSubject, if Stomp is already connected, it will immediately trigger.\n *\n * The observable that we return to caller remains same across all reconnects, so no special handling needed at\n * the message subscriber.\n */\n this.debug(`Request to subscribe ${queueName}`);\n\n // By default auto acknowledgement of messages\n if (!headers['ack']) {\n headers['ack'] = 'auto';\n }\n\n const /** @type {?} */ coldObservable = Observable.create(\n (messages: Observer) => {\n /*\n * These variables will be used as part of the closure and work their magic during unsubscribe\n */\n let /** @type {?} */ stompSubscription: StompSubscription;\n\n let /** @type {?} */ stompConnectedSubscription: Subscription;\n\n stompConnectedSubscription = this.connectObservable\n .subscribe(() => {\n this.debug(`Will subscribe to ${queueName}`);\n stompSubscription = this.client.subscribe(queueName, (message: Stomp.Message) => {\n messages.next(message);\n },\n headers);\n });\n\n return () => { /* cleanup function, will be called when no subscribers are left */\n this.debug(`Stop watching connection state (for ${queueName})`);\n stompConnectedSubscription.unsubscribe();\n\n if (this.state.getValue() === StompState.CONNECTED) {\n this.debug(`Will unsubscribe from ${queueName} at Stomp`);\n stompSubscription.unsubscribe();\n } else {\n this.debug(`Stomp not connected, no need to unsubscribe from ${queueName} at Stomp`);\n }\n };\n });\n\n /**\n * Important - convert it to hot Observable - otherwise, if the user code subscribes\n * to this observable twice, it will subscribe twice to Stomp broker. (This was happening in the current example).\n * A long but good explanatory article at https://medium.com/@benlesh/hot-vs-cold-observables-f8094ed53339\n */\n return coldObservable.share();\n }\n/**\n * Callback Functions\n * \n * Note the method signature: () => preserves lexical scope\n * if we need to use this.x inside the function\n */\nprotected debug = (args: any): void => {\n console.log(new Date(), args);\n }\n/**\n * Callback run on successfully connecting to server\n */\nprotected on_connect = () => {\n\n this.debug('Connected');\n\n // Indicate our connected state to observers\n this.state.next(StompState.CONNECTED);\n }\n/**\n * Handle errors from stomp.js\n */\nprotected on_error = (error: string | Stomp.Message) => {\n\n // Trigger the error subject\n this.errorSubject.next(error);\n\n if (typeof error === 'object') {\n error = (error).body;\n }\n\n this.debug(`Error: ${error}`);\n\n // Check for dropped connection and try reconnecting\n if (!this.client.connected) {\n // Reset state indicator\n this.state.next(StompState.CLOSED);\n }\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction StompRService_tsickle_Closure_declarations() {\n/** @type {?} */\nStompRService.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompRService.ctorParameters;\n/**\n * State of the STOMPService\n * \n * It is a BehaviorSubject and will emit current status immediately. This will typically get\n * used to show current status to the end user.\n * @type {?}\n */\nStompRService.prototype.state;\n/**\n * Will trigger when connection is established. Use this to carry out initialization.\n * It will trigger every time a (re)connection occurs. If it is already connected\n * it will trigger immediately. You can safely ignore the value, as it will always be\n * StompState.CONNECTED\n * @type {?}\n */\nStompRService.prototype.connectObservable;\n/**\n * Will trigger when an error occurs. This Subject can be used to handle errors from\n * the stomp broker.\n * @type {?}\n */\nStompRService.prototype.errorSubject;\n/**\n * Internal array to hold locally queued messages when STOMP broker is not connected.\n * @type {?}\n */\nStompRService.prototype.queuedMessages;\n/**\n * Configuration\n * @type {?}\n */\nStompRService.prototype._config;\n/**\n * STOMP Client from \\@stomp/stomp.js\n * @type {?}\n */\nStompRService.prototype.client;\n/**\n * Callback Functions\n * \n * Note the method signature: () => preserves lexical scope\n * if we need to use this.x inside the function\n * @type {?}\n */\nStompRService.prototype.debug;\n/**\n * Callback run on successfully connecting to server\n * @type {?}\n */\nStompRService.prototype.on_connect;\n/**\n * Handle errors from stomp.js\n * @type {?}\n */\nStompRService.prototype.on_error;\n}\n\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","import { StompHeaders } from './stomp-headers';\nimport { Injectable } from '@angular/core';\n/**\n * Represents a configuration object for the\n * STOMPService to connect to.\n */\nexport class StompConfig {\n/**\n * Server URL to connect to. Please refer to your STOMP broker documentation for details.\n * \n * Example: ws://127.0.0.1:15674/ws (for a RabbitMQ default setup running on localhost)\n * \n * Alternatively this parameter can be a function that returns an object similar to WebSocket\n * (typically SockJS instance).\n * \n * Example:\n * \n * () => {\n * return new SockJS('http://127.0.0.1:15674/stomp');\n * }\n */\nurl: string | (() => any);\n/**\n * Headers\n * Typical keys: login: string, passcode: string.\n * host:string will neeed to be passed for virtual hosts in RabbitMQ\n */\nheaders: StompHeaders;\n/**\n * How often to incoming heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 0 - disabled\n */\nheartbeat_in: number;\n/**\n * How often to outgoing heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 20000 - every 20 seconds\n */\nheartbeat_out: number;\n/**\n * Wait in milliseconds before attempting auto reconnect\n * Set to 0 to disable\n * \n * Typical value 5000 (5 seconds)\n */\nreconnect_delay: number;\n/**\n * Enable client debugging?\n */\ndebug: boolean;\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction StompConfig_tsickle_Closure_declarations() {\n/** @type {?} */\nStompConfig.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompConfig.ctorParameters;\n/**\n * Server URL to connect to. Please refer to your STOMP broker documentation for details.\n * \n * Example: ws://127.0.0.1:15674/ws (for a RabbitMQ default setup running on localhost)\n * \n * Alternatively this parameter can be a function that returns an object similar to WebSocket\n * (typically SockJS instance).\n * \n * Example:\n * \n * () => {\n * return new SockJS('http://127.0.0.1:15674/stomp');\n * }\n * @type {?}\n */\nStompConfig.prototype.url;\n/**\n * Headers\n * Typical keys: login: string, passcode: string.\n * host:string will neeed to be passed for virtual hosts in RabbitMQ\n * @type {?}\n */\nStompConfig.prototype.headers;\n/**\n * How often to incoming heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 0 - disabled\n * @type {?}\n */\nStompConfig.prototype.heartbeat_in;\n/**\n * How often to outgoing heartbeat?\n * Interval in milliseconds, set to 0 to disable\n * \n * Typical value 20000 - every 20 seconds\n * @type {?}\n */\nStompConfig.prototype.heartbeat_out;\n/**\n * Wait in milliseconds before attempting auto reconnect\n * Set to 0 to disable\n * \n * Typical value 5000 (5 seconds)\n * @type {?}\n */\nStompConfig.prototype.reconnect_delay;\n/**\n * Enable client debugging?\n * @type {?}\n */\nStompConfig.prototype.debug;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","import { Injectable } from '@angular/core';\n\nimport { StompConfig } from './stomp.config';\n\nimport { StompRService } from './stomp-r.service';\n/**\n * Angular2 STOMP Service using \\@stomp/stomp.js\n * \n * \\@description This service handles subscribing to a\n * message queue using the stomp.js library, and returns\n * values via the ES6 Observable specification for\n * asynchronous value streaming by wiring the STOMP\n * messages into an observable.\n * \n * If you want to manually configure and initialize the service\n * please use StompRService\n */\nexport class StompService extends StompRService {\n/**\n * Constructor\n * \n * See README and samples for configuration examples\n * @param {?} config\n */\npublic constructor(config: StompConfig) {\n super();\n\n this.config = config;\n this.initAndConnect();\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: StompConfig, },\n];\n}\n\nfunction StompService_tsickle_Closure_declarations() {\n/** @type {?} */\nStompService.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nStompService.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"],"names":["StompState","CLOSED","TRYING","CONNECTED","DISCONNECTING","StompRService","_this","this","queuedMessages","debug","args","console","log","Date","on_connect","state","next","on_error","error","errorSubject","body","client","connected","BehaviorSubject","connectObservable","filter","currentState","subscribe","sendQueuedMessages","Subject","Object","defineProperty","prototype","set","value","_config","initStompClient","disconnect","Stomp.client","url","Stomp.over","heartbeat","incoming","heartbeat_in","outgoing","heartbeat_out","reconnect_delay","initAndConnect","headers","connect","getValue","publish","queueName","message","send","push","_i","queuedMessages_1","length","queuedMessage","Observable","create","messages","stompSubscription","stompConnectedSubscription","unsubscribe","share","decorators","type","Injectable","ctorParameters","StompConfig","StompService","_super","config","call","__extends"],"mappings":"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"} diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..0f16a28 --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1,4 @@ +export { StompRService } from './src/stomp-r.service'; +export { StompService } from './src/stomp.service'; +export { StompState } from './src/stomp-state'; +export { StompConfig } from './src/stomp.config'; diff --git a/dist/ng2-stompjs.d.ts b/dist/ng2-stompjs.d.ts new file mode 100644 index 0000000..67ff29a --- /dev/null +++ b/dist/ng2-stompjs.d.ts @@ -0,0 +1,4 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './index'; diff --git a/dist/ng2-stompjs.metadata.json b/dist/ng2-stompjs.metadata.json new file mode 100644 index 0000000..c54059a --- /dev/null +++ b/dist/ng2-stompjs.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":3,"metadata":{"StompRService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"initStompClient":[{"__symbolic":"method"}],"initAndConnect":[{"__symbolic":"method"}],"disconnect":[{"__symbolic":"method"}],"connected":[{"__symbolic":"method"}],"publish":[{"__symbolic":"method"}],"sendQueuedMessages":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}]}},"StompService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StompRService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"StompConfig"}]}]}},"StompState":{"CLOSED":0,"TRYING":1,"CONNECTED":2,"DISCONNECTING":3},"StompConfig":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{}}},"origins":{"StompRService":"./src/stomp-r.service","StompService":"./src/stomp.service","StompState":"./src/stomp-state","StompConfig":"./src/stomp.config"},"importAs":"@stomp/ng2-stompjs"} \ No newline at end of file diff --git a/dist/package.json b/dist/package.json new file mode 100644 index 0000000..da2cb0a --- /dev/null +++ b/dist/package.json @@ -0,0 +1,74 @@ +{ + "name": "@stomp/ng2-stompjs", + "version": "0.5.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "dist": "ng-packagr -p ng-package.json", + "build": "ng build", + "test": "ng test", + "doc": "typedoc --excludePrivate --mode file --out docs/ ./index.ts", + "cleanup": "rm -rf dist doc", + "lint": "ng lint" + }, + "repository": { + "type": "git", + "url": "https://github.com/stomp-js/ng2-stompjs" + }, + "author": { + "name": "Deepak Kumar", + "email": "deepak@kreatio.com" + }, + "keywords": [ + "stompjs", + "angular2", + "angular4", + "angular5", + "rabbitmq", + "websocket", + "angular", + "stomp" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/stomp-js/ng2-stompjs/issues" + }, + "main": "bundles/ng2-stompjs.umd.js", + "dependencies": { + "@stomp/stompjs": "https://github.com/stomp-js/stomp-websocket#v4" + }, + "devDependencies": { + "@angular/cli": "1.0.0", + "@angular/common": "^4.0.0", + "@angular/compiler": "^4.0.0", + "@angular/compiler-cli": "^4.0.0", + "@angular/core": "^4.0.0", + "@angular/platform-browser": "^4.0.0", + "@angular/platform-browser-dynamic": "^4.0.0", + "@angular/router": "^4.0.0", + "@types/jasmine": "2.5.38", + "@types/node": "~6.0.60", + "codelyzer": "~2.0.0", + "core-js": "^2.4.1", + "jasmine-core": "~2.5.2", + "jasmine-spec-reporter": "~3.2.0", + "karma": "~1.4.1", + "karma-chrome-launcher": "~2.0.0", + "karma-cli": "~1.0.1", + "karma-coverage-istanbul-reporter": "^0.2.0", + "karma-jasmine": "~1.1.0", + "karma-jasmine-html-reporter": "^0.2.2", + "ng-packagr": "^1.5", + "protractor": "~5.1.0", + "rxjs": "^5.1.0", + "ts-node": "~2.0.0", + "tslint": "~4.5.0", + "typedoc": "^0.7.1", + "typescript": "~2.2.0", + "zone.js": "^0.8.4" + }, + "module": "@stomp/ng2-stompjs.es5.js", + "es2015": "@stomp/ng2-stompjs.js", + "typings": "ng2-stompjs.d.ts", + "metadata": "ng2-stompjs.metadata.json" +} diff --git a/dist/src/stomp-headers.d.ts b/dist/src/stomp-headers.d.ts new file mode 100644 index 0000000..da4a941 --- /dev/null +++ b/dist/src/stomp-headers.d.ts @@ -0,0 +1,4 @@ +/** Type definition for Headers */ +export declare type StompHeaders = { + [key: string]: string; +}; diff --git a/dist/src/stomp-r.service.d.ts b/dist/src/stomp-r.service.d.ts new file mode 100644 index 0000000..1609cc3 --- /dev/null +++ b/dist/src/stomp-r.service.d.ts @@ -0,0 +1,126 @@ +import { BehaviorSubject } from 'rxjs/BehaviorSubject'; +import { Observable } from 'rxjs/Observable'; +import { Subject } from 'rxjs/Subject'; +import 'rxjs/add/operator/filter'; +import 'rxjs/add/operator/share'; +import { StompConfig } from './stomp.config'; +import * as Stomp from '@stomp/stompjs'; +import { StompHeaders } from './stomp-headers'; +import { StompState } from './stomp-state'; +/** + * Angular2 STOMP Raw Service using @stomp/stomp.js + * + * @description This service handles subscribing to a + * message queue using the stomp.js library, and returns + * values via the ES6 Observable specification for + * asynchronous value streaming by wiring the STOMP + * messages into an observable. + * + * If you will like to pass the configuration as a dependency, + * please use StompService class. + */ +export declare class StompRService { + /** + * State of the STOMPService + * + * It is a BehaviorSubject and will emit current status immediately. This will typically get + * used to show current status to the end user. + */ + state: BehaviorSubject; + /** + * Will trigger when connection is established. Use this to carry out initialization. + * It will trigger every time a (re)connection occurs. If it is already connected + * it will trigger immediately. You can safely ignore the value, as it will always be + * StompState.CONNECTED + */ + connectObservable: Observable; + /** + * Will trigger when an error occurs. This Subject can be used to handle errors from + * the stomp broker. + */ + errorSubject: Subject; + /** + * Internal array to hold locally queued messages when STOMP broker is not connected. + */ + protected queuedMessages: { + queueName: string; + message: string; + headers: StompHeaders; + }[]; + /** + * Configuration + */ + private _config; + /** + * STOMP Client from @stomp/stomp.js + */ + protected client: Stomp.Client; + /** + * Constructor + * + * See README and samples for configuration examples + */ + constructor(); + /** Set configuration */ + config: StompConfig; + /** Initialize STOMP Client */ + protected initStompClient(): void; + /** + * Perform connection to STOMP broker + */ + initAndConnect(): void; + /** + * Disconnect the connection to the STOMP broker and clean up, + * not sure how this method will get called, if ever. + * Call this method only if you know what you are doing. + */ + disconnect(): void; + /** + * The current connection status with the STOMP broker + * @returns {boolean} + */ + connected(): boolean; + /** + * Send a message to a named destination. The message must be string. + * + * The message will get locally queued if the STOMP broker is not connected. Attempt + * will be made to publish queued messages as soon as the broker gets connected. + * + * @param queueName + * @param message + * @param headers + */ + publish(queueName: string, message: string, headers?: StompHeaders): void; + /** Send queued messages */ + protected sendQueuedMessages(): void; + /** + * Subscribe to server message queues + * + * This method can safely be called even when STOMP broker is not connected. Further + * if the underlying STOMP connection drops and reconnects, it will resubscribe transparently. + * + * If a header field 'ack' is not explicitly passed, 'ack' will be set to 'auto'. If you + * do not understand what it means, please leave it as is. + * + * Please note, however, while working with temporary queues, where the subscription request + * creates the + * underlying queue, during reconnect it might miss messages. This issue is not specific + * to this library but the way STOMP brokers are designed to work. + * + * @param queueName + * @param headers + * @returns {Observable} + */ + subscribe(queueName: string, headers?: StompHeaders): Observable; + /** + * Callback Functions + * + * Note the method signature: () => preserves lexical scope + * if we need to use this.x inside the function + */ + protected debug: (args: any) => void; + /** Callback run on successfully connecting to server */ + protected on_connect: () => void; + /** Handle errors from stomp.js */ + protected on_error: (error: string | Stomp.Message) => void; +} diff --git a/dist/src/stomp-state.d.ts b/dist/src/stomp-state.d.ts new file mode 100644 index 0000000..ef642a5 --- /dev/null +++ b/dist/src/stomp-state.d.ts @@ -0,0 +1,9 @@ +/** + * Possible states for the STOMP service + */ +export declare enum StompState { + CLOSED = 0, + TRYING = 1, + CONNECTED = 2, + DISCONNECTING = 3, +} diff --git a/dist/src/stomp.config.d.ts b/dist/src/stomp.config.d.ts new file mode 100644 index 0000000..bf88f83 --- /dev/null +++ b/dist/src/stomp.config.d.ts @@ -0,0 +1,50 @@ +import { StompHeaders } from './stomp-headers'; +/** + * Represents a configuration object for the + * STOMPService to connect to. + */ +export declare class StompConfig { + /** + * Server URL to connect to. Please refer to your STOMP broker documentation for details. + * + * Example: ws://127.0.0.1:15674/ws (for a RabbitMQ default setup running on localhost) + * + * Alternatively this parameter can be a function that returns an object similar to WebSocket + * (typically SockJS instance). + * + * Example: + * + * () => { + * return new SockJS('http://127.0.0.1:15674/stomp'); + * } + */ + url: string | (() => any); + /** + * Headers + * Typical keys: login: string, passcode: string. + * host:string will neeed to be passed for virtual hosts in RabbitMQ + */ + headers: StompHeaders; + /** How often to incoming heartbeat? + * Interval in milliseconds, set to 0 to disable + * + * Typical value 0 - disabled + */ + heartbeat_in: number; + /** + * How often to outgoing heartbeat? + * Interval in milliseconds, set to 0 to disable + * + * Typical value 20000 - every 20 seconds + */ + heartbeat_out: number; + /** + * Wait in milliseconds before attempting auto reconnect + * Set to 0 to disable + * + * Typical value 5000 (5 seconds) + */ + reconnect_delay: number; + /** Enable client debugging? */ + debug: boolean; +} diff --git a/dist/src/stomp.service.d.ts b/dist/src/stomp.service.d.ts new file mode 100644 index 0000000..ed77559 --- /dev/null +++ b/dist/src/stomp.service.d.ts @@ -0,0 +1,22 @@ +import { StompConfig } from './stomp.config'; +import { StompRService } from './stomp-r.service'; +/** + * Angular2 STOMP Service using @stomp/stomp.js + * + * @description This service handles subscribing to a + * message queue using the stomp.js library, and returns + * values via the ES6 Observable specification for + * asynchronous value streaming by wiring the STOMP + * messages into an observable. + * + * If you want to manually configure and initialize the service + * please use StompRService + */ +export declare class StompService extends StompRService { + /** + * Constructor + * + * See README and samples for configuration examples + */ + constructor(config: StompConfig); +} diff --git a/docs/assets/css/main.css.map b/docs/assets/css/main.css.map new file mode 100644 index 0000000..bc17fe4 --- /dev/null +++ b/docs/assets/css/main.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../../../../src/default/assets/css/vendors/_normalize.sass","../../../../src/default/assets/css/vendors/_highlight.js.sass","../../../../src/default/assets/css/setup/_mixins.sass","../../../../src/default/assets/css/setup/_grid.sass","../../../../src/default/assets/css/setup/_icons.scss","../../../../src/default/assets/css/setup/_animations.sass","../../../../src/default/assets/css/setup/_typography.sass","../../../../src/default/assets/css/_constants.sass","../../../../src/default/assets/css/layouts/_default.sass","../../../../src/default/assets/css/layouts/_minimal.sass","../../../../src/default/assets/css/elements/_comment.sass","../../../../src/default/assets/css/elements/_filter.sass","../../../../src/default/assets/css/elements/_footer.sass","../../../../src/default/assets/css/elements/_hierarchy.sass","../../../../src/default/assets/css/elements/_index.sass","../../../../src/default/assets/css/elements/_member.sass","../../../../src/default/assets/css/elements/_navigation.sass","../../../../src/default/assets/css/elements/_panel.sass","../../../../src/default/assets/css/elements/_search.sass","../../../../src/default/assets/css/elements/_signatures.sass","../../../../src/default/assets/css/elements/_sources.sass","../../../../src/default/assets/css/elements/_toolbar.sass","../../../../src/default/assets/css/elements/_images.sass"], +"names": [], +"file": "main.css" +} diff --git a/ng-package.json b/ng-package.json index e43e64e..3dfdd4f 100644 --- a/ng-package.json +++ b/ng-package.json @@ -3,17 +3,8 @@ "lib": { "entryFile": "index.ts", "externals": { - "net": "net", - "events": "events", - "tty": "tty", - "util": "util", - "@stomp/stompjs": "stompjs", - "url": "url", - "crypto": "crypto", - "fs": "fs", - "websocket": "websocket" - }, - "preferBuiltins": true - }, - "preferBuiltins": true + "@stomp/stompjs": "./node_modules/@stomp/stompjs/index.js", + "@stomp/stompjs/index": "./node_modules/@stomp/stompjs/index.js" + } + } } \ No newline at end of file diff --git a/package.json b/package.json index d49a69c..62c3c09 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "karma-coverage-istanbul-reporter": "^0.2.0", "karma-jasmine": "~1.1.0", "karma-jasmine-html-reporter": "^0.2.2", + "ng-packagr": "^1.5", "protractor": "~5.1.0", "rxjs": "^5.1.0", "ts-node": "~2.0.0", diff --git a/yarn.lock b/yarn.lock index 245a988..3678438 100644 --- a/yarn.lock +++ b/yarn.lock @@ -108,6 +108,10 @@ version "1.0.5" resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77" +"@ngtools/json-schema@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922" + "@ngtools/webpack@1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-1.3.0.tgz#a1071230985358ecdf87b2fa9879ae6cc6355e83" @@ -192,6 +196,10 @@ acorn@^4.0.3, acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" +acorn@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" + adm-zip@0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736" @@ -260,6 +268,12 @@ 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" + any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -308,6 +322,14 @@ arr-flatten@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -316,6 +338,14 @@ array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + array-slice@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" @@ -326,7 +356,7 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" -array-uniq@^1.0.1: +array-uniq@^1.0.1, array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -372,6 +402,10 @@ assert@^1.1.1: dependencies: util "0.10.3" +ast-types@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -388,6 +422,12 @@ async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +async@^2.0.0-rc.5: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + async@^2.0.1, async@^2.1.2, async@^2.1.4: version "2.4.1" resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7" @@ -413,6 +453,17 @@ autoprefixer@^6.3.1, autoprefixer@^6.5.3: postcss "^5.2.16" postcss-value-parser "^3.2.3" +autoprefixer@^7.1.1: + version "7.1.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7" + dependencies: + browserslist "^2.5.1" + caniuse-lite "^1.0.30000748" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^6.0.13" + postcss-value-parser "^3.2.3" + aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" @@ -455,6 +506,13 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" +babel-runtime@^6.9.2: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + babel-template@^6.16.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" @@ -522,6 +580,10 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" @@ -622,6 +684,12 @@ brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +browser-resolve@^1.11.0: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" @@ -680,6 +748,17 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" +browserslist@^2.1.5, browserslist@^2.5.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.9.0.tgz#706aca15c53be15610f466e348cbfa0c00a6a379" + dependencies: + caniuse-lite "^1.0.30000760" + electron-to-chromium "^1.3.27" + +buffer-crc32@^0.2.5: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + buffer-xor@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -692,7 +771,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -builtin-modules@^1.0.0: +builtin-modules@^1.0.0, builtin-modules@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -755,6 +834,10 @@ caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: version "1.0.30000680" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000680.tgz#d76ebeaaeb82e3d9952bfdc5c231c4f83cd48144" +caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000760: + version "1.0.30000760" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000760.tgz#ec720395742f1c7ec8947fd6dd2604e77a8f98ff" + capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" @@ -780,6 +863,14 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.0, chalk@^2.3.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" + chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -843,6 +934,14 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone@^1.0.0, clone@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" + clone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" @@ -878,6 +977,12 @@ color-convert@^1.3.0: dependencies: color-name "^1.1.1" +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + color-name@^1.0.0, color-name@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" @@ -926,6 +1031,10 @@ commander@2.9.x, commander@~2.9.0: dependencies: graceful-readlink ">= 1.0.0" +commander@^2.11.0, commander@~2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + common-tags@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0" @@ -1015,7 +1124,7 @@ content-type@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" -convert-source-map@^1.3.0: +convert-source-map@^1.1.1, convert-source-map@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" @@ -1035,6 +1144,22 @@ 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" +cpx@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" @@ -1227,6 +1352,10 @@ date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + debug@*, debug@2, debug@2.6.8, debug@^2.1.3, debug@^2.2.0, debug@^2.6.3, debug@^2.6.8: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" @@ -1401,10 +1530,29 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +duplexify@^3.2.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -1419,6 +1567,10 @@ electron-to-chromium@^1.2.7: version "1.3.13" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.13.tgz#1b3a5eace6e087bb5e257a100b0cbfe81b2891fc" +electron-to-chromium@^1.3.27: + version "1.3.27" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" + elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -1449,6 +1601,12 @@ encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" +end-of-stream@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" + dependencies: + once "^1.4.0" + engine.io-client@1.8.2: version "1.8.2" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766" @@ -1521,6 +1679,17 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +es6-promise@^3.1.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + +es6-templates@~0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" + dependencies: + recast "~0.11.12" + through "~2.3.6" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -1533,10 +1702,18 @@ esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@^3.1.1: +esprima@^3.1.1, esprima@~3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" +estree-walker@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa" + +estree-walker@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.0.tgz#aae3b57c42deb8010e349c892462f0e71c5dd1aa" + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -1647,6 +1824,12 @@ express@^4.13.3: utils-merge "1.0.0" vary "~1.1.1" +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + extend@3, extend@^3.0.0, extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -1678,6 +1861,13 @@ extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" +fancy-log@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" + dependencies: + chalk "^1.1.1" + time-stamp "^1.0.0" + fastparse@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" @@ -1739,6 +1929,10 @@ finalhandler@1.0.3, finalhandler@~1.0.3: statuses "~1.3.1" unpipe "~1.0.0" +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -1752,6 +1946,10 @@ findup-sync@~0.3.0: dependencies: glob "~5.0.0" +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" @@ -1816,6 +2014,14 @@ fs-extra@^3.0.0: jsonfile "^3.0.0" universalify "^0.1.0" +fs-extra@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.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" @@ -1898,6 +2104,32 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob-parent@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-stream@^5.3.2: + version "5.3.5" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" + dependencies: + extend "^3.0.0" + glob "^5.0.3" + glob-parent "^3.0.0" + micromatch "^2.3.7" + ordered-read-streams "^0.3.0" + through2 "^0.6.0" + to-absolute-glob "^0.1.1" + unique-stream "^2.0.2" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + glob@7.0.x: version "7.0.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" @@ -1909,24 +2141,24 @@ glob@7.0.x: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" +glob@^5.0.3, glob@~5.0.0: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" dependencies: - fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "2 || 3" once "^1.3.0" path-is-absolute "^1.0.0" -glob@~5.0.0: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, 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 "2 || 3" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -1953,6 +2185,12 @@ globule@^1.0.0: lodash "~4.16.4" minimatch "~3.0.2" +glogg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" + dependencies: + sparkles "^1.0.0" + got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -1969,7 +2207,7 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1977,6 +2215,57 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" +gulp-inline-ng2-template@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/gulp-inline-ng2-template/-/gulp-inline-ng2-template-4.0.0.tgz#a145f216f79a0da6c9c6b17bce47e199018cd838" + dependencies: + async "^2.0.0-rc.5" + clone "~1.0.2" + es6-templates "~0.2.2" + extend "~3.0.0" + gulp-util "~3.0.6" + isarray "0.0.1" + through2 "~2.0.0" + +gulp-sourcemaps@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c" + dependencies: + convert-source-map "^1.1.1" + graceful-fs "^4.1.2" + strip-bom "^2.0.0" + through2 "^2.0.0" + vinyl "^1.0.0" + +gulp-util@~3.0.6: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" @@ -2030,6 +2319,16 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -2081,6 +2380,12 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4: version "2.4.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" @@ -2247,7 +2552,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -2330,7 +2635,7 @@ is-equal-shallow@^0.1.3: dependencies: is-primitive "^2.0.0" -is-extendable@^0.1.1: +is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -2370,6 +2675,10 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" @@ -2428,7 +2737,7 @@ is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -2446,6 +2755,10 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +is-valid-glob@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -2616,7 +2929,7 @@ 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: +json-stable-stringify@^1.0.0, 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: @@ -2646,6 +2959,12 @@ jsonfile@^3.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -2752,6 +3071,12 @@ lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -2808,6 +3133,42 @@ loader-utils@^1.0.2: emojis-list "^2.0.0" json5 "^0.5.0" +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -2820,6 +3181,32 @@ lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.isequal@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -2828,6 +3215,31 @@ lodash.mergewith@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -2897,6 +3309,12 @@ magic-string@^0.19.0: dependencies: vlq "^0.2.1" +magic-string@^0.22.4: + version "0.22.4" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz#31039b4e40366395618c1d6cf8193c53917475ff" + dependencies: + vlq "^0.2.1" + make-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" @@ -2955,11 +3373,17 @@ merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" +merge-stream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + dependencies: + readable-stream "^2.0.1" + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^2.1.5, micromatch@^2.3.11: +micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -3024,7 +3448,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -3050,6 +3474,12 @@ ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -3068,6 +3498,33 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +ng-packagr@^1.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-1.5.1.tgz#c90407bed3ab050ecb9fbbd7061043bb334256d8" + dependencies: + "@ngtools/json-schema" "^1.1.0" + autoprefixer "^7.1.1" + browserslist "^2.1.5" + commander "^2.11.0" + cpx "^1.5.0" + fs-extra "^4.0.2" + glob "^7.1.2" + gulp-inline-ng2-template "^4.0.0" + less "^2.7.2" + lodash "^4.17.4" + node-sass "^4.5.3" + postcss "^6.0.2" + read-file "^0.2.0" + rimraf "^2.6.1" + rollup "^0.50.0" + rollup-plugin-commonjs "^8.2.1" + rollup-plugin-node-resolve "^3.0.0" + sorcery "^0.10.0" + stylus "^0.54.5" + ts-node "^3.0.4" + uglify-js "^3.0.7" + vinyl-fs "^2.4.4" + no-case@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" @@ -3161,6 +3618,29 @@ node-sass@^4.3.0: sass-graph "^2.1.1" stdout-stream "^1.4.0" +node-sass@^4.5.3: + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.6.1.tgz#9b331cf943ee5440f199e858941a90d13bc9bfc5" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + lodash.mergewith "^4.6.0" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.3.2" + node-gyp "^3.3.1" + npmlog "^4.0.0" + request "^2.79.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "nopt@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -3243,7 +3723,11 @@ object-assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -3308,6 +3792,13 @@ options@>=0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" +ordered-read-streams@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" + dependencies: + is-stream "^1.0.1" + readable-stream "^2.0.1" + original@>=0.0.5: version "1.0.0" resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" @@ -3383,6 +3874,10 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + parsejson@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" @@ -3409,6 +3904,10 @@ path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -3744,6 +4243,14 @@ postcss@^6.0.1: source-map "^0.5.6" supports-color "^3.2.3" +postcss@^6.0.13, postcss@^6.0.2: + version "6.0.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.14.tgz#5534c72114739e75d0afcf017db853099f562885" + dependencies: + chalk "^2.3.0" + source-map "^0.6.1" + supports-color "^4.4.0" + prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -3759,6 +4266,10 @@ pretty-error@^2.0.2: renderkid "^2.0.1" utila "~0.4" +private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + 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" @@ -3903,6 +4414,10 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +read-file@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/read-file/-/read-file-0.2.0.tgz#70c6baf8842ec7d1540f981fd0e6aed4c81bd545" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -3918,7 +4433,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -readable-stream@1.0, readable-stream@~1.0.2: +readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.2: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: @@ -3927,6 +4442,18 @@ readable-stream@1.0, readable-stream@~1.0.2: isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@^2.0.0, readable-stream@^2.0.4, readable-stream@^2.1.5: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6, readable-stream@^2.2.9: version "2.2.11" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.11.tgz#0796b31f8d7688007ff0b93a8088d34aa17c0f72" @@ -3939,6 +4466,15 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.0.0" util-deprecate "~1.0.1" +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -3948,6 +4484,15 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" +recast@~0.11.12: + version "0.11.23" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + dependencies: + ast-types "0.9.6" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -3987,6 +4532,10 @@ regenerator-runtime@^0.10.0: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -4061,6 +4610,10 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + request@2, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@^2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" @@ -4100,12 +4653,22 @@ requires-port@1.0.x, requires-port@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + resolve@^1.1.6, resolve@^1.1.7: version "1.3.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" dependencies: path-parse "^1.0.5" +resolve@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + 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" @@ -4136,6 +4699,36 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^2.0.0" inherits "^2.0.1" +rollup-plugin-commonjs@^8.2.1: + version "8.2.6" + resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.6.tgz#27e5b9069ff94005bb01e01bb46a1e4873784677" + dependencies: + acorn "^5.2.1" + estree-walker "^0.5.0" + magic-string "^0.22.4" + resolve "^1.4.0" + rollup-pluginutils "^2.0.1" + +rollup-plugin-node-resolve@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz#8b897c4c3030d5001277b0514b25d2ca09683ee0" + dependencies: + browser-resolve "^1.11.0" + builtin-modules "^1.1.0" + is-module "^1.0.0" + resolve "^1.1.6" + +rollup-pluginutils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz#7ec95b3573f6543a46a6461bd9a7c544525d0fc0" + dependencies: + estree-walker "^0.3.0" + micromatch "^2.3.11" + +rollup@^0.50.0: + version "0.50.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.50.1.tgz#e4dafcbf8d2bb0d9f5589d0cc6f64d76b8815730" + rsvp@^3.0.17: version "3.5.0" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.5.0.tgz#a62c573a4ae4e1dfd0697ebc6242e79c681eaa34" @@ -4170,7 +4763,20 @@ safe-buffer@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" -sass-graph@^2.1.1: +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +sander@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" + dependencies: + es6-promise "^3.1.2" + graceful-fs "^4.1.3" + mkdirp "^0.5.1" + rimraf "^2.5.2" + +sass-graph@^2.1.1, sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" dependencies: @@ -4326,6 +4932,15 @@ sha.js@^2.4.0, sha.js@^2.4.8: dependencies: inherits "^2.0.1" +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + shelljs@^0.7.0: version "0.7.8" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" @@ -4416,6 +5031,15 @@ sockjs@0.3.18: faye-websocket "^0.10.0" uuid "^2.0.2" +sorcery@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" + dependencies: + buffer-crc32 "^0.2.5" + minimist "^1.2.0" + sander "^0.5.0" + sourcemap-codec "^1.3.0" + sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -4456,6 +5080,24 @@ source-map@^0.4.2, source-map@^0.4.4: dependencies: amdefine ">=0.0.4" +source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +source-map@~0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +sourcemap-codec@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.3.1.tgz#9ad6f9bdbd691931016e30939dbc868673323146" + dependencies: + vlq "^0.2.1" + +sparkles@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" @@ -4542,6 +5184,10 @@ stream-http@^2.3.1: to-arraybuffer "^1.0.0" xtend "^4.0.0" +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -4571,6 +5217,12 @@ string_decoder@~1.0.0: dependencies: safe-buffer "~5.0.1" +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -4581,12 +5233,23 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-bom-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" + dependencies: + first-chunk-stream "^1.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" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -4626,6 +5289,12 @@ stylus@^0.54.5: sax "0.5.x" source-map "0.1.x" +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -4636,6 +5305,12 @@ supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-co dependencies: has-flag "^1.0.0" +supports-color@^4.0.0, supports-color@^4.4.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" + svgo@^0.7.0: version "0.7.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" @@ -4690,10 +5365,35 @@ term-size@^0.1.0: dependencies: execa "^0.4.0" -through@X.X.X, through@^2.3.6: +through2-filter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^0.6.0: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through2@^2.0.0, through2@~2.0.0: + 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" + +through@X.X.X, through@^2.3.6, through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -4726,6 +5426,12 @@ tmp@^0.0.31: dependencies: os-tmpdir "~1.0.1" +to-absolute-glob@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" + dependencies: + extend-shallow "^2.0.1" + to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" @@ -4756,6 +5462,21 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +ts-node@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" + dependencies: + arrify "^1.0.0" + chalk "^2.0.0" + diff "^3.1.0" + make-error "^1.1.1" + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.0" + tsconfig "^6.0.0" + v8flags "^3.0.0" + yn "^2.0.0" + ts-node@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74" @@ -4782,6 +5503,13 @@ tsconfig@^5.0.2: strip-bom "^2.0.0" strip-json-comments "^2.0.0" +tsconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032" + dependencies: + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + tsickle@^0.21.0: version "0.21.6" resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.21.6.tgz#53b01b979c5c13fdb13afb3fb958177e5991588d" @@ -4886,6 +5614,13 @@ uglify-js@^2.6, uglify-js@^2.7.5: optionalDependencies: uglify-to-browserify "~1.0.0" +uglify-js@^3.0.7: + version "3.1.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.9.tgz#dffca799308cf327ec3ac77eeacb8e196ce3b452" + dependencies: + commander "~2.11.0" + source-map "~0.6.1" + uglify-js@~2.3: version "2.3.6" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a" @@ -4920,6 +5655,13 @@ uniqs@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" +unique-stream@^2.0.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" + dependencies: + json-stable-stringify "^1.0.0" + through2-filter "^2.0.0" + unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -5036,6 +5778,16 @@ v8flags@^2.0.11: dependencies: user-home "^1.1.1" +v8flags@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b" + dependencies: + homedir-polyfill "^1.0.1" + +vali-date@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" + validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" @@ -5057,6 +5809,44 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" +vinyl-fs@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" + dependencies: + duplexify "^3.2.0" + glob-stream "^5.3.2" + graceful-fs "^4.0.0" + gulp-sourcemaps "1.6.0" + is-valid-glob "^0.3.0" + lazystream "^1.0.0" + lodash.isequal "^4.0.0" + merge-stream "^1.0.0" + mkdirp "^0.5.0" + object-assign "^4.0.0" + readable-stream "^2.0.4" + strip-bom "^2.0.0" + strip-bom-stream "^1.0.0" + through2 "^2.0.0" + through2-filter "^2.0.0" + vali-date "^1.0.0" + vinyl "^1.0.0" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + vlq@^0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.2.tgz#e316d5257b40b86bb43cb8d5fea5d7f54d6b0ca1" @@ -5311,7 +6101,7 @@ xmlhttprequest-ssl@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" -xtend@^4.0.0: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -5394,6 +6184,10 @@ yn@^1.2.0: dependencies: object-assign "^4.1.1" +yn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + zone.js@^0.7.2: version "0.7.8" resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.7.8.tgz#4f3fe8834d44597f2639053a0fa438df34fffded"