diff --git a/CHANGES.md b/CHANGES.md new file mode 100644 index 0000000..0e47805 --- /dev/null +++ b/CHANGES.md @@ -0,0 +1,5 @@ +# Changes + +## 1.0.0 + +- initial project release. (bustardcelly) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2fbb4b1 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,169 @@ +

+ Red5 Pro Logo +

+

+ requirements • + quickstart • + library structure +

+------- + +# Contributing to Red5 Pro HTML SDK + +> The following document describes how to contribute to Red5 Pro Stream Manager Extension library. + +* [Requirements](#requirements) +* [Developer Quickstart](#developer-quickstart) + * [Testing](#testing) + * [Building](#building) + * [Releasing](#releasing) +* [Tagging and Releases](#tagging-and-releases) +* [Library Structure](#library-structure) + * [Babel Transpiler](#babel-transpiler) + * [Webpack Builds](#webpack-builds) + * [Jest Unit Tests](#jest-unit-tests) + * [ESLint](#eslint) + +--- + +# Requirements + +Developing and build the **Red5 Pro Stream Manager Extension** library requires: + +* [NodeJS](https://nodejs.org/en/) +* NPM (should be installed as part of Node) + +_The Stream Manager Extension is actively being developed against Node 10+._ + +## Installation of Requirements + +The *Stream Manager Extension* library was develop using [NodeJS v10](https://nodejs.org/en/blog/release/v10.0.0/), though - most likely - will be compatable with *NodeJS >= 8*. + +The preferred *NodeJS* version manager is [n](https://github.com/tj/n); `n` makes it very easy to manage different versions of NodeJS for your development needs. Read and follow the instructions regarding [n on Github](https://github.com/tj/n). As a quick walk through to set up development for this project: + +```sh +$ npm install -g n +$ n stable +``` + +# Developer Quickstart + +## Installation + +```sh +$ npm install +``` + +## Testing + +To run the test suite: +```sh +$ npm run test +``` + +To watch for file change and run tests while updating test suite: +```sh +$ npm run test:watch +``` + +Optionally, if want to run/watch a target test suite: +```sh +$ npm run test:watch [path-to-test-file] +``` + +## Building + +To build the library targeting the browser: + +```sh +$ npm run webpack:build +``` + +Build is placed in the `build` directory with the current `version` defined in the [package.json](package.json). + +## Staging + +To build a minified version of the library without bumping the version: + +```sh +$ npm run webpack:build-min +``` + +Build is placed in the `build` directory with the current `version` defined in the [package.json](package.json). + +## Releasing + +To build a release for public consumption: + +```sh +$ npm run webpack:dist +``` + +Build is placed in the `dist` directory with the updated `version` defined in the [package.json](package.json). + +### Versioning + +By default, running `webpack:dist` will bump the `PATCH` digit of the semver (i.e., changing release `1.0.0` to `1.0.1`). + +You can specify the version target when appropriate by defining a `BUMP` env variable when issuing `webpack:dist`. For instance, to build a release with an updated `MAJOR` version: + +```sh +$ BUMP=major npm run webpack:dist +``` + +The follow excepted `BUMP` env variable values are: + +* `major` +* `minor` +* `patch` + +> More information about semantic versioning: [http://semver.org/](http://semver.org/). + +# Tagging and Releases + +The workflow in generating a release version in `develop` to be moved up the chain for CI deployment is as follows: + +## Release Distribution + +1. Develop all work off of `develop` branch +2. Continually PR work into `develop` branch +3. When `develop` has been QA'd and available for release, change the release semver in `package.json` +4. Issue the following command to update the changelog: `git pull && npm run changes` +5. Preview & edit the changelog as needed +6. Commit the changes into `develop` branch with the following command (replacing `$version` with the version in `package.json`): `$ git commit -m "$version"` +7. Issue the following command to make a distribution to be attached to tagged versions: `$ npm run webpack:dist` +8. The distribution will be in the `dist` directory under the version number you set in step #3 +7. PR `develop` into `qa`, and tag a **$version-staging** version for CI +8. PR `qa` into `master, and tag a *v$version-release** version for CI +9. Add the zipped up distribution you created in step #8 to the tag(s) + + +# Library Structure + +The library is composed of modules written in module syntax of [es2015](http://www.ecma-international.org/ecma-262/6.0/), transpiled using [Babel](https://babeljs.io/) and built using [Webpack](https://github.com/webpack/webpack) for browsers of today. + +## Babel Transpiler + +[Babel](https://babeljs.io/) is used as a transpiler. This allows for the library source to be written using new features from and syntax of [es2015](https://babeljs.io/docs/learn-es2015/), in the hope/attempt to remove the transpilation once "modern" browsers vendors adopt support for *es2015*. + +## Webpack Builds + +[Webpack](https://github.com/webpack/webpack) is used to build and deploy the *Red5 Pro Stream Manager Extension* library. It supports running the code through the [Babel](https://babeljs.io/) transpiler and minification through the [Uglify Plugin](https://webpack.github.io/docs/list-of-plugins.html#uglifyjsplugin). + +You can find the *webpack* build configuration at [webpack.config.babel.js](webpack.config.babel.js). + +## Jest Unit Tests + +[Jest](https://facebook.github.io/jest/) is used for the testing framework. Essentially, it is [jasmine2](http://jasmine.github.io/2.0/introduction.html) with built in mocking and capability to write tests in using [es2015](http://www.ecma-international.org/ecma-262/6.0/) syntax and [babel](https://babeljs.io/). + +## ESLint + +[ESLint](http://eslint.org/) is used as a linting tool for code structure. The default [eslint:recommended](http://eslint.org/docs/user-guide/migrating-to-1.0.0) settings are defined as the base rule set. + +To install *eslint* to be used in your preferred editor: + +```sh +$ npm install -g eslint +``` + +[Please visit the documentation on proper integration with your preferred editor/IDE](http://eslint.org/docs/user-guide/integrations). diff --git a/README.md b/README.md index 5e94ff8..a15aa2a 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ * [Autoscale](#autoscale) * [Autoscale Configuraiton](#autoscale-configuration) +--- + # Quickstart Before creating the following client-side example, you will first need to set up your remote **Red5 Pro Server** to support autoscaling: [Red5 Pro Autoscaling and Stream Manager](https://www.red5pro.com/docs/autoscale/). @@ -63,19 +65,19 @@ In a browser: var autoscaleConfig = { protocol: 'https', - host: 'nafarat.red5.org', - streamName: 'stream1todd', + host: 'streammanager.company.org', + streamName: 'mystream', scope: 'live', - apiVersion: '2.0', + apiVersion: '3.0', useProxy: true }; var initConfig = { protocol: 'wss', - host: 'nafarat.red5.org', + host: 'streammanager.company.org', port: 8083, app: 'live', - streamName: 'stream1todd', + streamName: 'mystream', iceServers: [{urls: 'stun:stun2.l.google.com:19302'}] }; diff --git a/examples/browser/dual-rtc.html b/examples/browser/dual-rtc.html index 39ca315..ecf301a 100644 --- a/examples/browser/dual-rtc.html +++ b/examples/browser/dual-rtc.html @@ -32,8 +32,8 @@ var autoscaleConfig = { protocol: 'https', - host: 'nafarat.red5.org', - streamName: 'stream1todd', + host: '127.0.0.0', + streamName: 'mystream', scope: 'live', apiVersion: '2.0', useProxy: true @@ -41,10 +41,10 @@ var initConfig = { protocol: 'wss', - host: 'nafarat.red5.org', + host: '127.0.0.0', port: 8083, app: 'live', - streamName: 'stream1todd', + streamName: 'mystream', iceServers: [{urls: 'stun:stun2.l.google.com:19302'}] }; diff --git a/examples/browser/publisher-failover.html b/examples/browser/publisher-failover.html index f31a2c4..4f77ff5 100644 --- a/examples/browser/publisher-failover.html +++ b/examples/browser/publisher-failover.html @@ -16,8 +16,8 @@ var autoscaleConfig = { protocol: 'https', - host: 'nafarat.red5.org', - streamName: 'stream1todd', + host: '127.0.0.0', + streamName: 'mystream', scope: 'live', apiVersion: '2.0', action: 'broadcast', @@ -26,14 +26,14 @@ var config = { rtc: { protocol: 'wss', - host: 'nafarat.red5.org', + host: '127.0.0.0', port: 8083, app: "live", bandwidth: { 'audio': 50, 'video': 256 }, - streamName: 'stream1todd', + streamName: 'mystream', iceServers: [{urls: 'stun:stun2.l.google.com:19302'}], connectionParams: { validation_url: encodeURIComponent('https://mmd-rt-vep.lldns.net/jaker/some_slot_id/validate?s=1527102700&e=1527102705&h=31d9b5dc23c68c6362dac42bada104c2') @@ -41,12 +41,12 @@ }, rtmp: { protocol: 'rtmp', - host: 'nafarat.red5.org', + host: '127.0.0.0', port: 1935, app: 'live', embedWidth: '100%', embedHeight: 360, - streamName: 'stream1todd', + streamName: 'mystream', swf: './lib/red5pro/red5pro-publisher.swf', swfobjectURL: './lib/swfobject/swfobject.js', productInstallURL: './lib/swfobject/playerProductInstall.swf', diff --git a/examples/browser/subscriber-failover.html b/examples/browser/subscriber-failover.html index ce9c63c..47dcf7c 100644 --- a/examples/browser/subscriber-failover.html +++ b/examples/browser/subscriber-failover.html @@ -20,8 +20,8 @@ var autoscaleConfig = { protocol: 'https', - host: 'nafarat.red5.org', - streamName: 'stream1todd', + host: '127.0.0.0', + streamName: 'mystream', scope: 'live', apiVersion: '2.0', action: 'subscribe', @@ -32,14 +32,14 @@ var config = { rtc: { protocol: 'wss', - host: 'nafarat.red5.org', + host: '127.0.0.0', port: 8083, app: "live", bandwidth: { 'audio': 50, 'video': 256 }, - streamName: 'stream1todd', + streamName: 'mystream', iceServers: [{urls: 'stun:stun2.l.google.com:19302'}], connectionParams: { validation_url: encodeURIComponent('https://mmd-rt-vep.lldns.net/jaker/some_slot_id/validate?s=1527102700&e=1527102705&h=31d9b5dc23c68c6362dac42bada104c2') @@ -47,12 +47,12 @@ }, rtmp: { protocol: 'rtmp', - host: 'nafarat.red5.org', + host: '127.0.0.0', port: 1935, app: 'live', embedWidth: '100%', embedHeight: 360, - streamName: 'stream1todd', + streamName: 'mystream', swf: './lib/red5pro/red5pro-publisher.swf', swfobjectURL: './lib/swfobject/swfobject.js', productInstallURL: './lib/swfobject/playerProductInstall.swf', @@ -62,10 +62,10 @@ }, hls: { protocol: 'http', - host: 'nafarat.red5.org', + host: '127.0.0.0', port: 5080, app: 'live', - streamName: 'stream1todd' + streamName: 'mystream' } }; // ---- OPTION 1 ---- // diff --git a/gulpfile.js b/gulpfile.js index 0010b07..58e731e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,6 +1,7 @@ /* eslint no-console: 0 */ var path = require('path'); var gulp = require('gulp'); +var bump = require('gulp-bump'); var pkg = path.join(process.cwd(), 'package.json') var version = require(pkg).version; @@ -17,3 +18,19 @@ gulp.task('move-build-to-examples', [], function(cb) { return gulp.src([path.join(buildDir, '**', '*')]).pipe(gulp.dest(path.join(examplesDir, 'lib', 'red5pro'))); }); +gulp.task('bump-version', function() { + var versionType = process.env.BUMP !== undefined ? process.env.BUMP : 'patch'; + var files = [pkg]; + if (versionType === 'none') { + gulp.src(files).pipe(gulp.dest(__dirname)); + } + else { + gulp.src(files) + .pipe(bump({ + type: versionType + })) + .pipe(gulp.dest(__dirname)); + } +}); + + diff --git a/package-lock.json b/package-lock.json index cac0320..e93c8bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -197,6 +197,29 @@ "resolved": "https://registry.npmjs.org/@browser-bunyan/levels/-/levels-1.3.0.tgz", "integrity": "sha1-oFIwOuXRofm2Pus6lElaL0KfSDE=" }, + "@studio/changes": { + "version": "git+https://github.com/infrared5/studio-changes.git#28b9b8da08e7d6f1e5d1a5d97ce3928875d2184c", + "dev": true, + "requires": { + "detect-indent": "5.0.0", + "editor": "1.0.0", + "minimist": "1.2.0" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "@types/node": { "version": "10.3.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.2.tgz", @@ -480,6 +503,15 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -495,6 +527,15 @@ "ansi-wrap": "0.1.0" } }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -589,6 +630,12 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, "array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", @@ -1844,6 +1891,16 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, + "bump-regex": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bump-regex/-/bump-regex-3.1.1.tgz", + "integrity": "sha512-NinFibU11G1ad/2Ji3J04lRC9mLpUGr3C0vtt4Yp049cDeW21NRkmUaZZc+snwlL6gE+Ja5cQfe/hf86Ahj+WQ==", + "dev": true, + "requires": { + "semver": "5.5.0", + "xtend": "4.0.1" + } + }, "cacache": { "version": "10.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", @@ -1903,6 +1960,24 @@ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, "caniuse-lite": { "version": "1.0.30000850", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000850.tgz", @@ -2362,6 +2437,15 @@ "cssom": "0.3.2" } }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -2711,6 +2795,12 @@ "jsbn": "0.1.1" } }, + "editor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/editor/-/editor-1.0.0.tgz", + "integrity": "sha1-YMf4e9YrzGqJT6jM1q+3gjok90I=", + "dev": true + }, "electron-to-chromium": { "version": "1.3.48", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", @@ -4125,6 +4215,12 @@ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -4478,6 +4574,19 @@ } } }, + "gulp-bump": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/gulp-bump/-/gulp-bump-3.1.1.tgz", + "integrity": "sha512-4lVWz2L/8G2lYBjYGzql2BiVIa1Mml03YcHQc1pERk8jH/8nZbrdQ8dHABDnAcBNP4rKAh9AVycjNJ4/4AHkwQ==", + "dev": true, + "requires": { + "bump-regex": "3.1.1", + "plugin-error": "0.1.2", + "plugin-log": "0.1.0", + "semver": "5.5.0", + "through2": "2.0.3" + } + }, "gulp-util": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", @@ -4856,6 +4965,15 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -7027,6 +7145,16 @@ "js-tokens": "3.0.2" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, "lru-cache": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", @@ -7076,6 +7204,12 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -7126,6 +7260,32 @@ "readable-stream": "2.3.6" } }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "merge": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", @@ -7953,6 +8113,80 @@ "find-up": "2.1.0" } }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "0.1.1", + "ansi-red": "0.1.1", + "arr-diff": "1.1.0", + "arr-union": "2.1.0", + "extend-shallow": "1.1.4" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-slice": "0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + } + } + }, + "plugin-log": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/plugin-log/-/plugin-log-0.1.0.tgz", + "integrity": "sha1-hgSc9qsQgzOYqTHzaJy67nteEzM=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "dateformat": "1.0.12" + }, + "dependencies": { + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" + } + } + } + }, "pluralize": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", @@ -8247,6 +8481,16 @@ "resolve": "1.7.1" } }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -9187,6 +9431,15 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -9447,6 +9700,12 @@ "punycode": "2.1.1" } }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", diff --git a/package.json b/package.json index 4215bce..ed86802 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ ] }, "devDependencies": { + "@studio/changes": "git+https://github.com/infrared5/studio-changes.git#ir5/ci", "babel-core": "^6.26.3", "babel-eslint": "^8.2.3", "babel-jest": "^23.0.1", @@ -42,6 +43,7 @@ "colors": "^1.3.0", "eslint": "^4.19.1", "gulp": "^3.9.1", + "gulp-bump": "^3.1.1", "jest-cli": "^23.1.0", "jsdoc": "^3.5.5", "webpack": "^4.11.1", @@ -56,8 +58,13 @@ "webpack:build-min": "NODE_ENV=staging webpack", "webpack:dist": "NODE_ENV=production webpack", "postwebpack:build": "gulp move-build-to-examples", + "postwebpack:build-min": "gulp move-build-to-examples", + "prewebpack:dist": "NODE_ENV=production gulp bump-version", "lint": "eslint ./src --ext .js", "test": "jest", + "test:watch": "jest --watch", + "test:coverage": "jest --coverage", + "changes": "changes", "docs:api": "jsdoc -r src/js -d docs/api -c .jsdoc" } }