From 66efdfc54e3e16a129734bd05ff7bd65578033d2 Mon Sep 17 00:00:00 2001 From: Stevche Radevski Date: Tue, 23 Feb 2021 18:35:47 +0100 Subject: [PATCH] Add necessary contracts and templates for generating instructions Change-type: minor Signed-off-by: Stevche Radevski --- blueprints/instructions.yaml | 28 + .../hw.device-type/aio-3288c/contract.json | 8 +- .../hw.device-type/am571x-evm/contract.json | 4 +- .../am571x-evm/set-boot-external.tpl | 2 + .../hw.device-type/apalis-imx6q/contract.json | 4 +- .../apalis-imx6q/set-boot-external.tpl | 3 + .../hw.device-type/artik10/contract.json | 4 +- contracts/hw.device-type/artik10/power-on.tpl | 1 + .../artik10/set-boot-external.tpl | 3 + .../artik10/set-boot-internal.tpl | 1 + contracts/hw.device-type/artik5/contract.json | 4 +- contracts/hw.device-type/artik5/power-on.tpl | 1 + .../artik5/set-boot-external.tpl | 3 + .../artik5/set-boot-internal.tpl | 1 + .../hw.device-type/artik530/contract.json | 4 +- .../hw.device-type/artik530/power-on.tpl | 1 + .../artik530/set-boot-external.tpl | 4 + .../artik530/set-boot-internal.tpl | 1 + .../artik530/shutdown-indication.tpl | 1 + .../hw.device-type/artik533s/contract.json | 4 +- .../hw.device-type/artik533s/power-on.tpl | 1 + .../artik533s/set-boot-external.tpl | 4 + .../artik533s/set-boot-internal.tpl | 1 + .../artik533s/shutdown-indication.tpl | 1 + .../hw.device-type/artik710/contract.json | 4 +- .../hw.device-type/artik710/power-on.tpl | 1 + .../artik710/set-boot-external.tpl | 4 + .../artik710/set-boot-internal.tpl | 1 + .../artik710/shutdown-indication.tpl | 1 + .../hw.device-type/astro-tx2/contract.json | 4 +- .../asus-tinker-board-s/contract.json | 4 +- .../asus-tinker-board-s/set-boot-external.tpl | 2 + .../asus-tinker-board-s/set-boot-internal.tpl | 1 + .../asus-tinker-board/contract.json | 4 +- .../bananapi-m1-plus/contract.json | 4 +- .../beagleboard-xm/contract.json | 4 +- .../beaglebone-black/contract.json | 8 +- .../beaglebone-black/set-boot-external.tpl | 2 + .../beaglebone-green-gateway/contract.json | 4 +- .../beaglebone-green-wifi/contract.json | 4 +- .../set-boot-external.tpl | 2 + .../shutdown-indication.tpl | 1 + .../beaglebone-green/contract.json | 6 +- .../beaglebone-green/set-boot-external.tpl | 2 + .../beaglebone-pocket/contract.json | 6 +- .../blackboard-tx2/contract.json | 4 +- .../blackboard-tx2/set-boot-external.tpl | 3 + .../ccimx8x-sbc-pro/contract.json | 4 +- .../hw.device-type/cl-som-imx8/contract.json | 4 +- .../cl-som-imx8/set-boot-external.tpl | 2 + .../colibri-imx6dl/contract.json | 4 +- .../colibri-imx6dl/set-boot-external.tpl | 3 + contracts/hw.device-type/connect-network.tpl | 1 + .../hw.device-type/coral-dev/contract.json | 4 +- .../coral-dev/set-boot-external.tpl | 2 + .../cybertan-ze250/contract.json | 4 +- .../cybertan-ze250/set-boot-external.tpl | 2 + .../hw.device-type/etcher-pro/contract.json | 4 +- .../etcher-pro/set-boot-external.tpl | 3 + .../etcher-pro/set-boot-internal.tpl | 1 + contracts/hw.device-type/fincm3/contract.json | 4 +- .../firefly-rk3288/contract.json | 4 +- .../generic-aarch64/contract.json | 4 +- .../hw.device-type/generic/contract.json | 4 +- .../genericx86-64-ext/contract.json | 4 +- .../genericx86-64-ext/set-boot-external.tpl | 2 + .../hw.device-type/hardware-configuration.tpl | 0 .../hw.device-type/hummingboard/contract.json | 10 +- .../imx6ul-var-dart/contract.json | 4 +- .../imx6ul-var-dart/set-boot-external.tpl | 2 + .../hw.device-type/imx7-var-som/contract.json | 4 +- .../imx7-var-som/set-boot-external.tpl | 2 + .../imx7-var-som/set-boot-internal.tpl | 1 + .../imx8m-var-dart/contract.json | 4 +- .../imx8m-var-dart/set-boot-external.tpl | 2 + .../imx8m-var-dart/set-boot-internal.tpl | 1 + .../imx8mm-var-dart-plt/set-boot-external.tpl | 2 + .../imx8mm-var-dart-plt/set-boot-internal.tpl | 1 + .../imx8mm-var-dart/contract.json | 4 +- .../imx8mm-var-dart/set-boot-external.tpl | 2 + .../imx8mm-var-dart/set-boot-internal.tpl | 1 + contracts/hw.device-type/init-operations.tpl | 3 + contracts/hw.device-type/init-options.tpl | 5 + .../hw.device-type/intel-edison/contract.json | 8 +- .../hw.device-type/intel-nuc/contract.json | 8 +- .../intel-nuc/set-boot-external.tpl | 2 + .../hw.device-type/iot2000/contract.json | 4 +- .../jetson-nano-emmc/contract.json | 4 +- .../hw.device-type/jetson-nano/contract.json | 4 +- .../hw.device-type/jetson-tx1/contract.json | 4 +- .../jetson-tx1/set-boot-external.tpl | 2 + .../hw.device-type/jetson-tx2/contract.json | 4 +- .../jetson-tx2/set-boot-external.tpl | 2 + .../contract.json | 4 +- .../jetson-xavier-nx-devkit/contract.json | 4 +- .../jetson-xavier/contract.json | 4 +- .../hw.device-type/jn30b-nano/contract.json | 4 +- .../hw.device-type/kitra520/contract.json | 4 +- .../kitra520/set-boot-external.tpl | 3 + .../kitra520/set-boot-internal.tpl | 2 + .../hw.device-type/kitra710/contract.json | 4 +- .../kitra710/set-boot-external.tpl | 3 + .../kitra710/set-boot-internal.tpl | 2 + .../kitra710/shutdown-indication.tpl | 1 + .../hw.device-type/n510-tx2/contract.json | 4 +- .../n510-tx2/set-boot-external.tpl | 2 + .../hw.device-type/nanopc-t4/contract.json | 4 +- .../nanopc-t4/set-boot-external.tpl | 1 + .../nanopi-neo-air/contract.json | 4 +- .../hw.device-type/network-configuration.tpl | 34 + .../hw.device-type/nitrogen6x/contract.json | 4 +- .../nitrogen6xq2g/contract.json | 4 +- .../nitrogen8mm-dwe/contract.json | 24 + .../hw.device-type/nitrogen8mm/contract.json | 4 +- .../nitrogen8mm/set-boot-external.tpl | 2 + .../nitrogen8mm/shutdown-indication.tpl | 1 + .../hw.device-type/npe-x500-m3/contract.json | 4 +- .../hw.device-type/odroid-c1/contract.json | 4 +- .../hw.device-type/odroid-xu4/contract.json | 4 +- .../orange-pi-lite/contract.json | 4 +- .../orange-pi-one/contract.json | 4 +- .../orange-pi-zero/contract.json | 4 +- .../orangepi-plus2/contract.json | 4 +- .../orangepi-plus2/set-boot-external.tpl | 2 + .../hw.device-type/orbitty-tx2/contract.json | 4 +- .../orbitty-tx2/set-boot-external.tpl | 2 + .../orbitty-tx2/shutdown-indication.tpl | 1 + .../hw.device-type/parallella/contract.json | 8 +- .../hw.device-type/photon-nano/contract.json | 4 +- .../photon-xavier-nx/contract.json | 4 +- contracts/hw.device-type/power-on.tpl | 1 + .../hw.device-type/qemux86-64/contract.json | 4 +- .../hw.device-type/qemux86/contract.json | 4 +- .../hw.device-type/raspberry-pi/contract.json | 4 +- .../raspberry-pi2/contract.json | 8 +- .../raspberrypi3-64/contract.json | 4 +- .../hw.device-type/raspberrypi3/contract.json | 4 +- .../raspberrypi4-64/contract.json | 4 +- .../hw.device-type/revpi-core-3/contract.json | 4 +- .../hw.device-type/set-boot-external.tpl | 0 .../hw.device-type/set-boot-internal.tpl | 0 .../hw.device-type/shutdown-indication.tpl | 1 + .../hw.device-type/skx2/set-boot-external.tpl | 2 + .../hw.device-type/spacely-tx2/contract.json | 4 +- .../spacely-tx2/set-boot-external.tpl | 2 + .../srd3-tx2/set-boot-external.tpl | 3 + .../supervisor-configuration.tpl | 16 + .../hw.device-type/surface-go/contract.json | 4 +- .../surface-go/set-boot-external.tpl | 2 + .../surface-pro-6/contract.json | 4 +- .../surface-pro-6/set-boot-external.tpl | 2 + contracts/hw.device-type/ts4900/contract.json | 4 +- .../ts4900/hardware-configuration.tpl | 16 + .../ts4900/set-boot-external.tpl | 2 + .../ts4900/set-boot-internal.tpl | 1 + .../hw.device-type/up-board/contract.json | 4 +- .../up-board/set-boot-external.tpl | 2 + .../hw.device-type/up-core-plus/contract.json | 4 +- .../hw.device-type/up-core/contract.json | 4 +- .../hw.device-type/up-squared/contract.json | 4 +- .../hw.device-type/var-som-mx6/contract.json | 4 +- .../var-som-mx6/set-boot-external.tpl | 2 + .../var-som-mx6/set-boot-internal.tpl | 1 + .../via-vab820-quad/contract.json | 4 +- .../via-vab820-quad/set-boot-external.tpl | 2 + .../via-vab820-quad/set-boot-internal.tpl | 1 + .../via-vab820-quad/shutdown-indication.tpl | 1 + .../hw.device-type/zynq-xz702/contract.json | 4 +- contracts/hw.storage-media/dfu/contract.json | 16 + .../hw.storage-media/sdcard/contract.json | 16 + .../hw.storage-media/usbkey/contract.json | 16 + .../etcher/flash.tpl | 2 +- .../connect-media-host.tpl | 0 .../disconnect-media-host.tpl | 0 .../external-boot/insert-media-device.tpl | 1 + .../external-flash/insert-media-device.tpl | 2 + .../external-flash/remove-media-device.tpl | 1 + .../flash.tpl | 1 + .../insert-media-device.tpl | 0 .../connect-media-host.tpl | 2 + .../disconnect-media-host.tpl | 1 + .../connect-media-host.tpl | 1 + .../internal-flash+jetson-xavier/flash.tpl | 1 + .../connect-media-host.tpl | 1 + .../disconnect-media-host.tpl | 1 + .../connect-media-host.tpl | 1 + .../disconnect-media-host.tpl | 1 + .../internal-flash+photon-nano/flash.tpl | 1 + .../connect-media-host.tpl | 2 + .../disconnect-media-host.tpl | 1 + .../internal-flash/disconnect-media-host.tpl | 0 .../remove-media-device.tpl | 0 .../external-boot/contract.json | 16 + .../external-flash/contract.json | 34 + .../internal-flash/contract.json | 19 + contracts/sw.os/resinos/contract.json | 17 - package-lock.json | 3664 +++++++++++++++++ package.json | 10 +- scripts/process-blueprints.js | 112 + 199 files changed, 4456 insertions(+), 112 deletions(-) create mode 100644 blueprints/instructions.yaml create mode 100644 contracts/hw.device-type/am571x-evm/set-boot-external.tpl create mode 100644 contracts/hw.device-type/apalis-imx6q/set-boot-external.tpl create mode 100644 contracts/hw.device-type/artik10/power-on.tpl create mode 100644 contracts/hw.device-type/artik10/set-boot-external.tpl create mode 100644 contracts/hw.device-type/artik10/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/artik5/power-on.tpl create mode 100644 contracts/hw.device-type/artik5/set-boot-external.tpl create mode 100644 contracts/hw.device-type/artik5/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/artik530/power-on.tpl create mode 100644 contracts/hw.device-type/artik530/set-boot-external.tpl create mode 100644 contracts/hw.device-type/artik530/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/artik530/shutdown-indication.tpl create mode 100644 contracts/hw.device-type/artik533s/power-on.tpl create mode 100644 contracts/hw.device-type/artik533s/set-boot-external.tpl create mode 100644 contracts/hw.device-type/artik533s/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/artik533s/shutdown-indication.tpl create mode 100644 contracts/hw.device-type/artik710/power-on.tpl create mode 100644 contracts/hw.device-type/artik710/set-boot-external.tpl create mode 100644 contracts/hw.device-type/artik710/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/artik710/shutdown-indication.tpl create mode 100644 contracts/hw.device-type/asus-tinker-board-s/set-boot-external.tpl create mode 100644 contracts/hw.device-type/asus-tinker-board-s/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/beaglebone-black/set-boot-external.tpl create mode 100644 contracts/hw.device-type/beaglebone-green-wifi/set-boot-external.tpl create mode 100644 contracts/hw.device-type/beaglebone-green-wifi/shutdown-indication.tpl create mode 100644 contracts/hw.device-type/beaglebone-green/set-boot-external.tpl create mode 100644 contracts/hw.device-type/blackboard-tx2/set-boot-external.tpl create mode 100644 contracts/hw.device-type/cl-som-imx8/set-boot-external.tpl create mode 100644 contracts/hw.device-type/colibri-imx6dl/set-boot-external.tpl create mode 100644 contracts/hw.device-type/connect-network.tpl create mode 100644 contracts/hw.device-type/coral-dev/set-boot-external.tpl create mode 100644 contracts/hw.device-type/cybertan-ze250/set-boot-external.tpl create mode 100644 contracts/hw.device-type/etcher-pro/set-boot-external.tpl create mode 100644 contracts/hw.device-type/etcher-pro/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/genericx86-64-ext/set-boot-external.tpl create mode 100644 contracts/hw.device-type/hardware-configuration.tpl create mode 100644 contracts/hw.device-type/imx6ul-var-dart/set-boot-external.tpl create mode 100644 contracts/hw.device-type/imx7-var-som/set-boot-external.tpl create mode 100644 contracts/hw.device-type/imx7-var-som/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/imx8m-var-dart/set-boot-external.tpl create mode 100644 contracts/hw.device-type/imx8m-var-dart/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/imx8mm-var-dart-plt/set-boot-external.tpl create mode 100644 contracts/hw.device-type/imx8mm-var-dart-plt/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/imx8mm-var-dart/set-boot-external.tpl create mode 100644 contracts/hw.device-type/imx8mm-var-dart/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/init-operations.tpl create mode 100644 contracts/hw.device-type/init-options.tpl create mode 100644 contracts/hw.device-type/intel-nuc/set-boot-external.tpl create mode 100644 contracts/hw.device-type/jetson-tx1/set-boot-external.tpl create mode 100644 contracts/hw.device-type/jetson-tx2/set-boot-external.tpl create mode 100644 contracts/hw.device-type/kitra520/set-boot-external.tpl create mode 100644 contracts/hw.device-type/kitra520/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/kitra710/set-boot-external.tpl create mode 100644 contracts/hw.device-type/kitra710/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/kitra710/shutdown-indication.tpl create mode 100644 contracts/hw.device-type/n510-tx2/set-boot-external.tpl create mode 100644 contracts/hw.device-type/nanopc-t4/set-boot-external.tpl create mode 100644 contracts/hw.device-type/network-configuration.tpl create mode 100644 contracts/hw.device-type/nitrogen8mm-dwe/contract.json create mode 100644 contracts/hw.device-type/nitrogen8mm/set-boot-external.tpl create mode 100644 contracts/hw.device-type/nitrogen8mm/shutdown-indication.tpl create mode 100644 contracts/hw.device-type/orangepi-plus2/set-boot-external.tpl create mode 100644 contracts/hw.device-type/orbitty-tx2/set-boot-external.tpl create mode 100644 contracts/hw.device-type/orbitty-tx2/shutdown-indication.tpl create mode 100644 contracts/hw.device-type/power-on.tpl create mode 100644 contracts/hw.device-type/set-boot-external.tpl create mode 100644 contracts/hw.device-type/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/shutdown-indication.tpl create mode 100644 contracts/hw.device-type/skx2/set-boot-external.tpl create mode 100644 contracts/hw.device-type/spacely-tx2/set-boot-external.tpl create mode 100644 contracts/hw.device-type/srd3-tx2/set-boot-external.tpl create mode 100644 contracts/hw.device-type/supervisor-configuration.tpl create mode 100644 contracts/hw.device-type/surface-go/set-boot-external.tpl create mode 100644 contracts/hw.device-type/surface-pro-6/set-boot-external.tpl create mode 100644 contracts/hw.device-type/ts4900/hardware-configuration.tpl create mode 100644 contracts/hw.device-type/ts4900/set-boot-external.tpl create mode 100644 contracts/hw.device-type/ts4900/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/up-board/set-boot-external.tpl create mode 100644 contracts/hw.device-type/var-som-mx6/set-boot-external.tpl create mode 100644 contracts/hw.device-type/var-som-mx6/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/via-vab820-quad/set-boot-external.tpl create mode 100644 contracts/hw.device-type/via-vab820-quad/set-boot-internal.tpl create mode 100644 contracts/hw.device-type/via-vab820-quad/shutdown-indication.tpl create mode 100644 contracts/hw.storage-media/dfu/contract.json create mode 100644 contracts/hw.storage-media/sdcard/contract.json create mode 100644 contracts/hw.storage-media/usbkey/contract.json create mode 100644 contracts/sw.install-method+hw.device-type/connect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/disconnect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/external-boot/insert-media-device.tpl create mode 100644 contracts/sw.install-method+hw.device-type/external-flash/insert-media-device.tpl create mode 100644 contracts/sw.install-method+hw.device-type/external-flash/remove-media-device.tpl create mode 100644 contracts/sw.install-method+hw.device-type/flash.tpl create mode 100644 contracts/sw.install-method+hw.device-type/insert-media-device.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+fincm3/connect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+fincm3/disconnect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+jetson-xavier/connect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+jetson-xavier/flash.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+nitrogen8mm-dwe/connect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+nitrogen8mm-dwe/disconnect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/connect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/disconnect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/flash.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+revpi-core-3/connect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash+revpi-core-3/disconnect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/internal-flash/disconnect-media-host.tpl create mode 100644 contracts/sw.install-method+hw.device-type/remove-media-device.tpl create mode 100644 contracts/sw.install-method/external-boot/contract.json create mode 100644 contracts/sw.install-method/external-flash/contract.json create mode 100644 contracts/sw.install-method/internal-flash/contract.json delete mode 100644 contracts/sw.os/resinos/contract.json create mode 100644 package-lock.json create mode 100644 scripts/process-blueprints.js diff --git a/blueprints/instructions.yaml b/blueprints/instructions.yaml new file mode 100644 index 00000000..f3f6cc79 --- /dev/null +++ b/blueprints/instructions.yaml @@ -0,0 +1,28 @@ +selector: + hw.device-type: 1 + hw.storage-media: 1 + sw.install-method: 1 +output: + filename: instructions.md + slug: "{{this.children.hw.device-type.slug}}-{{this.children.sw.install-method.slug}}" + # We only have a single boot method per DT for now, add boot method to path once we support choosing a boot method. + path: "instructions/v1/{{this.children.hw.device-type.slug}}" + type: sw.device-type.instructions + template: + - name: instructions-device + data: > + {{import partial="connect-media-host" combination="sw.install-method+hw.device-type"}} + + {{import partial="flash" combination="sw.install-method+hw.device-type"}} + + {{import partial="disconnect-media-host" combination="sw.install-method+hw.device-type"}} + + {{import partial="insert-media-device" combination="sw.install-method+hw.device-type"}} + + {{import partial="set-boot-external" combination="hw.device-type"}} + + {{import partial="remove-media-device" combination="sw.install-method+hw.device-type"}} + + {{import partial="set-boot-internal" combination="hw.device-type"}} + + {{import partial="connect-network" combination="hw.device-type"}}. {{import partial="power-on" combination="hw.device-type"}} diff --git a/contracts/hw.device-type/aio-3288c/contract.json b/contracts/hw.device-type/aio-3288c/contract.json index 558ebc40..5b877b52 100644 --- a/contracts/hw.device-type/aio-3288c/contract.json +++ b/contracts/hw.device-type/aio-3288c/contract.json @@ -2,7 +2,9 @@ "slug": "aio-3288c", "version": "1", "type": "hw.device-type", - "aliases": ["aio-3288c"], + "aliases": [ + "aio-3288c" + ], "name": "AIO 3288C", "assets": { "logo": { @@ -13,10 +15,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/am571x-evm/contract.json b/contracts/hw.device-type/am571x-evm/contract.json index 6ff3772a..5990fb2d 100644 --- a/contracts/hw.device-type/am571x-evm/contract.json +++ b/contracts/hw.device-type/am571x-evm/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "bluetooth": false + "bluetooth": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/am571x-evm/set-boot-external.tpl b/contracts/hw.device-type/am571x-evm/set-boot-external.tpl new file mode 100644 index 00000000..02286188 --- /dev/null +++ b/contracts/hw.device-type/am571x-evm/set-boot-external.tpl @@ -0,0 +1,2 @@ +Connect power to the {{hw.device-type.name}} and then press the SW3 Power On button. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/apalis-imx6q/contract.json b/contracts/hw.device-type/apalis-imx6q/contract.json index 0408d3c1..923abdbb 100644 --- a/contracts/hw.device-type/apalis-imx6q/contract.json +++ b/contracts/hw.device-type/apalis-imx6q/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "bluetooth": false + "bluetooth": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/apalis-imx6q/set-boot-external.tpl b/contracts/hw.device-type/apalis-imx6q/set-boot-external.tpl new file mode 100644 index 00000000..1c44fbbe --- /dev/null +++ b/contracts/hw.device-type/apalis-imx6q/set-boot-external.tpl @@ -0,0 +1,3 @@ +Connect the carrier board to a host computer using a serial cable. (This step may differ based on what carrier board you have) +Power the module. Press SPACE when prompted by U-Boot to stop execution and run the following command `run sdboot` +{{import partial="shutdown-indication" combination="hw.device-type"}}. diff --git a/contracts/hw.device-type/artik10/contract.json b/contracts/hw.device-type/artik10/contract.json index 78ffc4bb..43a88442 100644 --- a/contracts/hw.device-type/artik10/contract.json +++ b/contracts/hw.device-type/artik10/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "bluetooth": false + "bluetooth": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/artik10/power-on.tpl b/contracts/hw.device-type/artik10/power-on.tpl new file mode 100644 index 00000000..8c14844f --- /dev/null +++ b/contracts/hw.device-type/artik10/power-on.tpl @@ -0,0 +1 @@ +Press the power switch PSW1 to the on position. Press and hold for 1 second the SW3 POWER push button. \ No newline at end of file diff --git a/contracts/hw.device-type/artik10/set-boot-external.tpl b/contracts/hw.device-type/artik10/set-boot-external.tpl new file mode 100644 index 00000000..2212dc85 --- /dev/null +++ b/contracts/hw.device-type/artik10/set-boot-external.tpl @@ -0,0 +1,3 @@ +Set SW2 dip switch to position 1:on, 2:on. Also, make sure jumpers J20 and J36 are set towards the edge of the board. +Press the power switch PSW1 to the on position. Press and hold for 1 second the SW3 POWER push button. +The device has performed a shutdown. Press the power switch PSW1 to the off position. \ No newline at end of file diff --git a/contracts/hw.device-type/artik10/set-boot-internal.tpl b/contracts/hw.device-type/artik10/set-boot-internal.tpl new file mode 100644 index 00000000..071ff47a --- /dev/null +++ b/contracts/hw.device-type/artik10/set-boot-internal.tpl @@ -0,0 +1 @@ +Set SW2 dip switch to position 1:off, 2:off. \ No newline at end of file diff --git a/contracts/hw.device-type/artik5/contract.json b/contracts/hw.device-type/artik5/contract.json index e95a94f9..32fdf34e 100644 --- a/contracts/hw.device-type/artik5/contract.json +++ b/contracts/hw.device-type/artik5/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "bluetooth": true + "bluetooth": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/artik5/power-on.tpl b/contracts/hw.device-type/artik5/power-on.tpl new file mode 100644 index 00000000..d837a2cb --- /dev/null +++ b/contracts/hw.device-type/artik5/power-on.tpl @@ -0,0 +1 @@ +Press the power switch PWR SW to the on position. Press and hold for 1 second the SW3 POWER push button. \ No newline at end of file diff --git a/contracts/hw.device-type/artik5/set-boot-external.tpl b/contracts/hw.device-type/artik5/set-boot-external.tpl new file mode 100644 index 00000000..ebe879f8 --- /dev/null +++ b/contracts/hw.device-type/artik5/set-boot-external.tpl @@ -0,0 +1,3 @@ +Set SW2 dip switch to position 1:on, 2:on. Also, make sure jumpers J20 and J33 are set towards the edge of the board. +Press the power switch PWR SW to the on position. Press and hold for 1 second the SW3 POWER push button. +The device has performed a shutdown. Press the power switch PWR SW to the off position. \ No newline at end of file diff --git a/contracts/hw.device-type/artik5/set-boot-internal.tpl b/contracts/hw.device-type/artik5/set-boot-internal.tpl new file mode 100644 index 00000000..071ff47a --- /dev/null +++ b/contracts/hw.device-type/artik5/set-boot-internal.tpl @@ -0,0 +1 @@ +Set SW2 dip switch to position 1:off, 2:off. \ No newline at end of file diff --git a/contracts/hw.device-type/artik530/contract.json b/contracts/hw.device-type/artik530/contract.json index cb5631b4..a136b231 100644 --- a/contracts/hw.device-type/artik530/contract.json +++ b/contracts/hw.device-type/artik530/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "bluetooth": true + "bluetooth": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/artik530/power-on.tpl b/contracts/hw.device-type/artik530/power-on.tpl new file mode 100644 index 00000000..c89904cb --- /dev/null +++ b/contracts/hw.device-type/artik530/power-on.tpl @@ -0,0 +1 @@ +Switch SW700 to the on position. Press and hold for 1 second the SW400 POWER push button. \ No newline at end of file diff --git a/contracts/hw.device-type/artik530/set-boot-external.tpl b/contracts/hw.device-type/artik530/set-boot-external.tpl new file mode 100644 index 00000000..b04ca423 --- /dev/null +++ b/contracts/hw.device-type/artik530/set-boot-external.tpl @@ -0,0 +1,4 @@ +Set SW402 dip switch to position 1:off, 2:off, 3:off, 4:on. +Switch SW700 to the on position. Press and hold for 1 second the SW400 POWER push button. +{{import partial="shutdown-indication" combination="hw.device-type"}}. +Switch SW700 to the off position. \ No newline at end of file diff --git a/contracts/hw.device-type/artik530/set-boot-internal.tpl b/contracts/hw.device-type/artik530/set-boot-internal.tpl new file mode 100644 index 00000000..c748e9f0 --- /dev/null +++ b/contracts/hw.device-type/artik530/set-boot-internal.tpl @@ -0,0 +1 @@ +Set SW402 dip switch to position 1:off, 2:off, 3:off, 4:off. \ No newline at end of file diff --git a/contracts/hw.device-type/artik530/shutdown-indication.tpl b/contracts/hw.device-type/artik530/shutdown-indication.tpl new file mode 100644 index 00000000..4be8e89b --- /dev/null +++ b/contracts/hw.device-type/artik530/shutdown-indication.tpl @@ -0,0 +1 @@ +The device is performing a shutdown. Wait 30 seconds or until the red LED 402 is off \ No newline at end of file diff --git a/contracts/hw.device-type/artik533s/contract.json b/contracts/hw.device-type/artik533s/contract.json index f0bf1650..c495903a 100644 --- a/contracts/hw.device-type/artik533s/contract.json +++ b/contracts/hw.device-type/artik533s/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/artik533s/power-on.tpl b/contracts/hw.device-type/artik533s/power-on.tpl new file mode 100644 index 00000000..c89904cb --- /dev/null +++ b/contracts/hw.device-type/artik533s/power-on.tpl @@ -0,0 +1 @@ +Switch SW700 to the on position. Press and hold for 1 second the SW400 POWER push button. \ No newline at end of file diff --git a/contracts/hw.device-type/artik533s/set-boot-external.tpl b/contracts/hw.device-type/artik533s/set-boot-external.tpl new file mode 100644 index 00000000..b04ca423 --- /dev/null +++ b/contracts/hw.device-type/artik533s/set-boot-external.tpl @@ -0,0 +1,4 @@ +Set SW402 dip switch to position 1:off, 2:off, 3:off, 4:on. +Switch SW700 to the on position. Press and hold for 1 second the SW400 POWER push button. +{{import partial="shutdown-indication" combination="hw.device-type"}}. +Switch SW700 to the off position. \ No newline at end of file diff --git a/contracts/hw.device-type/artik533s/set-boot-internal.tpl b/contracts/hw.device-type/artik533s/set-boot-internal.tpl new file mode 100644 index 00000000..c748e9f0 --- /dev/null +++ b/contracts/hw.device-type/artik533s/set-boot-internal.tpl @@ -0,0 +1 @@ +Set SW402 dip switch to position 1:off, 2:off, 3:off, 4:off. \ No newline at end of file diff --git a/contracts/hw.device-type/artik533s/shutdown-indication.tpl b/contracts/hw.device-type/artik533s/shutdown-indication.tpl new file mode 100644 index 00000000..4be8e89b --- /dev/null +++ b/contracts/hw.device-type/artik533s/shutdown-indication.tpl @@ -0,0 +1 @@ +The device is performing a shutdown. Wait 30 seconds or until the red LED 402 is off \ No newline at end of file diff --git a/contracts/hw.device-type/artik710/contract.json b/contracts/hw.device-type/artik710/contract.json index 40ffee06..c8bc4aa2 100644 --- a/contracts/hw.device-type/artik710/contract.json +++ b/contracts/hw.device-type/artik710/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": true, "connectivity": { - "bluetooth": true + "bluetooth": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/artik710/power-on.tpl b/contracts/hw.device-type/artik710/power-on.tpl new file mode 100644 index 00000000..c89904cb --- /dev/null +++ b/contracts/hw.device-type/artik710/power-on.tpl @@ -0,0 +1 @@ +Switch SW700 to the on position. Press and hold for 1 second the SW400 POWER push button. \ No newline at end of file diff --git a/contracts/hw.device-type/artik710/set-boot-external.tpl b/contracts/hw.device-type/artik710/set-boot-external.tpl new file mode 100644 index 00000000..b04ca423 --- /dev/null +++ b/contracts/hw.device-type/artik710/set-boot-external.tpl @@ -0,0 +1,4 @@ +Set SW402 dip switch to position 1:off, 2:off, 3:off, 4:on. +Switch SW700 to the on position. Press and hold for 1 second the SW400 POWER push button. +{{import partial="shutdown-indication" combination="hw.device-type"}}. +Switch SW700 to the off position. \ No newline at end of file diff --git a/contracts/hw.device-type/artik710/set-boot-internal.tpl b/contracts/hw.device-type/artik710/set-boot-internal.tpl new file mode 100644 index 00000000..c748e9f0 --- /dev/null +++ b/contracts/hw.device-type/artik710/set-boot-internal.tpl @@ -0,0 +1 @@ +Set SW402 dip switch to position 1:off, 2:off, 3:off, 4:off. \ No newline at end of file diff --git a/contracts/hw.device-type/artik710/shutdown-indication.tpl b/contracts/hw.device-type/artik710/shutdown-indication.tpl new file mode 100644 index 00000000..4be8e89b --- /dev/null +++ b/contracts/hw.device-type/artik710/shutdown-indication.tpl @@ -0,0 +1 @@ +The device is performing a shutdown. Wait 30 seconds or until the red LED 402 is off \ No newline at end of file diff --git a/contracts/hw.device-type/astro-tx2/contract.json b/contracts/hw.device-type/astro-tx2/contract.json index cc729391..8a2c6612 100644 --- a/contracts/hw.device-type/astro-tx2/contract.json +++ b/contracts/hw.device-type/astro-tx2/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/asus-tinker-board-s/contract.json b/contracts/hw.device-type/asus-tinker-board-s/contract.json index da6e5a50..2eca0915 100644 --- a/contracts/hw.device-type/asus-tinker-board-s/contract.json +++ b/contracts/hw.device-type/asus-tinker-board-s/contract.json @@ -14,10 +14,12 @@ "arch": "armv7hf", "family": "family-tinkerboard", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/asus-tinker-board-s/set-boot-external.tpl b/contracts/hw.device-type/asus-tinker-board-s/set-boot-external.tpl new file mode 100644 index 00000000..23f769d9 --- /dev/null +++ b/contracts/hw.device-type/asus-tinker-board-s/set-boot-external.tpl @@ -0,0 +1,2 @@ +Before powering up the Asus Tinker Board S, make sure that the jumper between the 5V power supply and the HDMI connector is in the MASKROM mode, as ilustrated in this link https://tinkerboarding.co.uk/wiki/index.php/Setup +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/asus-tinker-board-s/set-boot-internal.tpl b/contracts/hw.device-type/asus-tinker-board-s/set-boot-internal.tpl new file mode 100644 index 00000000..103d63a6 --- /dev/null +++ b/contracts/hw.device-type/asus-tinker-board-s/set-boot-internal.tpl @@ -0,0 +1 @@ +Before powering up the Asus Tinker Board S, make sure that the jumper between the 5V power supply and the HDMI connector is in the parking (no function) mode, as ilustrated in this link https://tinkerboarding.co.uk/wiki/index.php/Setup \ No newline at end of file diff --git a/contracts/hw.device-type/asus-tinker-board/contract.json b/contracts/hw.device-type/asus-tinker-board/contract.json index 5e81ef3b..6973f124 100644 --- a/contracts/hw.device-type/asus-tinker-board/contract.json +++ b/contracts/hw.device-type/asus-tinker-board/contract.json @@ -14,10 +14,12 @@ "arch": "armv7hf", "family": "family-tinkerboard", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/bananapi-m1-plus/contract.json b/contracts/hw.device-type/bananapi-m1-plus/contract.json index 123188a6..015d722b 100644 --- a/contracts/hw.device-type/bananapi-m1-plus/contract.json +++ b/contracts/hw.device-type/bananapi-m1-plus/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/beagleboard-xm/contract.json b/contracts/hw.device-type/beagleboard-xm/contract.json index 27b0e61f..151684e3 100644 --- a/contracts/hw.device-type/beagleboard-xm/contract.json +++ b/contracts/hw.device-type/beagleboard-xm/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/beaglebone-black/contract.json b/contracts/hw.device-type/beaglebone-black/contract.json index 670eab99..c74912d7 100644 --- a/contracts/hw.device-type/beaglebone-black/contract.json +++ b/contracts/hw.device-type/beaglebone-black/contract.json @@ -2,7 +2,9 @@ "slug": "beaglebone-black", "version": "1", "type": "hw.device-type", - "aliases": ["beaglebone"], + "aliases": [ + "beaglebone" + ], "name": "BeagleBone Black", "assets": { "logo": { @@ -13,10 +15,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/beaglebone-black/set-boot-external.tpl b/contracts/hw.device-type/beaglebone-black/set-boot-external.tpl new file mode 100644 index 00000000..81aac077 --- /dev/null +++ b/contracts/hw.device-type/beaglebone-black/set-boot-external.tpl @@ -0,0 +1,2 @@ +Power up the BeagleBone Black while holding down the small button near the SD slot. You need to keep it pressed until the blue LEDs start flashing wildly. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/beaglebone-green-gateway/contract.json b/contracts/hw.device-type/beaglebone-green-gateway/contract.json index 03b4e1ed..6b1c2501 100644 --- a/contracts/hw.device-type/beaglebone-green-gateway/contract.json +++ b/contracts/hw.device-type/beaglebone-green-gateway/contract.json @@ -14,9 +14,11 @@ "arch": "armv7hf", "hdmi": false, "led": true, + "usb": true, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/beaglebone-green-wifi/contract.json b/contracts/hw.device-type/beaglebone-green-wifi/contract.json index 8ad3be03..86fca985 100644 --- a/contracts/hw.device-type/beaglebone-green-wifi/contract.json +++ b/contracts/hw.device-type/beaglebone-green-wifi/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": false, + "usb": true, "led": true, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/beaglebone-green-wifi/set-boot-external.tpl b/contracts/hw.device-type/beaglebone-green-wifi/set-boot-external.tpl new file mode 100644 index 00000000..1432e02a --- /dev/null +++ b/contracts/hw.device-type/beaglebone-green-wifi/set-boot-external.tpl @@ -0,0 +1,2 @@ +Power up the BeagleBone Green while holding down the small button near the SD slot. You need to keep it pressed until the blue LEDs start flashing wildly. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/beaglebone-green-wifi/shutdown-indication.tpl b/contracts/hw.device-type/beaglebone-green-wifi/shutdown-indication.tpl new file mode 100644 index 00000000..ce602917 --- /dev/null +++ b/contracts/hw.device-type/beaglebone-green-wifi/shutdown-indication.tpl @@ -0,0 +1 @@ +Wait 5 seconds after the blue leds stopped flashing wildly, then remove power from the board. On some boards the leds will shut down completely. \ No newline at end of file diff --git a/contracts/hw.device-type/beaglebone-green/contract.json b/contracts/hw.device-type/beaglebone-green/contract.json index 1af36159..b15ca3ac 100644 --- a/contracts/hw.device-type/beaglebone-green/contract.json +++ b/contracts/hw.device-type/beaglebone-green/contract.json @@ -12,11 +12,13 @@ }, "data": { "arch": "armv7hf", - "led": true, "hdmi": false, + "usb": true, + "led": true, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/beaglebone-green/set-boot-external.tpl b/contracts/hw.device-type/beaglebone-green/set-boot-external.tpl new file mode 100644 index 00000000..1432e02a --- /dev/null +++ b/contracts/hw.device-type/beaglebone-green/set-boot-external.tpl @@ -0,0 +1,2 @@ +Power up the BeagleBone Green while holding down the small button near the SD slot. You need to keep it pressed until the blue LEDs start flashing wildly. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/beaglebone-pocket/contract.json b/contracts/hw.device-type/beaglebone-pocket/contract.json index f405d1c3..3087cdcb 100644 --- a/contracts/hw.device-type/beaglebone-pocket/contract.json +++ b/contracts/hw.device-type/beaglebone-pocket/contract.json @@ -12,11 +12,13 @@ }, "data": { "arch": "armv7hf", - "led": true, "hdmi": false, + "usb": true, + "led": true, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/blackboard-tx2/contract.json b/contracts/hw.device-type/blackboard-tx2/contract.json index f5ff0b6b..fad71f7b 100644 --- a/contracts/hw.device-type/blackboard-tx2/contract.json +++ b/contracts/hw.device-type/blackboard-tx2/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/blackboard-tx2/set-boot-external.tpl b/contracts/hw.device-type/blackboard-tx2/set-boot-external.tpl new file mode 100644 index 00000000..4d543cb1 --- /dev/null +++ b/contracts/hw.device-type/blackboard-tx2/set-boot-external.tpl @@ -0,0 +1,3 @@ +Remove and re-connect power to the board. +Press and hold for 1 second the POWER push button. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/ccimx8x-sbc-pro/contract.json b/contracts/hw.device-type/ccimx8x-sbc-pro/contract.json index 7ab0b95d..a2969951 100644 --- a/contracts/hw.device-type/ccimx8x-sbc-pro/contract.json +++ b/contracts/hw.device-type/ccimx8x-sbc-pro/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/cl-som-imx8/contract.json b/contracts/hw.device-type/cl-som-imx8/contract.json index 38248d73..863c2a85 100644 --- a/contracts/hw.device-type/cl-som-imx8/contract.json +++ b/contracts/hw.device-type/cl-som-imx8/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/cl-som-imx8/set-boot-external.tpl b/contracts/hw.device-type/cl-som-imx8/set-boot-external.tpl new file mode 100644 index 00000000..8ceabdc3 --- /dev/null +++ b/contracts/hw.device-type/cl-som-imx8/set-boot-external.tpl @@ -0,0 +1,2 @@ +Insert SD CARD. Press SW5 followed by SW6. Release SW5 then release SW6. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/colibri-imx6dl/contract.json b/contracts/hw.device-type/colibri-imx6dl/contract.json index 69f6ffbb..02e788b5 100644 --- a/contracts/hw.device-type/colibri-imx6dl/contract.json +++ b/contracts/hw.device-type/colibri-imx6dl/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/colibri-imx6dl/set-boot-external.tpl b/contracts/hw.device-type/colibri-imx6dl/set-boot-external.tpl new file mode 100644 index 00000000..7100c805 --- /dev/null +++ b/contracts/hw.device-type/colibri-imx6dl/set-boot-external.tpl @@ -0,0 +1,3 @@ +Connect the carrier board to a host computer using a serial cable. (This step may differ based on what carrier board you have) +Power the module. Press SPACE when prompted by U-Boot to stop execution and run the following command `run sdboot` +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/connect-network.tpl b/contracts/hw.device-type/connect-network.tpl new file mode 100644 index 00000000..0707e6b1 --- /dev/null +++ b/contracts/hw.device-type/connect-network.tpl @@ -0,0 +1 @@ +Connect your {{hw.device-type.name}} to the internet. \ No newline at end of file diff --git a/contracts/hw.device-type/coral-dev/contract.json b/contracts/hw.device-type/coral-dev/contract.json index 064d89f4..a2fabd29 100644 --- a/contracts/hw.device-type/coral-dev/contract.json +++ b/contracts/hw.device-type/coral-dev/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/coral-dev/set-boot-external.tpl b/contracts/hw.device-type/coral-dev/set-boot-external.tpl new file mode 100644 index 00000000..f836408d --- /dev/null +++ b/contracts/hw.device-type/coral-dev/set-boot-external.tpl @@ -0,0 +1,2 @@ +Set the BOOT_SELECT switch to the SD-CARD position. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/cybertan-ze250/contract.json b/contracts/hw.device-type/cybertan-ze250/contract.json index 7bc6d69f..13f2ac94 100644 --- a/contracts/hw.device-type/cybertan-ze250/contract.json +++ b/contracts/hw.device-type/cybertan-ze250/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "i386-nlp", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "bluetooth": false + "bluetooth": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/cybertan-ze250/set-boot-external.tpl b/contracts/hw.device-type/cybertan-ze250/set-boot-external.tpl new file mode 100644 index 00000000..de321235 --- /dev/null +++ b/contracts/hw.device-type/cybertan-ze250/set-boot-external.tpl @@ -0,0 +1,2 @@ +Connect your Cybertan ZE250 to the internet, then power it up. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/etcher-pro/contract.json b/contracts/hw.device-type/etcher-pro/contract.json index 8be498b8..ed4b87bf 100644 --- a/contracts/hw.device-type/etcher-pro/contract.json +++ b/contracts/hw.device-type/etcher-pro/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/etcher-pro/set-boot-external.tpl b/contracts/hw.device-type/etcher-pro/set-boot-external.tpl new file mode 100644 index 00000000..248836b0 --- /dev/null +++ b/contracts/hw.device-type/etcher-pro/set-boot-external.tpl @@ -0,0 +1,3 @@ +Insert microSD card into flashing slot and toggle DSW1 switch to ON position. +Power-up board. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/etcher-pro/set-boot-internal.tpl b/contracts/hw.device-type/etcher-pro/set-boot-internal.tpl new file mode 100644 index 00000000..7210b030 --- /dev/null +++ b/contracts/hw.device-type/etcher-pro/set-boot-internal.tpl @@ -0,0 +1 @@ +Toggle DSW1 switch to OFF position. \ No newline at end of file diff --git a/contracts/hw.device-type/fincm3/contract.json b/contracts/hw.device-type/fincm3/contract.json index 8f2511b1..62fbb544 100644 --- a/contracts/hw.device-type/fincm3/contract.json +++ b/contracts/hw.device-type/fincm3/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/firefly-rk3288/contract.json b/contracts/hw.device-type/firefly-rk3288/contract.json index 4ea508f2..8ac084f7 100644 --- a/contracts/hw.device-type/firefly-rk3288/contract.json +++ b/contracts/hw.device-type/firefly-rk3288/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/generic-aarch64/contract.json b/contracts/hw.device-type/generic-aarch64/contract.json index 3553ad76..286d6b2d 100644 --- a/contracts/hw.device-type/generic-aarch64/contract.json +++ b/contracts/hw.device-type/generic-aarch64/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/generic/contract.json b/contracts/hw.device-type/generic/contract.json index ca30c773..32fe3f73 100644 --- a/contracts/hw.device-type/generic/contract.json +++ b/contracts/hw.device-type/generic/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "amd64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/genericx86-64-ext/contract.json b/contracts/hw.device-type/genericx86-64-ext/contract.json index df62a21c..9b2d07d5 100644 --- a/contracts/hw.device-type/genericx86-64-ext/contract.json +++ b/contracts/hw.device-type/genericx86-64-ext/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "amd64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/genericx86-64-ext/set-boot-external.tpl b/contracts/hw.device-type/genericx86-64-ext/set-boot-external.tpl new file mode 100644 index 00000000..92204e34 --- /dev/null +++ b/contracts/hw.device-type/genericx86-64-ext/set-boot-external.tpl @@ -0,0 +1,2 @@ +Please make sure you do not have any other USB keys inserted.\nPower up the Intel NUC. Make sure you have a keyboard connected.\nPress the F10 key (may differ on some platforms) while BIOS is loading in order to enter the boot menu.\nNext, select the name of your USB key. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/hardware-configuration.tpl b/contracts/hw.device-type/hardware-configuration.tpl new file mode 100644 index 00000000..e69de29b diff --git a/contracts/hw.device-type/hummingboard/contract.json b/contracts/hw.device-type/hummingboard/contract.json index 2d22f1c5..c36b29b8 100644 --- a/contracts/hw.device-type/hummingboard/contract.json +++ b/contracts/hw.device-type/hummingboard/contract.json @@ -2,7 +2,11 @@ "slug": "hummingboard", "version": "1", "type": "hw.device-type", - "aliases": ["solidrun-imx6","cubox-i","hummingboard2"], + "aliases": [ + "solidrun-imx6", + "cubox-i", + "hummingboard2" + ], "name": "Hummingboard", "assets": { "logo": { @@ -13,10 +17,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/imx6ul-var-dart/contract.json b/contracts/hw.device-type/imx6ul-var-dart/contract.json index 83bd0594..dcc8a476 100644 --- a/contracts/hw.device-type/imx6ul-var-dart/contract.json +++ b/contracts/hw.device-type/imx6ul-var-dart/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": false, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/imx6ul-var-dart/set-boot-external.tpl b/contracts/hw.device-type/imx6ul-var-dart/set-boot-external.tpl new file mode 100644 index 00000000..be0b575c --- /dev/null +++ b/contracts/hw.device-type/imx6ul-var-dart/set-boot-external.tpl @@ -0,0 +1,2 @@ +Power up the Variscite DART-6UL. Holding down the SW2 button, press the SW1 button and then first release SW1 followed by SW2. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/imx7-var-som/contract.json b/contracts/hw.device-type/imx7-var-som/contract.json index de8c5213..fe9ec46a 100644 --- a/contracts/hw.device-type/imx7-var-som/contract.json +++ b/contracts/hw.device-type/imx7-var-som/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": false, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/imx7-var-som/set-boot-external.tpl b/contracts/hw.device-type/imx7-var-som/set-boot-external.tpl new file mode 100644 index 00000000..4b4050c9 --- /dev/null +++ b/contracts/hw.device-type/imx7-var-som/set-boot-external.tpl @@ -0,0 +1,2 @@ +Set the SW1 BOOT SELECT switch to SDCARD. Power up the Variscite VAR-SOM-MX7. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/imx7-var-som/set-boot-internal.tpl b/contracts/hw.device-type/imx7-var-som/set-boot-internal.tpl new file mode 100644 index 00000000..5a825016 --- /dev/null +++ b/contracts/hw.device-type/imx7-var-som/set-boot-internal.tpl @@ -0,0 +1 @@ +Set the SW1 BOOT SELECT switch to eMMC. \ No newline at end of file diff --git a/contracts/hw.device-type/imx8m-var-dart/contract.json b/contracts/hw.device-type/imx8m-var-dart/contract.json index ab203ec0..49455fd4 100644 --- a/contracts/hw.device-type/imx8m-var-dart/contract.json +++ b/contracts/hw.device-type/imx8m-var-dart/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/imx8m-var-dart/set-boot-external.tpl b/contracts/hw.device-type/imx8m-var-dart/set-boot-external.tpl new file mode 100644 index 00000000..9a5d9883 --- /dev/null +++ b/contracts/hw.device-type/imx8m-var-dart/set-boot-external.tpl @@ -0,0 +1,2 @@ +Set the SW7 BOOT SELECT switch to EXT. Power up the Variscite VAR-SOM-MX7. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/imx8m-var-dart/set-boot-internal.tpl b/contracts/hw.device-type/imx8m-var-dart/set-boot-internal.tpl new file mode 100644 index 00000000..f0adcaa3 --- /dev/null +++ b/contracts/hw.device-type/imx8m-var-dart/set-boot-internal.tpl @@ -0,0 +1 @@ +Set the SW7 BOOT SELECT switch to eMMC. \ No newline at end of file diff --git a/contracts/hw.device-type/imx8mm-var-dart-plt/set-boot-external.tpl b/contracts/hw.device-type/imx8mm-var-dart-plt/set-boot-external.tpl new file mode 100644 index 00000000..9a5d9883 --- /dev/null +++ b/contracts/hw.device-type/imx8mm-var-dart-plt/set-boot-external.tpl @@ -0,0 +1,2 @@ +Set the SW7 BOOT SELECT switch to EXT. Power up the Variscite VAR-SOM-MX7. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/imx8mm-var-dart-plt/set-boot-internal.tpl b/contracts/hw.device-type/imx8mm-var-dart-plt/set-boot-internal.tpl new file mode 100644 index 00000000..e7c8dd04 --- /dev/null +++ b/contracts/hw.device-type/imx8mm-var-dart-plt/set-boot-internal.tpl @@ -0,0 +1 @@ +Set the SW7 BOOT SELECT switch to INT. \ No newline at end of file diff --git a/contracts/hw.device-type/imx8mm-var-dart/contract.json b/contracts/hw.device-type/imx8mm-var-dart/contract.json index 3917fe3f..127f2bad 100644 --- a/contracts/hw.device-type/imx8mm-var-dart/contract.json +++ b/contracts/hw.device-type/imx8mm-var-dart/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": false, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/imx8mm-var-dart/set-boot-external.tpl b/contracts/hw.device-type/imx8mm-var-dart/set-boot-external.tpl new file mode 100644 index 00000000..6e2aae0c --- /dev/null +++ b/contracts/hw.device-type/imx8mm-var-dart/set-boot-external.tpl @@ -0,0 +1,2 @@ +Set the SW7 BOOT SELECT switch to SDCARD. Power up the Variscite VAR-SOM-MX7. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/imx8mm-var-dart/set-boot-internal.tpl b/contracts/hw.device-type/imx8mm-var-dart/set-boot-internal.tpl new file mode 100644 index 00000000..e7c8dd04 --- /dev/null +++ b/contracts/hw.device-type/imx8mm-var-dart/set-boot-internal.tpl @@ -0,0 +1 @@ +Set the SW7 BOOT SELECT switch to INT. \ No newline at end of file diff --git a/contracts/hw.device-type/init-operations.tpl b/contracts/hw.device-type/init-operations.tpl new file mode 100644 index 00000000..1e95af13 --- /dev/null +++ b/contracts/hw.device-type/init-operations.tpl @@ -0,0 +1,3 @@ +{ + "command": "burn" +} diff --git a/contracts/hw.device-type/init-options.tpl b/contracts/hw.device-type/init-options.tpl new file mode 100644 index 00000000..63680161 --- /dev/null +++ b/contracts/hw.device-type/init-options.tpl @@ -0,0 +1,5 @@ + { + "message": "Select a drive", + "type": "drive", + "name": "drive" + } diff --git a/contracts/hw.device-type/intel-edison/contract.json b/contracts/hw.device-type/intel-edison/contract.json index 340d93d9..b198b0bf 100644 --- a/contracts/hw.device-type/intel-edison/contract.json +++ b/contracts/hw.device-type/intel-edison/contract.json @@ -2,7 +2,9 @@ "slug": "intel-edison", "version": "1", "type": "hw.device-type", - "aliases": ["edison"], + "aliases": [ + "edison" + ], "name": "Intel Edison", "assets": { "logo": { @@ -13,10 +15,12 @@ "data": { "arch": "i386", "hdmi": false, + "usb": false, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": false }, "storage": { "internal": true diff --git a/contracts/hw.device-type/intel-nuc/contract.json b/contracts/hw.device-type/intel-nuc/contract.json index 3776e990..6a593626 100644 --- a/contracts/hw.device-type/intel-nuc/contract.json +++ b/contracts/hw.device-type/intel-nuc/contract.json @@ -2,7 +2,9 @@ "slug": "intel-nuc", "version": "1", "type": "hw.device-type", - "aliases": ["nuc"], + "aliases": [ + "nuc" + ], "name": "Intel NUC", "assets": { "logo": { @@ -13,10 +15,12 @@ "data": { "arch": "amd64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/intel-nuc/set-boot-external.tpl b/contracts/hw.device-type/intel-nuc/set-boot-external.tpl new file mode 100644 index 00000000..92204e34 --- /dev/null +++ b/contracts/hw.device-type/intel-nuc/set-boot-external.tpl @@ -0,0 +1,2 @@ +Please make sure you do not have any other USB keys inserted.\nPower up the Intel NUC. Make sure you have a keyboard connected.\nPress the F10 key (may differ on some platforms) while BIOS is loading in order to enter the boot menu.\nNext, select the name of your USB key. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/iot2000/contract.json b/contracts/hw.device-type/iot2000/contract.json index c7f7e47b..09f43ca2 100644 --- a/contracts/hw.device-type/iot2000/contract.json +++ b/contracts/hw.device-type/iot2000/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "i386-nlp", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/jetson-nano-emmc/contract.json b/contracts/hw.device-type/jetson-nano-emmc/contract.json index 358a8f35..9f87ac87 100644 --- a/contracts/hw.device-type/jetson-nano-emmc/contract.json +++ b/contracts/hw.device-type/jetson-nano-emmc/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/jetson-nano/contract.json b/contracts/hw.device-type/jetson-nano/contract.json index 99ab3c41..909bea1f 100644 --- a/contracts/hw.device-type/jetson-nano/contract.json +++ b/contracts/hw.device-type/jetson-nano/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/jetson-tx1/contract.json b/contracts/hw.device-type/jetson-tx1/contract.json index 19cb016e..a5af4aa6 100644 --- a/contracts/hw.device-type/jetson-tx1/contract.json +++ b/contracts/hw.device-type/jetson-tx1/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/jetson-tx1/set-boot-external.tpl b/contracts/hw.device-type/jetson-tx1/set-boot-external.tpl new file mode 100644 index 00000000..3d38c7b5 --- /dev/null +++ b/contracts/hw.device-type/jetson-tx1/set-boot-external.tpl @@ -0,0 +1,2 @@ +Press and hold for 1 second the POWER push button. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/jetson-tx2/contract.json b/contracts/hw.device-type/jetson-tx2/contract.json index 8a37fd9c..abc80fbb 100644 --- a/contracts/hw.device-type/jetson-tx2/contract.json +++ b/contracts/hw.device-type/jetson-tx2/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/jetson-tx2/set-boot-external.tpl b/contracts/hw.device-type/jetson-tx2/set-boot-external.tpl new file mode 100644 index 00000000..3d38c7b5 --- /dev/null +++ b/contracts/hw.device-type/jetson-tx2/set-boot-external.tpl @@ -0,0 +1,2 @@ +Press and hold for 1 second the POWER push button. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/jetson-xavier-nx-devkit-emmc/contract.json b/contracts/hw.device-type/jetson-xavier-nx-devkit-emmc/contract.json index d20f17c6..551cac00 100644 --- a/contracts/hw.device-type/jetson-xavier-nx-devkit-emmc/contract.json +++ b/contracts/hw.device-type/jetson-xavier-nx-devkit-emmc/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/jetson-xavier-nx-devkit/contract.json b/contracts/hw.device-type/jetson-xavier-nx-devkit/contract.json index 1f90bf64..eaa9c374 100644 --- a/contracts/hw.device-type/jetson-xavier-nx-devkit/contract.json +++ b/contracts/hw.device-type/jetson-xavier-nx-devkit/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/jetson-xavier/contract.json b/contracts/hw.device-type/jetson-xavier/contract.json index 8b9eeda2..670fdc46 100644 --- a/contracts/hw.device-type/jetson-xavier/contract.json +++ b/contracts/hw.device-type/jetson-xavier/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/jn30b-nano/contract.json b/contracts/hw.device-type/jn30b-nano/contract.json index 53662ae5..e6e3ff96 100644 --- a/contracts/hw.device-type/jn30b-nano/contract.json +++ b/contracts/hw.device-type/jn30b-nano/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/kitra520/contract.json b/contracts/hw.device-type/kitra520/contract.json index 662b1a04..41349abc 100644 --- a/contracts/hw.device-type/kitra520/contract.json +++ b/contracts/hw.device-type/kitra520/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "bluetooth": false + "bluetooth": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/kitra520/set-boot-external.tpl b/contracts/hw.device-type/kitra520/set-boot-external.tpl new file mode 100644 index 00000000..92a98245 --- /dev/null +++ b/contracts/hw.device-type/kitra520/set-boot-external.tpl @@ -0,0 +1,3 @@ +Set SW2 dip switch to position 1:on, 2:on. Also, make sure jumpers J20 and J33 are set towards the edge of the board. +Press and hold the power button PB1 - PB2 until you hear a double buzz sound. +The device has performed a shutdown. Press the power switch PWR SW to the off position. \ No newline at end of file diff --git a/contracts/hw.device-type/kitra520/set-boot-internal.tpl b/contracts/hw.device-type/kitra520/set-boot-internal.tpl new file mode 100644 index 00000000..f5f1012c --- /dev/null +++ b/contracts/hw.device-type/kitra520/set-boot-internal.tpl @@ -0,0 +1,2 @@ +Remove the Artik520 module from the evaluation carrier and plug it on the Kitra520 carrier. +Press and hold the power button PB1 - PB2 until you hear a double buzz sound. \ No newline at end of file diff --git a/contracts/hw.device-type/kitra710/contract.json b/contracts/hw.device-type/kitra710/contract.json index c4cb2705..7a6e2422 100644 --- a/contracts/hw.device-type/kitra710/contract.json +++ b/contracts/hw.device-type/kitra710/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "bluetooth": true + "bluetooth": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/kitra710/set-boot-external.tpl b/contracts/hw.device-type/kitra710/set-boot-external.tpl new file mode 100644 index 00000000..2f916891 --- /dev/null +++ b/contracts/hw.device-type/kitra710/set-boot-external.tpl @@ -0,0 +1,3 @@ +Set SW402 dip switch to position 1:off, 2:off, 3:off, 4:on. Switch SW700 to the on position. Press and hold for 1 second the SW400 POWER push button. +{{import partial="shutdown-indication" combination="hw.device-type"}}. +Switch SW700 to the off position. \ No newline at end of file diff --git a/contracts/hw.device-type/kitra710/set-boot-internal.tpl b/contracts/hw.device-type/kitra710/set-boot-internal.tpl new file mode 100644 index 00000000..5bd0847c --- /dev/null +++ b/contracts/hw.device-type/kitra710/set-boot-internal.tpl @@ -0,0 +1,2 @@ +Set SW402 dip switch to position 1:off, 2:off, 3:off, 4:off. +Switch SW700 to the on position. Press and hold for 1 second the SW400 POWER push button. \ No newline at end of file diff --git a/contracts/hw.device-type/kitra710/shutdown-indication.tpl b/contracts/hw.device-type/kitra710/shutdown-indication.tpl new file mode 100644 index 00000000..f83c61cd --- /dev/null +++ b/contracts/hw.device-type/kitra710/shutdown-indication.tpl @@ -0,0 +1 @@ +The device is performing a shutdown. Wait 30 seconds or until the blue LED 703 is off \ No newline at end of file diff --git a/contracts/hw.device-type/n510-tx2/contract.json b/contracts/hw.device-type/n510-tx2/contract.json index b49c5bc7..7427dc9f 100644 --- a/contracts/hw.device-type/n510-tx2/contract.json +++ b/contracts/hw.device-type/n510-tx2/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/n510-tx2/set-boot-external.tpl b/contracts/hw.device-type/n510-tx2/set-boot-external.tpl new file mode 100644 index 00000000..943ef2c4 --- /dev/null +++ b/contracts/hw.device-type/n510-tx2/set-boot-external.tpl @@ -0,0 +1,2 @@ +Connect power to the carrier board. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/nanopc-t4/contract.json b/contracts/hw.device-type/nanopc-t4/contract.json index d5a1430f..23dab6bc 100644 --- a/contracts/hw.device-type/nanopc-t4/contract.json +++ b/contracts/hw.device-type/nanopc-t4/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/nanopc-t4/set-boot-external.tpl b/contracts/hw.device-type/nanopc-t4/set-boot-external.tpl new file mode 100644 index 00000000..39db4147 --- /dev/null +++ b/contracts/hw.device-type/nanopc-t4/set-boot-external.tpl @@ -0,0 +1 @@ +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/nanopi-neo-air/contract.json b/contracts/hw.device-type/nanopi-neo-air/contract.json index 6aee4365..0600ba27 100644 --- a/contracts/hw.device-type/nanopi-neo-air/contract.json +++ b/contracts/hw.device-type/nanopi-neo-air/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": false, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/network-configuration.tpl b/contracts/hw.device-type/network-configuration.tpl new file mode 100644 index 00000000..4d3e34c5 --- /dev/null +++ b/contracts/hw.device-type/network-configuration.tpl @@ -0,0 +1,34 @@ +{{#if (or hw.device-type.data.connectivity.wifi hw.device-type.data.usb)}} +{ + "isGroup": true, + "name": "network", + "message": "Network", + "options": [ + { + "message": "Network Connection", + "name": "network", + "type": "list", + "choices": [ + "ethernet", + "wifi" + ] + }, + { + "message": "Wifi SSID", + "name": "wifiSsid", + "type": "text", + "when": { + "network": "wifi" + } + }, + { + "message": "Wifi Passphrase", + "name": "wifiKey", + "type": "password", + "when": { + "network": "wifi" + } + } + ] +}, +{{/if}} diff --git a/contracts/hw.device-type/nitrogen6x/contract.json b/contracts/hw.device-type/nitrogen6x/contract.json index 240ec1c1..7d3858a3 100644 --- a/contracts/hw.device-type/nitrogen6x/contract.json +++ b/contracts/hw.device-type/nitrogen6x/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/nitrogen6xq2g/contract.json b/contracts/hw.device-type/nitrogen6xq2g/contract.json index 4bef9005..8e067f5f 100644 --- a/contracts/hw.device-type/nitrogen6xq2g/contract.json +++ b/contracts/hw.device-type/nitrogen6xq2g/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/nitrogen8mm-dwe/contract.json b/contracts/hw.device-type/nitrogen8mm-dwe/contract.json new file mode 100644 index 00000000..f7c5decf --- /dev/null +++ b/contracts/hw.device-type/nitrogen8mm-dwe/contract.json @@ -0,0 +1,24 @@ +{ + "slug": "nitrogen8mm-dwe", + "version": "1", + "type": "hw.device-type", + "aliases": [], + "name": "Nitrogen8MM DWE", + "data": { + "arch": "aarch64", + "hdmi": false, + "usb": true, + "led": false, + "connectivity": { + "bluetooth": true, + "wifi": true, + "ethernet": true + }, + "storage": { + "internal": true + }, + "media": { + "installation": "dfu" + } + } +} diff --git a/contracts/hw.device-type/nitrogen8mm/contract.json b/contracts/hw.device-type/nitrogen8mm/contract.json index 5b4adfed..577369bb 100644 --- a/contracts/hw.device-type/nitrogen8mm/contract.json +++ b/contracts/hw.device-type/nitrogen8mm/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": false, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/nitrogen8mm/set-boot-external.tpl b/contracts/hw.device-type/nitrogen8mm/set-boot-external.tpl new file mode 100644 index 00000000..da4bf4c1 --- /dev/null +++ b/contracts/hw.device-type/nitrogen8mm/set-boot-external.tpl @@ -0,0 +1,2 @@ +Remove and re-connect power to the board. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/nitrogen8mm/shutdown-indication.tpl b/contracts/hw.device-type/nitrogen8mm/shutdown-indication.tpl new file mode 100644 index 00000000..c6a161d0 --- /dev/null +++ b/contracts/hw.device-type/nitrogen8mm/shutdown-indication.tpl @@ -0,0 +1 @@ +Monitor the device in Balena dashboard to see when it entered the post-provisioning state. Leave the state settle for around 10 seconds. \ No newline at end of file diff --git a/contracts/hw.device-type/npe-x500-m3/contract.json b/contracts/hw.device-type/npe-x500-m3/contract.json index ab245981..7e4b1fe2 100644 --- a/contracts/hw.device-type/npe-x500-m3/contract.json +++ b/contracts/hw.device-type/npe-x500-m3/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": true, "connectivity": { - "bluetooth": true + "bluetooth": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/odroid-c1/contract.json b/contracts/hw.device-type/odroid-c1/contract.json index 1ef7f5b9..da863e4f 100644 --- a/contracts/hw.device-type/odroid-c1/contract.json +++ b/contracts/hw.device-type/odroid-c1/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/odroid-xu4/contract.json b/contracts/hw.device-type/odroid-xu4/contract.json index 736f3d8a..aeb26686 100644 --- a/contracts/hw.device-type/odroid-xu4/contract.json +++ b/contracts/hw.device-type/odroid-xu4/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/orange-pi-lite/contract.json b/contracts/hw.device-type/orange-pi-lite/contract.json index 4480f723..5222c484 100644 --- a/contracts/hw.device-type/orange-pi-lite/contract.json +++ b/contracts/hw.device-type/orange-pi-lite/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": false, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/orange-pi-one/contract.json b/contracts/hw.device-type/orange-pi-one/contract.json index 6e6830e8..db288f00 100644 --- a/contracts/hw.device-type/orange-pi-one/contract.json +++ b/contracts/hw.device-type/orange-pi-one/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/orange-pi-zero/contract.json b/contracts/hw.device-type/orange-pi-zero/contract.json index 6ac5116e..21be0ce0 100644 --- a/contracts/hw.device-type/orange-pi-zero/contract.json +++ b/contracts/hw.device-type/orange-pi-zero/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": false, + "usb": true, "led": true, "connectivity": { "bluetooth": false, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/orangepi-plus2/contract.json b/contracts/hw.device-type/orangepi-plus2/contract.json index 4315e950..ee6f4bf1 100644 --- a/contracts/hw.device-type/orangepi-plus2/contract.json +++ b/contracts/hw.device-type/orangepi-plus2/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/orangepi-plus2/set-boot-external.tpl b/contracts/hw.device-type/orangepi-plus2/set-boot-external.tpl new file mode 100644 index 00000000..73678faa --- /dev/null +++ b/contracts/hw.device-type/orangepi-plus2/set-boot-external.tpl @@ -0,0 +1,2 @@ +Connect your Orange Pi Plus2 to the internet, then power it up. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/orbitty-tx2/contract.json b/contracts/hw.device-type/orbitty-tx2/contract.json index a6c80c96..09a78873 100644 --- a/contracts/hw.device-type/orbitty-tx2/contract.json +++ b/contracts/hw.device-type/orbitty-tx2/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/orbitty-tx2/set-boot-external.tpl b/contracts/hw.device-type/orbitty-tx2/set-boot-external.tpl new file mode 100644 index 00000000..943ef2c4 --- /dev/null +++ b/contracts/hw.device-type/orbitty-tx2/set-boot-external.tpl @@ -0,0 +1,2 @@ +Connect power to the carrier board. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/orbitty-tx2/shutdown-indication.tpl b/contracts/hw.device-type/orbitty-tx2/shutdown-indication.tpl new file mode 100644 index 00000000..8cf1f5dd --- /dev/null +++ b/contracts/hw.device-type/orbitty-tx2/shutdown-indication.tpl @@ -0,0 +1 @@ +The device is performing a shutdown. Please wait until the SYS LED is turned off. \ No newline at end of file diff --git a/contracts/hw.device-type/parallella/contract.json b/contracts/hw.device-type/parallella/contract.json index 75d3bcb6..3e9cb079 100644 --- a/contracts/hw.device-type/parallella/contract.json +++ b/contracts/hw.device-type/parallella/contract.json @@ -2,7 +2,9 @@ "slug": "parallella", "version": "1", "type": "hw.device-type", - "aliases": ["parallella-hdmi-resin"], + "aliases": [ + "parallella-hdmi-resin" + ], "name": "Parallella", "assets": { "logo": { @@ -13,10 +15,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/photon-nano/contract.json b/contracts/hw.device-type/photon-nano/contract.json index b64a851b..e59a1995 100644 --- a/contracts/hw.device-type/photon-nano/contract.json +++ b/contracts/hw.device-type/photon-nano/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/photon-xavier-nx/contract.json b/contracts/hw.device-type/photon-xavier-nx/contract.json index 9a4ad52b..3ee6cd7b 100644 --- a/contracts/hw.device-type/photon-xavier-nx/contract.json +++ b/contracts/hw.device-type/photon-xavier-nx/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/power-on.tpl b/contracts/hw.device-type/power-on.tpl new file mode 100644 index 00000000..01af3af6 --- /dev/null +++ b/contracts/hw.device-type/power-on.tpl @@ -0,0 +1 @@ +Power the {{hw.device-type.name}} device up. diff --git a/contracts/hw.device-type/qemux86-64/contract.json b/contracts/hw.device-type/qemux86-64/contract.json index 11cc1dff..8e9d0dd0 100644 --- a/contracts/hw.device-type/qemux86-64/contract.json +++ b/contracts/hw.device-type/qemux86-64/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "amd64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/qemux86/contract.json b/contracts/hw.device-type/qemux86/contract.json index d81e3d11..d122322e 100644 --- a/contracts/hw.device-type/qemux86/contract.json +++ b/contracts/hw.device-type/qemux86/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "i386", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/raspberry-pi/contract.json b/contracts/hw.device-type/raspberry-pi/contract.json index 3a1752c6..89ff3cfe 100644 --- a/contracts/hw.device-type/raspberry-pi/contract.json +++ b/contracts/hw.device-type/raspberry-pi/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "rpi", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/raspberry-pi2/contract.json b/contracts/hw.device-type/raspberry-pi2/contract.json index 653fefdb..6ecc52ef 100644 --- a/contracts/hw.device-type/raspberry-pi2/contract.json +++ b/contracts/hw.device-type/raspberry-pi2/contract.json @@ -2,7 +2,9 @@ "slug": "raspberry-pi2", "version": "1", "type": "hw.device-type", - "aliases": ["raspberrypi2"], + "aliases": [ + "raspberrypi2" + ], "name": "Raspberry Pi 2", "assets": { "logo": { @@ -13,10 +15,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/raspberrypi3-64/contract.json b/contracts/hw.device-type/raspberrypi3-64/contract.json index 0b02a3f3..60b2d9e5 100644 --- a/contracts/hw.device-type/raspberrypi3-64/contract.json +++ b/contracts/hw.device-type/raspberrypi3-64/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/raspberrypi3/contract.json b/contracts/hw.device-type/raspberrypi3/contract.json index 3726917f..c412e9a7 100644 --- a/contracts/hw.device-type/raspberrypi3/contract.json +++ b/contracts/hw.device-type/raspberrypi3/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/raspberrypi4-64/contract.json b/contracts/hw.device-type/raspberrypi4-64/contract.json index 2ddde5f3..f79e2cfd 100644 --- a/contracts/hw.device-type/raspberrypi4-64/contract.json +++ b/contracts/hw.device-type/raspberrypi4-64/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.device-type/revpi-core-3/contract.json b/contracts/hw.device-type/revpi-core-3/contract.json index f486a03c..090ae3a2 100644 --- a/contracts/hw.device-type/revpi-core-3/contract.json +++ b/contracts/hw.device-type/revpi-core-3/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": true, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/set-boot-external.tpl b/contracts/hw.device-type/set-boot-external.tpl new file mode 100644 index 00000000..e69de29b diff --git a/contracts/hw.device-type/set-boot-internal.tpl b/contracts/hw.device-type/set-boot-internal.tpl new file mode 100644 index 00000000..e69de29b diff --git a/contracts/hw.device-type/shutdown-indication.tpl b/contracts/hw.device-type/shutdown-indication.tpl new file mode 100644 index 00000000..2094f645 --- /dev/null +++ b/contracts/hw.device-type/shutdown-indication.tpl @@ -0,0 +1 @@ +The device is performing a shutdown. Please wait until all LEDs are off. \ No newline at end of file diff --git a/contracts/hw.device-type/skx2/set-boot-external.tpl b/contracts/hw.device-type/skx2/set-boot-external.tpl new file mode 100644 index 00000000..3d38c7b5 --- /dev/null +++ b/contracts/hw.device-type/skx2/set-boot-external.tpl @@ -0,0 +1,2 @@ +Press and hold for 1 second the POWER push button. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/spacely-tx2/contract.json b/contracts/hw.device-type/spacely-tx2/contract.json index 113be249..750af752 100644 --- a/contracts/hw.device-type/spacely-tx2/contract.json +++ b/contracts/hw.device-type/spacely-tx2/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "aarch64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/spacely-tx2/set-boot-external.tpl b/contracts/hw.device-type/spacely-tx2/set-boot-external.tpl new file mode 100644 index 00000000..943ef2c4 --- /dev/null +++ b/contracts/hw.device-type/spacely-tx2/set-boot-external.tpl @@ -0,0 +1,2 @@ +Connect power to the carrier board. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/srd3-tx2/set-boot-external.tpl b/contracts/hw.device-type/srd3-tx2/set-boot-external.tpl new file mode 100644 index 00000000..4d543cb1 --- /dev/null +++ b/contracts/hw.device-type/srd3-tx2/set-boot-external.tpl @@ -0,0 +1,3 @@ +Remove and re-connect power to the board. +Press and hold for 1 second the POWER push button. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/supervisor-configuration.tpl b/contracts/hw.device-type/supervisor-configuration.tpl new file mode 100644 index 00000000..544b9f5f --- /dev/null +++ b/contracts/hw.device-type/supervisor-configuration.tpl @@ -0,0 +1,16 @@ +{ + "isGroup": true, + "isCollapsible": true, + "collapsed": true, + "name": "advanced", + "message": "Advanced", + "options": [ + { + "message": "Check for updates every X minutes", + "name": "appUpdatePollInterval", + "type": "number", + "min": 0, + "default": 1 + } + ] +}, \ No newline at end of file diff --git a/contracts/hw.device-type/surface-go/contract.json b/contracts/hw.device-type/surface-go/contract.json index 2346f2f3..13f3a12c 100644 --- a/contracts/hw.device-type/surface-go/contract.json +++ b/contracts/hw.device-type/surface-go/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "amd64", "hdmi": false, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/surface-go/set-boot-external.tpl b/contracts/hw.device-type/surface-go/set-boot-external.tpl new file mode 100644 index 00000000..c8a28bd2 --- /dev/null +++ b/contracts/hw.device-type/surface-go/set-boot-external.tpl @@ -0,0 +1,2 @@ +Press and hold the Volume Down button and press the Power button Release the Power button but keep pressing the Volume Down button until the windows logo disappears. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/surface-pro-6/contract.json b/contracts/hw.device-type/surface-pro-6/contract.json index 8cc63d44..9a20eebc 100644 --- a/contracts/hw.device-type/surface-pro-6/contract.json +++ b/contracts/hw.device-type/surface-pro-6/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "amd64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/surface-pro-6/set-boot-external.tpl b/contracts/hw.device-type/surface-pro-6/set-boot-external.tpl new file mode 100644 index 00000000..19fdb993 --- /dev/null +++ b/contracts/hw.device-type/surface-pro-6/set-boot-external.tpl @@ -0,0 +1,2 @@ +Press and hold the Volume Down button and press the Power button. Release the Power button but keep pressing the Volume Down button until the windows logo disappears. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/ts4900/contract.json b/contracts/hw.device-type/ts4900/contract.json index af66be35..69f596ba 100644 --- a/contracts/hw.device-type/ts4900/contract.json +++ b/contracts/hw.device-type/ts4900/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/ts4900/hardware-configuration.tpl b/contracts/hw.device-type/ts4900/hardware-configuration.tpl new file mode 100644 index 00000000..076a147e --- /dev/null +++ b/contracts/hw.device-type/ts4900/hardware-configuration.tpl @@ -0,0 +1,16 @@ +{ + "isGroup": true, + "name": "board", + "message": "Board Options", + "options": [ + { + "name": "processorCore", + "message": "CPU Cores", + "type": "list", + "choices": [ + "single", + "quad" + ] + } + ] +},, \ No newline at end of file diff --git a/contracts/hw.device-type/ts4900/set-boot-external.tpl b/contracts/hw.device-type/ts4900/set-boot-external.tpl new file mode 100644 index 00000000..b5154879 --- /dev/null +++ b/contracts/hw.device-type/ts4900/set-boot-external.tpl @@ -0,0 +1,2 @@ +Enable the SD boot jumper present on your specific base board. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/ts4900/set-boot-internal.tpl b/contracts/hw.device-type/ts4900/set-boot-internal.tpl new file mode 100644 index 00000000..9008c80e --- /dev/null +++ b/contracts/hw.device-type/ts4900/set-boot-internal.tpl @@ -0,0 +1 @@ +Disable the SD boot jumper present on your specific base board. \ No newline at end of file diff --git a/contracts/hw.device-type/up-board/contract.json b/contracts/hw.device-type/up-board/contract.json index 21f8fdf7..168a1e08 100644 --- a/contracts/hw.device-type/up-board/contract.json +++ b/contracts/hw.device-type/up-board/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "amd64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/up-board/set-boot-external.tpl b/contracts/hw.device-type/up-board/set-boot-external.tpl new file mode 100644 index 00000000..dd59d770 --- /dev/null +++ b/contracts/hw.device-type/up-board/set-boot-external.tpl @@ -0,0 +1,2 @@ +Power up the UP Board. Make sure you have a keyboard connected.\nPress the F7 key while BIOS is loading in order to enter the boot menu. Next, select the \"UEFI:\" option. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/up-core-plus/contract.json b/contracts/hw.device-type/up-core-plus/contract.json index 7420473b..47d19761 100644 --- a/contracts/hw.device-type/up-core-plus/contract.json +++ b/contracts/hw.device-type/up-core-plus/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "amd64", "hdmi": false, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/up-core/contract.json b/contracts/hw.device-type/up-core/contract.json index 4658d714..f15c55f7 100644 --- a/contracts/hw.device-type/up-core/contract.json +++ b/contracts/hw.device-type/up-core/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "amd64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/up-squared/contract.json b/contracts/hw.device-type/up-squared/contract.json index b1386b57..c11fb3a0 100644 --- a/contracts/hw.device-type/up-squared/contract.json +++ b/contracts/hw.device-type/up-squared/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "amd64", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": false, - "wifi": false + "wifi": false, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/var-som-mx6/contract.json b/contracts/hw.device-type/var-som-mx6/contract.json index 97cdb8e2..3353ce09 100644 --- a/contracts/hw.device-type/var-som-mx6/contract.json +++ b/contracts/hw.device-type/var-som-mx6/contract.json @@ -13,10 +13,12 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { "bluetooth": true, - "wifi": true + "wifi": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/var-som-mx6/set-boot-external.tpl b/contracts/hw.device-type/var-som-mx6/set-boot-external.tpl new file mode 100644 index 00000000..3403a2b9 --- /dev/null +++ b/contracts/hw.device-type/var-som-mx6/set-boot-external.tpl @@ -0,0 +1,2 @@ +Set the BOOT_SELECT switch to the MMC position. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/var-som-mx6/set-boot-internal.tpl b/contracts/hw.device-type/var-som-mx6/set-boot-internal.tpl new file mode 100644 index 00000000..f36c7397 --- /dev/null +++ b/contracts/hw.device-type/var-som-mx6/set-boot-internal.tpl @@ -0,0 +1 @@ +Set the BOOT_SELECT switch to the NAND position. \ No newline at end of file diff --git a/contracts/hw.device-type/via-vab820-quad/contract.json b/contracts/hw.device-type/via-vab820-quad/contract.json index 2640e83a..2f3aeb61 100644 --- a/contracts/hw.device-type/via-vab820-quad/contract.json +++ b/contracts/hw.device-type/via-vab820-quad/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "bluetooth": true + "bluetooth": true, + "ethernet": true }, "storage": { "internal": true diff --git a/contracts/hw.device-type/via-vab820-quad/set-boot-external.tpl b/contracts/hw.device-type/via-vab820-quad/set-boot-external.tpl new file mode 100644 index 00000000..9a94da28 --- /dev/null +++ b/contracts/hw.device-type/via-vab820-quad/set-boot-external.tpl @@ -0,0 +1,2 @@ +Set J11 (just next to the micro SD card slot) to position 2-3 (the position furthest away from the edge of the board) and then power on the board. +{{import partial="shutdown-indication" combination="hw.device-type"}}. \ No newline at end of file diff --git a/contracts/hw.device-type/via-vab820-quad/set-boot-internal.tpl b/contracts/hw.device-type/via-vab820-quad/set-boot-internal.tpl new file mode 100644 index 00000000..4dc994b6 --- /dev/null +++ b/contracts/hw.device-type/via-vab820-quad/set-boot-internal.tpl @@ -0,0 +1 @@ +Set J11 (just next to the micro SD card slot) to position 1-2 (the position closest to the edge of the board). \ No newline at end of file diff --git a/contracts/hw.device-type/via-vab820-quad/shutdown-indication.tpl b/contracts/hw.device-type/via-vab820-quad/shutdown-indication.tpl new file mode 100644 index 00000000..14a1b211 --- /dev/null +++ b/contracts/hw.device-type/via-vab820-quad/shutdown-indication.tpl @@ -0,0 +1 @@ +The device is performing a shutdown. Please wait until the device is offline in the dashboard and disconnect the power cable. \ No newline at end of file diff --git a/contracts/hw.device-type/zynq-xz702/contract.json b/contracts/hw.device-type/zynq-xz702/contract.json index 95527859..c02b1f8a 100644 --- a/contracts/hw.device-type/zynq-xz702/contract.json +++ b/contracts/hw.device-type/zynq-xz702/contract.json @@ -13,9 +13,11 @@ "data": { "arch": "armv7hf", "hdmi": true, + "usb": true, "led": false, "connectivity": { - "bluetooth": false + "bluetooth": false, + "ethernet": true }, "storage": { "internal": false diff --git a/contracts/hw.storage-media/dfu/contract.json b/contracts/hw.storage-media/dfu/contract.json new file mode 100644 index 00000000..4b50297c --- /dev/null +++ b/contracts/hw.storage-media/dfu/contract.json @@ -0,0 +1,16 @@ +{ + "slug": "dfu", + "version": "1", + "type": "hw.storage-media", + "name": "Internal storage", + "requires": [ + { + "type": "hw.device-type", + "data": { + "media": { + "installation": "dfu" + } + } + } + ] +} diff --git a/contracts/hw.storage-media/sdcard/contract.json b/contracts/hw.storage-media/sdcard/contract.json new file mode 100644 index 00000000..7405c77f --- /dev/null +++ b/contracts/hw.storage-media/sdcard/contract.json @@ -0,0 +1,16 @@ +{ + "slug": "sdcard", + "version": "1", + "type": "hw.storage-media", + "name": "SD Card", + "requires": [ + { + "type": "hw.device-type", + "data": { + "media": { + "installation": "sdcard" + } + } + } + ] +} diff --git a/contracts/hw.storage-media/usbkey/contract.json b/contracts/hw.storage-media/usbkey/contract.json new file mode 100644 index 00000000..4cf1fe55 --- /dev/null +++ b/contracts/hw.storage-media/usbkey/contract.json @@ -0,0 +1,16 @@ +{ + "slug": "usbkey", + "version": "1", + "type": "hw.storage-media", + "name": "USB Key", + "requires": [ + { + "type": "hw.device-type", + "data": { + "media": { + "installation": "usbkey" + } + } + } + ] +} diff --git a/contracts/sw.image-writer+hw.device-type/etcher/flash.tpl b/contracts/sw.image-writer+hw.device-type/etcher/flash.tpl index d639b9c7..a2cb51bb 100644 --- a/contracts/sw.image-writer+hw.device-type/etcher/flash.tpl +++ b/contracts/sw.image-writer+hw.device-type/etcher/flash.tpl @@ -1 +1 @@ -Start Etcher and select the image file. Insert your {{hw.device-type.media.installation}} and press Flash. **Warning:** this will erase your {{hw.device-type.media.installation}}, please make sure any important data is backed up. When writing is finished, remove the {{hw.device-type.media.installation}} +Start Etcher and select the image file. Insert your {{hw.storage-media.name}} and press Flash. **Warning:** this will erase your {{hw.storage-media.name}}, please make sure any important data is backed up. When writing is finished, remove the {{hw.storage-media.name}} diff --git a/contracts/sw.install-method+hw.device-type/connect-media-host.tpl b/contracts/sw.install-method+hw.device-type/connect-media-host.tpl new file mode 100644 index 00000000..e69de29b diff --git a/contracts/sw.install-method+hw.device-type/disconnect-media-host.tpl b/contracts/sw.install-method+hw.device-type/disconnect-media-host.tpl new file mode 100644 index 00000000..e69de29b diff --git a/contracts/sw.install-method+hw.device-type/external-boot/insert-media-device.tpl b/contracts/sw.install-method+hw.device-type/external-boot/insert-media-device.tpl new file mode 100644 index 00000000..405f1ae5 --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/external-boot/insert-media-device.tpl @@ -0,0 +1 @@ +Insert the freshly burnt {{hw.storage-media.name}} into {{hw.device-type.name}}. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/external-flash/insert-media-device.tpl b/contracts/sw.install-method+hw.device-type/external-flash/insert-media-device.tpl new file mode 100644 index 00000000..848b52dd --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/external-flash/insert-media-device.tpl @@ -0,0 +1,2 @@ +Insert the freshly burnt {{hw.storage-media.name}} into the {{hw.device-type.name}}. +Warning! This will also completely erase internal storage media, so please make a backup first. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/external-flash/remove-media-device.tpl b/contracts/sw.install-method+hw.device-type/external-flash/remove-media-device.tpl new file mode 100644 index 00000000..de61e342 --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/external-flash/remove-media-device.tpl @@ -0,0 +1 @@ +Remove the balenaOS installation media. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/flash.tpl b/contracts/sw.install-method+hw.device-type/flash.tpl new file mode 100644 index 00000000..85622f9b --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/flash.tpl @@ -0,0 +1 @@ +Write the OS file you downloaded to the {{hw.storage-media.name}}. We recommend using Etcher. diff --git a/contracts/sw.install-method+hw.device-type/insert-media-device.tpl b/contracts/sw.install-method+hw.device-type/insert-media-device.tpl new file mode 100644 index 00000000..e69de29b diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+fincm3/connect-media-host.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+fincm3/connect-media-host.tpl new file mode 100644 index 00000000..f0964665 --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+fincm3/connect-media-host.tpl @@ -0,0 +1,2 @@ +While not having the Fin board powered, connect your system to the board's DBG/PRG port via a micro-USB cable. Note for the Fin v1.1, only power the Fin from the PRG port for flashing. +Only for the Fin v1.0, power on the Fin by attaching power to either the Barrel or the Phoenix connector. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+fincm3/disconnect-media-host.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+fincm3/disconnect-media-host.tpl new file mode 100644 index 00000000..bf64d6dc --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+fincm3/disconnect-media-host.tpl @@ -0,0 +1 @@ +When flashing is complete, power off the board by detaching the power if connected, and unplug the DGB micro-USB cable. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+jetson-xavier/connect-media-host.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+jetson-xavier/connect-media-host.tpl new file mode 100644 index 00000000..4c07746a --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+jetson-xavier/connect-media-host.tpl @@ -0,0 +1 @@ +Put {{hw.device-type.name}} in recovery mode and connect it to your host computer. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+jetson-xavier/flash.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+jetson-xavier/flash.tpl new file mode 100644 index 00000000..05f21cb2 --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+jetson-xavier/flash.tpl @@ -0,0 +1 @@ +Unzip BalenaOS image and use the Jetson Flash tool to flash the board. Jetson Flash tool can be found at https://github.com/balena-os/jetson-flash. After flashing is completed, please wait until the board is rebooted \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+nitrogen8mm-dwe/connect-media-host.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+nitrogen8mm-dwe/connect-media-host.tpl new file mode 100644 index 00000000..c05bfc04 --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+nitrogen8mm-dwe/connect-media-host.tpl @@ -0,0 +1 @@ +Power on the board, stop booting in u-boot cmdline and connect the USB OTG port to the PC. Issue the following command in u-boot: ums 0 mmc 0. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+nitrogen8mm-dwe/disconnect-media-host.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+nitrogen8mm-dwe/disconnect-media-host.tpl new file mode 100644 index 00000000..c67c8f20 --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+nitrogen8mm-dwe/disconnect-media-host.tpl @@ -0,0 +1 @@ +Remove power from the board and drain the super capacitor completely. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/connect-media-host.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/connect-media-host.tpl new file mode 100644 index 00000000..4c07746a --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/connect-media-host.tpl @@ -0,0 +1 @@ +Put {{hw.device-type.name}} in recovery mode and connect it to your host computer. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/disconnect-media-host.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/disconnect-media-host.tpl new file mode 100644 index 00000000..5efb7eb2 --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/disconnect-media-host.tpl @@ -0,0 +1 @@ +Remove power from the board. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/flash.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/flash.tpl new file mode 100644 index 00000000..05f21cb2 --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+photon-nano/flash.tpl @@ -0,0 +1 @@ +Unzip BalenaOS image and use the Jetson Flash tool to flash the board. Jetson Flash tool can be found at https://github.com/balena-os/jetson-flash. After flashing is completed, please wait until the board is rebooted \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+revpi-core-3/connect-media-host.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+revpi-core-3/connect-media-host.tpl new file mode 100644 index 00000000..b9987319 --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+revpi-core-3/connect-media-host.tpl @@ -0,0 +1,2 @@ +While not having the Revolution Pi board powered, connect your system to the board's USB port via a micro-USB cable. +Power on the Revolution Pi board. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash+revpi-core-3/disconnect-media-host.tpl b/contracts/sw.install-method+hw.device-type/internal-flash+revpi-core-3/disconnect-media-host.tpl new file mode 100644 index 00000000..ccb19b4f --- /dev/null +++ b/contracts/sw.install-method+hw.device-type/internal-flash+revpi-core-3/disconnect-media-host.tpl @@ -0,0 +1 @@ +When flashing is complete, power off the board and unplug the micro-USB cable. \ No newline at end of file diff --git a/contracts/sw.install-method+hw.device-type/internal-flash/disconnect-media-host.tpl b/contracts/sw.install-method+hw.device-type/internal-flash/disconnect-media-host.tpl new file mode 100644 index 00000000..e69de29b diff --git a/contracts/sw.install-method+hw.device-type/remove-media-device.tpl b/contracts/sw.install-method+hw.device-type/remove-media-device.tpl new file mode 100644 index 00000000..e69de29b diff --git a/contracts/sw.install-method/external-boot/contract.json b/contracts/sw.install-method/external-boot/contract.json new file mode 100644 index 00000000..95510ebc --- /dev/null +++ b/contracts/sw.install-method/external-boot/contract.json @@ -0,0 +1,16 @@ +{ + "slug": "external-boot", + "version": "1", + "type": "sw.install-method", + "name": "External boot", + "requires": [ + { + "type": "hw.device-type", + "data": { + "storage": { + "internal": false + } + } + } + ] +} diff --git a/contracts/sw.install-method/external-flash/contract.json b/contracts/sw.install-method/external-flash/contract.json new file mode 100644 index 00000000..9ed060f2 --- /dev/null +++ b/contracts/sw.install-method/external-flash/contract.json @@ -0,0 +1,34 @@ +{ + "slug": "external-flash", + "version": "1", + "type": "sw.install-method", + "name": "External flash", + "requires": [ + { + "type": "hw.device-type", + "data": { + "storage": { + "internal": true + } + } + }, + { + "or": [ + { + "type": "hw.device-type", "data": { + "media": { + "installation": "sdcard" + } + } + }, + { + "type": "hw.device-type", "data": { + "media": { + "installation": "usbkey" + } + } + } + ] + } + ] +} diff --git a/contracts/sw.install-method/internal-flash/contract.json b/contracts/sw.install-method/internal-flash/contract.json new file mode 100644 index 00000000..83cbd37a --- /dev/null +++ b/contracts/sw.install-method/internal-flash/contract.json @@ -0,0 +1,19 @@ +{ + "slug": "internal-flash", + "version": "1", + "type": "sw.install-method", + "name": "Internal flash", + "requires": [ + { + "type": "hw.device-type", + "data": { + "storage": { + "internal": true + }, + "media": { + "installation": "dfu" + } + } + } + ] +} diff --git a/contracts/sw.os/resinos/contract.json b/contracts/sw.os/resinos/contract.json deleted file mode 100644 index 4e77dac1..00000000 --- a/contracts/sw.os/resinos/contract.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "slug": "resinos", - "name": "ResinOS", - "version": "2.3.0", - "type": "sw.os", - "data": { "libc": "glibc" }, - "requires": [ - { - "type": "arch.sw", - "slug": "armv7hf" - }, - { - "type": "sw.os-image", - "slug": "resinos" - } - ] -} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..dea8d80d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3664 @@ +{ + "name": "contracts", + "version": "1.12.15", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@balena/contrato": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@balena/contrato/-/contrato-0.3.0.tgz", + "integrity": "sha512-8hB/l53Y5UZIMfJZjy0JBgesHMpPg98nTbpnnGKwn31Im8PycTs1HyGGeGKEJnuccCVbrXTWirCT8hGutf2Z1Q==", + "requires": { + "debug": "^3.0.1", + "handlebars": "^4.0.10", + "handlebars-helpers": "^0.10.0", + "js-combinatorics": "^0.5.2", + "lodash": "^4.17.4", + "object-hash": "^1.1.8", + "semver": "^5.5.1", + "skhema": "^2.3.0" + } + }, + "@types/json-schema": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-6.0.1.tgz", + "integrity": "sha512-vuL/tG01yKO//gmCmnV3OZhx2hs538t+7FpQq//sUV1sF6xiKi5V8F60dvAxe/HkC4+QaMCHqrm/akqlppTAkQ==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "ansi-bgblack": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz", + "integrity": "sha1-poulAHiHcBtqr74/oNrf36juPKI=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgblue": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz", + "integrity": "sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgcyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz", + "integrity": "sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bggreen": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz", + "integrity": "sha1-TjGRJIUplD9DIelr8THRwTgWr0k=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgmagenta": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz", + "integrity": "sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgred": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgred/-/ansi-bgred-0.1.1.tgz", + "integrity": "sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgwhite": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz", + "integrity": "sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgyellow": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz", + "integrity": "sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-black": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-black/-/ansi-black-0.1.1.tgz", + "integrity": "sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-blue": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-blue/-/ansi-blue-0.1.1.tgz", + "integrity": "sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bold": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bold/-/ansi-bold-0.1.1.tgz", + "integrity": "sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-colors": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.2.0.tgz", + "integrity": "sha1-csMd4qDZoszQysMMyYI+6y9kNLU=", + "requires": { + "ansi-bgblack": "^0.1.1", + "ansi-bgblue": "^0.1.1", + "ansi-bgcyan": "^0.1.1", + "ansi-bggreen": "^0.1.1", + "ansi-bgmagenta": "^0.1.1", + "ansi-bgred": "^0.1.1", + "ansi-bgwhite": "^0.1.1", + "ansi-bgyellow": "^0.1.1", + "ansi-black": "^0.1.1", + "ansi-blue": "^0.1.1", + "ansi-bold": "^0.1.1", + "ansi-cyan": "^0.1.1", + "ansi-dim": "^0.1.1", + "ansi-gray": "^0.1.1", + "ansi-green": "^0.1.1", + "ansi-grey": "^0.1.1", + "ansi-hidden": "^0.1.1", + "ansi-inverse": "^0.1.1", + "ansi-italic": "^0.1.1", + "ansi-magenta": "^0.1.1", + "ansi-red": "^0.1.1", + "ansi-reset": "^0.1.1", + "ansi-strikethrough": "^0.1.1", + "ansi-underline": "^0.1.1", + "ansi-white": "^0.1.1", + "ansi-yellow": "^0.1.1", + "lazy-cache": "^2.0.1" + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-dim": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-dim/-/ansi-dim-0.1.1.tgz", + "integrity": "sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-green": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", + "integrity": "sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-grey": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-grey/-/ansi-grey-0.1.1.tgz", + "integrity": "sha1-WdmLasK6GfilF5jphT+6eDOaM8E=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-hidden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-hidden/-/ansi-hidden-0.1.1.tgz", + "integrity": "sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-inverse": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-inverse/-/ansi-inverse-0.1.1.tgz", + "integrity": "sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-italic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-italic/-/ansi-italic-0.1.1.tgz", + "integrity": "sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-magenta": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-magenta/-/ansi-magenta-0.1.1.tgz", + "integrity": "sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=", + "requires": { + "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=", + "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", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-reset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-reset/-/ansi-reset-0.1.1.tgz", + "integrity": "sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-strikethrough": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz", + "integrity": "sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "ansi-underline": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-underline/-/ansi-underline-0.1.1.tgz", + "integrity": "sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-white": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-white/-/ansi-white-0.1.1.tgz", + "integrity": "sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + }, + "ansi-yellow": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-yellow/-/ansi-yellow-0.1.1.tgz", + "integrity": "sha1-y5NW8vRscy8OMZnmEClVp32oPB0=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + } + }, + "array-sort": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-0.1.4.tgz", + "integrity": "sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ==", + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autolinker": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", + "integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=", + "requires": { + "gulp-header": "^1.7.1" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compute-gcd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/compute-gcd/-/compute-gcd-1.2.0.tgz", + "integrity": "sha1-/B7eW2UAHpUCJlAvRlQ4Y+T+oQ4=", + "requires": { + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2", + "validate.io-integer-array": "^1.0.0" + } + }, + "compute-lcm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/compute-lcm/-/compute-lcm-1.1.0.tgz", + "integrity": "sha1-q9ltBAtBsKFm+JlEtci3xRHiGtU=", + "requires": { + "compute-gcd": "^1.2.0", + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2", + "validate.io-integer-array": "^1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "requires": { + "source-map": "^0.6.1" + } + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-frame": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/create-frame/-/create-frame-1.0.0.tgz", + "integrity": "sha1-i5XyaR4ySbYIBEPjPQutn49pdao=", + "requires": { + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "isobject": "^3.0.0", + "lazy-cache": "^2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "date.js": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/date.js/-/date.js-0.3.3.tgz", + "integrity": "sha512-HgigOS3h3k6HnW011nAb43c5xx5rBXk8P2v/WIT9Zv4koIaVXiH2BURguI78VVp+5Qc076T7OR378JViCnZtBw==", + "requires": { + "debug": "~3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-symbol": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz", + "integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y=" + }, + "es-abstract": { + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.1", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + } + } + }, + "eslint-config-standard": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", + "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", + "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "dev": true, + "requires": { + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz", + "integrity": "sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ==", + "dev": true + }, + "eslint-plugin-standard": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz", + "integrity": "sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==", + "dev": true + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "falsey": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/falsey/-/falsey-0.3.2.tgz", + "integrity": "sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg==", + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=" + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-object": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/get-object/-/get-object-0.2.0.tgz", + "integrity": "sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw=", + "requires": { + "is-number": "^2.0.2", + "isobject": "^0.2.0" + }, + "dependencies": { + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-0.2.0.tgz", + "integrity": "sha1-o0MhkvObkQtfAsyYlIeDbscKqF4=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "gulp-header": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", + "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", + "requires": { + "concat-with-sourcemaps": "*", + "lodash.template": "^4.4.0", + "through2": "^2.0.0" + } + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "handlebars-helper-create-frame": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/handlebars-helper-create-frame/-/handlebars-helper-create-frame-0.1.0.tgz", + "integrity": "sha1-iqUdEK62QI/MZgXUDXc1YohIegM=", + "requires": { + "create-frame": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "handlebars-helpers": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/handlebars-helpers/-/handlebars-helpers-0.10.0.tgz", + "integrity": "sha512-QiyhQz58u/DbuV41VnfpE0nhy6YCH4vB514ajysV8SoKmP+DxU+pR+fahVyNECHj+jiwEN2VrvxD/34/yHaLUg==", + "requires": { + "arr-flatten": "^1.1.0", + "array-sort": "^0.1.4", + "create-frame": "^1.0.0", + "define-property": "^1.0.0", + "falsey": "^0.3.2", + "for-in": "^1.0.2", + "for-own": "^1.0.0", + "get-object": "^0.2.0", + "get-value": "^2.0.6", + "handlebars": "^4.0.11", + "handlebars-helper-create-frame": "^0.1.0", + "handlebars-utils": "^1.0.6", + "has-value": "^1.0.0", + "helper-date": "^1.0.1", + "helper-markdown": "^1.0.0", + "helper-md": "^0.2.2", + "html-tag": "^2.0.0", + "is-even": "^1.0.0", + "is-glob": "^4.0.0", + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "lazy-cache": "^2.0.2", + "logging-helpers": "^1.0.0", + "micromatch": "^3.1.4", + "relative": "^3.0.2", + "striptags": "^3.1.0", + "to-gfm-code-block": "^0.1.1", + "year": "^0.2.1" + } + }, + "handlebars-utils": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/handlebars-utils/-/handlebars-utils-1.0.6.tgz", + "integrity": "sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw==", + "requires": { + "kind-of": "^6.0.0", + "typeof-article": "^0.1.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "helper-date": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/helper-date/-/helper-date-1.0.1.tgz", + "integrity": "sha512-wU3VOwwTJvGr/w5rZr3cprPHO+hIhlblTJHD6aFBrKLuNbf4lAmkawd2iK3c6NbJEvY7HAmDpqjOFSI5/+Ey2w==", + "requires": { + "date.js": "^0.3.1", + "handlebars-utils": "^1.0.4", + "moment": "^2.18.1" + } + }, + "helper-markdown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/helper-markdown/-/helper-markdown-1.0.0.tgz", + "integrity": "sha512-AnDqMS4ejkQK0MXze7pA9TM3pu01ZY+XXsES6gEE0RmCGk5/NIfvTn0NmItfyDOjRAzyo9z6X7YHbHX4PzIvOA==", + "requires": { + "handlebars-utils": "^1.0.2", + "highlight.js": "^9.12.0", + "remarkable": "^1.7.1" + } + }, + "helper-md": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/helper-md/-/helper-md-0.2.2.tgz", + "integrity": "sha1-wfWdflW7riM2L9ig6XFgeuxp1B8=", + "requires": { + "ent": "^2.2.0", + "extend-shallow": "^2.0.1", + "fs-exists-sync": "^0.1.0", + "remarkable": "^1.6.2" + } + }, + "highlight.js": { + "version": "9.18.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.3.tgz", + "integrity": "sha512-zBZAmhSupHIl5sITeMqIJnYCDfAEc3Gdkqj65wC1lpI468MMQeeQkhcIAvk+RylAkxrCcI9xy9piHiXeQ1BdzQ==" + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "html-tag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tag/-/html-tag-2.0.0.tgz", + "integrity": "sha512-XxzooSo6oBoxBEUazgjdXj7VwTn/iSTSZzTYKzYY6I916tkaYzypHxy+pbVU1h+0UQ9JlVf5XkNQyxOAiiQO1g==", + "requires": { + "is-self-closing": "^1.0.1", + "kind-of": "^6.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "info-symbol": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/info-symbol/-/info-symbol-0.1.0.tgz", + "integrity": "sha1-J4QdcoZ920JCzWEtecEGM4gcang=" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-even": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-even/-/is-even-1.0.0.tgz", + "integrity": "sha1-drUFX7rY0pSoa2qUkBXhyXtxfAY=", + "requires": { + "is-odd": "^0.1.2" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + }, + "is-odd": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-0.1.2.tgz", + "integrity": "sha1-vFc7XONx7yqtbm9JeZtyvvE5eKc=", + "requires": { + "is-number": "^3.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-self-closing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-self-closing/-/is-self-closing-1.0.1.tgz", + "integrity": "sha512-E+60FomW7Blv5GXTlYee2KDrnG6srxF7Xt1SjrhWUGUEsTFIqY/nq2y3DaftCsgUMdh89V07IVfhY9KIJhLezg==", + "requires": { + "self-closing-tags": "^1.0.1" + } + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "js-combinatorics": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/js-combinatorics/-/js-combinatorics-0.5.5.tgz", + "integrity": "sha512-WglFY9EQvwndNhuJLxxyjnC16649lfZly/G3M3zgQMwcWlJDJ0Jn9niPWeYjnLXwWOEycYVxR2Tk98WLeFkrcw==" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-compare": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/json-schema-compare/-/json-schema-compare-0.2.2.tgz", + "integrity": "sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==", + "requires": { + "lodash": "^4.17.4" + } + }, + "json-schema-merge-allof": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/json-schema-merge-allof/-/json-schema-merge-allof-0.6.0.tgz", + "integrity": "sha512-LEw4VMQVRceOPLuGRWcxW5orTTiR9ZAtqTAe4rQUjNADTeR81bezBVFa0MqIwp0YmHIM1KkhSjZM7o+IQhaPbQ==", + "requires": { + "compute-lcm": "^1.1.0", + "json-schema-compare": "^0.2.2", + "lodash": "^4.17.4" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "^0.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "log-ok": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/log-ok/-/log-ok-0.1.1.tgz", + "integrity": "sha1-vqPdNqzQuKckDXhza1uXxlREozQ=", + "requires": { + "ansi-green": "^0.1.1", + "success-symbol": "^0.1.0" + } + }, + "log-utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.2.1.tgz", + "integrity": "sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8=", + "requires": { + "ansi-colors": "^0.2.0", + "error-symbol": "^0.1.0", + "info-symbol": "^0.1.0", + "log-ok": "^0.1.1", + "success-symbol": "^0.1.0", + "time-stamp": "^1.0.1", + "warning-symbol": "^0.1.0" + } + }, + "logging-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/logging-helpers/-/logging-helpers-1.0.0.tgz", + "integrity": "sha512-qyIh2goLt1sOgQQrrIWuwkRjUx4NUcEqEGAcYqD8VOnOC6ItwkrVE8/tA4smGpjzyp4Svhc6RodDp9IO5ghpyA==", + "requires": { + "isobject": "^3.0.0", + "log-utils": "^0.2.1" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "moment": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true + }, + "relative": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/relative/-/relative-3.0.2.tgz", + "integrity": "sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8=", + "requires": { + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "remarkable": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.4.tgz", + "integrity": "sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==", + "requires": { + "argparse": "^1.0.10", + "autolinker": "~0.28.0" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "require-all": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/require-all/-/require-all-3.0.0.tgz", + "integrity": "sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI=" + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "*" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "self-closing-tags": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/self-closing-tags/-/self-closing-tags-1.0.1.tgz", + "integrity": "sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "requires": { + "to-object-path": "^0.3.0" + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "skhema": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/skhema/-/skhema-2.5.2.tgz", + "integrity": "sha512-Y+ovG/7VLNTSc1RQ6gNBY0JPy8BJlUom1fxjhSojZfi+wg+1VOeu38kNnQ8/J3jBNMeiDvODVNcsT6vXY7zOYg==", + "requires": { + "@types/json-schema": "^6.0.1", + "ajv": "^6.5.1", + "ajv-keywords": "^3.2.0", + "json-schema-merge-allof": "^0.6.0", + "lodash": "^4.17.10", + "typed-errors": "^1.1.0" + } + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "striptags": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz", + "integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0=" + }, + "success-symbol": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", + "integrity": "sha1-JAIuSG878c3KCUKDt2nEctO3KJc=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-gfm-code-block": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz", + "integrity": "sha1-JdBFpfrlUxielje1kJANpzLYqoI=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typed-errors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/typed-errors/-/typed-errors-1.1.0.tgz", + "integrity": "sha1-idWguD01UP7WCZyfE6V7rewQozA=", + "requires": { + "underscore": "^1.8.3" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typeof-article": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/typeof-article/-/typeof-article-0.1.1.tgz", + "integrity": "sha1-nwfnM8P7tkb/qeYcCN66zUYOBq8=", + "requires": { + "kind-of": "^3.1.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "uglify-js": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.0.tgz", + "integrity": "sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA==", + "optional": true + }, + "underscore": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", + "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate.io-array": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz", + "integrity": "sha1-W1osr9j4uFq7L4hroVPy2Tond00=" + }, + "validate.io-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/validate.io-function/-/validate.io-function-1.0.2.tgz", + "integrity": "sha1-NDoZgC7TsZaCaceA5VjpNBHAutc=" + }, + "validate.io-integer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz", + "integrity": "sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg=", + "requires": { + "validate.io-number": "^1.0.3" + } + }, + "validate.io-integer-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz", + "integrity": "sha1-LKveAzKTpry+Bj/q/pHq9GsToIk=", + "requires": { + "validate.io-array": "^1.0.3", + "validate.io-integer": "^1.0.4" + } + }, + "validate.io-number": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz", + "integrity": "sha1-9j/+2iSL8opnqNSODjtGGhZluvg=" + }, + "warning-symbol": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz", + "integrity": "sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "year": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/year/-/year-0.2.1.tgz", + "integrity": "sha1-QIOuUgoxiyPshgN/MADLiSvfm7A=" + } + } +} diff --git a/package.json b/package.json index 871e3edc..458689c8 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ }, "private": true, "scripts": { - "test": "eslint scripts && node scripts/check-contracts.js" + "test": "eslint scripts && node scripts/check-contracts.js", + "generate-instructions": "node ./scripts/process-blueprints instructions" }, "author": "Balena Inc. ", "license": "Apache-2.0", @@ -19,5 +20,12 @@ "eslint-plugin-node": "^5.2.0", "eslint-plugin-promise": "^3.5.0", "eslint-plugin-standard": "^3.0.1" + }, + "dependencies": { + "@balena/contrato": "^0.3.0", + "fs-extra": "^9.0.1", + "js-yaml": "^3.14.0", + "lodash": "^4.17.19", + "require-all": "^3.0.0" } } diff --git a/scripts/process-blueprints.js b/scripts/process-blueprints.js new file mode 100644 index 00000000..3137a229 --- /dev/null +++ b/scripts/process-blueprints.js @@ -0,0 +1,112 @@ +/* + * Copyright 2017 balena.io + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +"use strict"; + +const _ = require("lodash"); +const fs = require("fs-extra"); +const path = require("path"); +const contrato = require("@balena/contrato"); +const yaml = require("js-yaml"); + +const DEST_DIR = path.join(__dirname, "../output"); +const CONTRACTS_PATH = path.join(__dirname, "../contracts"); + +const BLUEPRINT_PATHS = { + instructions: path.join(__dirname, "../blueprints/instructions.yaml"), + configuration: path.join(__dirname, "../blueprints/configuration.yaml"), + initialization: path.join(__dirname, "../blueprints/initialization.yaml"), + "hostapp-releases": path.join( + __dirname, + "../blueprints/hostapp-releases.yaml" + ), + hostapps: path.join(__dirname, "../blueprints/hostapps.yaml"), +}; + +// Find and build all contracts from the contracts/ directory +const allContracts = require("require-all")({ + dirname: CONTRACTS_PATH, + filter: /.json$/, + recursive: true, + resolve: (json) => { + return contrato.Contract.build(json); + }, +}); + +const contracts = _.reduce( + _.values(allContracts), + (accumulator, value) => { + return _.concat( + accumulator, + _.flattenDeep(_.map(_.values(value), _.values)) + ); + }, + [] +); + +// Create universe of contracts +const universe = new contrato.Contract({ + type: "meta.universe", +}); +universe.addChildren(contracts); + +// Load arguments +const types = process.argv.slice(2); +if (types.length === 0) { + console.error(`Usage: ${process.argv[0]} ${process.argv[1]} `); + process.exit(1); +} + +let blueprints = types; + +if (types.indexOf("all") > -1) { + // Generate dockerfile for all blueprints + blueprints = Object.keys(BLUEPRINT_PATHS); +} + +for (const type of blueprints) { + if (!BLUEPRINT_PATHS[type]) { + console.error(`Blueprint for this type: ${type} is missing!`); + process.exit(1); + } + + const query = yaml.safeLoad(fs.readFileSync(BLUEPRINT_PATHS[type], "utf8")); + const result = contrato.query(universe, query.selector, query.output); + const template = query.output.template[0].data; + + // Write output + for (const context of result) { + const json = context.toJSON(); + const destination = path.join(DEST_DIR, json.path, query.output.filename); + + console.log(`Generating ${json.slug}`); + fs.outputFileSync( + destination, + contrato.buildTemplate(template, context, { + directory: CONTRACTS_PATH, + }) + ); + } + + console.log( + `Generated ${result.length} results out of ${ + universe.getChildren().length + } contracts` + ); + console.log( + `Adding generated ${result.length} contracts back to the universe` + ); +}