From 8d55343f3292ade6a3e5f4a15087c4d8ad0d90f7 Mon Sep 17 00:00:00 2001 From: Scisco Date: Tue, 27 Mar 2018 17:12:26 -0400 Subject: [PATCH 01/11] reorganize folders --- cumulus/lib/cf-template.js | 85 - cumulus/lib/templates/defaults.yml | 15 - cumulus/lib/templates/ecs-task-defaults.yml | 13 - cumulus/lib/templates/service-defaults.yml | 35 - cumulus/lib/templates/task-defaults.yml | 10 - cumulus/services/provider-gateway/.gitignore | 15 - cumulus/services/provider-gateway/Dockerfile | 7 - cumulus/services/provider-gateway/README.md | 233 - .../services/provider-gateway/bin/build.sh | 4 - .../provider-gateway/bin/docker_deploy.sh | 47 - .../provider-gateway/bin/docker_run.sh | 12 - .../provider-gateway/bin/docker_stop.sh | 7 - .../provider-gateway/bin/docker_tail_logs.sh | 3 - .../config/cloudformation.yml | 20 - .../services/provider-gateway/dev/user.clj | 56 - cumulus/services/provider-gateway/project.clj | 60 - .../sync_task_to_request_handler.clj | 72 - .../provider_gateway/aws/activity_api.clj | 232 - .../src/cumulus/provider_gateway/aws/s3.clj | 148 - .../download_activity_handler.clj | 225 - .../provider_gateway/protocols/ftp.clj | 153 - .../provider_gateway/protocols/http.clj | 58 - .../provider_gateway/protocols/sftp.clj | 87 - .../protocols/url_connection.clj | 17 - .../src/cumulus/provider_gateway/runner.clj | 24 - .../cumulus/provider_gateway/specs/common.clj | 12 - .../cumulus/provider_gateway/specs/config.clj | 16 - .../provider_gateway/specs/provider.clj | 76 - .../provider_gateway/specs/sync_task.clj | 11 - .../cumulus/provider_gateway/specs/task.clj | 35 - .../src/cumulus/provider_gateway/system.clj | 110 - .../provider_gateway/task_executor.clj | 211 - .../src/cumulus/provider_gateway/util.clj | 103 - .../sync_task_to_request_handler_test.clj | 97 - .../cumulus/provider_gateway/ftp_server.clj | 89 - .../cumulus/provider_gateway/http_server.clj | 67 - .../provider_gateway/integration_test.clj | 472 - .../cumulus/provider_gateway/sftp_server.clj | 89 - .../cumulus/provider_gateway/system_test.clj | 27 - .../cumulus/provider_gateway/util_test.clj | 49 - cumulus/services/sfn-scheduler/README.md | 13 - .../sfn-scheduler/config/cloudformation.yml | 47 - cumulus/services/sfn-scheduler/index.js | 117 - cumulus/services/sfn-scheduler/package.json | 24 - .../sfn-throttler/config/cloudformation.yml | 15 - cumulus/services/sfn-throttler/index.js | 157 - cumulus/services/sfn-throttler/package.json | 25 - cumulus/tasks/discover-pdrs/package-lock.json | 8426 ----------------- cumulus/tasks/parse-pdr/package-lock.json | 4487 --------- .../config/cloudformation.yml | 0 .../copy-idx-from-s3-to-efs/index.js | 0 .../copy-idx-from-s3-to-efs/package.json | 0 .../copy-idx-from-s3-to-efs/test/ast_l1t.yml | 0 .../test/copy-idx-spec.js | 0 .../test/input_payload.json | 0 .../delete-ingest-tracking-data/README.md | 0 .../config/cloudformation.yml | 0 .../delete-ingest-tracking-data/index.js | 0 .../delete-ingest-tracking-data/package.json | 0 .../test/filter-payload-spec.js | 0 .../delete-pdr-ftp/.babelrc | 0 .../delete-pdr-ftp/.gitignore | 0 .../delete-pdr-ftp/README.md | 0 .../delete-pdr-ftp/config/cloudformation.yml | 0 .../delete-pdr-ftp/ftp_util.js | 0 .../delete-pdr-ftp/index.js | 0 .../delete-pdr-ftp/package.json | 0 .../test/delete-pdr-ftp-spec.js | 0 .../delete-pdr-s3/.babelrc | 0 .../delete-pdr-s3/.gitignore | 0 .../delete-pdr-s3/README.md | 0 .../delete-pdr-s3/config/cloudformation.yml | 0 .../delete-pdr-s3/index.js | 0 .../delete-pdr-s3/package.json | 0 .../delete-pdr-s3/test/delete-pdr-s3.test.js | 0 .../discover-cmr-granules/README.md | 0 .../config/cloudformation.yml | 0 .../discover-cmr-granules/index.js | 0 .../discover-cmr-granules/package.json | 0 .../test/discover-cmr-granules-spec.js | 0 .../discover-http-tiles/README.md | 0 .../apache-index-tile-crawler.js | 0 .../config/cloudformation.yml | 0 .../discover-http-tiles/http-tile-crawler.js | 0 .../discover-http-tiles/index.js | 0 .../discover-http-tiles/package.json | 0 .../test/discover-http-tiles-spec.js | 0 .../.not_CMA_compliant}/discover-pdr/.babelrc | 0 .../discover-pdr/.gitignore | 0 .../discover-pdr/README.md | 0 .../discover-pdr/config/cloudformation.yml | 0 .../.not_CMA_compliant}/discover-pdr/index.js | 0 .../discover-pdr/package.json | 0 .../.not_CMA_compliant}/discover-pdr/pdr.js | 0 .../discover-pdr/test/discover-pdr-spec.js | 0 .../download-activity-mock/.babelrc | 0 .../download-activity-mock/.gitignore | 0 .../download-activity-mock/README.md | 0 .../download-activity-mock/index.js | 0 .../download-activity-mock/package.json | 0 .../download-activity-mock/sips.js | 0 .../test/download-activity-mock-spec.js | 0 .../filter-payload/README.md | 0 .../filter-payload/config/cloudformation.yml | 0 .../filter-payload/index.js | 0 .../filter-payload/package.json | 0 .../test/filter-payload-spec.js | 0 .../generate-mrf/README.md | 0 .../generate-mrf/config-gen.js | 0 .../generate-mrf/config/cloudformation.yml | 0 .../.not_CMA_compliant}/generate-mrf/index.js | 0 .../generate-mrf/package.json | 0 .../templates/empty-tiles/empty256.jpg | Bin .../templates/empty-tiles/empty256.png | Bin .../templates/empty-tiles/empty512.jpg | Bin .../templates/empty-tiles/empty512.png | Bin .../generate-mrf/templates/mrfgen_config.xml | 0 .../templates/products/_viirs.xml | 0 .../source-projections/_epsg3031.xml | 0 .../source-projections/_epsg3413.xml | 0 .../source-projections/_epsg4326.xml | 0 .../target-projections/_epsg3031.xml | 0 .../target-projections/_epsg3413.xml | 0 .../target-projections/_epsg4326.xml | 0 .../generate-mrf/test/generate-mrf-spec.js | 0 .../.not_CMA_compliant}/generate-pan/.babelrc | 0 .../generate-pan/.gitignore | 0 .../generate-pan/README.md | 0 .../generate-pan/config/cloudformation.yml | 0 .../generate-pan/ftp_util.js | 0 .../.not_CMA_compliant}/generate-pan/index.js | 0 .../generate-pan/package.json | 0 .../.not_CMA_compliant}/generate-pan/pan.js | 0 .../test/fixtures/all-success-fixture.js | 0 .../test/fixtures/missing-file-fixture.js | 0 .../generate-pan/test/generate-pan-spec.js | 0 .../generate-pdr-file-list/README.md | 0 .../config/cloudformation.yml | 0 .../generate-pdr-file-list/index.js | 0 .../generate-pdr-file-list/package.json | 0 .../generate-pdr-file-list/pdr.js | 0 .../test/fixtures/bad-pdr-fixture.js | 0 .../test/fixtures/good-pdr-fixture.js | 0 .../test/generate-pdr-file-list-spec.js | 0 .../generate-pdrd/.babelrc | 0 .../generate-pdrd/.gitignore | 0 .../generate-pdrd/README.md | 0 .../generate-pdrd/config/cloudformation.yml | 0 .../generate-pdrd/ftp_util.js | 0 .../generate-pdrd/index.js | 0 .../generate-pdrd/package.json | 0 .../.not_CMA_compliant}/generate-pdrd/pdrd.js | 0 .../test/fixtures/bad-file-entry-fixture.js | 0 .../test/fixtures/invalid-pvl-fixture.js | 0 .../test/fixtures/missing-fields-fixture.js | 0 .../generate-pdrd/test/generate-pdrd-spec.js | 0 .../.not_CMA_compliant}/run-gdal/README.md | 0 .../run-gdal/build-gdal/.gitignore | 0 .../run-gdal/build-gdal/Dockerfile | 0 .../run-gdal/build-gdal/Makefile | 0 .../run-gdal/config/cloudformation.yml | 0 .../run-gdal/deps/lambda-gdal.zip | Bin .../run-gdal/example/ast_l1t-to-mrf.json | 0 .../run-gdal/example/ast_l1t-to-png.json | 0 .../run-gdal/example/event.json | 0 .../.not_CMA_compliant}/run-gdal/index.js | 0 .../.not_CMA_compliant}/run-gdal/package.json | 0 .../run-gdal/webpack.config.js | 0 .../sync-http-urls/README.md | 0 .../sync-http-urls/config/cloudformation.yml | 0 .../sync-http-urls/index.js | 0 .../sync-http-urls/package.json | 0 .../test/sync-http-urls-spec.js | 0 .../.not_CMA_compliant}/sync-wms/README.md | 0 .../sync-wms/config/cloudformation.yml | 0 .../.not_CMA_compliant}/sync-wms/index.js | 0 .../.not_CMA_compliant}/sync-wms/package.json | 0 .../sync-wms/test/sync-wms-spec.js | 0 .../.not_CMA_compliant}/tee/README.md | 0 .../tee/config/cloudformation.yml | 0 .../.not_CMA_compliant}/tee/index.js | 0 .../.not_CMA_compliant}/tee/package.json | 0 .../trigger-ingest/README.md | 0 .../trigger-ingest/config/cloudformation.yml | 0 .../trigger-ingest/index.js | 0 .../trigger-ingest/package.json | 0 .../test/trigger-ingest-spec.js | 0 .../trigger-mrf-gen/README.md | 0 .../trigger-mrf-gen/config/cloudformation.yml | 0 .../trigger-mrf-gen/index.js | 0 .../trigger-mrf-gen/package.json | 0 .../trigger-process-pdrs/README.md | 0 .../config/cloudformation.yml | 0 .../trigger-process-pdrs/index.js | 0 .../trigger-process-pdrs/package.json | 0 .../test/trigger-process-pdrs-spec.js | 0 .../validate-archives/README.md | 0 .../validate-archives/archive-validations.js | 0 .../config/cloudformation.yml | 0 .../validate-archives/index.js | 0 .../validate-archives/package.json | 0 .../test/fixtures/all-success-fixture.js | 0 .../test/fixtures/missing-file-fixture.js | 0 .../test/vaidate-archives-spec.js | 0 .../.not_CMA_compliant}/validate-pdr/.babelrc | 0 .../validate-pdr/.gitignore | 0 .../validate-pdr/README.md | 0 .../validate-pdr/config/cloudformation.yml | 0 .../.not_CMA_compliant}/validate-pdr/index.js | 0 .../validate-pdr/package.json | 0 .../validate-pdr/pdr-validations.js | 0 .../.not_CMA_compliant}/validate-pdr/pdr.js | 0 .../test/fixtures/file-errors-fixture.js | 0 .../test/fixtures/invalid-pvl-fixture.js | 0 .../test/fixtures/missing-fields-fixture.js | 0 .../test/fixtures/success-fixture.js | 0 .../validate-pdr/test/pdr-validations.test.js | 0 .../validate-pdr/test/validate-pdr.test.js | 0 .../discover-granules/README.md | 0 .../discover-granules/cumulus.json | 0 .../discover-granules/index.js | 0 .../discover-granules/package.json | 0 .../discover-granules/schemas/config.json | 0 .../discover-granules/schemas/output.json | 0 .../discover-granules/tests/.eslintrc.json | 0 .../discover-granules/tests/fixtures/mur.json | 0 .../discover-granules/tests/index.js | 0 .../discover-granules/webpack.config.js | 0 .../tasks => tasks}/discover-pdrs/README.md | 0 .../discover-pdrs/cumulus.json | 0 .../tasks => tasks}/discover-pdrs/index.js | 0 .../discover-pdrs/package.json | 0 .../discover-pdrs/schemas/config.json | 0 .../discover-pdrs/schemas/output.json | 0 .../discover-pdrs/tests/.eslintrc.json | 0 .../discover-pdrs/tests/fixtures/input.json | 0 .../discover-pdrs/tests/index.js | 0 .../tasks => tasks}/discover-pdrs/tests/s3.js | 0 .../discover-pdrs/webpack.config.js | 0 .../discover-s3-granules/README.md | 0 .../discover-s3-granules/index.js | 0 .../discover-s3-granules/package.json | 0 .../discover-s3-granules/schemas/config.json | 0 .../discover-s3-granules/schemas/output.json | 0 .../tests/fixtures/input.json | 0 .../discover-s3-granules/tests/index.js | 0 .../discover-s3-granules/webpack.config.js | 0 .../tasks => tasks}/hello-world/README.md | 0 {cumulus/tasks => tasks}/hello-world/index.js | 0 .../tasks => tasks}/hello-world/package.json | 0 .../hello-world/tests/hello_world_test.js | 0 .../hello-world/webpack.config.js | 0 {cumulus/tasks => tasks}/parse-pdr/README.md | 0 {cumulus/tasks => tasks}/parse-pdr/index.js | 0 .../tasks => tasks}/parse-pdr/package.json | 0 .../parse-pdr/schemas/config.json | 0 .../parse-pdr/schemas/input.json | 0 .../parse-pdr/schemas/output.json | 0 .../parse-pdr/tests/parse_pdrs_test.js | 0 .../parse-pdr/webpack.config.js | 0 .../pdr-status-check/README.md | 0 .../tasks => tasks}/pdr-status-check/index.js | 0 .../pdr-status-check/package.json | 0 .../pdr-status-check/schemas/input.json | 0 .../pdr-status-check/schemas/output.json | 0 .../pdr-status-check/tests/index.js | 0 .../pdr-status-check/webpack.config.js | 0 .../tasks => tasks}/post-to-cmr/README.md | 0 {cumulus/tasks => tasks}/post-to-cmr/index.js | 0 .../tasks => tasks}/post-to-cmr/package.json | 0 .../post-to-cmr/schemas/config.json | 0 .../post-to-cmr/schemas/input.json | 0 .../post-to-cmr/schemas/output.json | 0 .../post-to-cmr/tests/cmr_test.js | 0 .../post-to-cmr/tests/data/meta.xml | 0 .../post-to-cmr/tests/data/payload.json | 0 .../post-to-cmr/webpack.config.js | 0 .../tasks => tasks}/queue-granules/README.md | 0 .../tasks => tasks}/queue-granules/index.js | 0 .../queue-granules/package.json | 0 .../queue-granules/schemas/config.json | 0 .../queue-granules/schemas/input.json | 0 .../queue-granules/schemas/output.json | 0 .../queue-granules/tests/.eslintrc.json | 0 .../queue-granules/tests/fixtures/input.json | 0 .../tests/fixtures/workflow-template.json | 0 .../queue-granules/tests/index.js | 0 .../queue-granules/webpack.config.js | 0 {cumulus/tasks => tasks}/queue-pdrs/README.md | 0 {cumulus/tasks => tasks}/queue-pdrs/index.js | 0 .../tasks => tasks}/queue-pdrs/package.json | 0 .../queue-pdrs/schemas/config.json | 0 .../queue-pdrs/schemas/input.json | 0 .../queue-pdrs/schemas/output.json | 0 .../queue-pdrs/tests/.eslintrc.json | 0 .../queue-pdrs/tests/fixtures/input.json | 0 .../tests/fixtures/workflow-template.json | 0 .../tasks => tasks}/queue-pdrs/tests/index.js | 0 .../queue-pdrs/webpack.config.js | 0 .../tasks => tasks}/sf-sns-report/README.md | 0 .../tasks => tasks}/sf-sns-report/index.js | 0 .../sf-sns-report/package.json | 0 .../sf-sns-report/schemas/config.json | 0 .../sf-sns-report/tests/.eslintrc.json | 0 .../sf-sns-report/tests/index.js | 0 .../sf-sns-report/webpack.config.js | 0 .../tasks => tasks}/sync-granule/README.md | 0 .../tasks => tasks}/sync-granule/index.js | 0 .../tasks => tasks}/sync-granule/package.json | 0 .../sync-granule/schemas/config.json | 0 .../sync-granule/schemas/input.json | 0 .../sync-granule/schemas/output.json | 0 .../sync-granule/tests/.eslintrc.json | 0 .../sync-granule/tests/sync_granule_test.js | 0 .../sync-granule/webpack.config.js | 0 .../fixtures/workflows/pdr_parse_ingest.json | 6 +- 316 files changed, 3 insertions(+), 16416 deletions(-) delete mode 100644 cumulus/lib/cf-template.js delete mode 100644 cumulus/lib/templates/defaults.yml delete mode 100644 cumulus/lib/templates/ecs-task-defaults.yml delete mode 100644 cumulus/lib/templates/service-defaults.yml delete mode 100644 cumulus/lib/templates/task-defaults.yml delete mode 100644 cumulus/services/provider-gateway/.gitignore delete mode 100644 cumulus/services/provider-gateway/Dockerfile delete mode 100644 cumulus/services/provider-gateway/README.md delete mode 100755 cumulus/services/provider-gateway/bin/build.sh delete mode 100755 cumulus/services/provider-gateway/bin/docker_deploy.sh delete mode 100755 cumulus/services/provider-gateway/bin/docker_run.sh delete mode 100755 cumulus/services/provider-gateway/bin/docker_stop.sh delete mode 100755 cumulus/services/provider-gateway/bin/docker_tail_logs.sh delete mode 100644 cumulus/services/provider-gateway/config/cloudformation.yml delete mode 100644 cumulus/services/provider-gateway/dev/user.clj delete mode 100644 cumulus/services/provider-gateway/project.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/activities/sync_task_to_request_handler.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/aws/activity_api.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/aws/s3.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/download_activity_handler.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/ftp.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/http.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/sftp.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/url_connection.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/runner.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/common.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/config.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/provider.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/sync_task.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/task.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/system.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/task_executor.clj delete mode 100644 cumulus/services/provider-gateway/src/cumulus/provider_gateway/util.clj delete mode 100644 cumulus/services/provider-gateway/test/cumulus/provider_gateway/activities/sync_task_to_request_handler_test.clj delete mode 100644 cumulus/services/provider-gateway/test/cumulus/provider_gateway/ftp_server.clj delete mode 100644 cumulus/services/provider-gateway/test/cumulus/provider_gateway/http_server.clj delete mode 100644 cumulus/services/provider-gateway/test/cumulus/provider_gateway/integration_test.clj delete mode 100644 cumulus/services/provider-gateway/test/cumulus/provider_gateway/sftp_server.clj delete mode 100644 cumulus/services/provider-gateway/test/cumulus/provider_gateway/system_test.clj delete mode 100644 cumulus/services/provider-gateway/test/cumulus/provider_gateway/util_test.clj delete mode 100644 cumulus/services/sfn-scheduler/README.md delete mode 100644 cumulus/services/sfn-scheduler/config/cloudformation.yml delete mode 100644 cumulus/services/sfn-scheduler/index.js delete mode 100644 cumulus/services/sfn-scheduler/package.json delete mode 100644 cumulus/services/sfn-throttler/config/cloudformation.yml delete mode 100644 cumulus/services/sfn-throttler/index.js delete mode 100644 cumulus/services/sfn-throttler/package.json delete mode 100644 cumulus/tasks/discover-pdrs/package-lock.json delete mode 100644 cumulus/tasks/parse-pdr/package-lock.json rename {cumulus/tasks => tasks/.not_CMA_compliant}/copy-idx-from-s3-to-efs/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/copy-idx-from-s3-to-efs/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/copy-idx-from-s3-to-efs/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/copy-idx-from-s3-to-efs/test/ast_l1t.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/copy-idx-from-s3-to-efs/test/copy-idx-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/copy-idx-from-s3-to-efs/test/input_payload.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-ingest-tracking-data/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-ingest-tracking-data/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-ingest-tracking-data/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-ingest-tracking-data/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-ingest-tracking-data/test/filter-payload-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-ftp/.babelrc (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-ftp/.gitignore (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-ftp/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-ftp/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-ftp/ftp_util.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-ftp/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-ftp/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-ftp/test/delete-pdr-ftp-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-s3/.babelrc (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-s3/.gitignore (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-s3/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-s3/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-s3/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-s3/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/delete-pdr-s3/test/delete-pdr-s3.test.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-cmr-granules/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-cmr-granules/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-cmr-granules/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-cmr-granules/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-cmr-granules/test/discover-cmr-granules-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-http-tiles/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-http-tiles/apache-index-tile-crawler.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-http-tiles/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-http-tiles/http-tile-crawler.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-http-tiles/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-http-tiles/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-http-tiles/test/discover-http-tiles-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-pdr/.babelrc (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-pdr/.gitignore (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-pdr/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-pdr/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-pdr/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-pdr/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-pdr/pdr.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/discover-pdr/test/discover-pdr-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/download-activity-mock/.babelrc (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/download-activity-mock/.gitignore (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/download-activity-mock/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/download-activity-mock/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/download-activity-mock/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/download-activity-mock/sips.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/download-activity-mock/test/download-activity-mock-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/filter-payload/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/filter-payload/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/filter-payload/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/filter-payload/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/filter-payload/test/filter-payload-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/config-gen.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/empty-tiles/empty256.jpg (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/empty-tiles/empty256.png (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/empty-tiles/empty512.jpg (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/empty-tiles/empty512.png (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/mrfgen_config.xml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/products/_viirs.xml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/source-projections/_epsg3031.xml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/source-projections/_epsg3413.xml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/source-projections/_epsg4326.xml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/target-projections/_epsg3031.xml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/target-projections/_epsg3413.xml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/templates/target-projections/_epsg4326.xml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-mrf/test/generate-mrf-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/.babelrc (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/.gitignore (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/ftp_util.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/pan.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/test/fixtures/all-success-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/test/fixtures/missing-file-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pan/test/generate-pan-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdr-file-list/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdr-file-list/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdr-file-list/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdr-file-list/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdr-file-list/pdr.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdr-file-list/test/fixtures/bad-pdr-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdr-file-list/test/fixtures/good-pdr-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdr-file-list/test/generate-pdr-file-list-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/.babelrc (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/.gitignore (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/ftp_util.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/pdrd.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/test/fixtures/bad-file-entry-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/test/fixtures/invalid-pvl-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/test/fixtures/missing-fields-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/generate-pdrd/test/generate-pdrd-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/build-gdal/.gitignore (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/build-gdal/Dockerfile (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/build-gdal/Makefile (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/deps/lambda-gdal.zip (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/example/ast_l1t-to-mrf.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/example/ast_l1t-to-png.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/example/event.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/run-gdal/webpack.config.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/sync-http-urls/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/sync-http-urls/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/sync-http-urls/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/sync-http-urls/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/sync-http-urls/test/sync-http-urls-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/sync-wms/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/sync-wms/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/sync-wms/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/sync-wms/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/sync-wms/test/sync-wms-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/tee/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/tee/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/tee/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/tee/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-ingest/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-ingest/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-ingest/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-ingest/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-ingest/test/trigger-ingest-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-mrf-gen/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-mrf-gen/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-mrf-gen/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-mrf-gen/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-process-pdrs/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-process-pdrs/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-process-pdrs/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-process-pdrs/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/trigger-process-pdrs/test/trigger-process-pdrs-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-archives/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-archives/archive-validations.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-archives/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-archives/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-archives/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-archives/test/fixtures/all-success-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-archives/test/fixtures/missing-file-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-archives/test/vaidate-archives-spec.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/.babelrc (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/.gitignore (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/README.md (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/config/cloudformation.yml (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/index.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/package.json (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/pdr-validations.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/pdr.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/test/fixtures/file-errors-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/test/fixtures/invalid-pvl-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/test/fixtures/missing-fields-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/test/fixtures/success-fixture.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/test/pdr-validations.test.js (100%) rename {cumulus/tasks => tasks/.not_CMA_compliant}/validate-pdr/test/validate-pdr.test.js (100%) rename {cumulus/tasks => tasks}/discover-granules/README.md (100%) rename {cumulus/tasks => tasks}/discover-granules/cumulus.json (100%) rename {cumulus/tasks => tasks}/discover-granules/index.js (100%) rename {cumulus/tasks => tasks}/discover-granules/package.json (100%) rename {cumulus/tasks => tasks}/discover-granules/schemas/config.json (100%) rename {cumulus/tasks => tasks}/discover-granules/schemas/output.json (100%) rename {cumulus/tasks => tasks}/discover-granules/tests/.eslintrc.json (100%) rename {cumulus/tasks => tasks}/discover-granules/tests/fixtures/mur.json (100%) rename {cumulus/tasks => tasks}/discover-granules/tests/index.js (100%) rename {cumulus/tasks => tasks}/discover-granules/webpack.config.js (100%) rename {cumulus/tasks => tasks}/discover-pdrs/README.md (100%) rename {cumulus/tasks => tasks}/discover-pdrs/cumulus.json (100%) rename {cumulus/tasks => tasks}/discover-pdrs/index.js (100%) rename {cumulus/tasks => tasks}/discover-pdrs/package.json (100%) rename {cumulus/tasks => tasks}/discover-pdrs/schemas/config.json (100%) rename {cumulus/tasks => tasks}/discover-pdrs/schemas/output.json (100%) rename {cumulus/tasks => tasks}/discover-pdrs/tests/.eslintrc.json (100%) rename {cumulus/tasks => tasks}/discover-pdrs/tests/fixtures/input.json (100%) rename {cumulus/tasks => tasks}/discover-pdrs/tests/index.js (100%) rename {cumulus/tasks => tasks}/discover-pdrs/tests/s3.js (100%) rename {cumulus/tasks => tasks}/discover-pdrs/webpack.config.js (100%) rename {cumulus/tasks => tasks}/discover-s3-granules/README.md (100%) rename {cumulus/tasks => tasks}/discover-s3-granules/index.js (100%) rename {cumulus/tasks => tasks}/discover-s3-granules/package.json (100%) rename {cumulus/tasks => tasks}/discover-s3-granules/schemas/config.json (100%) rename {cumulus/tasks => tasks}/discover-s3-granules/schemas/output.json (100%) rename {cumulus/tasks => tasks}/discover-s3-granules/tests/fixtures/input.json (100%) rename {cumulus/tasks => tasks}/discover-s3-granules/tests/index.js (100%) rename {cumulus/tasks => tasks}/discover-s3-granules/webpack.config.js (100%) rename {cumulus/tasks => tasks}/hello-world/README.md (100%) rename {cumulus/tasks => tasks}/hello-world/index.js (100%) rename {cumulus/tasks => tasks}/hello-world/package.json (100%) rename {cumulus/tasks => tasks}/hello-world/tests/hello_world_test.js (100%) rename {cumulus/tasks => tasks}/hello-world/webpack.config.js (100%) rename {cumulus/tasks => tasks}/parse-pdr/README.md (100%) rename {cumulus/tasks => tasks}/parse-pdr/index.js (100%) rename {cumulus/tasks => tasks}/parse-pdr/package.json (100%) rename {cumulus/tasks => tasks}/parse-pdr/schemas/config.json (100%) rename {cumulus/tasks => tasks}/parse-pdr/schemas/input.json (100%) rename {cumulus/tasks => tasks}/parse-pdr/schemas/output.json (100%) rename {cumulus/tasks => tasks}/parse-pdr/tests/parse_pdrs_test.js (100%) rename {cumulus/tasks => tasks}/parse-pdr/webpack.config.js (100%) rename {cumulus/tasks => tasks}/pdr-status-check/README.md (100%) rename {cumulus/tasks => tasks}/pdr-status-check/index.js (100%) rename {cumulus/tasks => tasks}/pdr-status-check/package.json (100%) rename {cumulus/tasks => tasks}/pdr-status-check/schemas/input.json (100%) rename {cumulus/tasks => tasks}/pdr-status-check/schemas/output.json (100%) rename {cumulus/tasks => tasks}/pdr-status-check/tests/index.js (100%) rename {cumulus/tasks => tasks}/pdr-status-check/webpack.config.js (100%) rename {cumulus/tasks => tasks}/post-to-cmr/README.md (100%) rename {cumulus/tasks => tasks}/post-to-cmr/index.js (100%) rename {cumulus/tasks => tasks}/post-to-cmr/package.json (100%) rename {cumulus/tasks => tasks}/post-to-cmr/schemas/config.json (100%) rename {cumulus/tasks => tasks}/post-to-cmr/schemas/input.json (100%) rename {cumulus/tasks => tasks}/post-to-cmr/schemas/output.json (100%) rename {cumulus/tasks => tasks}/post-to-cmr/tests/cmr_test.js (100%) rename {cumulus/tasks => tasks}/post-to-cmr/tests/data/meta.xml (100%) rename {cumulus/tasks => tasks}/post-to-cmr/tests/data/payload.json (100%) rename {cumulus/tasks => tasks}/post-to-cmr/webpack.config.js (100%) rename {cumulus/tasks => tasks}/queue-granules/README.md (100%) rename {cumulus/tasks => tasks}/queue-granules/index.js (100%) rename {cumulus/tasks => tasks}/queue-granules/package.json (100%) rename {cumulus/tasks => tasks}/queue-granules/schemas/config.json (100%) rename {cumulus/tasks => tasks}/queue-granules/schemas/input.json (100%) rename {cumulus/tasks => tasks}/queue-granules/schemas/output.json (100%) rename {cumulus/tasks => tasks}/queue-granules/tests/.eslintrc.json (100%) rename {cumulus/tasks => tasks}/queue-granules/tests/fixtures/input.json (100%) rename {cumulus/tasks => tasks}/queue-granules/tests/fixtures/workflow-template.json (100%) rename {cumulus/tasks => tasks}/queue-granules/tests/index.js (100%) rename {cumulus/tasks => tasks}/queue-granules/webpack.config.js (100%) rename {cumulus/tasks => tasks}/queue-pdrs/README.md (100%) rename {cumulus/tasks => tasks}/queue-pdrs/index.js (100%) rename {cumulus/tasks => tasks}/queue-pdrs/package.json (100%) rename {cumulus/tasks => tasks}/queue-pdrs/schemas/config.json (100%) rename {cumulus/tasks => tasks}/queue-pdrs/schemas/input.json (100%) rename {cumulus/tasks => tasks}/queue-pdrs/schemas/output.json (100%) rename {cumulus/tasks => tasks}/queue-pdrs/tests/.eslintrc.json (100%) rename {cumulus/tasks => tasks}/queue-pdrs/tests/fixtures/input.json (100%) rename {cumulus/tasks => tasks}/queue-pdrs/tests/fixtures/workflow-template.json (100%) rename {cumulus/tasks => tasks}/queue-pdrs/tests/index.js (100%) rename {cumulus/tasks => tasks}/queue-pdrs/webpack.config.js (100%) rename {cumulus/tasks => tasks}/sf-sns-report/README.md (100%) rename {cumulus/tasks => tasks}/sf-sns-report/index.js (100%) rename {cumulus/tasks => tasks}/sf-sns-report/package.json (100%) rename {cumulus/tasks => tasks}/sf-sns-report/schemas/config.json (100%) rename {cumulus/tasks => tasks}/sf-sns-report/tests/.eslintrc.json (100%) rename {cumulus/tasks => tasks}/sf-sns-report/tests/index.js (100%) rename {cumulus/tasks => tasks}/sf-sns-report/webpack.config.js (100%) rename {cumulus/tasks => tasks}/sync-granule/README.md (100%) rename {cumulus/tasks => tasks}/sync-granule/index.js (100%) rename {cumulus/tasks => tasks}/sync-granule/package.json (100%) rename {cumulus/tasks => tasks}/sync-granule/schemas/config.json (100%) rename {cumulus/tasks => tasks}/sync-granule/schemas/input.json (100%) rename {cumulus/tasks => tasks}/sync-granule/schemas/output.json (100%) rename {cumulus/tasks => tasks}/sync-granule/tests/.eslintrc.json (100%) rename {cumulus/tasks => tasks}/sync-granule/tests/sync_granule_test.js (100%) rename {cumulus/tasks => tasks}/sync-granule/webpack.config.js (100%) diff --git a/cumulus/lib/cf-template.js b/cumulus/lib/cf-template.js deleted file mode 100644 index 06ab5717b50..00000000000 --- a/cumulus/lib/cf-template.js +++ /dev/null @@ -1,85 +0,0 @@ -const path = require('path'); -const yaml = require('js-yaml'); -const deepAssign = require('deep-assign'); - -const ignoredType = (name, kind) => { - const T = function IgnoredType(val) { - this.val = val; - }; - - return new yaml.Type(`!${name}`, { - kind: kind, - construct: (data) => new T(data), - instanceOf: T, - represent: (data) => data.val - }); -}; - -const ignoredTypes = []; -const ignoredTypeNames = [ - 'Base64', 'And', 'Equals', 'If', 'Not', - 'Equals', 'Or', 'FindInMap', 'GetAtt', - 'GetAZs', 'ImportValue', 'Join', 'Select', - 'Split', 'Sub', 'Ref' -]; - -for (const name of ignoredTypeNames) { - ignoredTypes.push(ignoredType(name, 'scalar')); - ignoredTypes.push(ignoredType(name, 'mapping')); - ignoredTypes.push(ignoredType(name, 'sequence')); -} - -const buildSchema = (prefix = '', context = {}) => { - const types = [ - new yaml.Type('!Var', { - kind: 'scalar', - construct: (data) => context[data] - }), - new yaml.Type('!ResourceName', { - kind: 'scalar', - construct: (data) => prefix + data - }) - ]; - return yaml.Schema.create(types.concat(ignoredTypes)); -}; - -const prefixResources = (template, prefix) => { - const unprefixed = template.Resources; - if (!unprefixed) return template; - - const prefixed = { }; - for (const key of Object.keys(template.Resources)) { - prefixed[prefix + key] = unprefixed[key]; - } - return Object.assign({}, template, { Resources: prefixed }); -}; - -const parseTemplate = (templateStr, prefix, context) => - prefixResources( - yaml.safeLoad(templateStr, { schema: buildSchema(prefix, context) }), - prefix - ); - -const dumpTemplate = (template) => - yaml.safeDump(template, { schema: buildSchema() }) - .replace(/!]+)>/g, '!$1'); - -const mergeTemplates = (templates) => deepAssign(...templates); - -const defaultPaths = (componentType) => { - const result = [ - path.resolve(__dirname, './templates/defaults.yml') - ]; - if (componentType === 'ecs-task') { - result.push(path.resolve(__dirname, './templates/service-defaults.yml')); - } - result.push(path.resolve(__dirname, `./templates/${componentType}-defaults.yml`)); - return result; -}; - -module.exports = { - parseTemplate: parseTemplate, - dumpTemplate: dumpTemplate, - mergeTemplates: mergeTemplates, - defaultPaths: defaultPaths -}; diff --git a/cumulus/lib/templates/defaults.yml b/cumulus/lib/templates/defaults.yml deleted file mode 100644 index b70b723fc48..00000000000 --- a/cumulus/lib/templates/defaults.yml +++ /dev/null @@ -1,15 +0,0 @@ -Parameters: - ConfigS3Bucket: - Type: String - Description: Name of an S3 bucket that can hold deployment configuration and artifacts - PrivateBucketName: - Type: String - Description: An alphanumeric stirng for the name of the private bucket for the stack - PublicBucketName: - Type: String - Description: An alphanumeric string for the name of the public bucket for the stack - StackName: - Type: String - Description: - Identifier for the stack being created. This is used to prefix resources and permissions - and may differ from AWS::StackName if, e.g., this is a child stack deployment diff --git a/cumulus/lib/templates/ecs-task-defaults.yml b/cumulus/lib/templates/ecs-task-defaults.yml deleted file mode 100644 index cdda24eb8c0..00000000000 --- a/cumulus/lib/templates/ecs-task-defaults.yml +++ /dev/null @@ -1,13 +0,0 @@ -Resources: - Task: - Properties: - ContainerDefinitions: - - Command: - - !GetAtt [!ResourceName Fn, Arn] - - "--activity" - - Ref: !ResourceName Activity - - Activity: - Type: "AWS::StepFunctions::Activity" - Properties: - Name: !Join ['-', [!Ref StackName, !Var name]] diff --git a/cumulus/lib/templates/service-defaults.yml b/cumulus/lib/templates/service-defaults.yml deleted file mode 100644 index 866ffa65b50..00000000000 --- a/cumulus/lib/templates/service-defaults.yml +++ /dev/null @@ -1,35 +0,0 @@ -Resources: - Service: - Type: AWS::ECS::Service - Properties: - Cluster: !Ref IngestECSCluster - DesiredCount: 2 - TaskDefinition: - Ref: !ResourceName Task - DeploymentConfiguration: - MaximumPercent: 100 - MinimumHealthyPercent: 0 - - Task: - Type: AWS::ECS::TaskDefinition - Properties: - ContainerDefinitions: - - Name: !Var name - Cpu: '512' - Essential: true - Image: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/gitcdev/ecs-lambda-runner:latest - Memory: '256' - Environment: - - Name: AWS_DEFAULT_REGION - Value: !Ref AWS::Region - LogConfiguration: - LogDriver: awslogs - Options: - awslogs-group: - Ref: !ResourceName Logs - awslogs-region: !Ref AWS::Region - - Logs: - Type: AWS::Logs::LogGroup - Properties: - LogGroupName: !Join ['-', [!Ref StackName, task, !Var name, ecs]] diff --git a/cumulus/lib/templates/task-defaults.yml b/cumulus/lib/templates/task-defaults.yml deleted file mode 100644 index 95c1cb58123..00000000000 --- a/cumulus/lib/templates/task-defaults.yml +++ /dev/null @@ -1,10 +0,0 @@ -Resources: - Fn: - Type: AWS::Lambda::Function - Properties: - FunctionName: !Join ['', [!Sub "${StackName}-task-", !Var name]] - Code: !Var path - Timeout: 300 - MemorySize: 256 - Handler: index.handler - Role: !GetAtt [TaskExecutionRole, Arn] diff --git a/cumulus/services/provider-gateway/.gitignore b/cumulus/services/provider-gateway/.gitignore deleted file mode 100644 index 8688cad2092..00000000000 --- a/cumulus/services/provider-gateway/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/target -/classes -/checkouts -pom.xml -pom.xml.asc -*.jar -*.class -/.lein-* -/.nrepl-port -.hgignore -.hg/ -dev/locals.clj -/local_activities -my.pem -profiles.clj diff --git a/cumulus/services/provider-gateway/Dockerfile b/cumulus/services/provider-gateway/Dockerfile deleted file mode 100644 index bae9bed9d28..00000000000 --- a/cumulus/services/provider-gateway/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -# Base Alpine Linux based image with OpenJDK JRE only -FROM openjdk:8-jre-alpine -# copy application WAR (with libraries inside) -COPY target/provider-gateway-0.1.0-SNAPSHOT-standalone.jar /app.jar - -# specify default command -CMD ["/usr/bin/java", "-jar", "/app.jar"] \ No newline at end of file diff --git a/cumulus/services/provider-gateway/README.md b/cumulus/services/provider-gateway/README.md deleted file mode 100644 index 6b0e17ca063..00000000000 --- a/cumulus/services/provider-gateway/README.md +++ /dev/null @@ -1,233 +0,0 @@ -# Provider Gateway - -A long running service that will download files from a variety of URLs and upload to S3. It interacts with step functions for the Activity API. - -Providers support a limited number of connections for downloading data. AWS infrastructure like lambdas could easily scale up beyond the number of connections a provider supports. We must fully utilize the connections that are available. The Provider Gateway sets up persistent connections to the providers up to the limit configured. It reads download requests from the Step Function Activity API and queues the requests be processed. Every connection has a single thread that downloads data from the provider to S3 as fast as it can to attempt to fully utilize the limited resource. - -## Building and Deploying - -**As of this writing the building and deploying of Provider Gateway is not part of Cumulus proper. It must be manually built and deployed to a container registry** - -A container can be build and deployed to AWS ECR by running `bin/docker_deploy.sh` - -```Bash -export AWS_DEFAULT_REGION=us-west-2 -bin/docker_deploy.sh -``` - -## Running Locally - -Running the Provider Gateway locally is best done in a Clojure REPL. - -1. Make sure you have [Leiningen](https://leiningen.org/) and Java installed. -2. Create the file `dev/locals.clj` with contents set appropriately. (See below) -3. Edit `dev/user.clj` to set how the system will be configured. There are settings to pull config from AWS or run locally with the file system as the activity API. - -### Locals.clj sample contents - -Place contents like the following in `dev/locals.clj`. - -```Clojure -(ns locals) - -(def defaults - {"AWS_ACCOUNT_ID" "1234567" - "AWS_DEFAULT_REGION" "us-west-2" - "STACK_NAME" "gitc-xx"}) -``` - -## Configuration - -### Provider Configuration - -The provider gateway is configured through the `collections.yml` file in each provider. - -#### Example Provider Configuration: - -```YAML -providers: - - id: HTTP_PROV - config: - gateway_config: - activity: HttpProvDownloadActivity - sync_activity: HttpProvSyncActivity - conn_config: - conn_type: http - num_connections: 2 - - id: FTP_PROV - config: - gateway_config: - activity: FtpProvDownloadActivity - sync_activity: FtpProvSyncActivity - conn_config: - conn_type: ftp - host: 123.123.123.123 - port: 21 - username: user - password: password - num_connections: 2 - - id: SFTP_PROV - config: - gateway_config: - activity: SftpProvDownloadActivity - sync_activity: SftpProvSyncActivity - conn_config: - conn_type: sftp - host: 123.123.123.123 - port: 21 - username: user - password: password - num_connections: 2 -``` - -#### Fields in Provider Gateway Config - -The following fields are configured per provider. - -* `activity` - The CloudFormation name of the step function activity receiving download requests - * Note separate ARNs per provider because each activity is essentially a queue we want separate queues per provider so that one provider with more limited resources does not hold up another provider. -* `sync_activity` - The CloudFormation name of the step function activity receiving requests to synchronize -* `conn_config` - Configuration settings per connection type. See example for valid fields. -* `num_connections` - The number of threads to allocate for downloading data from a provider. - -#### Download and Sync Task Config - -The download and sync task configurations are configured in the `workflow_config_template` element of the message structure. The tasks names are "DownloadActivity" and "SyncHttpUrls" respectively. - -* `bucket` - Configures the name of the bucket in S3 to upload items -* `key_prefix` - A prefix to use for generating a key when uploading new items. - -##### Example Task Config - -```JSON -{"SyncHttpUrls": { - "output": { - "bucket": "{resources.buckets.private}", - "key_prefix": "sources/EPSG{meta.epsg}/{meta.key}" - }} -} -``` - -## Message Structure - -The input and output message structure matches the message payload schema for Cumulus - -### Download Message Request Structure - -#### Download Message Input Payload Structure - -Field descriptions - -* `payload` - * `files` - an array of file download requests - * Each File Map - * `type` - only `"download"` supported currently - * `source` - * `url` - Location of file to download - * `version` - optional version number. This can help avoid unnecessary downloads if the file is already in S3. - * `size` - Options size of the file to copy. Size is important to specify to avoid having to buffer the file in memory before copying to S3. If size is not present then the size will attempt to be determined via HTTP HEAD request, FTP ls, or similar. - * `target` either `"FROM_CONFIG"` or a map with `bucket` and `key` of an S3 location - - -##### Example Download Message Input Payload - -```JSON -{ - "... other fields here as in message": "...", - "payload": { - "other-keys": "other keys at this level and below are ignored and passed through to output", - "files": [{ - "type": "download", - "source": { - "url": "http://example.com/foo/bar.txt", - "version": "OptionalVersion", - "size": 1234 - }, - "target": { - "bucket": "the-bucket", - "key": "bar.txt" - } - }, { - "type": "download", - "source": { - "url": "http://example.com/foo/bar2.txt", - }, - "target": "FROM_CONFIG" - }] - } -} -``` - -#### Download Message Output Payload Structure - -The output is similar to the input structure but it has additional information. - -```JSON -{ - "... other fields here as in message": "...", - "payload": { - "other-keys": "other keys at this level and below are ignored and passed through to output", - "files": [{ - "type": "download", - "source": { - "url": "http://example.com/foo/bar.txt", - "version": "v1" - }, - "target": { - "bucket": "the-bucket", - "key": "bar.txt" - }, - "success" : false, - "error" : "The file did not exist at the source." - }, { - "type": "download", - "source": { - "url": "http://example.com/foo/bar2.txt", - "version": "v1" - }, - "target": { - "bucket": "the-bucket", - "key": "bar2.txt" - }, - "success": true - }] - } -} -``` - -### Sync Message Request Structure - -Synchronization messages can send a list of files and version to synchronize to S3. - -#### Sync Message Input Payload Structure - -The payload is a list of file urls and versions to synchronize. - -```JSON -{ - "... other fields here as in message": "...", - "payload" : [ { - "url" : "http://example.com/foo/bar.txt", - "version" : "bar-1" - }, { - "url" : "http://example.com/foo/bar2.txt", - "version" : "bar2-1" - } ] - } -``` -#### Sync Message Output Payload Structure - -The output payload from synchronization is a list of S3 Bucket and Keys of the files that exist. - -```JSON -{ - "... other fields here as in message": "...", - "payload": [{ - "Bucket": "the-bucket", - "Key": "sources/EPSG4326/SIPSTEST/VNGCR_LQD_C1/bar.txt" - }, { - "Bucket": "the-bucket", - "Key": "sources/EPSG4326/SIPSTEST/VNGCR_LQD_C1/bar2.txt" - }] -} -``` diff --git a/cumulus/services/provider-gateway/bin/build.sh b/cumulus/services/provider-gateway/bin/build.sh deleted file mode 100755 index add56b4b983..00000000000 --- a/cumulus/services/provider-gateway/bin/build.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -lein uberjar -docker build -t nasa-cumulus/provider-gateway . diff --git a/cumulus/services/provider-gateway/bin/docker_deploy.sh b/cumulus/services/provider-gateway/bin/docker_deploy.sh deleted file mode 100755 index ca0ab535588..00000000000 --- a/cumulus/services/provider-gateway/bin/docker_deploy.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -AWS_ACCOUNT_ID=$(aws ec2 describe-security-groups \ ---group-names 'Default' \ ---query 'SecurityGroups[0].OwnerId' \ ---output text) - -if [ -z "$AWS_DEFAULT_REGION" ]; then - region="us-east-1" -else - region=$AWS_DEFAULT_REGION -fi - -NAMESPACE="nasa-cumulus" -IMAGE_NAME="provider-gateway" - -## -- Testing -- -lein test - -if [ $? -ne 0 ] ; then - echo "Tests failed" - exit 1 -fi - -# -- Build -- -echo "Building ..." -./bin/build.sh - -# -- Tag -- -echo "Tagging ..." -docker tag \ -${NAMESPACE}/${IMAGE_NAME}:latest \ -${AWS_ACCOUNT_ID}.dkr.ecr.${region}.amazonaws.com/${NAMESPACE}/${IMAGE_NAME}:latest - -# -- Login -- -echo "Logging in ..." -# Get the login command -login_cmd=$(aws ecr get-login --region ${region} --no-include-email) -# Run the command -$login_cmd - -# -- Push -- -echo "Pushing ..." -docker push ${AWS_ACCOUNT_ID}.dkr.ecr.${region}.amazonaws.com/${NAMESPACE}/${IMAGE_NAME}:latest - -# Remove leftover build stuff so a local repl will still work. -lein clean \ No newline at end of file diff --git a/cumulus/services/provider-gateway/bin/docker_run.sh b/cumulus/services/provider-gateway/bin/docker_run.sh deleted file mode 100755 index 80aba76a1cb..00000000000 --- a/cumulus/services/provider-gateway/bin/docker_run.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -docker run -d \ ---name provider-gateway \ --e AWS_ACCESS_KEY_ID=`aws configure get aws_access_key_id` \ --e AWS_SECRET_ACCESS_KEY=`aws configure get aws_secret_access_key` \ --e AWS_REGION=${AWS_DEFAULT_REGION} \ --e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ --e AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} \ --e STACK_NAME=${STACK_NAME} \ ---net="host" \ -nasa-cumulus/provider-gateway:latest \ No newline at end of file diff --git a/cumulus/services/provider-gateway/bin/docker_stop.sh b/cumulus/services/provider-gateway/bin/docker_stop.sh deleted file mode 100755 index 80577b04ef9..00000000000 --- a/cumulus/services/provider-gateway/bin/docker_stop.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -line=$(docker container ls -a -f name=provider-gateway | tail -n 1) -docker kill provider-gateway -parts=($line) -id=${parts[0]} -docker rm "$id" \ No newline at end of file diff --git a/cumulus/services/provider-gateway/bin/docker_tail_logs.sh b/cumulus/services/provider-gateway/bin/docker_tail_logs.sh deleted file mode 100755 index f34493d118f..00000000000 --- a/cumulus/services/provider-gateway/bin/docker_tail_logs.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -docker logs provider-gateway -f \ No newline at end of file diff --git a/cumulus/services/provider-gateway/config/cloudformation.yml b/cumulus/services/provider-gateway/config/cloudformation.yml deleted file mode 100644 index 842d982db5c..00000000000 --- a/cumulus/services/provider-gateway/config/cloudformation.yml +++ /dev/null @@ -1,20 +0,0 @@ -Resources: - - Service: - Properties: - DesiredCount: 1 - - Task: - Properties: - ContainerDefinitions: - - Cpu: '512' - Essential: true - Image: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/nasa-cumulus/provider-gateway:latest - Memory: '2048' - Environment: - - Name: AWS_DEFAULT_REGION - Value: !Ref AWS::Region - - Name: STACK_NAME - Value: !Sub ${StackName} - - Name: AWS_ACCOUNT_ID - Value: !Sub ${AWS::AccountId} diff --git a/cumulus/services/provider-gateway/dev/user.clj b/cumulus/services/provider-gateway/dev/user.clj deleted file mode 100644 index 53247b2fa82..00000000000 --- a/cumulus/services/provider-gateway/dev/user.clj +++ /dev/null @@ -1,56 +0,0 @@ -(ns user - (:require - [clojure.pprint :refer (pprint pp)] - [clojure.tools.namespace.repl :as tnr] - [clojure.spec.alpha :as s] - [cheshire.core :as json] - [com.stuartsierra.component :as c] - [cumulus.provider-gateway.system :as sys] - [cumulus.provider-gateway.util :as util] - [proto-repl.saved-values])) - -(def local-activity-dir - "./local_activities") - -(def local-provider - {:provider-id "LOCAL", - :activity-api {:activity-api-type "file-system" - :dir local-activity-dir} - ; :conn_config {:conn_type "http"} - :conn_config {:conn_type "ftp" - :host "localhost" - :username "ftp" - :password "ftp"} - :num_connections 2}) - -(def system nil) - -(defn start [] - (set! *print-length* 5000) - (s/check-asserts true) - (try - (let [ - the-system (sys/create-system [local-provider])] - ;; use this instead to run the system against AWS using collections.yml as configuration - ; the-system (sys/create-system)] - (alter-var-root #'system - (constantly (c/start the-system)))) - (catch Exception e - (.printStackTrace e) - (throw e))) - nil) - -(defn stop [] - (try - (alter-var-root #'system #(when % (c/stop %))) - (catch Exception e - (.printStackTrace e) - (throw e))) - nil) - -(defn reset [] - (stop) - (tnr/refresh :after 'user/start)) - -(println "Custom user.clj loaded.") - diff --git a/cumulus/services/provider-gateway/project.clj b/cumulus/services/provider-gateway/project.clj deleted file mode 100644 index beb247d5319..00000000000 --- a/cumulus/services/provider-gateway/project.clj +++ /dev/null @@ -1,60 +0,0 @@ -(defproject nasa-cumulus/provider-gateway "0.1.0-SNAPSHOT" - :description "FIXME: write description" - :url "http://example.com/FIXME" - :dependencies [[org.clojure/clojure "1.9.0-alpha17"] - [com.stuartsierra/component "0.3.2"] - [org.clojure/core.async "0.3.443"] - - ;; AWS API - [amazonica "0.3.107"] - - ;; Parsing JSON - [cheshire "5.7.1"] - - ;; Parsing yaml - [com.fasterxml.jackson.dataformat/jackson-dataformat-yaml "2.8.9"] - [org.yaml/snakeyaml "1.18"] - - ;; HTTP Client - [clj-http "3.6.1"] - - ;; FTP Client - [commons-net/commons-net "3.6"] - - ;; SFTP Client - [com.jcraft/jsch "0.1.54"] - - ;; UUID Generation - [danlentz/clj-uuid "0.1.7"]] - - - ;; The ^replace is done to disable the tiered compilation for accurate benchmarks - ;; See https://github.com/technomancy/leiningen/wiki/Faster - :jvm-opts ^:replace ["-server" - "-Dclojure.compiler.direct-linking=true"] - - :profiles {:dev {:dependencies [[org.clojure/tools.namespace "0.2.11"] - [criterium "0.4.4"] - [proto-repl "0.3.1"] - [pjstadig/humane-test-output "0.8.2"] - - ;; HTTP server for testing - [ring/ring-jetty-adapter "1.5.0"] - ;; SFTP server for testing - [org.apache.sshd/sshd-core "1.6.0"] - ;; FTP server for testing - [org.apache.ftpserver/ftpserver-core "1.1.1"]] - :jvm-opts ^:replace ["-server"] - ;; Uncomment this to enable assertions. Turn off during performance tests. - ; "-ea" - - ;; Use the following to enable JMX profiling with visualvm - ; "-Dcom.sun.management.jmxremote" - ; "-Dcom.sun.management.jmxremote.ssl=false" - ; "-Dcom.sun.management.jmxremote.authenticate=false" - ; "-Dcom.sun.management.jmxremote.port=1098"] - :source-paths ["src" "dev" "test"] - :injections [(require 'pjstadig.humane-test-output) - (pjstadig.humane-test-output/activate!)]} - :uberjar {:main cumulus.provider-gateway.runner - :aot :all}}) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/activities/sync_task_to_request_handler.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/activities/sync_task_to_request_handler.clj deleted file mode 100644 index 988a72d660b..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/activities/sync_task_to_request_handler.clj +++ /dev/null @@ -1,72 +0,0 @@ -(ns cumulus.provider-gateway.activities.sync-task-to-request-handler - "Provides code that handles tasks read from the activity API that indicate we should synchronize - files with contents already in S3." - (:require - [clojure.spec.alpha :as s] - [cumulus.provider-gateway.download-activity-handler :as activity-handler] - [cumulus.provider-gateway.util :as util] - [cumulus.provider-gateway.aws.s3 :as s3] - [cumulus.provider-gateway.specs.config :as config-spec] - [cumulus.provider-gateway.specs.sync-task :as sync-spec])) - -;; PERFORMANCE ENHANCEMENT: the input to the sync activity includes just the files. If we were to -;; get the file sizes when scanning the folder we'd be able to improve S3 upload speeds. - -(def TASK_NAME - "SyncHttpUrls") - -(defn- file->download-request - "Converts a file into a download request." - [config file] - (s/assert ::sync-spec/file file) - (s/assert ::config-spec/config config) - (let [{{:keys [bucket key_prefix]} :output} config - file-name (util/url->file-name (:url file))] - {:type "download" - :source file - :target {:bucket bucket - :key (str key_prefix "/" file-name)}})) - -(defrecord SyncTaskToRequestHandler - [s3-api] - - activity-handler/TaskToRequests - - (handle-new-task - [_ task] - (let [task-updated (activity-handler/default-handle-new-task TASK_NAME s3-api task)] - (assoc task-updated :input - {:files (mapv #(file->download-request (:config task-updated) %) (:input task-updated))}))) - - (handle-completed-task - [_ {:keys [results] :as completion-request}] - (cond - (every? :version_skip results) - {:exception "NotNeededWorkflowError"} - - ;; If any failed to transfer we'll return a remote resource error - (some (complement :success) results) - {:exception "RemoteResourceError"} - - :else - (let [payload-files (->> results - ;; Get the successful completions - (filter :success) - ;; Get their upload locations - (map :target) - ;; Change to the style expected - (map #(hash-map :Bucket (:bucket %) :Key (:key %)))) - message (-> completion-request - :original-message - (assoc :payload payload-files))] - (activity-handler/upload-large-payload - TASK_NAME - s3-api - (:config completion-request) - message))))) - -(defn create-sync-task-to-request-handler - ([] - (create-sync-task-to-request-handler s3/aws-s3-api)) - ([s3-api] - (->SyncTaskToRequestHandler s3-api))) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/aws/activity_api.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/aws/activity_api.clj deleted file mode 100644 index c049accf3c4..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/aws/activity_api.clj +++ /dev/null @@ -1,232 +0,0 @@ -(ns cumulus.provider-gateway.aws.activity-api - "Defines an API for talking to the AWS Step Function Activity API in AWS or other substitute - instances." - (:require - [clojure.spec.alpha :as s] - [amazonica.aws.stepfunctions :as sf] - [clojure.java.io :as io] - [cheshire.core :as json]) - (:import - (com.amazonaws - SdkClientException) - (com.amazonaws.http.timers.client - ClientExecutionTimeoutException) - (java.io - File) - (java.net - URI) - (java.nio.file - FileSystems - Paths - StandardWatchEventKinds - WatchEvent$Kind))) - -(defprotocol ActivityProtocol - "Defines a protocol that mimics the AWS activity API." - - (get-task - [this] - "Returns a task which is a group of download or upload requests to complete. Blocks for a certain - period of time. Returns null if there are no tasks found within a period of time.") - - (report-task-failure - [this task-token error-code cause] - "Reports a failure to execute the activity") - - (report-task-success - [this task-token output] - "Reports a successful activity execution. The output should be a JSON string to pass to the next - step of the step function.")) - -(defmulti create-activity-api - (fn [config] - (:activity-api-type config))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; InMemory implementation - -;; In memory implementation of the activity API for testing. -(defrecord InMemoryActivities - [ - ;; An atom containing a sequence of tasks. Requests to get a task will take from the atom. - tasks-atom - - ;; A map of task token to the results - failed-tasks-atom - - ;; A map of successful task ids to the output found. - successful-tasks-atom] - - ActivityProtocol - - (get-task - [this] - (let [val-to-return (atom nil)] - (swap! tasks-atom (fn [tasks] - (reset! val-to-return (first tasks)) - (rest tasks))) - (or @val-to-return - ;; Simulate blocking call to wait for more data - (do (Thread/sleep 1000) nil)))) - - (report-task-failure - [this task-token error-code cause] - (swap! failed-tasks-atom assoc task-token {:error-code error-code :cause cause}) - nil) - - (report-task-success - [this task-token output] - (swap! successful-tasks-atom assoc task-token output) - nil)) - -(defn create-in-memory-activities - [tasks] - (map->InMemoryActivities {:tasks-atom (atom tasks) - :failed-tasks-atom (atom {}) - :successful-tasks-atom (atom {})})) - -(defmethod create-activity-api "in-memory" - [config] - (create-in-memory-activities (:tasks config))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; AWS implementation - -(def POLL_TIMEOUT - "The length of time in milliseconds to poll the activity API for an activity to run before timing - out. AWS recommends setting this at 65 seconds." - 65000) - -;; Implements the ActivityProtocol against the real AWS API. -(defrecord AwsActivityApi - [activity-arn] - - ActivityProtocol - - (get-task - [this] - (try - (println "Reading task from" activity-arn) - (let [task (sf/get-activity-task {:activity-arn activity-arn - :sdk-client-execution-timeout POLL_TIMEOUT}) - _ (println "Task read" (pr-str task)) - {:keys [task-token input]} task] - {:task-token task-token - :input (json/decode input true)}) - (catch ClientExecutionTimeoutException e - ;; ignoring this and returning nil - nil) - (catch SdkClientException ce - ;; If the client exception is read timed out we will ignore it. Otherwise rethrow. - ;; com.amazonaws.SdkClientException: Unable to execute HTTP request: Read timed out - (when-not (.contains (.getMessage ce) "Read timed out") - (throw ce))))) - - (report-task-failure - [this task-token error-code cause] - (println "Reporting failure" task-token error-code cause) - (sf/send-task-failure {:taskToken task-token :errorCode error-code :cause cause}) - nil) - - (report-task-success - [this task-token output] - (println "Reporting success" task-token) - (sf/send-task-success {:output (json/encode output) :taskToken task-token}) - nil)) - -(defn create-aws-activity-api - "Creates an instance of the AWS implementation of the ActivityProtocol" - [activity-arn] - (->AwsActivityApi activity-arn)) - -(defmethod create-activity-api "aws" - [config] - (create-aws-activity-api (:arn config))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Folder implementation - -(defn ensure-dir-exists - [dir] - (let [f (io/as-file dir)] - (when-not (.exists f) - (.mkdirs f)))) - -(defn get-oldest-input-file - "Tries to find the oldest input file in the input directory. If it can not find a file waits for - a period of time for a file to show up." - [input-dir watch-service] - - (or - ;; Look for existing files in the directory. - (->> (.listFiles input-dir) - (filter #(.isFile %)) - (sort-by #(.lastModified %)) - first) - - ;; If not existing files in the directory then use the watch service to wait up to N seconds - ;; for a file to arrive - (when-let [event-key (.poll watch-service 10 java.util.concurrent.TimeUnit/SECONDS)] - (try - (let [event (first (.pollEvents event-key))] - (io/as-file (str input-dir File/separator (.context event)))) - (finally - (.reset event-key)))))) - -;; Implements the ActivityProtocol using the file system. Reads from a /inputs and -;; writes to /outputs -(defrecord FileSystemActivityApi - [ - ;; An atom containing a number to use to generate unique task tokens - task-token-atom - - ;; Java NIO watch service against the input dir to look for new files - watch-service - - ;; Directory monitored for new tasks to execute - input-dir - - ;; Successful task output will be written as new files to this directory. - output-dir] - - ActivityProtocol - - (get-task - [this] - (when-let [oldest-input-file (get-oldest-input-file input-dir watch-service)] - (let [contents (json/decode (slurp oldest-input-file) true) - task-token (str "task-" (swap! task-token-atom inc))] - (println "Task read" (pr-str contents)) - (when-not (.delete oldest-input-file) - (throw (Exception. (str "Could not delete input file " oldest-input-file)))) - {:task-token task-token - :input contents}))) - - (report-task-failure - [this task-token error-code cause] - (println "Task Failure:" (pr-str {:taskToken task-token :errorCode error-code :cause cause}))) - - (report-task-success - [this task-token output] - (println "Reporting success" task-token) - (let [output-file (io/as-file (str output-dir File/separator task-token ".json"))] - (spit output-file (json/encode output {:pretty true}))) - nil)) - -(defn create-file-system-activity-api - [target-dir] - (let [input-dir (io/as-file (str target-dir File/separator "inputs")) - output-dir (io/as-file (str target-dir File/separator "outputs")) - watch-service (.newWatchService (FileSystems/getDefault)) - path (Paths/get (URI. (str (io/as-url input-dir))))] - (ensure-dir-exists input-dir) - (ensure-dir-exists output-dir) - (.register path watch-service (into-array WatchEvent$Kind [StandardWatchEventKinds/ENTRY_CREATE])) - (map->FileSystemActivityApi {:task-token-atom (atom 0) - :watch-service watch-service - :input-dir input-dir - :output-dir output-dir}))) - -(defmethod create-activity-api "file-system" - [config] - (create-file-system-activity-api (:dir config))) \ No newline at end of file diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/aws/s3.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/aws/s3.clj deleted file mode 100644 index bed1aff6110..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/aws/s3.clj +++ /dev/null @@ -1,148 +0,0 @@ -(ns cumulus.provider-gateway.aws.s3 - "Defines protocols and functions for accessing AWS S3 or stubbed implementations" - (:require - [amazonica.aws.s3 :as s3] - [cheshire.core :as json]) - (:import - (com.amazonaws.services.s3.model - AmazonS3Exception))) - -(defprotocol S3Api - "Defines an API for the kinds of requests we need to make to S3." - (read-s3-string - [this bucket key] - "Reads a string from the given s3 bucket and key") - - (write-s3-string - [this bucket key value] - [this bucket key value metadata] - "Writes a string to the given s3 bucket and key") - - (write-s3-stream - [this bucket key stream] - [this bucket key stream metadata] - "Writes a stream to the given s3 bucket and key") - - (get-s3-object-metadata - [this bucket key] - "Returns a map of metadata for the given object and key. Returns nil if it doesn't exist")) - -(defmulti create-s3-api - "Creates an instance of the AWS API for use." - (fn [type] - type)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; AWS impl - -(def aws-s3-api - "Default implementation of the S3 API that talks to the real S3" - (reify - S3Api - - (read-s3-string - [_ bucket key] - (slurp (:input-stream (s3/get-object bucket key)))) - - (write-s3-stream - [this bucket key stream] - (write-s3-stream this bucket key stream nil)) - - (write-s3-stream - [_ bucket key stream metadata] - (s3/put-object :bucket-name bucket - :key key - :input-stream stream - :metadata metadata)) - - (write-s3-string - [this bucket key value] - (write-s3-string this bucket key value nil)) - - (write-s3-string - [this bucket key value metadata] - (let [bytes (.getBytes value "UTF-8") - is (java.io.ByteArrayInputStream. bytes)] - (write-s3-stream this bucket key is (merge {:content-length (count bytes)} metadata)))) - - (get-s3-object-metadata - [_ bucket key] - (try - (s3/get-object-metadata :bucket-name bucket :key key) - (catch AmazonS3Exception e - ;; Ignore exception and return nil if not found. - (when-not (.startsWith (.getMessage e) "Not Found") - (throw e))))))) - -(defmethod create-s3-api :aws - [_] - ;; same instance is used for all of them - aws-s3-api) - -;; No type specified defaults to AWS -(defmethod create-s3-api nil - [_] - (create-s3-api :aws)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; InMemory data -;; Used for testing so we can test code that works with S3 without actually connecting to it.. - -(defrecord InMemoryS3API - ;; nested maps of bucket -> key -> {:metadata ... :value ...} - [bucket-key-to-value-atom] - - S3Api - (read-s3-string - [_ bucket key] - (get-in @bucket-key-to-value-atom [bucket key :value])) - - (write-s3-string - [this bucket key value] - (write-s3-string this bucket key value nil)) - - (write-s3-string - [_ bucket key value metadata] - (swap! bucket-key-to-value-atom #(assoc-in % [bucket key] {:value value :metadata metadata}))) - - (write-s3-stream - [this bucket key stream] - (write-s3-stream this bucket key stream nil)) - - (write-s3-stream - [this bucket key stream metadata] - (write-s3-string this bucket key (slurp stream) metadata)) - - (get-s3-object-metadata - [_ bucket key] - (get-in @bucket-key-to-value-atom [bucket key :metadata]))) - -(defn create-in-memory-s3-api - "Creates an instance of the in-memory s3 api. Takes an existing map of data in S3 of buckets to keys - to values" - ([] - (create-in-memory-s3-api {})) - ([existing-data] - (->InMemoryS3API (atom existing-data)))) - -(defmethod create-s3-api :in-memory - [_] - ;; same instance is used for all of them - (create-in-memory-s3-api)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Helper functions - -(defn read-s3-json - "Reads a string from the given s3 bucket and key" - ([bucket key] - (read-s3-json aws-s3-api bucket key)) - ([s3-api bucket key] - (json/decode (read-s3-string s3-api bucket key) true))) - -(defn write-s3-json - "Reads a string from the given s3 bucket and key" - ([bucket key value] - (write-s3-json aws-s3-api bucket key value)) - ([s3-api bucket key value] - (write-s3-string s3-api bucket key (json/generate-string value {:pretty true})))) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/download_activity_handler.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/download_activity_handler.clj deleted file mode 100644 index 7000b1e0215..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/download_activity_handler.clj +++ /dev/null @@ -1,225 +0,0 @@ -(ns cumulus.provider-gateway.download-activity-handler - "Handles reading from the Step Function Activity API for download requests. It reads requests - from the API and and places download tasks on a channel to be processed. It reads from another - channel a list of completed downloads and writes output back to the activity API." - (:require - [clj-uuid :as uuid] - [clojure.core.async :as a] - [com.stuartsierra.component :as c] - [cumulus.provider-gateway.aws.activity-api :as activity] - [cumulus.provider-gateway.util :as util] - [cumulus.provider-gateway.aws.s3 :as s3])) - -(def COMPLETION_CHANNEL_BUFFER_SIZE - "The number of items that can be added to the set of completion requests to write to the activity - api." - 5) - -(defprotocol TaskToRequests - "Converts an input task from the activity API into a set of requests (download, upload, etc) - to process and handles converting the response back into an action to complete" - - (handle-new-task - [this task] - "Takes a new task received from the activity api converts it into a map with the list of requests - to process.") - - (handle-completed-task - [this completion-request] - "Takes a completed task response and does any final cleanup needed. Returns data to return as - output of the step function request.")) - -(defn start-activity-reader-thread - "Starts a thread which will read from the activity API and process requests." - [running-atom activity-api task-to-requests-handler task-channel completion-channel] - (a/thread - (while @running-atom - (if-let [task (activity/get-task activity-api)] - (let [_ (println (format "Read task from activity api %s" (:task-token task))) - start-time (System/currentTimeMillis) - task (handle-new-task task-to-requests-handler task) - ;; Put the completion channel in the task so we'll get a message when the task is - ;; finished. - task (assoc task - :completion-channel completion-channel - :start-time start-time)] - (a/>!! task-channel task)))) - (println "Activity reader thread completed"))) - -(defn start-activity-completer-thread - "Starts a thread reading from the completion channel and writing responses back to the activity - api." - [activity-api task-to-requests-handler completion-channel] - (a/thread - (util/while-let - [{:keys [type task-token start-time] :as completion-request} (a/meta-key - "Returns the meta key to use from a message" - [message] - (let [unique-key - (if-let [key (get-in message [:meta :key])] - (format "%s/%s" key (uuid/v1)) - (format "%s/%s" (get-in message [:meta :collection]) (uuid/v1)))] - (println "USING S3 MESSAGE KEY [" unique-key "]") - unique-key)) - -(defn- message->private-bucket - "Returns the name of the private bucket from a message." - [message] - (get-in message [:resources :buckets :private])) - -(defn load-payload - "Loads the payload from the task which could be stored in an intermediate representation on S3." - [s3-api task] - (when-let [payload (get-in task [:input :payload])] - (let [{bucket :Bucket key :Key} payload] - (if (and bucket key) - (s3/read-s3-json s3-api bucket key) - payload)))) - -(defn load-config - "Loads the configuration for the task from the workflow_config_template and populates any - mustache style replacements" - [task-name task] - (let [message (:input task) - config (get-in message [:workflow_config_template (keyword task-name)])] - ;; Replace all the mustache stuff - (util/populate-message-config-replacements message config))) - -(defn default-handle-new-task - "Takes a task read from the activity API and prepares it for processing." - [task-name s3-api task] - (let [;; Read payload from S3 - payload (load-payload s3-api task) - ;; Load the task configuration - config (load-config task-name task)] - (-> task - (assoc :original-message (:input task)) - (assoc :config config) - ;; Replace the task input with the payload that we're processing. - (assoc :input payload)))) - -(defn upload-large-payload - "Uploads a payload to S3 so that task messages do not exceed the maximum supported by Step - Functions. Returns the new message pointing to S3 payload" - [task-name s3-api config message] - (if (:skip_upload_output_payload_to_s3 config) - - ;; Skip upload and return message with payload data in place. - (do - (println "USING STANDARD MESSAGING") - message) - - ;; Upload the resulting payload to s3 - (let [private-bucket (message->private-bucket message) - payload-location (str task-name "/" (message->meta-key message))] - (println "USING S3 MESSAGING") - (println (str "STORING MESSAGE AT [" payload-location "]")) - (s3/write-s3-json s3-api private-bucket payload-location (:payload message)) - ;; Create the output message to pass to the next task - (assoc message :payload {:Bucket private-bucket :Key payload-location})))) - -(defn default-handle-completed-task - "Takes a completed task and creates the output to send to the activity api." - [task-name s3-api completion-request] - - ;; We return a message with a payload pointing to an S3 bucket with a list of the files that - ;; were successfully downloaded. - (let [message (-> completion-request - :original-message - (assoc-in [:payload :files] (:results completion-request)))] - (upload-large-payload task-name s3-api (:config completion-request) message))) - -(def TASK_NAME - "DownloadActivity") - -(defrecord DefaultTaskHandler - [s3-api] - TaskToRequests - - (handle-new-task - [_ task] - (default-handle-new-task TASK_NAME s3-api task)) - - (handle-completed-task - [_ completion-request] - (default-handle-completed-task TASK_NAME s3-api completion-request))) - -(defn create-activity-handler - ([activity-api] - (create-activity-handler activity-api (->DefaultTaskHandler s3/aws-s3-api))) - ([activity-api task-to-requests-handler] - (map->ActivityHandler {:activity-api activity-api - :task-to-requests-handler task-to-requests-handler - :running-atom (atom false)}))) - diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/ftp.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/ftp.clj deleted file mode 100644 index ca498df0c41..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/ftp.clj +++ /dev/null @@ -1,153 +0,0 @@ -(ns cumulus.provider-gateway.protocols.ftp - "Defines an instance of the FTP protocol which can download data from an FTP server" - (:require - [clojure.java.io :as io] - [cumulus.provider-gateway.protocols.url-connection :as url-conn]) - (:import - (java.io - FilterInputStream) - (org.apache.commons.net.ftp - FTP - FTPConnectionClosedException - FTPFile - FTPReply - FTPClient))) - -(defn- check-reply - "Checks that the reply from the server for the last request was successful." - [client] - (let [reply (.getReplyCode client)] - (when-not (FTPReply/isPositiveCompletion reply) - (.disconnect client) - (throw (Exception. "Last command did not complete successfully"))))) - -(defn- safe-close-connection - "Catches any exceptions when trying to close the connection" - [conn] - (try - (url-conn/close conn) - (catch Exception _ - conn))) - -(defn- connect-client - "Takes an existing FTP client and configures and connects to the FTP server." - [config client] - (let [{:keys [host port username password]} config - port (or port 21)] - (println (format "Connecting to FTP server [%s] on port [%d]" - host - port)) - (.setControlEncoding client "UTF-8") - ;; The following line was added to fix an issue (GITC-455) when connecting to FTP servers - ;; using extended passive mode (EPSV) from AWS ECS containers. This may cause problems - ;; if the FTP server is not using EPSV. - (.setUseEPSVwithIPv4 client true) - (.setConnectTimeout client 30000) ; ms - (.setDataTimeout client -1) ; forever ms - (.setControlKeepAliveTimeout client 300) ; seconds - (.setControlKeepAliveReplyTimeout client 3000) ; ms - - ;; Connect and check reply code to verify success - (.connect client host port) - (check-reply client) - - (when username - (when-not (.login client username password) - (.disconnect client) - (throw (Exception. (format "Unable to login with username [%s] and password [****]" - username))))) - (.setFileType client FTP/BINARY_FILE_TYPE) - (.enterLocalPassiveMode client) - client)) - -(defn- create-ftp-client - "Creates an connects and instance of an FTP Client" - [config] - (connect-client config (FTPClient.))) - - -(comment - (def c (create-ftp-connection - {:host "localhost" - :username "ftp" - :password "ftp"})) - - (map #(.getSize %) (seq (.listFiles (:client c) "/PDR/PDN.ID1703251200.PD2R"))) - - (def s (url-conn/download c "ftp://localhost/PDR/PDN.ID1703251200.PDR")) - - ;; returns nil if it doesn't exist - (def s (url-conn/download c "ftp://localhost/foo.txt")) - - (slurp s) - (.isConnected (:client c)) - (url-conn/close c)) - -(defn retrieve-file-stream - [config client path] - (try - (.retrieveFileStream client path) - (catch FTPConnectionClosedException e - (println "Detected a closed FTP connection. Attempting to reconnect") - (connect-client config client) - (println "Reconnect success") - (.retrieveFileStream client path)))) - -(defrecord FtpConnection - [ - config - - ^FTPClient client] - - url-conn/UrlConnection - - (close - [conn] - (when (and client (.isConnected client)) - (try (.logout client) (catch FTPConnectionClosedException _ nil)) - (try (.disconnect client) (catch FTPConnectionClosedException _ nil))) - (assoc conn :client nil)) - - (get-size - [conn url] - (when-not client - (throw (Exception. "Connection not connected."))) - (let [path (.getPath (io/as-url url))] - (when-let [^FTPFile ftp-file (first (.listFiles client path))] - (.getSize ftp-file)))) - - (download - [conn url] - (when-not client - (throw (Exception. "Connection not connected"))) - (let [path (.getPath (io/as-url url)) - closed (atom false)] - (when-let [stream (retrieve-file-stream config client path)] - ;; Return a non-closing FilterInputStream. Closing the stream returned by filter - ;; retrieveFileStream closes the whole connection. - (proxy - [FilterInputStream] - [^InputStream stream] - (close - [] - (when-not @closed - (try - ;; When we're done with the stream as indicated by the user calling close we use - ;; completePendingCommand to verify success of the action and indicate that we're done. - (if (.completePendingCommand client) - (check-reply client) - ;; There was a problem. Close the connection and throw exception. - (do - (safe-close-connection conn) - (throw (Exception. "Could not complete pending command of downloaded stream")))) - (finally - (reset! closed true)))))))))) - -(defn create-ftp-connection - "Creates an instance of connection to an FTP server" - [config] - (map->FtpConnection {:config config :client (create-ftp-client config)})) - - - - diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/http.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/http.clj deleted file mode 100644 index 6959f706308..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/http.clj +++ /dev/null @@ -1,58 +0,0 @@ -(ns cumulus.provider-gateway.protocols.http - "Defines an instance of the HTTP protocol which can download data from an HTTP server" - (:require - [clj-http.client :as client] - [clj-http.conn-mgr :as conn-mgr] - [cumulus.provider-gateway.protocols.url-connection :as url-conn])) - -(defrecord HttpConnection - [connection-manager] - - url-conn/UrlConnection - - (close - [conn] - (when connection-manager - (conn-mgr/shutdown-manager connection-manager)) - (assoc conn :connection-manager nil)) - - (get-size - [conn url] - (when-not connection-manager - (throw (Exception. "Connection not connected."))) - (let [resp (client/head url {:connection-manager connection-manager - :throw-exceptions? false})] - (when (= 200 (:status resp)) - (some-> resp :headers (get "Content-Length") (Long.))))) - - (download - [conn url] - (when-not connection-manager - (throw (Exception. "Connection not connected."))) - (let [resp (client/get url {:connection-manager connection-manager - :as :stream - :throw-exceptions? false})] - (if (= 200 (:status resp)) - (:body resp) - (do - ;; The body must be closed or else the connection manager will get hung on subsequent requests - (.close (:body resp)) - nil))))) - -(defn create-http-connection - [] - (->HttpConnection - (conn-mgr/make-reusable-conn-manager - {:insecure? true - :timeout 300 ;; time in seconds that connections are left open before automatically closing. - :threads 1 - :default-per-route 1}))) - - -(comment - (def sample-url - "https://lance3.modaps.eosdis.nasa.gov/imagery/elements/VIIRS/VNGCR_NQD_C1/VNGCR_NQD_C1_r00c00/2017198/VNGCR_NQD_C1.A2017198.r00c00.001.txt") - (def c (create-http-connection)) - (def s (url-conn/download c sample-url)) - (slurp s) - (url-conn/close c)) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/sftp.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/sftp.clj deleted file mode 100644 index a19454a423b..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/sftp.clj +++ /dev/null @@ -1,87 +0,0 @@ -(ns cumulus.provider-gateway.protocols.sftp - "Defines an instance of the SFTP protocol which can download data from an SFTP server" - (:require - [clojure.java.io :as io] - [cumulus.provider-gateway.protocols.url-connection :as url-conn] - [cumulus.provider-gateway.util :as util]) - (:import - (com.jcraft.jsch - JSch - Session - ChannelSftp - SftpException))) - -(defmacro ignore-file-not-found - [& body] - `(try - ~@body - (catch SftpException e# - ;; Ignore FileNotFoundException and return null - (when-not (.contains (.getMessage e#) "FileNotFoundException") - (throw e#))))) - -(defrecord SftpConnection - [ - config - - ^JSch jsch - ^Session session - ^ChannelSftp channel] - - url-conn/UrlConnection - - (close - [conn] - (when channel - (.disconnect channel) - (.disconnect session)) - (assoc conn :channel nil :session nil)) - - (get-size - [conn url] - (when-not channel - (throw (Exception. "Connection not connected."))) - (let [path (util/url->path url)] - (ignore-file-not-found - (when-let [entry (first (.ls channel path))] - (.getSize (.getAttrs entry)))))) - - (download - [conn url] - (when-not channel - (throw (Exception. "Connection not connected"))) - (ignore-file-not-found - (.get channel (util/url->path url))))) - -(defn create-sftp-connection - "Creates an instance of connection to an FTP server" - [{:keys [username password host port disable-strict-host-checking] :as config}] - (let [jsch (JSch.) - session (doto (.getSession jsch username host port) - (.setPassword password)) - _ (when disable-strict-host-checking - ;; Makes testing easier - (.setConfig session "StrictHostKeyChecking" "no")) - _ (.connect session) - channel (.openChannel session "sftp")] - (.connect channel) - (map->SftpConnection {:config config - :jsch jsch - :session session - :channel channel}))) - -(comment - (def c (create-sftp-connection {:conn_type "sftp" - :host "localhost" - :username "ignored" - :password "ignored" - :disable-strict-host-checking true - :port 3032})) - (url-conn/close c) - (url-conn/download c "sftp://localhost/foo.bar") - (url-conn/get-size c "sftp://localhost/foo.bar") - (url-conn/get-size c "sftp://localhost/bar.txt") - (slurp (url-conn/download c "sftp://localhost/bar.txt")) - - (type *e)) - diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/url_connection.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/url_connection.clj deleted file mode 100644 index 6fe10b9f936..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/protocols/url_connection.clj +++ /dev/null @@ -1,17 +0,0 @@ -(ns cumulus.provider-gateway.protocols.url-connection) - -(defprotocol UrlConnection - "Defines a protocol for interacting with URLS to download data." - - (close - [conn] - "Closes the underlying connection") - - (get-size - [conn url] - "Attempts to get the size of the data at the given URL without actually downloading the data. - Returns nil if unable to access the data") - - (download - [conn url] - "Returns the contents of the URL as an Input stream. Returns nil if the file does not exist.")) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/runner.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/runner.clj deleted file mode 100644 index ddc6193ee61..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/runner.clj +++ /dev/null @@ -1,24 +0,0 @@ -(ns cumulus.provider-gateway.runner - "Entry point for the application. Defines a main method that accepts arguments." - (:require - [clojure.pprint :as pp] - [clojure.spec.alpha :as s] - [com.stuartsierra.component :as c] - [cumulus.provider-gateway.system :as sys]) - (:gen-class)) - -(defn -main - "Starts the App." - [& args] - - ;; Enable Clojure Spec assertions so we can find problems when running in our development environments - ;; Performance Note: Disable this when performance matters. The actual overhead it adds may not - ;; be much though - (s/check-asserts true) - - (pp/pprint (into {} (System/getenv))) - (c/start (sys/create-system)) - (println "Running...") - ;; run it forever - (.join (Thread/currentThread))); - diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/common.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/common.clj deleted file mode 100644 index da230092385..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/common.clj +++ /dev/null @@ -1,12 +0,0 @@ -(ns cumulus.provider-gateway.specs.common - "Defines common specifications" - (:require - [clojure.spec.alpha :as s])) - -(s/def ::url string?) - -(s/def ::size int?) - -(s/def ::bucket string?) - -(s/def ::key string?) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/config.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/config.clj deleted file mode 100644 index cc0996519e7..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/config.clj +++ /dev/null @@ -1,16 +0,0 @@ -(ns cumulus.provider-gateway.specs.config - "Defines specifications for configuration items for tasks configurations" - (:require - [clojure.spec.alpha :as s] - [cumulus.provider-gateway.specs.common :as common])) - -(s/def ::skip_upload_output_payload_to_s3 - boolean?) - -(s/def ::key_prefix string?) - -(s/def ::output - (s/keys :req-un [::common/bucket ::key_prefix])) - -(s/def ::config - (s/keys :opt-un [::output ::skip_upload_output_payload_to_s3])) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/provider.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/provider.clj deleted file mode 100644 index d1e64b8f6f5..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/provider.clj +++ /dev/null @@ -1,76 +0,0 @@ -(ns cumulus.provider-gateway.specs.provider - "Defines specifications for provider configuration." - (:require - [clojure.spec.alpha :as s] - [cumulus.provider-gateway.specs.common :as common])) - -;;;; -;; Provider Activity api configuration - -(s/def ::activity-api-type string?) -(defmulti activity-api-type :activity-api-type) - -(s/def ::dir string?) - -(defmethod activity-api-type "file-system" - [_] - (s/keys :req-un [::activity-api-type ::dir])) - -(s/def ::in-memory-tasks (s/coll-of map?)) -(s/def ::tasks ::in-memory-tasks) - -(defmethod activity-api-type "in-memory" - [_] - (s/keys :req-un [::activity-api-type ::tasks])) - -(defmethod activity-api-type "aws" - [_] - (s/keys :req-un [::activity-api-type])) - -(defmethod activity-api-type :default - [value] - (throw (Exception. (str "Invalid api type in " value)))) - - -(s/def ::activity-api - (s/multi-spec activity-api-type ::activity-api-type)) -;;;; -;; Provider Connection config -(s/def ::conn_type string?) -(defmulti connection-type :conn_type) - -(s/def ::host string?) -(s/def ::port int?) -(s/def ::username string?) -(s/def ::password string?) - -(defmethod connection-type "ftp" - [_] - (s/keys :req-un [::conn_type ::host] - :opt-un [::port ::username ::password])) - -(defmethod connection-type "sftp" - [_] - (s/keys :req-un [::conn_type ::host ::username ::password] - :opt-un [::port])) - -(defmethod connection-type "http" - [_] - ;; HTTP doesn't really have any configuration - (s/keys :req-un [::conn_type])) - -(defmethod connection-type :default - [value] - (throw (Exception. (str "Invalid connection type in " value)))) - -(s/def ::conn_config (s/multi-spec connection-type ::conn_type)) - -;;;; -;; The Provider Spec -(s/def ::provider-id string?) -(s/def ::num_connections int?) -(s/def ::sync-activity-api ::activity-api) - -(s/def ::provider - (s/keys :req-un [::provider-id ::conn_config ::num_connections] - :opt-un [::activity-api ::sync-activity-api])) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/sync_task.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/sync_task.clj deleted file mode 100644 index 5023631738e..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/sync_task.clj +++ /dev/null @@ -1,11 +0,0 @@ -(ns cumulus.provider-gateway.specs.sync-task - (:require - [clojure.spec.alpha :as s] - [cumulus.provider-gateway.specs.common :as common])) - - -(s/def ::version string?) - -;; Describes the file object that -(s/def ::file - (s/keys :req-un [::common/url ::version])) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/task.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/task.clj deleted file mode 100644 index d1db6f5d24d..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/specs/task.clj +++ /dev/null @@ -1,35 +0,0 @@ -(ns cumulus.provider-gateway.specs.task - "Describes the expected fields in a download task." - (:require - [clojure.spec.alpha :as s] - [cumulus.provider-gateway.specs.common :as common] - [cumulus.provider-gateway.specs.config :as config])) - -(s/def ::source - (s/keys :req-un [::url] - :opt-un [::size])) - -(s/def ::target - (s/or - :from-config #(= % "FROM_CONFIG") - :s3-bucket-key (s/keys :req-un [::common/bucket ::common/key]))) - -(s/def ::type #{"download"}) - -(s/def ::request - (s/keys :req-un [::type ::source ::target])) - -(s/def ::files - (s/coll-of ::request)) - -(s/def ::payload - (s/keys :req-un [::files])) - -(s/def ::task-token string?) -(s/def ::input ::payload) - -;; This is the task when it arrives to the task executor -(s/def ::task - (s/keys :req-un [::config/config - ::task-token - ::input])) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/system.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/system.clj deleted file mode 100644 index 0e28059d7a2..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/system.clj +++ /dev/null @@ -1,110 +0,0 @@ -(ns cumulus.provider-gateway.system - "Defines the running system." - (:require - [clojure.spec.alpha :as s] - [clojure.core.async :as a] - [clojure.string :as str] - [com.stuartsierra.component :as c] - [cumulus.provider-gateway.aws.activity-api :as activity] - [cumulus.provider-gateway.activities.sync-task-to-request-handler :as strh] - [cumulus.provider-gateway.download-activity-handler :as activity-handler] - [cumulus.provider-gateway.task-executor :as task-executor] - [cumulus.provider-gateway.util :as util] - [cumulus.provider-gateway.specs.provider :as provider-spec] - [cumulus.provider-gateway.aws.s3 :as s3])) - -(def COLLECTIONS_YAML - "The location of the collection yaml file within the deploy bucket" - "ingest/collections.yml") - -(defn load-collections-config - ([] - (load-collections-config (util/get-stack-name))) - ([stack-name] - (util/parse-yaml (s3/read-s3-string s3/aws-s3-api - (str stack-name "-deploy") COLLECTIONS_YAML)))) - -(def TASK_CHANNEL_BUFFER_SIZE - "The number of messages that can be buffered in the download task channel before writing to it will - be blocked. There's a task channel per provider." - 5) - -(defn create-activity-arn - [activity-name] - (format "arn:aws:states:%s:%s:activity:%s-%s" - (util/get-aws-region) - (util/get-aws-account-id) - (util/get-stack-name) - activity-name)) - -(defn get-gateway-providers - "Returns the set of providers configured in collections.yml" - ([] - (get-gateway-providers (load-collections-config))) - ([config] - (->> config - :providers - ;; Get all the providers with a gateway config - (filter #(get-in % [:config :gateway_config])) - - (map (fn [{id :id - {config :gateway_config} :config}] - (merge - {:provider-id id} - (select-keys config [:conn_config :num_connections]) - (when (:activity config) - {:activity-api {:activity-api-type "aws" - :arn (create-activity-arn (:activity config))}}) - (when (:sync_activity config) - {:sync-activity-api {:activity-api-type "aws" - :arn (create-activity-arn (:sync_activity config))}}))))))) - -(defn create-provider-components - "Takes a configured provider and creates system components prefixed with the providers id so they - won't conflict with components for other providers." - [provider] - (s/assert ::provider-spec/provider provider) - (let [;; helper function for making a keyword with a provider id prefix. - pk #(keyword (str (:provider-id provider) "-" (name %)))] - - (merge - {;; A channel for communicating task read from the activity API to the task executor - (pk :task-channel) (a/chan TASK_CHANNEL_BUFFER_SIZE) - - ;; The implementation of the S3 API to use. - (pk :s3-api) (s3/create-s3-api (:s3-api-type provider)) - - ;; The task executor processes download requests for a provider. - (pk :task-executor) (c/using (task-executor/create-task-executor provider) - {:task-channel (pk :task-channel) - :s3-api (pk :s3-api)})} - - ;; Create an activity handler that downloads requests - (when (:activity-api provider) - {(pk :download-activity-handler) (c/using (activity-handler/create-activity-handler - (activity/create-activity-api (:activity-api provider))) - {:task-channel (pk :task-channel)})}) - - ;; Create a sync activity handler - (when (:sync-activity-api provider) - {(pk :sync-activity-handler) - (c/using (activity-handler/create-activity-handler - (activity/create-activity-api (:sync-activity-api provider)) - (strh/create-sync-task-to-request-handler)) - {:task-channel (pk :task-channel)})})))) - -(defn create-system - "Creates a new instance of the message store system." - ([] - (create-system (get-gateway-providers))) - ([providers] - (println "Using provider config" (pr-str providers)) - (let [provider-components (->> providers - (map create-provider-components) - (reduce (fn [vals provider-entries] - (reduce into vals provider-entries)) - []))] - - (apply - c/system-map - provider-components)))) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/task_executor.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/task_executor.clj deleted file mode 100644 index 29eae2d17d0..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/task_executor.clj +++ /dev/null @@ -1,211 +0,0 @@ -(ns cumulus.provider-gateway.task-executor - "Defines a components and functions for executing download task requests." - (:require - [clojure.spec.alpha :as s] - [clojure.core.async :as a] - [com.stuartsierra.component :as c] - [cumulus.provider-gateway.aws.s3 :as s3] - [cumulus.provider-gateway.protocols.url-connection :as url-conn] - [cumulus.provider-gateway.util :as util] - [cumulus.provider-gateway.specs.task :as specs] - [cumulus.provider-gateway.protocols.ftp :as ftp-conn] - [cumulus.provider-gateway.protocols.sftp :as sftp-conn] - [cumulus.provider-gateway.protocols.http :as http-conn])) - -(defn- create-connection - "Creates a connection based from a provider connection configuration." - [conn-config] - (case (:conn_type conn-config) - "ftp" (ftp-conn/create-ftp-connection conn-config) - "sftp" (sftp-conn/create-sftp-connection conn-config) - "http" (http-conn/create-http-connection) - ;; else - (throw (Exception. (format "Unexpected connection type [%s]" (:conn_type conn-config)))))) - -(defn version-skip-download? - "Returns true if we should skip the download to S3 if the key has data at the given bucket" - [s3-api bucket key version] - (when version - (let [start-time (System/currentTimeMillis) - metadata (s3/get-s3-object-metadata s3-api bucket key)] - (util/log-latency "s3-version-check" (- (System/currentTimeMillis) start-time)) - (= version (get-in metadata [:user-metadata :version]))))) - -(defn- request->s3-target - "Takes a task and request and returns the target bucket and key." - [task request] - (let [{:keys [target]} request] - (cond - (:bucket target) - target - - ;; If the target is FROM_CONFIG then we will generate the bucket and key from the task - ;; configuration - (= "FROM_CONFIG" target) - (let [{:keys [bucket key_prefix]} (get-in task [:config :output]) - file-name (util/url->file-name (get-in request [:source :url]))] - {:bucket bucket - :key (str key_prefix "/" file-name)}) - - :else - (throw (Exception. (str "Unable to determine target for request " (pr-str request))))))) - -;; Performance Note: The version skip download check below is on the same thread as the download. -;; ideally this could be filtered out ahead of time so we don't waste time utilizing a provider -;; connection for this. From my tests the version check is usually on the order of 10 ms or less -;; so it's probably inconsequential. -;; IMPORTANT NOTE: If we change this in the future to filter out somewhere before it even gets -;; to the task we need to make sure that we still report the file as successfully completed in -;; the response. This is needed for the sync activity handler so that it can report all the -;; files that are in S3. - -(defn- process-download-request - "Processes a request to download a single file from a URL and upload it to S3" - [s3-api conn log task request] - (let [{{:keys [url size version]} :source} request - {:keys [bucket key]} (request->s3-target task request) - - ;; Return the request with the bucket and key in the target. This may have been dynamically - ;; generated. - request (assoc request :target {:bucket bucket :key key})] - (if (version-skip-download? s3-api bucket key version) - (do - (log (format "Skipping download of %s because it already exists in S3 with version %s" - url version)) - (assoc request :success true :version_skip true)) - - ;; Version is out of date or not present - (let [;; Fetch the size of the content if we don't know it. - size (or size (url-conn/get-size conn url)) - size-log-msg (str "(" (or size "unknown") " bytes)") - version-log-msg (if version (str " with version " version) "") - start-time (System/currentTimeMillis)] - (log (format "Transfering %s %s%s to S3 %s %s" - url size-log-msg version-log-msg bucket key)) - (if-let [stream (url-conn/download conn url)] - (do - (s3/write-s3-stream s3-api bucket key stream - {:content-length size - :user-metadata {:version version}}) - (let [latency-ms (- (System/currentTimeMillis) start-time)] - (log (format "Completed download and upload to s3 %s in %d ms." - size-log-msg latency-ms)) - (util/log-latency "download-upload-s3" latency-ms)) - (assoc request :success true)) - - ;; The URL does not exist - (assoc request - :success false - :error "The file did not exist at the source.")))))) - -(defn- create-download-processing-threads - "Creates a set of threads for processing requests of the task channel" - [s3-api provider downloads-channel] - (let [{:keys [provider-id conn_config num_connections]} provider] - (doall - (for [thread-num (range 1 (inc num_connections)) - :let [thread-id (str provider-id "-" thread-num) - log (fn [& args] (apply println "Thread" thread-id "-" args)) - conn (create-connection conn_config)]] - (a/thread - (try - (util/while-let - [{:keys [file download-completion-ch task]} (a/!! download-completion-ch result))) - (finally - (println "Processing thread" thread-id "completed") - (url-conn/close conn)))))))) - -(defn- process-task - "Processes a task downloading all of the files in it." - [task downloads-channel] - (s/assert ::specs/task task) - (let [{:keys [completion-channel input]} task - download-completion-chs (mapv (fn [file] - (let [download-completion-ch (a/chan 1)] - (a/>!! downloads-channel - {:file file - :task task - :download-completion-ch download-completion-ch}) - download-completion-ch)) - (:files input)) - results (mapv a/!! completion-channel completion-msg))) - -(defn- create-task-processing-threads - "Creates a set of threads for processing requests of the task channel" - [provider task-channel downloads-channel] - (let [{:keys [provider-id num_connections]} provider] - (doall - (for [thread-num (range 1 (inc num_connections)) - :let [thread-id (str provider-id "-" thread-num)]] - (a/thread - (try - (util/while-let - [task (a/ this - (assoc :downloads-channel downloads-channel) - (assoc :task-thread-chs - (create-task-processing-threads provider task-channel downloads-channel)) - (assoc :download-thread-chs - (create-download-processing-threads s3-api provider downloads-channel)))) - this)) - - (stop - [this] - (if task-thread-chs - (do - ;; Close task and downloads-channel so that waiting thread will stop - (a/close! downloads-channel) - (a/close! task-channel) - ;; Wait until all the task thread channels are closed. That means the threads have completed. - (doseq [ch task-thread-chs] - (a/TaskExecutor {:provider provider})) diff --git a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/util.clj b/cumulus/services/provider-gateway/src/cumulus/provider_gateway/util.clj deleted file mode 100644 index dbb739512cb..00000000000 --- a/cumulus/services/provider-gateway/src/cumulus/provider_gateway/util.clj +++ /dev/null @@ -1,103 +0,0 @@ -(ns cumulus.provider-gateway.util - "Utility functions" - (:require - [cheshire.parse :as ch-parse] - [clojure.java.io :as io] - [clojure.string :as str] - [cheshire.core :as json] - [clojure.walk :as walk]) - (:import - (com.fasterxml.jackson.dataformat.yaml - YAMLFactory) - (org.apache.commons.io - FilenameUtils))) - -(defn log-latency - "Logs a latency measure in a way that can be parsed by CloudWatch" - [category time-ms] - (println (json/generate-string {:category category :latency time-ms}))) - -(defmacro while-let - "A macro that's similar to when let. It will continually evaluate the - bindings and execute the body until the binding results in a nil value." - [bindings & body] - `(loop [] - (when-let ~bindings - ~@body - (recur)))) - -(defn url->path - "Returns just the path of the URL. Works with sftp urls." - [url] - ;; SFTP isn't supported by Java URL so we just convert to FTP to get the path out of it. - (let [non-sftp-url (if (str/starts-with? url "sftp:") - (str/replace-first url "sftp:" "ftp:") - url) - url (io/as-url non-sftp-url)] - (.getPath url))) - -(defn url->file-name - "Returns just the file name without the path from a url" - [url] - (FilenameUtils/getName (url->path url))) - -(defn parse-yaml - "Parses yaml using the Jackson YAMLFactory and Cheshire JSON parsing. This does not handle YAML - tags. I could not find a way to add custom YAML tag parsing with any Java YAML parser. Snakeyaml - comes the closest but seems to only associate YAML tags with java beans. I was not able to get - that working and decided to skip it for now." - [contents] - (ch-parse/parse-strict - (.createJsonParser (YAMLFactory.) contents) - true nil nil)) - -(defn- env-vars - "Returns a map of env vars some of which may be overloaded by dev/locals.clj" - [] - (let [env (into {} (System/getenv))] - (if (find-ns 'locals) - (merge env (some-> (find-var 'locals/defaults) var-get)) - env))) - -(defn get-stack-name - [] - (get (env-vars) "STACK_NAME")) - -(defn get-aws-account-id - [] - (get (env-vars) "AWS_ACCOUNT_ID")) - -(defn get-aws-region - [] - (get (env-vars) "AWS_DEFAULT_REGION")) - -(defn mustache-replace - "Looks for pseudo-mustache patterns and replaces them using the lookup value map given." - [lookup-value-map value] - (let [patterns (re-seq #"\{[\w.\-]+\}" value)] - (reduce (fn [s pattern] - (let [lookup-path (map keyword (re-seq #"[\w\-]+" pattern)) - replacement-value (str (get-in lookup-value-map lookup-path))] - (str/replace s pattern replacement-value))) - value - (distinct patterns)))) - -(defn populate-message-config-replacements - "Takes a full message and optionally a subset of that message and populates any mustache-style - replacements anywhere in the subset." - ([message] - (populate-message-config-replacements message message)) - ([message message-part] - (walk/postwalk - (fn [value] - (if (string? value) - (mustache-replace message value) - value)) - message-part))) - -(defn running-in-repl? - "Returns true if we can detect this Clojure process is running in a REPL." - [] - (and - (find-ns 'user) - (find-var 'user/system))) diff --git a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/activities/sync_task_to_request_handler_test.clj b/cumulus/services/provider-gateway/test/cumulus/provider_gateway/activities/sync_task_to_request_handler_test.clj deleted file mode 100644 index 886f1748d4c..00000000000 --- a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/activities/sync_task_to_request_handler_test.clj +++ /dev/null @@ -1,97 +0,0 @@ -(ns cumulus.provider-gateway.activities.sync-task-to-request-handler-test - (:require - [clojure.test :refer :all] - [cheshire.core :as json] - [cumulus.provider-gateway.download-activity-handler :as activity-handler] - [cumulus.provider-gateway.activities.sync-task-to-request-handler :as strh] - [cumulus.provider-gateway.aws.s3 :as s3])) - -(def private-bucket - "gitc-private") - -(def meta-key - "VIIRS/VNGCR_LQD_C1/2017192") - -(defn stage-data - "Stages data in the in-memory s3 of the given set of files and returns a new synchronization task." - [in-memory-s3 files] - (let [payload-s3-key "LastStep/Payload"] - ;; Stage the payload for the task message - (s3/write-s3-json in-memory-s3 private-bucket payload-s3-key files) - ;; Return the task with the message - {:task-token "task-token" - :input - {:workflow_config_template - {:SyncHttpUrls {:output {:bucket "{resources.buckets.private}" - :key_prefix "sources/EPSG{meta.epsg}/{meta.key}"}}} - :resources {:buckets {:private private-bucket}} - :meta {:key meta-key - :epsg 4326} - :payload {:Bucket private-bucket - :Key payload-s3-key}}})) - -(deftest handle-new-task-test - (let [in-memory-s3 (s3/create-in-memory-s3-api) - handler (strh/create-sync-task-to-request-handler in-memory-s3) - files [{:url "http://example.com/foo/1.txt" - :version "v1"} - {:url "http://example.com/foo/2.txt" - :version "v1"}] - task (stage-data in-memory-s3 files) - updated-task (activity-handler/handle-new-task handler task) - - expected-input [{:type "download" - :source {:url "http://example.com/foo/1.txt" - :version "v1"} - :target {:bucket private-bucket - :key "sources/EPSG4326/VIIRS/VNGCR_LQD_C1/2017192/1.txt"}} - {:type "download" - :source {:url "http://example.com/foo/2.txt" - :version "v1"} - :target {:bucket private-bucket - :key "sources/EPSG4326/VIIRS/VNGCR_LQD_C1/2017192/2.txt"}}]] - ;; What do we expect the new task to look like? - (is (= {:task-token (:task-token task) - :config {:output {:bucket "gitc-private" - :key_prefix "sources/EPSG4326/VIIRS/VNGCR_LQD_C1/2017192"}} - :original-message (:input task) - :input {:files expected-input}} - updated-task)))) - -(deftest handle-completed-task-test - (let [in-memory-s3 (s3/create-in-memory-s3-api) - handler (strh/create-sync-task-to-request-handler in-memory-s3) - files [{:url "http://example.com/foo/1.txt" - :version "v1"} - {:url "http://example.com/foo/2.txt" - :version "v1"}] - task (stage-data in-memory-s3 files) - - input [{:type "download" - :source {:url "http://example.com/foo/1.txt" - :version "v1"} - :target {:bucket private-bucket - :key "sources/EPSG4326/VIIRS/VNGCR_LQD_C1/2017192/1.txt"}} - {:type "download" - :source {:url "http://example.com/foo/2.txt" - :version "v1"} - :target {:bucket private-bucket - :key "sources/EPSG4326/VIIRS/VNGCR_LQD_C1/2017192/2.txt"}}] - - completion-request {:task-token (:task-token task) - :original-message (:input task) - :input input - :results (map #(assoc % :success true) input)} - - output (activity-handler/handle-completed-task handler completion-request) - payload-key (get-in output [:payload :Key]) - key-regex (re-pattern (str strh/TASK_NAME "/" meta-key ".*$"))] - ;; Payload key should be of the form (TASK_NAME/META_KEY/UUID) - (is (re-matches key-regex payload-key)) - ;; Check the payload in the message in S3 has the right content - (is (= [{:Bucket private-bucket - :Key "sources/EPSG4326/VIIRS/VNGCR_LQD_C1/2017192/1.txt"} - {:Bucket private-bucket - :Key "sources/EPSG4326/VIIRS/VNGCR_LQD_C1/2017192/2.txt"}] - (s3/read-s3-json in-memory-s3 private-bucket payload-key))))) - diff --git a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/ftp_server.clj b/cumulus/services/provider-gateway/test/cumulus/provider_gateway/ftp_server.clj deleted file mode 100644 index e2f7886c490..00000000000 --- a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/ftp_server.clj +++ /dev/null @@ -1,89 +0,0 @@ -(ns cumulus.provider-gateway.ftp-server - "A test ftp server that can be used to test downloading data." - (:require - [clojure.java.io :as io]) - (:import - (java.io - File) - (org.apache.ftpserver - FtpServerFactory) - (org.apache.ftpserver.listener - ListenerFactory) - (org.apache.ftpserver.usermanager.impl - BaseUser) - (java.nio.file - Files) - (java.nio.file.attribute - FileAttribute))) - -(defn default-config - "Creates a default configuration for the FTP server. " - [] - {:port 3022 - :username "ftp" - :password (str (java.util.UUID/randomUUID)) - :file-paths->contents {}}) - -(defn- create-temp-directory - [] - (str (Files/createTempDirectory "ftptest" (into-array FileAttribute nil)))) - -(defn- create-files - [root-dir file-paths->contents] - (doseq [[path contents] file-paths->contents - :let [full-path (io/as-file (str root-dir path))]] - (.mkdirs (.getParentFile full-path)) - (spit full-path contents))) - -(defn start - "Starts the ftp server and returns an instance of the server." - [{:keys [port username password file-paths->contents] :as config}] - (let [ftp-home (create-temp-directory) - listener-factory (doto (ListenerFactory.) - (.setPort port)) - factory (doto (FtpServerFactory.) - (.addListener "default" (.createListener listener-factory))) - user (doto (BaseUser.) - (.setName username) - (.setPassword password) - (.setHomeDirectory ftp-home)) - _ (.save (.getUserManager factory) user) - server (.createServer factory)] - (.start server) - (create-files ftp-home file-paths->contents) - (assoc config - :ftp-home ftp-home - :server server))) - -(defn stop - "Stops the server and returns it." - [{:keys [server ftp-home] :as config}] - (when server - (.stop server)) - (when ftp-home - (.delete (io/as-file ftp-home))) - (dissoc config :ftp-home :server)) - - -(defn create-run-ftp-fixture - "A fixture which runs an FTP server. - * var - a var which will have the server set on it so that access to username, port, and password - is possible during a test. - * options - Any options for running the FTP server. See default-config for valid options." - [var options] - (fn [f] - (let [config (merge (default-config) options) - server (start config)] - (try - (alter-var-root var (constantly server)) - (f) - (finally - (stop server) - (alter-var-root var (constantly nil))))))) - -(comment - (def cfg (assoc (default-config) - :file-paths->contents cumulus.provider-gateway.integration-test/files->content)) - (def f (start cfg)) - (stop f) - (:password f)) diff --git a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/http_server.clj b/cumulus/services/provider-gateway/test/cumulus/provider_gateway/http_server.clj deleted file mode 100644 index 954bf0d6c15..00000000000 --- a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/http_server.clj +++ /dev/null @@ -1,67 +0,0 @@ -(ns cumulus.provider-gateway.http-server - "Defines an HTTP server for testing downloading data over HTTP." - (:require - [clj-http.client :as http] - [clojure.test :refer :all] - [clj-http.conn-mgr :as conn-mgr] - [ring.adapter.jetty :as jetty])) - -(def DEFAULT_PORT 3001) - -(defn default-config - "Creates a default configuration for the HTTP server. " - [] - {:port 3001 - :file-paths->contents {}}) - -(defn serve-content - [file-paths->contents {:keys [uri]}] - (if-let [content (file-paths->contents uri)] - {:status 200 :body content} - {:status 404 :body "Not Found"})) - -(defn start-jetty - [{:keys [port file-paths->contents] :as config}] - (assoc config - :server (jetty/run-jetty #(serve-content file-paths->contents %) - {:port port :join? false}))) - -(defn create-run-jetty-fixture - "A fixture which runs an HTTP server. - * var - a var which will have the server set on it so that access to port. - * options - Any options for running the HTTP server. See default-config for valid options." - [var options] - (let [config (merge (default-config) options)] - (fn [f] - (let [server (start-jetty config)] - (alter-var-root var (constantly server)) - (try - (f) - (finally - (.stop (:server server)) - (alter-var-root var (constantly nil)))))))) - -(comment - (def s (start-jetty (assoc (default-config) :file-paths->contents http-files->content))) - (.stop (:server s))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Testing the server - -(def http-files->content - {"/foo/bar.txt" "bar bar bar" - "/moo.txt" "cows say this"}) - -(def http-server - nil) - -(use-fixtures :once (create-run-jetty-fixture #'http-server - {:file-paths->contents http-files->content})) - -(deftest test-jetty-fixture - (testing "Content is available" - (doseq [[uri content] http-files->content] - (is (= content (:body (http/get (str "http://localhost:" DEFAULT_PORT uri))))))) - (testing "Var is set" - (is (some? http-server)) - (is (= DEFAULT_PORT (:port http-server))))) diff --git a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/integration_test.clj b/cumulus/services/provider-gateway/test/cumulus/provider_gateway/integration_test.clj deleted file mode 100644 index 6f675d23659..00000000000 --- a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/integration_test.clj +++ /dev/null @@ -1,472 +0,0 @@ -(ns cumulus.provider-gateway.integration-test - (:require - [clojure.java.io :as io] - [clojure.string :as str] - [clojure.test :refer :all] - [com.stuartsierra.component :as c] - [cumulus.provider-gateway.system :as sys] - [cumulus.provider-gateway.aws.activity-api :as activity-api] - [cumulus.provider-gateway.util :as util] - [cumulus.provider-gateway.http-server :as http-server] - [cumulus.provider-gateway.ftp-server :as ftp-server] - [cumulus.provider-gateway.sftp-server :as sftp-server])) - -(def http-files->content - {"/foo/bar.txt" "bar bar bar" - "/foo/bar2.txt" "another bar" - "/moo.txt" "a cow"}) - -(def ftp-files->content - {"/ftp/foo/bar.txt" "ftp bar bar bar" - "/ftp/foo/bar2.txt" "ftp another bar" - "/ftp/moo.txt" "a cow over ftp"}) - -(def sftp-files->content - {"/sftp/foo/bar.txt" "sftp bar bar bar" - "/sftp/foo/bar2.txt" "sftp another bar" - "/sftp/moo.txt" "a cow over sftp"}) - -(def running-ftp-server - "This will dynamically contain a reference to the running ftp server which is a map of info like - username and password." - nil) - -(def running-sftp-server - "This will dynamically contain a reference to the running sftp server which is a map of info like - username and password." - nil) - -(def running-http-server - "This will dynamically contain a reference to the running http server which is a map of info like - port." - nil) - -(use-fixtures :once (join-fixtures [(ftp-server/create-run-ftp-fixture - #'running-ftp-server - {:file-paths->contents ftp-files->content}) - (sftp-server/create-run-sftp-fixture - #'running-sftp-server - {:file-paths->contents sftp-files->content}) - (http-server/create-run-jetty-fixture - #'running-http-server - {:file-paths->contents http-files->content})])) - -(def storage-bucket - "the-bucket") - -(defn create-url - [type path] - (let [port (:port (case type - :http running-http-server - :ftp running-ftp-server - :sftp running-sftp-server)) - ;; to make running in repl easier - port (or port 1111)] - - (format "%s://localhost:%d/%s" (name type) port path))) - -(defn create-download-request - ([type path] - (create-download-request type path nil)) - ([type path options] - (let [file-url (create-url type path) - file-name (util/url->file-name file-url)] - (merge-with merge - {:type "download" - :source {:url file-url} - :target {:bucket storage-bucket - :key file-name}} - options)))) - -(defn create-successful-download-request - ([type path] - (create-successful-download-request type path nil)) - ([type path options] - (assoc (create-download-request type path options) :success true))) - -(defn create-failed-download-request - ([type path] - (create-failed-download-request type path nil)) - ([type path options] - (let [request (create-download-request type path options) - url (get-in request [:source :url]) - error "The file did not exist at the source."] - (assoc request :success false :error error)))) - -(defn create-download-task - "Creates a task containing a list of downloads to process" - [task-token download-requests] - {:task-token task-token - :input - {:workflow_config_template - {:DownloadActivity {:skip_upload_output_payload_to_s3 true - :output {:bucket "{resources.buckets.private}" - :key_prefix "sources/EPSG{meta.epsg}/SIPSTEST/{meta.collection}"}}} - :resources {:buckets {:private storage-bucket}} - :meta {:collection "VNGCR_LQD_C1" - :epsg 4326} - :payload {:ignored-key "This is ignored" - :files download-requests}}}) - -(defn create-download-task-output - "Creates the expected output for a task given some of the completed task download requests." - [completed-download-requests] - ;; The ouput is the same as the input with the files containing the completed download requests - (:input (create-download-task nil completed-download-requests))) - -(def MAX_WAIT_TIME 5000) - -(defn wait-for-tasks-to-complete - [activity-api task-ids] - (let [start (System/currentTimeMillis) - get-completed-tasks (fn [] - (let [{:keys [successful-tasks-atom failed-tasks-atom]} activity-api] - (set (concat (keys @successful-tasks-atom) - (keys @failed-tasks-atom))))) - done? #(= (get-completed-tasks) (set task-ids))] - (while (not (done?)) - (when (> (- (System/currentTimeMillis) start) MAX_WAIT_TIME) - (throw (Exception. - (format "All tasks not consumed within timeout period. Completed: %s Expecting: %s" - (pr-str (get-completed-tasks)) (pr-str task-ids))))) - (Thread/sleep 250)))) - -(defn create-expected-s3 - "Creates a map of expected s3 content from a list of file paths and the map of files->content" - ([files->content file-paths->versions] - (create-expected-s3 "" files->content file-paths->versions)) - ([key-prefix files->content file-paths->versions] - {storage-bucket - (reduce (fn [contents [path version]] - (assoc contents - (str key-prefix (last (str/split path #"/"))) - {:value (files->content path) - :metadata {:content-length (count (files->content path)) - :user-metadata {:version version}}})) - {} - file-paths->versions)})) - -(deftest http-download-request-integration-test - (let [task1-download-requests [(create-download-request :http "/foo/bar.txt" {:source {:version "v1"}}) - (create-download-request :http "/foo/bar2.txt" {:source {:version "v1"}})] - expected-task-1-completed-requests [(create-successful-download-request - :http "/foo/bar.txt" {:source {:version "v1"}}) - (create-successful-download-request - :http "/foo/bar2.txt" {:source {:version "v1"}})] - task2-download-requests [(create-download-request :http "moo2.txt") ;; doesn't exist - (create-download-request :http "moo.txt")] - expected-task-2-completed-requests [(create-failed-download-request :http "moo2.txt") - (create-successful-download-request :http "moo.txt")] - provider {:provider-id "LOCAL", - :s3-api-type :in-memory - :activity-api {:activity-api-type "in-memory" - :tasks [(create-download-task "task-1" task1-download-requests) - (create-download-task "task-2" task2-download-requests)]} - :conn_config {:conn_type "http"} - :num_connections 2} - system (c/start (sys/create-system [provider])) - activity-api (get-in system [:LOCAL-download-activity-handler :activity-api]) - s3-api (:LOCAL-s3-api system) - expected-s3 (create-expected-s3 - http-files->content - {"/foo/bar.txt" "v1" - "/foo/bar2.txt" "v1" - "/moo.txt" nil})] - (try - (wait-for-tasks-to-complete activity-api ["task-1" "task-2"]) - (finally - (c/stop system))) - ;; verify the files in s3 - (is (= expected-s3 (-> s3-api :bucket-key-to-value-atom deref))) - ;; Verify no failures sent to activity api - (is (= {} (-> activity-api :failed-tasks-atom deref))) - - ;; Verify successful output from download requests. - (is (= {"task-1" (create-download-task-output expected-task-1-completed-requests) - "task-2" (create-download-task-output expected-task-2-completed-requests)} - (-> activity-api :successful-tasks-atom deref))) - - ;; Testing download with versioning - (let [task3-download-requests [(create-download-request :http "/foo/bar.txt" {:source {:version "v1"}}) - (create-download-request :http "/foo/bar2.txt" {:source {:version "v2"}})] - expected-task-3-completed-requests [(create-successful-download-request - :http "/foo/bar.txt" {:source {:version "v1"} - :version_skip true}) - (create-successful-download-request - :http "/foo/bar2.txt" {:source {:version "v2"}})] - provider (assoc-in provider [:activity-api :tasks] - [(create-download-task "task-3" task3-download-requests)]) - system (-> (sys/create-system [provider]) - (assoc :LOCAL-s3-api s3-api) - c/start) - activity-api (get-in system [:LOCAL-download-activity-handler :activity-api]) - expected-s3 (create-expected-s3 - http-files->content - {"/foo/bar.txt" "v1" - "/foo/bar2.txt" "v2" - "/moo.txt" nil})] - (try - (wait-for-tasks-to-complete activity-api ["task-3"]) - (finally - (c/stop system))) - ;; verify the files in s3 - (is (= expected-s3 (-> s3-api :bucket-key-to-value-atom deref))) - ;; Verify no failures sent to activity api - (is (= {} (-> activity-api :failed-tasks-atom deref))) - - ;; Verify successful output from download requests. - (is (= {"task-3" (create-download-task-output expected-task-3-completed-requests)} - (-> activity-api :successful-tasks-atom deref)))))) - -(deftest from-config-integration-test - (let [task1-download-requests [(create-download-request :http "/foo/bar.txt") - (create-download-request :http "/foo/bar2.txt")] - task1-download-requests (map #(assoc % :target "FROM_CONFIG") task1-download-requests) - expected-task-1-completed-requests [(create-successful-download-request :http "/foo/bar.txt") - (create-successful-download-request :http "/foo/bar2.txt")] - expected-task-1-completed-requests (map (fn [file] - (update-in - file [:target :key] - #(str "sources/EPSG4326/SIPSTEST/VNGCR_LQD_C1/" %))) - expected-task-1-completed-requests) - provider {:provider-id "LOCAL", - :s3-api-type :in-memory - :activity-api {:activity-api-type "in-memory" - :tasks [(create-download-task "task-1" task1-download-requests)]} - :conn_config {:conn_type "http"} - :num_connections 2} - system (c/start (sys/create-system [provider])) - activity-api (get-in system [:LOCAL-download-activity-handler :activity-api]) - s3-api (:LOCAL-s3-api system) - expected-s3 (create-expected-s3 - "sources/EPSG4326/SIPSTEST/VNGCR_LQD_C1/" - http-files->content - {"/foo/bar.txt" nil - "/foo/bar2.txt" nil})] - (try - (wait-for-tasks-to-complete activity-api ["task-1"]) - (finally - (c/stop system))) - ;; verify the files in s3 - (is (= expected-s3 (-> s3-api :bucket-key-to-value-atom deref))) - ;; Verify no failures sent to activity api - (is (= {} (-> activity-api :failed-tasks-atom deref))) - - ;; Verify successful output from download requests. - (is (= {"task-1" (create-download-task-output expected-task-1-completed-requests)} - (-> activity-api :successful-tasks-atom deref))))) - - -(deftest ftp-download-request-integration-test - (let [task1-download-requests [(create-download-request :ftp "/ftp/foo/bar.txt") - (create-download-request :ftp "/ftp/foo/bar2.txt")] - expected-task-1-completed-requests [(create-successful-download-request :ftp "/ftp/foo/bar.txt") - (create-successful-download-request :ftp "/ftp/foo/bar2.txt")] - task2-download-requests [(create-download-request :ftp "/ftp/moo2.txt") ;; doesn't exist - (create-download-request :ftp "/ftp/moo.txt")] - expected-task-2-completed-requests [(create-failed-download-request :ftp "/ftp/moo2.txt") - (create-successful-download-request :ftp "/ftp/moo.txt")] - provider {:provider-id "LOCAL", - :s3-api-type :in-memory - :activity-api {:activity-api-type "in-memory" - :tasks [(create-download-task "task-1" task1-download-requests) - (create-download-task "task-2" task2-download-requests)]} - :conn_config (merge {:conn_type "ftp" :host "localhost"} - (select-keys running-ftp-server [:username :password :port])) - :num_connections 2} - system (c/start (sys/create-system [provider])) - activity-api (get-in system [:LOCAL-download-activity-handler :activity-api]) - s3-api (:LOCAL-s3-api system) - expected-s3 (create-expected-s3 - ftp-files->content - {"/ftp/foo/bar.txt" nil - "/ftp/foo/bar2.txt" nil - "/ftp/moo.txt" nil})] - (try - (wait-for-tasks-to-complete activity-api ["task-1" "task-2"]) - (finally - (c/stop system))) - ;; verify the files in s3 - (is (= expected-s3 (-> s3-api :bucket-key-to-value-atom deref))) - ;; Verify no failures sent to activity api - (is (= {} (-> activity-api :failed-tasks-atom deref))) - - ;; Verify successful output from download requests. - (is (= {"task-1" (create-download-task-output expected-task-1-completed-requests) - "task-2" (create-download-task-output expected-task-2-completed-requests)} - (-> activity-api :successful-tasks-atom deref))))) - -(deftest sftp-download-request-integration-test - (let [task1-download-requests [(create-download-request :sftp "/sftp/foo/bar.txt") - (create-download-request :sftp "/sftp/foo/bar2.txt")] - expected-task-1-completed-requests [(create-successful-download-request :sftp "/sftp/foo/bar.txt") - (create-successful-download-request :sftp "/sftp/foo/bar2.txt")] - task2-download-requests [(create-download-request :sftp "/sftp/moo2.txt") ;; doesn't exist - (create-download-request :sftp "/sftp/moo.txt")] - expected-task-2-completed-requests [(create-failed-download-request :sftp "/sftp/moo2.txt") - (create-successful-download-request :sftp "/sftp/moo.txt")] - provider {:provider-id "LOCAL", - :s3-api-type :in-memory - :activity-api {:activity-api-type "in-memory" - :tasks [(create-download-task "task-1" task1-download-requests) - (create-download-task "task-2" task2-download-requests)]} - :conn_config (merge {:conn_type "sftp" - :host "localhost" - :username "ignored on server" - :password "ignored on test server" - :disable-strict-host-checking true} - (select-keys running-sftp-server [:port])) - :num_connections 2} - system (c/start (sys/create-system [provider])) - activity-api (get-in system [:LOCAL-download-activity-handler :activity-api]) - s3-api (:LOCAL-s3-api system) - expected-s3 (create-expected-s3 - sftp-files->content - {"/sftp/foo/bar.txt" nil - "/sftp/foo/bar2.txt" nil - "/sftp/moo.txt" nil})] - (try - (wait-for-tasks-to-complete activity-api ["task-1" "task-2"]) - (finally - (c/stop system))) - ;; verify the files in s3 - (is (= expected-s3 (-> s3-api :bucket-key-to-value-atom deref))) - ;; Verify no failures sent to activity api - (is (= {} (-> activity-api :failed-tasks-atom deref))) - - ;; Verify successful output from download requests. - (is (= {"task-1" (create-download-task-output expected-task-1-completed-requests) - "task-2" (create-download-task-output expected-task-2-completed-requests)} - (-> activity-api :successful-tasks-atom deref))))) - -(defn create-sync-task - "Creates a synchronization task" - [task-token files] - {:task-token task-token - :input - {:workflow_config_template - {:SyncHttpUrls {:skip_upload_output_payload_to_s3 true - :output {:bucket "{resources.buckets.private}" - :key_prefix "sources/EPSG{meta.epsg}/SIPSTEST/{meta.collection}"}}} - :resources {:buckets {:private storage-bucket}} - :meta {:collection "VNGCR_LQD_C1" - :epsg 4326} - :payload files}}) - -(defn create-sync-task-output - "Creates the expected output for a task given some of the completed task sync requests." - [files] - ;; The ouput is the same as the input with the files containing the completed download requests - (let [message (:input (create-sync-task nil files))] - ;; The payload output is a map with Bucket and Key of the files in their new location. - (update message :payload (fn [files] - (map (fn [file] - {:Bucket storage-bucket - :Key (str "sources/EPSG4326/SIPSTEST/VNGCR_LQD_C1/" - (util/url->file-name (:url file)))}) - files))))) - -(deftest sync-task-integration-test - (let [sync-files-1 [{:url (create-url :http "/foo/bar.txt") :version "bar-1"} - {:url (create-url :http "/foo/bar2.txt") :version "bar2-1"}] - provider {:provider-id "LOCAL", - :s3-api-type :in-memory - :sync-activity-api {:activity-api-type "in-memory" - :tasks [(create-sync-task "task-1" sync-files-1)]} - :conn_config {:conn_type "http"} - :num_connections 2} - system (c/start (sys/create-system [provider])) - activity-api (get-in system [:LOCAL-sync-activity-handler :activity-api]) - s3-api (:LOCAL-s3-api system) - expected-s3 (create-expected-s3 - "sources/EPSG4326/SIPSTEST/VNGCR_LQD_C1/" - http-files->content - {"/foo/bar.txt" "bar-1" - "/foo/bar2.txt" "bar2-1"})] - (testing "Sync with everything new" - (try - (wait-for-tasks-to-complete activity-api ["task-1"]) - (finally - (c/stop system))) - ;; verify the files in s3 - (is (= expected-s3 (-> s3-api :bucket-key-to-value-atom deref))) - ;; Verify no failures sent to activity api - (is (= {} (-> activity-api :failed-tasks-atom deref))) - - ;; Verify successful output from download requests. - (is (= {"task-1" (create-sync-task-output sync-files-1)} - (-> activity-api :successful-tasks-atom deref)))) - - (let [sync-files-2 [{:url (create-url :http "/foo/bar.txt") :version "bar-1"} ;; same version - {:url (create-url :http "/foo/bar2.txt") :version "bar2-2"} ;; newer version - {:url (create-url :http "/moo.txt") :version "moo-1"}] ;; new file - provider (assoc-in provider [:sync-activity-api :tasks] - [(create-sync-task "task-2" sync-files-2)]) - system (-> (sys/create-system [provider]) - ;; Use the same mock s3 so the existing state will be persisted - (assoc :LOCAL-s3-api s3-api) - c/start) - activity-api (get-in system [:LOCAL-sync-activity-handler :activity-api]) - expected-s3 (create-expected-s3 - "sources/EPSG4326/SIPSTEST/VNGCR_LQD_C1/" - http-files->content - {"/foo/bar.txt" "bar-1" - "/foo/bar2.txt" "bar2-2" - "/moo.txt" "moo-1"})] - (testing "Sync with some updates" - (try - (wait-for-tasks-to-complete activity-api ["task-2"]) - (finally - (c/stop system))) - ;; verify the files in s3 - (is (= expected-s3 (-> s3-api :bucket-key-to-value-atom deref))) - ;; Verify no failures sent to activity api - (is (= {} (-> activity-api :failed-tasks-atom deref))) - - ;; Verify successful output from download requests. - (is (= {"task-2" (create-sync-task-output sync-files-2)} - (-> activity-api :successful-tasks-atom deref)))) - - (let [;; Creating a system with the same sync files as above with the same sync files. - ;; The sync task should find that there's nothing to do and return an exception - provider (assoc-in provider [:sync-activity-api :tasks] - [(create-sync-task "task-3" sync-files-2)]) - system (-> (sys/create-system [provider]) - ;; Use the same mock s3 so the existing state will be persisted - (assoc :LOCAL-s3-api s3-api) - c/start) - activity-api (get-in system [:LOCAL-sync-activity-handler :activity-api])] - (testing "Sync with no new updates" - (try - (wait-for-tasks-to-complete activity-api ["task-3"]) - (finally - (c/stop system))) - ;; Verify no failures sent to activity api - (is (= {} (-> activity-api :failed-tasks-atom deref))) - - ;; Verify successful output from download requests. - (is (= {"task-3" {:exception "NotNeededWorkflowError"}} - (-> activity-api :successful-tasks-atom deref)))))))) - -(deftest sync-task-file-doesnt-exist-integration-test - (let [sync-files-1 [{:url (create-url :http "/foo/bar.txt") :version "bar-1"} - {:url (create-url :http "moo2.txt") :version "moo1"}] ;; doesn't exist - provider {:provider-id "LOCAL", - :s3-api-type :in-memory - :sync-activity-api {:activity-api-type "in-memory" - :tasks [(create-sync-task "task-1" sync-files-1)]} - :conn_config {:conn_type "http"} - :num_connections 2} - system (c/start (sys/create-system [provider])) - activity-api (get-in system [:LOCAL-sync-activity-handler :activity-api])] - (try - (wait-for-tasks-to-complete activity-api ["task-1"]) - (finally - (c/stop system))) - ;; Verify no failures sent to activity api - (is (= {} (-> activity-api :failed-tasks-atom deref))) - - ;; Verify successful output from download requests. - (is (= {"task-1" {:exception "RemoteResourceError"}} - (-> activity-api :successful-tasks-atom deref))))) - diff --git a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/sftp_server.clj b/cumulus/services/provider-gateway/test/cumulus/provider_gateway/sftp_server.clj deleted file mode 100644 index e771600252f..00000000000 --- a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/sftp_server.clj +++ /dev/null @@ -1,89 +0,0 @@ -(ns cumulus.provider-gateway.sftp-server - (:require - [clojure.java.io :as io]) - (:import - (java.nio.file - Files) - (java.nio.file.attribute - FileAttribute) - (org.apache.sshd.server - SshServer) - (org.apache.sshd.common.file.virtualfs - VirtualFileSystemFactory) - (org.apache.sshd.server.auth.password - UserAuthPasswordFactory - AcceptAllPasswordAuthenticator) - (org.apache.sshd.server.scp - ScpCommandFactory) - (org.apache.sshd.server.keyprovider - SimpleGeneratorHostKeyProvider) - (org.apache.sshd.server.subsystem.sftp - SftpSubsystemFactory$Builder))) - -(defn default-config - "Creates a default configuration for the sFTP server. " - [] - {:port 3032 - :file-paths->contents {}}) - -(defn- create-temp-directory - [] - (Files/createTempDirectory "sftptest" (into-array FileAttribute nil))) - -(defn- create-files - [root-dir file-paths->contents] - (doseq [[path contents] file-paths->contents - :let [full-path (io/as-file (str root-dir "/" path))]] - (.mkdirs (.getParentFile full-path)) - (spit full-path contents))) - -(defn start - "Starts the sftp server and returns an instance of the server." - [{:keys [port file-paths->contents] :as config}] - (let [ftp-home (create-temp-directory) - server (doto - (SshServer/setUpDefaultServer) - (.setFileSystemFactory (VirtualFileSystemFactory. ftp-home)) - (.setPort port) - (.setKeyPairProvider (SimpleGeneratorHostKeyProvider. (io/as-file "my.pem"))) - (.setCommandFactory (ScpCommandFactory.)) - (.setUserAuthFactories [UserAuthPasswordFactory/INSTANCE]) - (.setPasswordAuthenticator AcceptAllPasswordAuthenticator/INSTANCE) - (.setSubsystemFactories [(.build (SftpSubsystemFactory$Builder.))]))] - (create-files (str ftp-home) file-paths->contents) - (.start server) - (assoc config - :ftp-home (str ftp-home) - :server server))) - -(defn stop - "Stops the server and returns it." - [{:keys [server ftp-home] :as config}] - (when server - (.stop server)) - (when ftp-home - (.delete (io/as-file ftp-home))) - (dissoc config :ftp-home :server)) - - -(defn create-run-sftp-fixture - "A fixture which runs an SFTP server. - * var - a var which will have the server set on it so that access to username, port, and password - is possible during a test. - * options - Any options for running the SFTP server. See default-config for valid options." - [var options] - (fn [f] - (let [config (merge (default-config) options) - server (start config)] - (try - (alter-var-root var (constantly server)) - (f) - (finally - (stop server) - (alter-var-root var (constantly nil))))))) - -(comment - (def s (start (assoc (default-config) - :file-paths->contents {"bar.txt" "bar bar bar"}))) - (stop s)) - diff --git a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/system_test.clj b/cumulus/services/provider-gateway/test/cumulus/provider_gateway/system_test.clj deleted file mode 100644 index 3772f646100..00000000000 --- a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/system_test.clj +++ /dev/null @@ -1,27 +0,0 @@ -(ns cumulus.provider-gateway.system-test - (:require - [clojure.test :refer :all] - [cumulus.provider-gateway.system :as sys] - [cumulus.provider-gateway.util :as util])) - -(deftest get-gateway-providers - (let [sample-config {:providers [{:id "MODAPS" - :config - {:gateway_config - {:activity "MODAPSProviderGatewayActivity" - :sync_activity "MODAPSSyncActivity" - :conn_config {:type "http"} - :num_connections 10}}} - {:id "LARC" :config {}}]} - arn-prefix (format "arn:aws:states:%s:%s:activity:%s-" - (util/get-aws-region) - (util/get-aws-account-id) - (util/get-stack-name))] - (is (= [{:activity-api {:activity-api-type "aws" - :arn (str arn-prefix "MODAPSProviderGatewayActivity")} - :sync-activity-api {:activity-api-type "aws" - :arn (str arn-prefix "MODAPSSyncActivity")} - :conn_config {:type "http"} - :num_connections 10 - :provider-id "MODAPS"}] - (sys/get-gateway-providers sample-config))))) diff --git a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/util_test.clj b/cumulus/services/provider-gateway/test/cumulus/provider_gateway/util_test.clj deleted file mode 100644 index 5236bf2df06..00000000000 --- a/cumulus/services/provider-gateway/test/cumulus/provider_gateway/util_test.clj +++ /dev/null @@ -1,49 +0,0 @@ -(ns cumulus.provider-gateway.util-test - (:require - [clojure.test :refer :all] - [cumulus.provider-gateway.util :as u])) - -(def lookup-data - {:meta {:epsg_thing 44 :collection-id "foo" :date {:year 2017}}}) - -(def lots-special-chars - "abc123!@#$%^&*()_+~`-=[]{});':\"\",./<>?\\|\t ") - -(deftest mustache-replace-test - (are [string expected] - (= expected (u/mustache-replace lookup-data string)) - ;; non replacements - "{" "{" - "{}" "{}" - "{a" "{a" - "a}" "a}" - "}" "}" - "{ald/dafd}" "{ald/dafd}" - - ;; not found - "123{a}456" "123456" - - ;; replacement examples - "{meta.collection-id}" "foo" - - ;; lots of characters - (str lots-special-chars "{meta.collection-id}" lots-special-chars) - (str lots-special-chars "foo" lots-special-chars) - - ;; multiple duplicates - "{meta.collection-id} {meta.collection-id} {meta.collection-id}" "foo foo foo" - "{meta.collection-id} {meta.date.year} {meta.collection-id}" "foo 2017 foo" - - "some{meta.epsg_thing}/{meta.collection-id}/{meta.date.year}end" - "some44/foo/2017end")) - -(deftest populate-message-config-replacements - (is (= {:foo [{:bar "foo"} - {:charlie "The year is 2017"}] - :alpha "44"} - (u/populate-message-config-replacements - lookup-data - {:foo [{:bar "{meta.collection-id}"} - {:charlie "The year is {meta.date.year}"}] - :alpha "{meta.epsg_thing}"})))) - diff --git a/cumulus/services/sfn-scheduler/README.md b/cumulus/services/sfn-scheduler/README.md deleted file mode 100644 index b427148400d..00000000000 --- a/cumulus/services/sfn-scheduler/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# @cumulus/sfn-scheduler - -[![CircleCI](https://circleci.com/gh/cumulus-nasa/cumulus.svg?style=svg)](https://circleci.com/gh/cumulus-nasa/cumulus) - -## What is Cumulus? - -Cumulus is a cloud-based data ingest, archive, distribution and management prototype for NASA's future Earth science data streams. - -[Cumulus Documentation](https://cumulus-nasa.github.io/) - -## Contributing - -See [Cumulus README](https://github.com/cumulus-nasa/cumulus/blob/master/README.md#installing-and-deploying) diff --git a/cumulus/services/sfn-scheduler/config/cloudformation.yml b/cumulus/services/sfn-scheduler/config/cloudformation.yml deleted file mode 100644 index 1d5bf86305b..00000000000 --- a/cumulus/services/sfn-scheduler/config/cloudformation.yml +++ /dev/null @@ -1,47 +0,0 @@ -Parameters: - StateMachinePrefix: - Type: String - Description: An alphanumeric string used to prefix State Machine names - -Resources: - Fn: - Type: AWS::Lambda::Function - Properties: - FunctionName: !Join ['-', [!Ref StackName, task, !Var name]] - Description: 'Runs scheduled discovery / ingest' - Runtime: nodejs6.10 - Code: !Var path - Timeout: 300 - MemorySize: 256 - Handler: index.handler - Role: !GetAtt [TaskExecutionRole, Arn] - - Service: - DependsOn: - - !ResourceName Fn - Properties: - DesiredCount: 1 - - Task: - Properties: - ContainerDefinitions: - - Command: - - !GetAtt [!ResourceName Fn, Arn] - - "--eventJson" - - !Sub >- - { - "resources": { - "stack": "${AWS::StackName}", - "state_machine_prefix": "${StateMachinePrefix}", - "buckets": { - "config": "${ConfigS3Bucket}", - "private": "${PrivateBucketName}", - "public": "${PublicBucketName}" - }, - "tables": { - "connections": "${StackName}-connects", - "locks": "${StackName}-locks" - } - }, - "payload": {"Key": "ingest/collections.yml", "Bucket": "${ConfigS3Bucket}"} - } diff --git a/cumulus/services/sfn-scheduler/index.js b/cumulus/services/sfn-scheduler/index.js deleted file mode 100644 index 5139482811e..00000000000 --- a/cumulus/services/sfn-scheduler/index.js +++ /dev/null @@ -1,117 +0,0 @@ -'use strict'; - -const _ = require('lodash'); -const aws = require('@cumulus/common/aws'); -const log = require('@cumulus/common/log'); -const sf = require('@cumulus/common/step-functions'); -const configUtil = require('@cumulus/common/config'); - -/** - * Runs the given function at the given offset and with the given period thereafter - * - * @param {number} periodMs - The period (ms) at which to run the given fn - * @param {number} offsetMs - The time offset (ms) at which to run the first invocation - * @param {function} fn - The function to call - */ -const doPeriodically = (periodMs, offsetMs, fn) => { - setTimeout(() => { - setInterval(fn, periodMs); - fn(); - }, offsetMs); -}; - -/** - * Starts an ingest for the given collection - * @param {object} resources - An object with keys and values mapping meaningful resource names - * to external URIs, ARNs, etc - * @param {object} provider - The provider configuration object for the collection's provider. - * @param {object} collection - Configuration for the collection to be ingested - */ -const triggerIngest = async (resources, provider, collection) => { - try { - const messageData = sf.constructStepFunctionInput(resources, provider, collection); - const stateMachine = collection.workflow; - const executionName = messageData.ingest_meta.execution_name; - - const message = JSON.stringify(messageData); - log.info(`Starting ingest of ${collection.name}`); - await aws.sfn().startExecution({ - stateMachineArn: stateMachine, - input: message, - name: executionName - }).promise(); - } - catch (err) { - log.error(err); - log.error(err.stack); - } -}; - -/** - * Starts a scheduler service that periodically triggers ingests described in config/collections.yml - * @param {MessageEnvelope} invocation - Configuration and resources for the scheduler - */ -module.exports.handler = async (invocation) => { - try { - const cfParams = { StackName: invocation.resources.stack }; - const cfResources = await aws.cf().describeStackResources(cfParams).promise(); - const cfResourcesById = {}; - const prefix = invocation.resources.state_machine_prefix; - - for (const cfResource of cfResources.StackResources) { - cfResourcesById[cfResource.LogicalResourceId] = cfResource; - } - - const configStr = await aws.getPossiblyRemote(invocation.payload); - const resolver = configUtil.resolveResource(cfResourcesById, prefix); - const config = configUtil.parseConfig(configStr, resolver); - - // Update the keys under the workflows to map identifiers (Arns) to workflow - config.workflows = _.mapKeys(config.workflows, (v, k) => resolver(k)); - - const collectionsByProviderId = _.groupBy(config.collections, (c) => c.provider_id); - for (const provider of config.providers) { - const collections = collectionsByProviderId[provider.id] || []; - let offsetMs = 0; - - // Stagger collection ingests by 2.9 minutes to avoid overwhelming a provider - // 2.9 is chosen because it's longer than a typical fetch cycle and also unlikely - // to evenly divide normal NRT intervals and cause clashes in start time - const staggerMs = 2.9 * 60 * 1000; - - for (const collection of collections) { - const trigger = collection.trigger; - if (trigger && trigger.type === 'interval') { - const periodMs = 1000 * trigger.period_s; - log.info(`Scheduling ${collection.name}.` + - `period=${periodMs}ms, offset=${offsetMs % periodMs}ms`); - doPeriodically(periodMs, offsetMs % periodMs, () => { - triggerIngest(invocation.resources, provider, collection); - }); - offsetMs += staggerMs; - } - else if (trigger && trigger.type === 'once') { - triggerIngest(invocation.resources, provider, collection); - } - } - } - // Run a heartbeat function to avoid terminating - setInterval((() => null), 10000000); - } - catch (err) { - log.error('Scheduler failed: ', err.message); - log.error(err.stack); - throw err; - } -}; - -const localHelpers = require('@cumulus/common/local-helpers'); -const fs = require('fs'); -if (localHelpers.isLocal) { - const stack = process.argv[3]; - const prefix = `${stack.replace(/\W/, 'x')}xx`; - module.exports.handler({ - resources: { state_machine_prefix: prefix, stack: stack }, - payload: fs.readFileSync('../config/collections.yml').toString() - }); -} diff --git a/cumulus/services/sfn-scheduler/package.json b/cumulus/services/sfn-scheduler/package.json deleted file mode 100644 index 82007cc4fff..00000000000 --- a/cumulus/services/sfn-scheduler/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@cumulus/sfn-scheduler", - "private": true, - "version": "1.2.0", - "description": "Runs ingest timers as configured in /config/products.json", - "main": "index.js", - "keywords": [ - "GIBS" - ], - "repository": { - "type": "git", - "url": "https://github.com/cumulus-nasa/cumulus" - }, - "scripts": { - "test": "echo 'no tests'" - }, - "author": "Cumulus Authors", - "license": "Apache-2.0", - "dependencies": { - "@cumulus/common": "^1.2.0", - "lodash": "^4.17.4", - "uuid": "^3.0.1" - } -} diff --git a/cumulus/services/sfn-throttler/config/cloudformation.yml b/cumulus/services/sfn-throttler/config/cloudformation.yml deleted file mode 100644 index 7c4c01825b7..00000000000 --- a/cumulus/services/sfn-throttler/config/cloudformation.yml +++ /dev/null @@ -1,15 +0,0 @@ -Resources: - Fn: - Type: AWS::Lambda::Function - Properties: - FunctionName: !Join ['-', [!Ref StackName, task, !Var name]] - Runtime: nodejs6.10 - Code: !Var path - Handler: index.handler - Role: !GetAtt [TaskExecutionRole, Arn] - - Service: - DependsOn: - - !ResourceName Fn - Properties: - DesiredCount: 1 diff --git a/cumulus/services/sfn-throttler/index.js b/cumulus/services/sfn-throttler/index.js deleted file mode 100644 index c0d71f70205..00000000000 --- a/cumulus/services/sfn-throttler/index.js +++ /dev/null @@ -1,157 +0,0 @@ -'use strict'; - -const aws = require('@cumulus/common/aws'); -const log = require('@cumulus/common/log'); -const _ = require('lodash'); - -/** - * Queries AWS to determine the number of running excutions of a given state machine. - * - * @param {string} stateMachineArn - The ARN of the state machine to check. - * @returns {number} The number of running executions - */ -const runningExecutionCount = async(stateMachineArn) => { - const data = await aws.sfn().listExecutions({ - stateMachineArn, - statusFilter: 'RUNNING' - }).promise(); - - const count = data.executions.length; - return count; -}; - -/** - * Fetches messages from the queue - * - * @param {string} queueUrl - Message Queue - * @param {int} count - number of messages - * @returns {Hash} messages - */ -const fetchMessages = async(queueUrl, count) => { - const maxNumberOfMessages = Math.min(count, 10); - - const data = await aws.sqs().receiveMessage({ - QueueUrl: queueUrl, - MaxNumberOfMessages: maxNumberOfMessages - }).promise(); - - const messages = data.Messages || []; - // eslint-disable-next-line max-len - return messages; -}; - -/** - * Start execution - * - * @param {*} executionParams - Execution parameters - * @returns {*} promise - */ -function startExecution(executionParams) { - return aws.sfn().startExecution(executionParams).promise(); -} - -/** - * Delete a message from an SQS queue. - * - * @param {string} queueUrl - The URL of the SQS queue. - * @param {Object} message - An SQS message, in the same format as received from - * AWS.SQS.receiveMessage(). - * @returns {Promise} - Promise - */ -function deleteMessage(queueUrl, message) { - aws.sqs().deleteMessage({ - QueueUrl: queueUrl, - ReceiptHandle: message.ReceiptHandle - }).promise(); -} - -/** - * Starts Execution - * - * @param {*} queueUrl - QueueUrl - * @param {*} stateMachineArn - StateMachone ARN - * @param {*} count - Count - * @returns {Promise} - Promise - */ -const startExecutions = async(queueUrl, stateMachineArn, count) => { - const messages = await fetchMessages(queueUrl, count); - - if (messages.length > 0) { - log.info(`Starting ${messages.length} executions of ${stateMachineArn}`); - } - - const executionPromises = messages.map((message) => - startExecution(JSON.parse(message.Body)) - .then(() => deleteMessage(queueUrl, message))); - - return Promise.all(executionPromises); -}; - -/** - * Manage Step Function - * - * @param {*} queueUrl - Queue URL - * @param {*} stateMachineArn - State Machine ARN - * @param {*} maxConcurrentExecutions - Max Concurrent Execution - * @returns {*} Not sure - */ -const manageThrottledStepFunction = async(queueUrl, stateMachineArn, maxConcurrentExecutions) => { - const count = await runningExecutionCount(stateMachineArn); - const executionsToStart = maxConcurrentExecutions - count; - - let sleepTimeInMs = 5000; - - if (executionsToStart > 0) { - await startExecutions(queueUrl, stateMachineArn, executionsToStart); - sleepTimeInMs = 1000; - } - - setTimeout( - manageThrottledStepFunction, - sleepTimeInMs, - queueUrl, - stateMachineArn, - maxConcurrentExecutions, - ); -}; - -/** - * Map Logical Ids to Arns - * - * @param {*} resources - resources - * @returns {*} Updated resources - */ -function mapLogicalIdsToArns(resources) { - return _.fromPairs(resources.map((r) => [r.LogicalResourceId, r.PhysicalResourceId])); -} - -/** - * Build Execution Config From Event - * - * @param {*} event - Event - * @returns {*} event - */ -const buildExecutionConfigsFromEvent = async(event) => { - const stackResources = await aws.describeCfStackResources(event.cloudFormationStackName); - const arnsByLogicalId = mapLogicalIdsToArns(stackResources); - - return event.stateMachineConfigs.map((stateMachineConfig) => { - const id = `${event.stateMachinePrefix}${stateMachineConfig.stateMachineName}`; - return _.set(stateMachineConfig, 'stateMachineArn', arnsByLogicalId[id]); - }); -}; - -module.exports.handler = function handler(event) { - log.info('Starting sfn-throttler service'); - - buildExecutionConfigsFromEvent(event) - .then((executionConfigs) => { - executionConfigs.forEach((executionConfig) => { - manageThrottledStepFunction( - executionConfig.sqsQueueUrl, - executionConfig.stateMachineArn, - executionConfig.maxConcurrentExecutions - ); - }); - }); -}; diff --git a/cumulus/services/sfn-throttler/package.json b/cumulus/services/sfn-throttler/package.json deleted file mode 100644 index 39e591fbeb2..00000000000 --- a/cumulus/services/sfn-throttler/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "aws-step-function-throttling-service", - "version": "1.2.0", - "private": true, - "description": "A service to throttle concurrent executions of AWS Step Functions.", - "main": "index.js", - "scripts": { - "test": "echo 'no tests'" - }, - "author": "Cumulus Authors", - "license": "Apache-2.0", - "repository": { - "type": "git", - "url": "https://github.com/cumulus-nasa/cumulus" - }, - "dependencies": { - "aws-sdk": "^2.145.0", - "lodash": "^4.17.4" - }, - "devDependencies": { - "eslint": "^4.18.2", - "eslint-config-airbnb-base": "^12.1.0", - "eslint-plugin-import": "^2.8.0" - } -} diff --git a/cumulus/tasks/discover-pdrs/package-lock.json b/cumulus/tasks/discover-pdrs/package-lock.json deleted file mode 100644 index 54aff4da7a8..00000000000 --- a/cumulus/tasks/discover-pdrs/package-lock.json +++ /dev/null @@ -1,8426 +0,0 @@ -{ - "name": "@cumulus/discover-pdrs", - "version": "1.0.0-1.0.0-beta.9.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@ava/babel-plugin-throws-helper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", - "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=", - "dev": true - }, - "@ava/babel-preset-stage-4": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", - "integrity": "sha1-rmC+iBoLq/fTX1Krp3DR9hlPdr0=", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "package-hash": "1.2.0" - } - }, - "@ava/babel-preset-transform-test-files": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", - "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", - "dev": true, - "requires": { - "@ava/babel-plugin-throws-helper": "2.0.0", - "babel-plugin-espower": "2.3.2" - } - }, - "@ava/write-file-atomic": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", - "integrity": "sha1-1iUEbzSV8fXjchNfRzkJaEtCkkc=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "@concordance/react": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", - "integrity": "sha1-/PPK0CDlEhv9HGHQW8NRaqwl9zQ=", - "dev": true, - "requires": { - "arrify": "1.0.1" - } - }, - "@cumulus/common": { - "version": "1.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@cumulus/common/-/common-1.0.0-beta.11.tgz", - "integrity": "sha1-YXbMjoViDcq58nI+BGE6EaOlRuY=", - "requires": { - "@cumulus/test-data": "1.0.0-beta.11", - "ajv": "5.5.2", - "ajv-cli": "1.1.2", - "async": "2.6.0", - "aws-sdk": "2.188.0", - "babel-core": "6.25.0", - "babel-eslint": "6.1.2", - "babel-loader": "6.4.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-polyfill": "6.23.0", - "babel-preset-env": "1.6.1", - "babel-preset-es2015": "6.24.1", - "cwait": "1.1.1", - "eslint": "3.19.0", - "eslint-config-airbnb": "10.0.1", - "eslint-plugin-import": "1.16.0", - "eslint-plugin-jsx-a11y": "2.2.3", - "eslint-plugin-react": "6.10.3", - "expect.js": "0.3.1", - "exports-loader": "0.6.4", - "follow-redirects": "1.4.1", - "glob": "7.1.2", - "js-yaml": "3.9.1", - "lodash": "4.17.4", - "mocha": "2.5.3", - "mocha-junit-reporter": "1.17.0", - "mocha-webpack": "0.7.0", - "prepend-loader": "0.0.2", - "source-map-support": "0.4.15", - "transform-loader": "0.2.4", - "uuid": "3.2.1", - "webpack": "1.15.0", - "webpack-node-externals": "1.6.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "crypto-browserify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", - "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", - "requires": { - "browserify-aes": "0.4.0", - "pbkdf2-compat": "2.0.1", - "ripemd160": "0.2.0", - "sha.js": "2.2.6" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "node-libs-browser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", - "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.3.0", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.1", - "stream-http": "2.8.0", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.6", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - } - }, - "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "1.0.0" - } - }, - "timers-browserify": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", - "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", - "requires": { - "setimmediate": "1.0.5" - } - }, - "uglify-js": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", - "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", - "requires": { - "async": "0.2.10", - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" - } - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "webpack": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", - "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", - "requires": { - "acorn": "3.3.0", - "async": "1.5.2", - "clone": "1.0.3", - "enhanced-resolve": "0.9.1", - "interpret": "0.6.6", - "loader-utils": "0.2.17", - "memory-fs": "0.3.0", - "mkdirp": "0.5.1", - "node-libs-browser": "0.7.0", - "optimist": "0.6.1", - "supports-color": "3.2.3", - "tapable": "0.1.10", - "uglify-js": "2.7.5", - "watchpack": "0.2.9", - "webpack-core": "0.6.9" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - } - } - } - } - }, - "@cumulus/cumulus-message-adapter-js": { - "version": "0.0.1-beta.2", - "resolved": "https://registry.npmjs.org/@cumulus/cumulus-message-adapter-js/-/cumulus-message-adapter-js-0.0.1-beta.2.tgz", - "integrity": "sha1-v2poDzUgEhhmhqVmgIepDijnmSk=" - }, - "@cumulus/ingest": { - "version": "1.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@cumulus/ingest/-/ingest-1.0.0-beta.11.tgz", - "integrity": "sha1-2+re83mj4+iEDm6c32U1XFn4c84=", - "requires": { - "@cumulus/common": "1.0.0-beta.11", - "@cumulus/pvl": "1.0.0-beta.11", - "@cumulus/test-data": "1.0.0-beta.11", - "aws-sdk": "2.188.0", - "babel-core": "6.25.0", - "babel-loader": "6.4.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-polyfill": "6.23.0", - "babel-preset-env": "1.6.1", - "babel-register": "6.26.0", - "checksum": "0.1.1", - "cksum": "1.3.0", - "got": "7.1.0", - "jsftp": "2.1.3", - "json-loader": "0.5.7", - "lodash.get": "4.4.2", - "mkdirp": "0.5.1", - "moment": "2.20.1", - "node-forge": "0.7.1", - "pino": "4.10.3", - "pump": "1.0.3", - "simplecrawler": "1.1.6", - "ssh2": "0.5.5", - "url-join": "1.1.0" - }, - "dependencies": { - "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=", - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.6", - "trim-right": "1.0.1" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "requires": { - "babel-core": "6.26.0", - "babel-runtime": "6.26.0", - "core-js": "2.5.0", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.15" - }, - "dependencies": { - "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.0", - "debug": "2.6.8", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.6" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "2.5.0", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.8", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "requires": { - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-plain-obj": "1.1.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "1.2.1", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "url-parse-lax": "1.0.0", - "url-to-options": "1.0.1" - } - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "@cumulus/pvl": { - "version": "1.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@cumulus/pvl/-/pvl-1.0.0-beta.11.tgz", - "integrity": "sha1-aLc+kZm6T7uEZ8M51r04iJYKrMc=", - "requires": { - "ava": "0.17.0" - }, - "dependencies": { - "ansi-align": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", - "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", - "requires": { - "string-width": "1.0.2" - } - }, - "auto-bind": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-0.1.0.tgz", - "integrity": "sha1-einvyMI4jT1XjgL8LfUxyB/8HuE=" - }, - "ava": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.17.0.tgz", - "integrity": "sha1-NZ4qiWFoAe8Dkpw88QqdT45FHQI=", - "requires": { - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "0.1.0", - "ava-files": "0.2.0", - "ava-init": "0.1.6", - "babel-code-frame": "6.22.0", - "babel-core": "6.25.0", - "babel-plugin-ava-throws-helper": "0.1.0", - "babel-plugin-detective": "2.0.0", - "babel-plugin-espower": "2.3.2", - "babel-plugin-transform-runtime": "6.23.0", - "babel-preset-es2015": "6.24.1", - "babel-preset-es2015-node4": "2.1.1", - "babel-preset-stage-2": "6.24.1", - "babel-runtime": "6.25.0", - "bluebird": "3.5.0", - "caching-transform": "1.0.1", - "chalk": "1.1.3", - "chokidar": "1.7.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "1.0.2", - "cli-spinners": "0.1.2", - "cli-truncate": "0.2.1", - "co-with-promise": "4.6.0", - "common-path-prefix": "1.0.0", - "convert-source-map": "1.5.0", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "2.6.8", - "empower-core": "0.6.2", - "figures": "1.7.0", - "find-cache-dir": "0.1.1", - "fn-name": "2.0.1", - "get-port": "2.1.0", - "has-flag": "2.0.0", - "ignore-by-default": "1.0.1", - "is-ci": "1.0.10", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "0.2.0", - "is-promise": "2.1.0", - "last-line-stream": "1.0.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.isequal": "4.5.0", - "loud-rejection": "1.6.0", - "matcher": "0.1.2", - "max-timeout": "1.0.0", - "md5-hex": "1.3.0", - "meow": "3.7.0", - "ms": "0.7.3", - "object-assign": "4.1.1", - "observable-to-promise": "0.4.0", - "option-chain": "0.1.1", - "package-hash": "1.2.0", - "pkg-conf": "1.1.3", - "plur": "2.1.2", - "power-assert-context-formatter": "1.1.1", - "power-assert-renderer-assertion": "1.1.1", - "power-assert-renderer-succinct": "1.1.1", - "pretty-ms": "2.1.0", - "repeating": "2.0.1", - "require-precompiled": "0.1.0", - "resolve-cwd": "1.0.0", - "semver": "5.4.1", - "set-immediate-shim": "1.0.1", - "source-map-support": "0.4.15", - "stack-utils": "0.4.0", - "strip-ansi": "3.0.1", - "strip-bom": "2.0.0", - "time-require": "0.1.2", - "unique-temp-dir": "1.0.0", - "update-notifier": "1.0.3" - } - }, - "ava-init": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.1.6.tgz", - "integrity": "sha1-7xntCyS2vzWdrW+63xoF2DY5XJE=", - "requires": { - "arr-exclude": "1.0.0", - "cross-spawn": "4.0.2", - "pinkie-promise": "2.0.1", - "read-pkg-up": "1.0.1", - "the-argv": "1.0.0", - "write-pkg": "1.0.0" - } - }, - "boxen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", - "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", - "requires": { - "ansi-align": "1.1.0", - "camelcase": "2.1.1", - "chalk": "1.1.3", - "cli-boxes": "1.0.0", - "filled-array": "1.1.0", - "object-assign": "4.1.1", - "repeating": "2.0.1", - "string-width": "1.0.2", - "widest-line": "1.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "requires": { - "restore-cursor": "1.0.1" - } - }, - "cli-spinners": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", - "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=" - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "requires": { - "slice-ansi": "0.0.4", - "string-width": "1.0.2" - } - }, - "configstore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", - "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", - "requires": { - "dot-prop": "3.0.0", - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "os-tmpdir": "1.0.2", - "osenv": "0.1.4", - "uuid": "2.0.3", - "write-file-atomic": "1.3.4", - "xdg-basedir": "2.0.0" - } - }, - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "requires": { - "lru-cache": "4.1.1", - "which": "1.3.0" - } - }, - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "requires": { - "is-obj": "1.0.1" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "get-port": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-2.1.0.tgz", - "integrity": "sha1-h4P53OvR7qSVozThpqJR54iHqxo=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "got": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", - "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", - "requires": { - "create-error-class": "3.0.2", - "duplexer2": "0.1.4", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "node-status-codes": "1.0.0", - "object-assign": "4.1.1", - "parse-json": "2.2.0", - "pinkie-promise": "2.0.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", - "timed-out": "3.1.3", - "unzip-response": "1.0.2", - "url-parse-lax": "1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "latest-version": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", - "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", - "requires": { - "package-json": "2.4.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "matcher": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-0.1.2.tgz", - "integrity": "sha1-7yDL3mTCTFDMYa9bg+4LG4/wAQE=", - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "ms": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", - "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=" - }, - "observable-to-promise": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.4.0.tgz", - "integrity": "sha1-KK/nFkUwjy1B1x9HrT/s4aN35Ss=", - "requires": { - "is-observable": "0.2.0", - "symbol-observable": "0.2.4" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" - }, - "option-chain": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-0.1.1.tgz", - "integrity": "sha1-6bgR4AbxwPVIAvKClb/Ilw+Nz70=", - "requires": { - "object-assign": "4.1.1" - } - }, - "package-json": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", - "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", - "requires": { - "got": "5.7.1", - "registry-auth-token": "3.3.1", - "registry-url": "3.1.0", - "semver": "5.4.1" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-1.1.3.tgz", - "integrity": "sha1-N45W1v0T6Iv7b0ol33qD+qvduls=", - "requires": { - "find-up": "1.1.2", - "load-json-file": "1.1.0", - "object-assign": "4.1.1", - "symbol": "0.2.3" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "requires": { - "find-up": "1.1.2" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "resolve-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-1.0.0.tgz", - "integrity": "sha1-Tq7qQe0EDRcCRX32SkKysH0kb58=", - "requires": { - "resolve-from": "2.0.0" - } - }, - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { - "is-plain-obj": "1.1.0" - } - }, - "stack-utils": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-0.4.0.tgz", - "integrity": "sha1-lAy4L8z6hOj/Lz/fKT/ngBa+zNE=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "0.2.1" - } - }, - "timed-out": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", - "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=" - }, - "unzip-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=" - }, - "update-notifier": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", - "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", - "requires": { - "boxen": "0.6.0", - "chalk": "1.1.3", - "configstore": "2.1.0", - "is-npm": "1.0.0", - "latest-version": "2.0.0", - "lazy-req": "1.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "2.0.0" - } - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" - }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "write-json-file": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-1.2.0.tgz", - "integrity": "sha1-LV3+lqvDyIkFfJOXGqQAXvtUgTQ=", - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "sort-keys": "1.1.2", - "write-file-atomic": "1.3.4" - } - }, - "write-pkg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-1.0.0.tgz", - "integrity": "sha1-rriqnU14jh2JPfsIVJaLVDqRn1c=", - "requires": { - "write-json-file": "1.2.0" - } - }, - "xdg-basedir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", - "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", - "requires": { - "os-homedir": "1.0.2" - } - } - } - }, - "@cumulus/test-data": { - "version": "1.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@cumulus/test-data/-/test-data-1.0.0-beta.11.tgz", - "integrity": "sha1-B5MIUPZEUIuP+mLEP9yqSFQ2x5M=" - }, - "Base64": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", - "integrity": "sha1-ujpCMHCOGGcFBl5mur3Uw1z2ACg=" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "acorn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", - "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==" - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "requires": { - "acorn": "3.3.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" - } - } - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "ajv-cli": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ajv-cli/-/ajv-cli-1.1.2.tgz", - "integrity": "sha1-fxbcTrELUzALztDm100P9nBx1aY=", - "requires": { - "ajv": "4.11.8", - "ajv-pack": "0.2.7", - "fast-json-patch": "0.5.7", - "glob": "7.1.2", - "minimist": "1.2.0" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=" - }, - "ajv-pack": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/ajv-pack/-/ajv-pack-0.2.7.tgz", - "integrity": "sha1-vdNA8cZ5kQjXqsEpdaAAxuKjYsg=", - "requires": { - "js-beautify": "1.7.5", - "require-from-string": "1.2.1" - } - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "2.1.1" - } - }, - "ansi-escapes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", - "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "requires": { - "sprintf-js": "1.0.3" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-exclude": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", - "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=" - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "array.prototype.find": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", - "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.10.0" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "requires": { - "util": "0.10.3" - } - }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "requires": { - "lodash": "4.17.4" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "auto-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", - "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=", - "dev": true - }, - "ava": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.21.0.tgz", - "integrity": "sha1-zY2Oo1RvVxUN6jhUi59y+MpYPSk=", - "dev": true, - "requires": { - "@ava/babel-preset-stage-4": "1.1.0", - "@ava/babel-preset-transform-test-files": "3.0.0", - "@ava/write-file-atomic": "2.2.0", - "@concordance/react": "1.0.0", - "ansi-escapes": "2.0.0", - "ansi-styles": "3.2.0", - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "1.1.0", - "ava-init": "0.2.1", - "babel-core": "6.25.0", - "bluebird": "3.5.0", - "caching-transform": "1.0.1", - "chalk": "2.1.0", - "chokidar": "1.7.0", - "clean-stack": "1.3.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "2.1.0", - "cli-spinners": "1.0.0", - "cli-truncate": "1.1.0", - "co-with-promise": "4.6.0", - "code-excerpt": "2.1.0", - "common-path-prefix": "1.0.0", - "concordance": "3.0.0", - "convert-source-map": "1.5.0", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "2.6.8", - "dot-prop": "4.2.0", - "empower-core": "0.6.2", - "equal-length": "1.0.1", - "figures": "2.0.0", - "find-cache-dir": "1.0.0", - "fn-name": "2.0.1", - "get-port": "3.1.0", - "globby": "6.1.0", - "has-flag": "2.0.0", - "hullabaloo-config-manager": "1.1.1", - "ignore-by-default": "1.0.1", - "import-local": "0.1.1", - "indent-string": "3.2.0", - "is-ci": "1.0.10", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "0.2.0", - "is-promise": "2.1.0", - "js-yaml": "3.9.1", - "last-line-stream": "1.0.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.flatten": "4.4.0", - "loud-rejection": "1.6.0", - "make-dir": "1.0.0", - "matcher": "1.0.0", - "md5-hex": "2.0.0", - "meow": "3.7.0", - "ms": "2.0.0", - "multimatch": "2.1.0", - "observable-to-promise": "0.5.0", - "option-chain": "1.0.0", - "package-hash": "2.0.0", - "pkg-conf": "2.0.0", - "plur": "2.1.2", - "pretty-ms": "2.1.0", - "require-precompiled": "0.1.0", - "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", - "slash": "1.0.0", - "source-map-support": "0.4.15", - "stack-utils": "1.0.1", - "strip-ansi": "4.0.0", - "strip-bom-buf": "1.0.0", - "supports-color": "4.2.1", - "time-require": "0.1.2", - "trim-off-newlines": "1.0.1", - "unique-temp-dir": "1.0.0", - "update-notifier": "2.2.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 - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha1-rFvs8U+iG5nGySynp9fP1bF+dD4=", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" - } - }, - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "dev": true, - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "package-hash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", - "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "lodash.flattendeep": "4.4.0", - "md5-hex": "2.0.0", - "release-zalgo": "1.0.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" - } - }, - "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "ava-files": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ava-files/-/ava-files-0.2.0.tgz", - "integrity": "sha1-x7i24uDOpjtXpuJ+DbFFx8Gc/iA=", - "requires": { - "auto-bind": "0.1.0", - "bluebird": "3.5.0", - "globby": "6.1.0", - "ignore-by-default": "1.0.1", - "lodash.flatten": "4.4.0", - "multimatch": "2.1.0", - "slash": "1.0.0" - }, - "dependencies": { - "auto-bind": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-0.1.0.tgz", - "integrity": "sha1-einvyMI4jT1XjgL8LfUxyB/8HuE=" - } - } - }, - "ava-init": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", - "integrity": "sha1-daxMhVMyYpDShm5jti+nA1aEvVg=", - "dev": true, - "requires": { - "arr-exclude": "1.0.0", - "execa": "0.7.0", - "has-yarn": "1.0.0", - "read-pkg-up": "2.0.0", - "write-pkg": "3.1.0" - } - }, - "aws-sdk": { - "version": "2.188.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.188.0.tgz", - "integrity": "sha1-kGKrx9umOTRZ+i80I89dKU8ARhE=", - "requires": { - "buffer": "4.9.1", - "events": "1.1.1", - "jmespath": "0.15.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "uuid": "3.1.0", - "xml2js": "0.4.17", - "xmlbuilder": "4.2.1" - }, - "dependencies": { - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" - } - } - }, - "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "convert-source-map": "1.5.0", - "debug": "2.6.8", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.6" - } - }, - "babel-eslint": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-6.1.2.tgz", - "integrity": "sha1-UpNBn+NnLWZZjTJ9qWlFZ7pqXy8=", - "requires": { - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "lodash.assign": "4.2.0", - "lodash.pickby": "4.6.0" - } - }, - "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.6", - "trim-right": "1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" - } - } - }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", - "requires": { - "babel-runtime": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "2.5.0", - "regenerator-runtime": "0.11.1" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "requires": { - "babel-runtime": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-explode-class": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", - "requires": { - "babel-helper-bindify-decorators": "6.24.1", - "babel-runtime": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "lodash": "4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "requires": { - "babel-runtime": "6.25.0", - "babel-template": "6.25.0" - } - }, - "babel-loader": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", - "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", - "requires": { - "find-cache-dir": "0.1.1", - "loader-utils": "0.2.17", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "requires": { - "find-up": "1.1.2" - } - } - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-ava-throws-helper": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-ava-throws-helper/-/babel-plugin-ava-throws-helper-0.1.0.tgz", - "integrity": "sha1-lREHcIoSIIAmv4ykzvGKh7ybDP4=", - "requires": { - "babel-template": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-detective": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-detective/-/babel-plugin-detective-2.0.0.tgz", - "integrity": "sha1-bmQug8IqM1J5dU6+LXVNJjX0nxM=" - }, - "babel-plugin-espower": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", - "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", - "requires": { - "babel-generator": "6.25.0", - "babylon": "6.17.4", - "call-matcher": "1.0.1", - "core-js": "2.5.0", - "espower-location-detector": "1.0.0", - "espurify": "1.7.0", - "estraverse": "4.2.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=" - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=" - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" - }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-generators": "6.13.0", - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", - "requires": { - "babel-helper-explode-class": "6.24.1", - "babel-plugin-syntax-decorators": "6.13.0", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" - }, - "dependencies": { - "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=", - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "2.5.0", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.8", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "requires": { - "babel-runtime": "6.25.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.25.0", - "regexpu-core": "2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "2.5.0", - "regenerator-runtime": "0.11.1" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "requires": { - "regenerator-transform": "0.10.1" - } - }, - "babel-plugin-transform-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", - "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "requires": { - "babel-runtime": "6.25.0", - "core-js": "2.5.0", - "regenerator-runtime": "0.10.5" - } - }, - "babel-preset-env": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", - "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.11.3", - "invariant": "2.2.2", - "semver": "5.4.1" - } - }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0" - } - }, - "babel-preset-es2015-node4": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015-node4/-/babel-preset-es2015-node4-2.1.1.tgz", - "integrity": "sha1-4x8pCFm1hhnIz6JB0bC8kA+UHNs=", - "requires": { - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1" - } - }, - "babel-preset-es2017": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz", - "integrity": "sha1-WXvq37n38gi8/YoS6bKym4svFNE=", - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1" - } - }, - "babel-preset-stage-2": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", - "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", - "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0", - "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-decorators": "6.24.1", - "babel-preset-stage-3": "6.24.1" - } - }, - "babel-preset-stage-3": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-generator-functions": "6.24.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-object-rest-spread": "6.26.0" - } - }, - "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "requires": { - "babel-core": "6.25.0", - "babel-runtime": "6.25.0", - "core-js": "2.5.0", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.15" - } - }, - "babel-runtime": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", - "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", - "requires": { - "core-js": "2.5.0", - "regenerator-runtime": "0.10.5" - } - }, - "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "requires": { - "babel-runtime": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "requires": { - "babel-code-frame": "6.22.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "debug": "2.6.8", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "requires": { - "babel-runtime": "6.25.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", - "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" - }, - "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=" - }, - "binary-extensions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", - "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=" - }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" - }, - "boxen": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.1.tgz", - "integrity": "sha1-DxHn/jRO25OXl3/BPt5/ZNlWSB0=", - "dev": true, - "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.1.0", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha1-rFvs8U+iG5nGySynp9fP1bF+dD4=", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" - } - }, - "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "browserify-aes": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", - "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", - "requires": { - "inherits": "2.0.3" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "requires": { - "pako": "0.2.9" - } - }, - "browserslist": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", - "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", - "requires": { - "caniuse-lite": "1.0.30000792", - "electron-to-chromium": "1.3.31" - } - }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=" - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", - "isarray": "1.0.0" - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "caching-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", - "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" - }, - "dependencies": { - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - } - } - }, - "call-matcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", - "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", - "requires": { - "core-js": "2.5.0", - "deep-equal": "1.0.1", - "espurify": "1.7.0", - "estraverse": "4.2.0" - } - }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=" - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "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=" - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - } - }, - "caniuse-lite": { - "version": "1.0.30000792", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz", - "integrity": "sha1-0M6pgfgRjzlhRxr7tDyaHlu/AzI=" - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" - }, - "cdata": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/cdata/-/cdata-0.1.1.tgz", - "integrity": "sha512-H0gfEXypjHisCI4xkBfh6wAyzDESay6sscM5xeJMQu7zlYrq/jHzxzOfLElg/ULpkAGNomxzENi6tY6wXWNt9w==" - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" - }, - "checksum": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/checksum/-/checksum-0.1.1.tgz", - "integrity": "sha1-3GUn1MkL6FYNvR7Uzs8yl9Uo6ek=", - "requires": { - "optimist": "0.3.7" - }, - "dependencies": { - "optimist": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", - "requires": { - "wordwrap": "0.0.3" - } - } - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "ci-info": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", - "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=" - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" - }, - "cksum": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/cksum/-/cksum-1.3.0.tgz", - "integrity": "sha1-MMstqRX/DlnIaYupv5sC0swkqRE=" - }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true - }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=" - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" - }, - "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-spinners": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.0.tgz", - "integrity": "sha1-75h+09SDkaw9q5GAtAanQhgNbmo=", - "dev": true - }, - "cli-truncate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", - "integrity": "sha1-Ky39g8U8/TVyuH/E1DCoCK+wQIY=", - "dev": true, - "requires": { - "slice-ansi": "1.0.0", - "string-width": "2.1.1" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" - } - } - }, - "clone": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", - "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "co-with-promise": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", - "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", - "requires": { - "pinkie-promise": "1.0.0" - } - }, - "code-excerpt": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.0.tgz", - "integrity": "sha1-XcwIHoj0p+O1VOnjXX7yMtR/gUc=", - "dev": true, - "requires": { - "convert-to-spaces": "1.0.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "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=" - }, - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" - }, - "common-path-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", - "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" - } - }, - "concordance": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", - "integrity": "sha1-sihq9UQF/JlfxzRbCxBtjdBzyyk=", - "dev": true, - "requires": { - "date-time": "2.1.0", - "esutils": "2.0.2", - "fast-diff": "1.1.1", - "function-name-support": "0.2.0", - "js-string-escape": "1.0.1", - "lodash.clonedeep": "4.5.0", - "lodash.flattendeep": "4.4.0", - "lodash.merge": "4.6.0", - "md5-hex": "2.0.0", - "semver": "5.4.1", - "well-known-symbols": "1.0.0" - }, - "dependencies": { - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "dev": true, - "requires": { - "md5-o-matic": "0.1.1" - } - } - } - }, - "config-chain": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", - "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", - "requires": { - "ini": "1.3.4", - "proto-list": "1.2.4" - } - }, - "configstore": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", - "integrity": "sha1-CU7mYquD+tmRdnjeEU+q6o/NypA=", - "dev": true, - "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.0.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.1.0", - "xdg-basedir": "3.0.0" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "0.1.4" - } - }, - "constants-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", - "integrity": "sha1-kld9tSe6bEzwpFaNhLwDH0QeIfI=" - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=" - }, - "convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", - "dev": true - }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "requires": { - "buf-compare": "1.0.1", - "is-error": "2.2.1" - } - }, - "core-js": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", - "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=" - }, - "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-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "requires": { - "capture-stack-trace": "1.0.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.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" - }, - "crypto-browserify": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", - "integrity": "sha1-ubEdvm2WUd2IKgHmzEZ99xjs8Yk=", - "requires": { - "pbkdf2-compat": "2.0.1", - "ripemd160": "0.2.0", - "sha.js": "2.2.6" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "requires": { - "array-find-index": "1.0.2" - } - }, - "cwait": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cwait/-/cwait-1.1.1.tgz", - "integrity": "sha512-VRS0E6E41fK2QDYIGsVeE6FRXoH5Vf3hGtDL/jZxh3W+KPVVoEggDem5xJveihgZrd+xmYSqGPIUi/jv5zXcxQ==", - "requires": { - "cdata": "0.1.1" - } - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "requires": { - "es5-ext": "0.10.38" - } - }, - "damerau-levenshtein": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", - "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=" - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" - }, - "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha1-AobRtMdpYzs8oT4eYlWNLb3C66I=", - "dev": true, - "requires": { - "time-zone": "1.0.0" - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "1.0.0" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" - }, - "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=" - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - } - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" - }, - "dependencies": { - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - } - } - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "requires": { - "repeating": "2.0.1" - } - }, - "diff": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", - "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==", - "dev": true - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "requires": { - "esutils": "2.0.2" - } - }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "requires": { - "readable-stream": "2.3.3" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "eastasianwidth": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.1.1.tgz", - "integrity": "sha1-RNZW3p2kFWlEZzNTZfsxR7hXK3w=" - }, - "editorconfig": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz", - "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==", - "requires": { - "bluebird": "3.5.0", - "commander": "2.13.0", - "lru-cache": "3.2.0", - "semver": "5.4.1", - "sigmund": "1.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", - "requires": { - "pseudomap": "1.0.2" - } - } - } - }, - "electron-to-chromium": { - "version": "1.3.31", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz", - "integrity": "sha512-XE4CLbswkZgZFn34cKFy1xaX+F5LHxeDLjY1+rsK9asDzknhbrd9g/n/01/acbU25KTsUSiLKwvlLyA+6XLUOA==" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "empower-core": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", - "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", - "requires": { - "call-signature": "0.0.2", - "core-js": "2.5.0" - } - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "1.4.0" - } - }, - "enhanced-resolve": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", - "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.2.0", - "tapable": "0.1.10" - }, - "dependencies": { - "memory-fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", - "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=" - } - } - }, - "equal-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", - "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", - "dev": true - }, - "errno": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", - "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", - "requires": { - "prr": "1.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es-abstract": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", - "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", - "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" - } - }, - "es5-ext": { - "version": "0.10.38", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.38.tgz", - "integrity": "sha512-jCMyePo7AXbUESwbl8Qi01VSH2piY9s/a3rSU/5w/MlTIx8HPL1xn2InGN8ejt/xulcJgnTO7vqNtOAxzYd2Kg==", - "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, - "es6-error": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", - "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", - "dev": true - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, - "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=" - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" - } - }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "requires": { - "babel-code-frame": "6.22.0", - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "debug": "2.6.8", - "doctrine": "2.1.0", - "escope": "3.6.0", - "espree": "3.5.2", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.7", - "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.17.1", - "is-resolvable": "1.1.0", - "js-yaml": "3.9.1", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", - "require-uncached": "1.0.3", - "shelljs": "0.7.8", - "strip-bom": "3.0.0", - "strip-json-comments": "2.0.1", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" - } - }, - "eslint-config-airbnb": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-10.0.1.tgz", - "integrity": "sha1-pHAQhkbWxF4fY5oD8R1QShqkrtw=", - "requires": { - "eslint-config-airbnb-base": "5.0.3" - } - }, - "eslint-config-airbnb-base": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-5.0.3.tgz", - "integrity": "sha1-lxSsNews1/qw1E0Uip+R2ylEB00=" - }, - "eslint-import-resolver-node": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", - "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", - "requires": { - "debug": "2.6.8", - "object-assign": "4.1.1", - "resolve": "1.5.0" - } - }, - "eslint-plugin-import": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-1.16.0.tgz", - "integrity": "sha1-svoH68xTUE0PKkR3WC7Iv/GHG58=", - "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.8", - "doctrine": "1.3.0", - "es6-map": "0.1.5", - "es6-set": "0.1.5", - "eslint-import-resolver-node": "0.2.3", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "lodash.endswith": "4.2.1", - "lodash.find": "4.6.0", - "lodash.findindex": "4.6.0", - "minimatch": "3.0.4", - "object-assign": "4.1.1", - "pkg-dir": "1.0.0", - "pkg-up": "1.0.0" - }, - "dependencies": { - "doctrine": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.3.0.tgz", - "integrity": "sha1-E+dWgrVVGEJCdvfBc3g0Vu+RPSY=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "requires": { - "find-up": "1.1.2" - } - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-2.2.3.tgz", - "integrity": "sha1-TjXLcbin23AqxBXIBuuOjZ6mxl0=", - "requires": { - "damerau-levenshtein": "1.0.4", - "jsx-ast-utils": "1.4.1", - "object-assign": "4.1.1" - } - }, - "eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", - "requires": { - "array.prototype.find": "2.0.4", - "doctrine": "1.5.0", - "has": "1.0.1", - "jsx-ast-utils": "1.4.1", - "object.assign": "4.1.0" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - } - } - }, - "espower-location-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", - "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", - "requires": { - "is-url": "1.2.2", - "path-is-absolute": "1.0.1", - "source-map": "0.5.6", - "xtend": "4.0.1" - } - }, - "espree": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", - "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", - "requires": { - "acorn": "5.3.0", - "acorn-jsx": "3.0.1" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=" - }, - "espurify": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", - "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", - "requires": { - "core-js": "2.5.0" - } - }, - "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "requires": { - "estraverse": "4.2.0" - } - }, - "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", - "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38" - } - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "requires": { - "fill-range": "2.2.3" - } - }, - "expect.js": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", - "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=" - }, - "exports-loader": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.4.tgz", - "integrity": "sha1-1w/GEhl1s1/BKDDPUnVL4nQPyIY=", - "requires": { - "loader-utils": "1.1.0", - "source-map": "0.5.6" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" - }, - "fast-diff": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", - "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=", - "dev": true - }, - "fast-json-parse": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", - "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==" - }, - "fast-json-patch": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-0.5.7.tgz", - "integrity": "sha1-taj0nSWWJFlu+YuHLz/aiVtNhmU=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "fast-safe-stringify": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz", - "integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==" - }, - "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=", - "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "filled-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", - "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=" - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "1.0.1", - "make-dir": "1.0.0", - "pkg-dir": "2.0.0" - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", - "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" - } - }, - "flatstr": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.5.tgz", - "integrity": "sha1-W0UbCMvUji6sVKK74L9GFlqhS+M=" - }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=" - }, - "follow-redirects": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", - "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", - "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" - } - } - } - }, - "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": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "1.0.2" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true, - "requires": { - "samsam": "1.2.1" - } - }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha1-MoK3E/s62A7eDp/PRhG1qm/AM/Q=", - "optional": true, - "requires": { - "nan": "2.6.2", - "node-pre-gyp": "0.6.36" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "bundled": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - } - } - }, - "ftp-response-parser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ftp-response-parser/-/ftp-response-parser-1.0.1.tgz", - "integrity": "sha1-O50z+O3V+45HALj3eMRi5bFYH4k=", - "requires": { - "readable-stream": "1.1.14" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function-name-support": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", - "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", - "dev": true - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "requires": { - "is-property": "1.0.2" - } - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" - }, - "get-port": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.1.0.tgz", - "integrity": "sha1-7wGxioTKZIaXD/meVERhQac//T4=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "2.0.1" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=" - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - } - } - }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=" - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "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=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" - }, - "has-symbol-support-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz", - "integrity": "sha512-JkaetveU7hFbqnAC1EV1sF4rlojU2D4Usc5CmS69l6NfmPDnpnFUegzFg33eDkkpNCxZ0mQp65HwUDrNFS/8MA==" - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "1.4.1" - } - }, - "has-yarn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", - "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha1-bWDjSzq7yDEwYsO3mO+NkBoHrzw=" - }, - "http-browserify": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", - "integrity": "sha1-M3la3nLfiKz7/TZ3PO/tp2RzWyA=", - "requires": { - "Base64": "0.2.1", - "inherits": "2.0.3" - } - }, - "https-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz", - "integrity": "sha1-s//f5zSyo9Sp79WOhlTJH86G6v0=" - }, - "hullabaloo-config-manager": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", - "integrity": "sha1-HZEXgTEprQNf2ehHfq8GaREmn+M=", - "dev": true, - "requires": { - "dot-prop": "4.2.0", - "es6-error": "4.0.2", - "graceful-fs": "4.1.11", - "indent-string": "3.2.0", - "json5": "0.5.1", - "lodash.clonedeep": "4.5.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.isequal": "4.5.0", - "lodash.merge": "4.6.0", - "md5-hex": "2.0.0", - "package-hash": "2.0.0", - "pkg-dir": "2.0.0", - "resolve-from": "3.0.0", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "dev": true, - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "package-hash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", - "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "lodash.flattendeep": "4.4.0", - "md5-hex": "2.0.0", - "release-zalgo": "1.0.0" - } - } - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" - }, - "ignore": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", - "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "import-local": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", - "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", - "dev": true, - "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" - }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.2.0", - "figures": "1.7.0", - "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - }, - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "requires": { - "restore-cursor": "1.0.1" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "interpret": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", - "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=" - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "irregular-plurals": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.3.0.tgz", - "integrity": "sha1-evBpMb33S+M9z1haE+BvzMFsrs8=" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "1.10.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" - }, - "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", - "requires": { - "ci-info": "1.0.0" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-error": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", - "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=" - }, - "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": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "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=" - }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-my-json-valid": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", - "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" - }, - "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.2.2" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" - }, - "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", - "requires": { - "symbol-observable": "0.2.4" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "requires": { - "is-path-inside": "1.0.1" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "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==" - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" - }, - "is-url": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", - "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=" - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "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=" - }, - "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" - } - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" - } - }, - "jade": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", - "requires": { - "commander": "0.6.1", - "mkdirp": "0.3.0" - }, - "dependencies": { - "commander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=" - }, - "mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" - } - } - }, - "jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" - }, - "js-beautify": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.7.5.tgz", - "integrity": "sha512-9OhfAqGOrD7hoQBLJMTA+BKuKmoEtTJXzZ7WDF/9gvjtey1koVLuZqIY6c51aPDjbNdNtIXAkiWKVhziawE9Og==", - "requires": { - "config-chain": "1.1.11", - "editorconfig": "0.13.3", - "mkdirp": "0.5.1", - "nopt": "3.0.6" - } - }, - "js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", - "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==", - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - }, - "jsftp": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/jsftp/-/jsftp-2.1.3.tgz", - "integrity": "sha512-r79EVB8jaNAZbq8hvanL8e8JGu2ZNr2bXdHC4ZdQhRImpSPpnWwm5DYVzQ5QxJmtGtKhNNuvqGgbNaFl604fEQ==", - "requires": { - "debug": "3.1.0", - "ftp-response-parser": "1.0.1", - "once": "1.4.0", - "parse-listing": "1.1.3", - "stream-combiner": "0.2.2", - "unorm": "1.4.1" - }, - "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" - } - } - } - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" - }, - "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=" - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "0.0.0" - } - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "requires": { - "graceful-fs": "4.1.11" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" - }, - "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=" - }, - "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" - } - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "requires": { - "graceful-fs": "4.1.11" - } - }, - "last-line-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", - "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", - "requires": { - "through2": "2.0.3" - } - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "requires": { - "package-json": "4.0.1" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "lazy-req": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", - "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=" - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "1.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "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.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "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.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.clonedeepwith": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", - "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", - "dev": true - }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" - }, - "lodash.endswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", - "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=" - }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" - }, - "lodash.findindex": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.findindex/-/lodash.findindex-4.6.0.tgz", - "integrity": "sha1-oyRd7mH7m24GJLU1ElYku2nBEQY=" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, - "lodash.merge": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", - "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", - "dev": true - }, - "lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=" - }, - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "3.0.2" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "make-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", - "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, - "matcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.0.0.tgz", - "integrity": "sha1-qvDEgW62m5IJRnQXViXzRmsOPhk=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "max-timeout": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/max-timeout/-/max-timeout-1.0.0.tgz", - "integrity": "sha1-to9povmeC0dv1Msj4gWcp1BxXh8=" - }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", - "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "1.1.5" - } - }, - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=" - }, - "memory-fs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", - "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", - "requires": { - "errno": "0.1.6", - "readable-stream": "2.3.3" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "0.2.1" - } - } - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.3" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true - }, - "mimic-response": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", - "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", - "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", - "requires": { - "commander": "2.3.0", - "debug": "2.2.0", - "diff": "1.4.0", - "escape-string-regexp": "1.0.2", - "glob": "3.2.11", - "growl": "1.9.2", - "jade": "0.26.3", - "mkdirp": "0.5.1", - "supports-color": "1.2.0", - "to-iso-string": "0.0.2" - }, - "dependencies": { - "commander": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", - "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=" - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "requires": { - "ms": "0.7.1" - } - }, - "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=" - }, - "escape-string-regexp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=" - }, - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "requires": { - "inherits": "2.0.3", - "minimatch": "0.3.0" - } - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" - }, - "supports-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", - "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=" - } - } - }, - "mocha-junit-reporter": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-1.17.0.tgz", - "integrity": "sha1-LlFJ7UD8XS48px5C21qx/snG2Fw=", - "requires": { - "debug": "2.6.8", - "md5": "2.2.1", - "mkdirp": "0.5.1", - "strip-ansi": "4.0.0", - "xml": "1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "mocha-webpack": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/mocha-webpack/-/mocha-webpack-0.7.0.tgz", - "integrity": "sha1-065ax93PKc+UfosO7Xc/pCKODM4=", - "requires": { - "anymatch": "1.3.2", - "fs-extra": "0.30.0", - "glob-parent": "2.0.0", - "interpret": "1.1.0", - "invariant": "2.2.2", - "is-glob": "2.0.1", - "loader-utils": "0.2.17", - "lodash": "4.17.4", - "normalize-path": "2.1.1", - "object-hash": "1.2.0", - "webpack-info-plugin": "0.1.0", - "webpack-sources": "0.1.5", - "yargs": "4.8.1" - }, - "dependencies": { - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "0.2.1" - } - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" - }, - "yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", - "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "lodash.assign": "4.2.0", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "window-size": "0.2.0", - "y18n": "3.2.1", - "yargs-parser": "2.4.1" - } - } - } - }, - "moment": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", - "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" - } - }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=" - }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "optional": true - }, - "native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "node-forge": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", - "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=" - }, - "node-libs-browser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.6.0.tgz", - "integrity": "sha1-JEgG1E0xngSLyGB7XMTq+aKdLjw=", - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "0.0.1", - "crypto-browserify": "3.2.8", - "domain-browser": "1.1.7", - "events": "1.1.1", - "http-browserify": "1.7.0", - "https-browserify": "0.0.0", - "os-browserify": "0.1.2", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "1.1.14", - "stream-browserify": "1.0.0", - "string_decoder": "0.10.31", - "timers-browserify": "1.4.2", - "tty-browserify": "0.0.0", - "url": "0.10.3", - "util": "0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "node-status-codes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", - "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=" - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1.1.1" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "1.0.2" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "2.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", - "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==" - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "has-symbols": "1.0.0", - "object-keys": "1.0.11" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "observable-to-promise": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", - "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", - "dev": true, - "requires": { - "is-observable": "0.2.0", - "symbol-observable": "1.0.4" - }, - "dependencies": { - "symbol-observable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", - "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", - "dev": true - } - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } - }, - "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.1.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" - } - }, - "option-chain": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-1.0.0.tgz", - "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", - "dev": true - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "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", - "wordwrap": "1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - } - } - }, - "os-browserify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", - "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "1.0.0" - } - }, - "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=" - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true - }, - "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-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "requires": { - "p-finally": "1.0.0" - } - }, - "package-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", - "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", - "requires": { - "md5-hex": "1.3.0" - } - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.1", - "registry-url": "3.1.0", - "semver": "5.4.1" - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "1.3.1" - } - }, - "parse-listing": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/parse-listing/-/parse-listing-1.1.3.tgz", - "integrity": "sha1-qlRvV/3BKc+/mUXNS3V7FLBhgt0=" - }, - "parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=" - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" - }, - "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=" - }, - "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=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "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.3.0" - } - }, - "pbkdf2-compat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", - "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=" - }, - "pinkie-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", - "requires": { - "pinkie": "1.0.0" - } - }, - "pino": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/pino/-/pino-4.10.3.tgz", - "integrity": "sha512-IKXK0dcFQYITgOJBEvy1RCI5gUz+VVERXMhIvk5Ie+k9zzrbwXDs38M3H6JhoCHR58exyNpNcEKBrW4JC2P0pg==", - "requires": { - "chalk": "2.3.0", - "fast-json-parse": "1.0.3", - "fast-safe-stringify": "1.2.3", - "flatstr": "1.0.5", - "pump": "2.0.1", - "quick-format-unescaped": "1.1.2", - "split2": "2.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "pkg-conf": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", - "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "load-json-file": "2.0.0" - } - }, - "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" - } - }, - "pkg-up": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", - "requires": { - "find-up": "1.1.2" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - } - } - }, - "plur": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", - "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", - "requires": { - "irregular-plurals": "1.3.0" - } - }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=" - }, - "power-assert-context-formatter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", - "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", - "requires": { - "core-js": "2.5.0", - "power-assert-context-traversal": "1.1.1" - } - }, - "power-assert-context-traversal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", - "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", - "requires": { - "core-js": "2.5.0", - "estraverse": "4.2.0" - } - }, - "power-assert-renderer-assertion": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz", - "integrity": "sha1-y/wOd+AIao+Wrz8djme57n4ozpg=", - "requires": { - "power-assert-renderer-base": "1.1.1", - "power-assert-util-string-width": "1.1.1" - } - }, - "power-assert-renderer-base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", - "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=" - }, - "power-assert-renderer-diagram": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", - "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", - "requires": { - "core-js": "2.5.0", - "power-assert-renderer-base": "1.1.1", - "power-assert-util-string-width": "1.1.1", - "stringifier": "1.3.0" - } - }, - "power-assert-renderer-succinct": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-succinct/-/power-assert-renderer-succinct-1.1.1.tgz", - "integrity": "sha1-wqRosjgiq9b4Diq6UyI0ewnfR24=", - "requires": { - "core-js": "2.5.0", - "power-assert-renderer-diagram": "1.1.2" - } - }, - "power-assert-util-string-width": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz", - "integrity": "sha1-vmWet5N/3S5smncmjar2S9W3xZI=", - "requires": { - "eastasianwidth": "0.1.1" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "prepend-loader": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/prepend-loader/-/prepend-loader-0.0.2.tgz", - "integrity": "sha1-nhQshdw+PEA/Vwf73rhEf4OkN+Y=", - "requires": { - "loader-utils": "0.2.17" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - } - } - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" - }, - "pretty-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", - "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", - "requires": { - "is-finite": "1.0.2", - "parse-ms": "1.0.1", - "plur": "1.0.0" - }, - "dependencies": { - "plur": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", - "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=" - } - } - }, - "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - }, - "quick-format-unescaped": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz", - "integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=", - "requires": { - "fast-safe-stringify": "1.2.3" - } - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", - "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.2.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" - } - } - } - }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } - } - }, - "read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "requires": { - "pinkie-promise": "2.0.1", - "readable-stream": "2.3.3" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - } - } - }, - "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.4.0", - "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.1.0", - "read-pkg": "2.0.0" - } - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" - } - }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { - "resolve": "1.5.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "2.0.1" - } - } - } - }, - "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=" - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" - }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "private": "0.1.7" - } - }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "requires": { - "regenerate": "1.3.2", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "registry-auth-token": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", - "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", - "requires": { - "rc": "1.2.1", - "safe-buffer": "5.1.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "requires": { - "rc": "1.2.1" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "requires": { - "jsesc": "0.5.0" - } - }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "4.0.2" - } - }, - "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { - "is-finite": "1.0.2" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "require-precompiled": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", - "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=" - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" - } - } - }, - "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "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.1", - "signal-exit": "3.0.2" - } - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { - "align-text": "0.1.4" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "requires": { - "glob": "7.1.2" - } - }, - "ripemd160": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", - "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=" - }, - "robots-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-1.0.2.tgz", - "integrity": "sha512-c979P2TTe5Ezjg+VV5XWC59bab1w1Xyb8KLnJ5SKuwN7YH+ys8Y5KCZ2OP2J7zXVE7Yq0eYWlrqUM/urIbx9sg==" - }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "requires": { - "once": "1.4.0" - } - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=" - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" - }, - "samsam": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.2.1.tgz", - "integrity": "sha1-7dOQk6MYQ3DLhZJDsr3yVefY6mc=", - "dev": true - }, - "sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha1-4FnAnYVx8FQII3M0M1BdOi8AsY4=" - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "requires": { - "semver": "5.4.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "sha.js": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", - "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=" - }, - "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 - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "requires": { - "glob": "7.1.2", - "interpret": "1.1.0", - "rechoir": "0.6.2" - }, - "dependencies": { - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" - } - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "simplecrawler": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/simplecrawler/-/simplecrawler-1.1.6.tgz", - "integrity": "sha512-TsXJVzrKZuExJPq7juipV76KIE+D3a9IWWve6v+BBCuwFWhFYl9BOFZtARWBwb08KtI4eTZ/GGu9QuboJzo62w==", - "requires": { - "async": "2.6.0", - "iconv-lite": "0.4.19", - "robots-parser": "1.0.2", - "urijs": "1.19.0" - } - }, - "sinon": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", - "integrity": "sha1-Ah/WS1TLd9nS+w1Dze3652KcOjY=", - "dev": true, - "requires": { - "diff": "3.3.0", - "formatio": "1.2.0", - "lolex": "1.6.0", - "native-promise-only": "0.8.1", - "path-to-regexp": "1.7.0", - "samsam": "1.2.1", - "text-encoding": "0.6.4", - "type-detect": "4.0.3" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha1-BE8aSdiEL/MHqta1Be0Xi9lQE00=", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0" - } - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "requires": { - "is-plain-obj": "1.1.0" - } - }, - "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=" - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" - }, - "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "requires": { - "source-map": "0.5.6" - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" - }, - "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "requires": { - "through2": "2.0.3" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "ssh2": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.5.5.tgz", - "integrity": "sha1-x3gezS7OcwSiU89iD6taXCK7IjU=", - "requires": { - "ssh2-streams": "0.1.20" - } - }, - "ssh2-streams": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.1.20.tgz", - "integrity": "sha1-URGNFUVV31Rp7h9n4M8efoosDjo=", - "requires": { - "asn1": "0.2.3", - "semver": "5.4.1", - "streamsearch": "0.1.2" - } - }, - "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", - "dev": true - }, - "stream-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", - "integrity": "sha1-v5tKv7QrJ011FHnkTg/yZWtvEZM=", - "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "requires": { - "duplexer": "0.1.1", - "through": "2.3.8" - } - }, - "stream-http": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", - "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.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=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", - "requires": { - "safe-buffer": "5.1.1" - } - }, - "stringifier": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", - "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", - "requires": { - "core-js": "2.5.0", - "traverse": "0.6.6", - "type-name": "2.0.2" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-bom-buf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "symbol": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/symbol/-/symbol-0.2.3.tgz", - "integrity": "sha1-O5hzuKkB5Hxu/iFSajrDcu8ou8c=" - }, - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" - }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", - "slice-ansi": "0.0.4", - "string-width": "2.1.1" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" - } - } - }, - "tapable": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", - "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=" - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "0.7.0" - } - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "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=" - }, - "the-argv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/the-argv/-/the-argv-1.0.0.tgz", - "integrity": "sha1-AIRwUAVzDdhNt1UlPJMa45jblSI=" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - }, - "time-require": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", - "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", - "requires": { - "chalk": "0.4.0", - "date-time": "0.1.1", - "pretty-ms": "0.2.2", - "text-table": "0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=" - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" - } - }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=" - }, - "parse-ms": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", - "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=" - }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "requires": { - "parse-ms": "0.1.2" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=" - } - } - }, - "time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, - "timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", - "requires": { - "process": "0.11.10" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" - }, - "to-iso-string": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", - "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=" - }, - "transform-loader": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/transform-loader/-/transform-loader-0.2.4.tgz", - "integrity": "sha1-5ch4d7qW1R0/IlNoWHtG4ibRzsk=", - "requires": { - "loader-utils": "1.1.0" - } - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - }, - "trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "1.1.2" - } - }, - "type-detect": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", - "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", - "dev": true - }, - "type-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", - "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "uglify-js": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", - "integrity": "sha1-ZeovswWck5RpLxX+2HwrNsFrmt8=", - "requires": { - "async": "0.2.10", - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" - }, - "uid2": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", - "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "1.0.0" - } - }, - "unique-temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", - "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", - "requires": { - "mkdirp": "0.5.1", - "os-tmpdir": "1.0.2", - "uid2": "0.0.3" - } - }, - "unorm": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz", - "integrity": "sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA=" - }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - }, - "update-notifier": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.2.0.tgz", - "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", - "dev": true, - "requires": { - "boxen": "1.2.1", - "chalk": "1.1.3", - "configstore": "3.1.1", - "import-lazy": "2.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" - } - }, - "urijs": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.0.tgz", - "integrity": "sha512-Qs2odXn0hST5VSPVjpi73CMqtbAoanahaqWBujGU+IyMrMqpWcIhDewxQRhCkmqYxuyvICDcSuLdv2O7ncWBGw==" - }, - "url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "url-join": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", - "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=" - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "requires": { - "prepend-http": "1.0.4" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "requires": { - "os-homedir": "1.0.2" - } - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", - "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", - "requires": { - "async": "0.9.2", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" - } - } - }, - "webpack": { - "version": "1.12.15", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.15.tgz", - "integrity": "sha1-1GETNaXUVSaYUK65tK50zDUZIoY=", - "requires": { - "async": "1.5.2", - "clone": "1.0.3", - "enhanced-resolve": "0.9.1", - "esprima": "2.7.3", - "interpret": "0.6.6", - "loader-utils": "0.2.17", - "memory-fs": "0.3.0", - "mkdirp": "0.5.1", - "node-libs-browser": "0.6.0", - "optimist": "0.6.1", - "supports-color": "3.2.3", - "tapable": "0.1.10", - "uglify-js": "2.6.4", - "watchpack": "0.2.9", - "webpack-core": "0.6.9" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", - "requires": { - "source-list-map": "0.1.8", - "source-map": "0.4.4" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "webpack-info-plugin": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/webpack-info-plugin/-/webpack-info-plugin-0.1.0.tgz", - "integrity": "sha1-3/56qI/LlsWcxFCXZCHq+YzbeQE=", - "requires": { - "chalk": "1.1.3" - } - }, - "webpack-node-externals": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz", - "integrity": "sha1-Iyxi7GCSsQBjWj0p2DwXRxKN+b0=" - }, - "webpack-sources": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz", - "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", - "requires": { - "source-list-map": "0.1.8", - "source-map": "0.5.6" - } - }, - "well-known-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", - "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=", - "dev": true - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "widest-line": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", - "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", - "requires": { - "string-width": "1.0.2" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "requires": { - "mkdirp": "0.5.1" - } - }, - "write-file-atomic": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.1.0.tgz", - "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "write-json-file": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.2.0.tgz", - "integrity": "sha1-UYYlBruzthnu+reFnx/WxtBTCHY=", - "dev": true, - "requires": { - "detect-indent": "5.0.0", - "graceful-fs": "4.1.11", - "make-dir": "1.0.0", - "pify": "2.3.0", - "sort-keys": "1.1.2", - "write-file-atomic": "2.1.0" - }, - "dependencies": { - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", - "dev": true - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "1.1.0" - } - } - } - }, - "write-pkg": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", - "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", - "dev": true, - "requires": { - "sort-keys": "2.0.0", - "write-json-file": "2.2.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true - }, - "xml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=" - }, - "xml2js": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", - "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", - "requires": { - "sax": "1.2.1", - "xmlbuilder": "4.2.1" - } - }, - "xmlbuilder": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", - "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", - "requires": { - "lodash": "4.17.4" - } - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - } - } - }, - "yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", - "requires": { - "camelcase": "3.0.0", - "lodash.assign": "4.2.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - } - } - } - } -} diff --git a/cumulus/tasks/parse-pdr/package-lock.json b/cumulus/tasks/parse-pdr/package-lock.json deleted file mode 100644 index 9317b828051..00000000000 --- a/cumulus/tasks/parse-pdr/package-lock.json +++ /dev/null @@ -1,4487 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@ava/babel-plugin-throws-helper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", - "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=" - }, - "@ava/babel-preset-stage-4": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", - "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "package-hash": "1.2.0" - } - }, - "@ava/babel-preset-transform-test-files": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", - "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", - "requires": { - "@ava/babel-plugin-throws-helper": "2.0.0", - "babel-plugin-espower": "2.3.2" - } - }, - "@ava/write-file-atomic": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", - "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "@concordance/react": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", - "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", - "requires": { - "arrify": "1.0.1" - } - }, - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "requires": { - "string-width": "2.1.1" - } - }, - "ansi-escapes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", - "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "requires": { - "sprintf-js": "1.0.3" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-exclude": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", - "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=" - }, - "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==" - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "requires": { - "util": "0.10.3" - } - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "auto-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", - "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=" - }, - "ava": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.21.0.tgz", - "integrity": "sha512-+ZjahyjqyzkPLlFZe2OoLmiE3aaQ2jK5h74wrkuX5I+J6LpNAPoQ8X/EhqEtKEjuWwmniLAjnVjZ7OY8rWdJwA==", - "requires": { - "@ava/babel-preset-stage-4": "1.1.0", - "@ava/babel-preset-transform-test-files": "3.0.0", - "@ava/write-file-atomic": "2.2.0", - "@concordance/react": "1.0.0", - "ansi-escapes": "2.0.0", - "ansi-styles": "3.2.0", - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "1.1.0", - "ava-init": "0.2.1", - "babel-core": "6.25.0", - "bluebird": "3.5.0", - "caching-transform": "1.0.1", - "chalk": "2.1.0", - "chokidar": "1.7.0", - "clean-stack": "1.3.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "2.1.0", - "cli-spinners": "1.0.0", - "cli-truncate": "1.1.0", - "co-with-promise": "4.6.0", - "code-excerpt": "2.1.0", - "common-path-prefix": "1.0.0", - "concordance": "3.0.0", - "convert-source-map": "1.5.0", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "2.6.8", - "dot-prop": "4.2.0", - "empower-core": "0.6.2", - "equal-length": "1.0.1", - "figures": "2.0.0", - "find-cache-dir": "1.0.0", - "fn-name": "2.0.1", - "get-port": "3.1.0", - "globby": "6.1.0", - "has-flag": "2.0.0", - "hullabaloo-config-manager": "1.1.1", - "ignore-by-default": "1.0.1", - "import-local": "0.1.1", - "indent-string": "3.2.0", - "is-ci": "1.0.10", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "0.2.0", - "is-promise": "2.1.0", - "js-yaml": "3.9.1", - "last-line-stream": "1.0.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.flatten": "4.4.0", - "loud-rejection": "1.6.0", - "make-dir": "1.0.0", - "matcher": "1.0.0", - "md5-hex": "2.0.0", - "meow": "3.7.0", - "ms": "2.0.0", - "multimatch": "2.1.0", - "observable-to-promise": "0.5.0", - "option-chain": "1.0.0", - "package-hash": "2.0.0", - "pkg-conf": "2.0.0", - "plur": "2.1.2", - "pretty-ms": "2.1.0", - "require-precompiled": "0.1.0", - "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", - "slash": "1.0.0", - "source-map-support": "0.4.15", - "stack-utils": "1.0.1", - "strip-ansi": "4.0.0", - "strip-bom-buf": "1.0.0", - "supports-color": "4.2.1", - "time-require": "0.1.2", - "trim-off-newlines": "1.0.1", - "unique-temp-dir": "1.0.0", - "update-notifier": "2.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" - } - }, - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "package-hash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", - "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", - "requires": { - "graceful-fs": "4.1.11", - "lodash.flattendeep": "4.4.0", - "md5-hex": "2.0.0", - "release-zalgo": "1.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - }, - "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "ava-init": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", - "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", - "requires": { - "arr-exclude": "1.0.0", - "execa": "0.7.0", - "has-yarn": "1.0.0", - "read-pkg-up": "2.0.0", - "write-pkg": "3.1.0" - } - }, - "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "convert-source-map": "1.5.0", - "debug": "2.6.8", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.6" - } - }, - "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.6", - "trim-right": "1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "requires": { - "babel-runtime": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "lodash": "4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "requires": { - "babel-runtime": "6.25.0", - "babel-template": "6.25.0" - } - }, - "babel-loader": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.1.tgz", - "integrity": "sha1-uHE0yLEuPkwqlOBUYIW8aAorhIg=", - "requires": { - "find-cache-dir": "1.0.0", - "loader-utils": "1.1.0", - "mkdirp": "0.5.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-espower": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", - "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", - "requires": { - "babel-generator": "6.25.0", - "babylon": "6.17.4", - "call-matcher": "1.0.1", - "core-js": "2.5.0", - "espower-location-detector": "1.0.0", - "espurify": "1.7.0", - "estraverse": "4.2.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.25.0", - "regexpu-core": "2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.25.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "requires": { - "babel-runtime": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "requires": { - "babel-runtime": "6.25.0", - "core-js": "2.5.0", - "regenerator-runtime": "0.10.5" - } - }, - "babel-preset-es2017": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz", - "integrity": "sha1-WXvq37n38gi8/YoS6bKym4svFNE=", - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1" - } - }, - "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "requires": { - "babel-core": "6.25.0", - "babel-runtime": "6.25.0", - "core-js": "2.5.0", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.15" - } - }, - "babel-runtime": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", - "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", - "requires": { - "core-js": "2.5.0", - "regenerator-runtime": "0.10.5" - } - }, - "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "requires": { - "babel-runtime": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "requires": { - "babel-code-frame": "6.22.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "debug": "2.6.8", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "requires": { - "babel-runtime": "6.25.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", - "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" - }, - "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=" - }, - "binary-extensions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", - "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=" - }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" - }, - "boxen": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.1.tgz", - "integrity": "sha1-DxHn/jRO25OXl3/BPt5/ZNlWSB0=", - "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.1.0", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "requires": { - "color-convert": "1.9.0" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" - } - }, - "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "browserify-aes": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", - "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", - "requires": { - "inherits": "2.0.3" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "requires": { - "pako": "0.2.9" - } - }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=" - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", - "isarray": "1.0.0" - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "caching-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", - "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" - }, - "dependencies": { - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - } - } - }, - "call-matcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", - "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", - "requires": { - "core-js": "2.5.0", - "deep-equal": "1.0.1", - "espurify": "1.7.0", - "estraverse": "4.2.0" - } - }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=" - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "ci-info": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", - "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=" - }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=" - }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=" - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" - }, - "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=", - "requires": { - "restore-cursor": "2.0.0" - } - }, - "cli-spinners": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.0.tgz", - "integrity": "sha1-75h+09SDkaw9q5GAtAanQhgNbmo=" - }, - "cli-truncate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", - "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", - "requires": { - "slice-ansi": "1.0.0", - "string-width": "2.1.1" - } - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" - } - } - }, - "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" - }, - "co-with-promise": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", - "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", - "requires": { - "pinkie-promise": "1.0.0" - } - }, - "code-excerpt": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.0.tgz", - "integrity": "sha1-XcwIHoj0p+O1VOnjXX7yMtR/gUc=", - "requires": { - "convert-to-spaces": "1.0.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "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=" - }, - "common-path-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", - "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concordance": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", - "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", - "requires": { - "date-time": "2.1.0", - "esutils": "2.0.2", - "fast-diff": "1.1.1", - "function-name-support": "0.2.0", - "js-string-escape": "1.0.1", - "lodash.clonedeep": "4.5.0", - "lodash.flattendeep": "4.4.0", - "lodash.merge": "4.6.0", - "md5-hex": "2.0.0", - "semver": "5.4.1", - "well-known-symbols": "1.0.0" - }, - "dependencies": { - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "requires": { - "md5-o-matic": "0.1.1" - } - } - } - }, - "configstore": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", - "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", - "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.0.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.1.0", - "xdg-basedir": "3.0.0" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=" - }, - "convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=" - }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "requires": { - "buf-compare": "1.0.1", - "is-error": "2.2.1" - } - }, - "core-js": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", - "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=" - }, - "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-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "requires": { - "capture-stack-trace": "1.0.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=", - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "crypto-browserify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", - "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", - "requires": { - "browserify-aes": "0.4.0", - "pbkdf2-compat": "2.0.1", - "ripemd160": "0.2.0", - "sha.js": "2.2.6" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "requires": { - "array-find-index": "1.0.2" - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" - }, - "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", - "requires": { - "time-zone": "1.0.0" - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "requires": { - "repeating": "2.0.1" - } - }, - "diff": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", - "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==" - }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "requires": { - "is-obj": "1.0.1" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "empower-core": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", - "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", - "requires": { - "call-signature": "0.0.2", - "core-js": "2.5.0" - } - }, - "enhanced-resolve": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", - "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.2.0", - "tapable": "0.1.10" - }, - "dependencies": { - "memory-fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", - "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=" - } - } - }, - "equal-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", - "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=" - }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "requires": { - "prr": "0.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es6-error": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", - "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=" - }, - "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=" - }, - "espower-location-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", - "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", - "requires": { - "is-url": "1.2.2", - "path-is-absolute": "1.0.1", - "source-map": "0.5.6", - "xtend": "4.0.1" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" - }, - "espurify": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", - "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", - "requires": { - "core-js": "2.5.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "requires": { - "fill-range": "2.2.3" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "fast-diff": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", - "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=" - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" - }, - "fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "requires": { - "is-object": "1.0.1", - "merge-descriptors": "1.0.1" - } - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "requires": { - "commondir": "1.0.1", - "make-dir": "1.0.0", - "pkg-dir": "2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "2.0.0" - } - }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=" - }, - "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": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "1.0.2" - } - }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "requires": { - "samsam": "1.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "optional": true, - "requires": { - "nan": "2.6.2", - "node-pre-gyp": "0.6.36" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "bundled": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - } - } - }, - "function-name-support": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", - "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=" - }, - "get-port": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.1.0.tgz", - "integrity": "sha1-7wGxioTKZIaXD/meVERhQac//T4=" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "2.0.1" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - } - } - }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" - }, - "has-yarn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", - "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=" - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" - }, - "hullabaloo-config-manager": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", - "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", - "requires": { - "dot-prop": "4.2.0", - "es6-error": "4.0.2", - "graceful-fs": "4.1.11", - "indent-string": "3.2.0", - "json5": "0.5.1", - "lodash.clonedeep": "4.5.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.isequal": "4.5.0", - "lodash.merge": "4.6.0", - "md5-hex": "2.0.0", - "package-hash": "2.0.0", - "pkg-dir": "2.0.0", - "resolve-from": "3.0.0", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "package-hash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", - "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", - "requires": { - "graceful-fs": "4.1.11", - "lodash.flattendeep": "4.4.0", - "md5-hex": "2.0.0", - "release-zalgo": "1.0.0" - } - } - } - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" - }, - "import-local": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", - "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", - "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" - }, - "interpret": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", - "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=" - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "requires": { - "loose-envify": "1.3.1" - } - }, - "irregular-plurals": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.3.0.tgz", - "integrity": "sha512-njf5A+Mxb3kojuHd1DzISjjIl+XhyzovXEOyPPSzdQozq/Lf2tN27mOrAAsxEPZxpn6I4MGzs1oo9TxXxPFpaA==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "1.10.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", - "requires": { - "ci-info": "1.0.0" - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-error": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", - "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=" - }, - "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": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "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=" - }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" - }, - "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.2.2" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" - }, - "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", - "requires": { - "symbol-observable": "0.2.4" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-url": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", - "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=" - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "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=" - }, - "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" - } - }, - "js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=" - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", - "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==", - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "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" - } - }, - "last-line-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", - "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", - "requires": { - "through2": "2.0.3" - } - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "requires": { - "package-json": "4.0.1" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "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=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "lodash.clonedeepwith": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", - "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, - "lodash.merge": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", - "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" - }, - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=" - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "3.0.2" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "make-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", - "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", - "requires": { - "pify": "2.3.0" - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, - "matcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.0.0.tgz", - "integrity": "sha1-qvDEgW62m5IJRnQXViXzRmsOPhk=", - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=" - }, - "memory-fs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", - "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "0.2.1" - } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.3" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" - } - }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "optional": true - }, - "native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=" - }, - "node-libs-browser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", - "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.3.0", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.4", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "1.0.2" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "2.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "observable-to-promise": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", - "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", - "requires": { - "is-observable": "0.2.0", - "symbol-observable": "1.0.4" - }, - "dependencies": { - "symbol-observable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", - "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" - } - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "1.1.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" - } - }, - "option-chain": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-1.0.0.tgz", - "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=" - }, - "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "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=" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "1.1.0" - } - }, - "package-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", - "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", - "requires": { - "md5-hex": "1.3.0" - } - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.1", - "registry-url": "3.1.0", - "semver": "5.4.1" - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "1.3.1" - } - }, - "parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=" - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "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=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - } - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "requires": { - "pify": "2.3.0" - } - }, - "pbkdf2-compat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", - "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=" - }, - "pinkie-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", - "requires": { - "pinkie": "1.0.0" - } - }, - "pkg-conf": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", - "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", - "requires": { - "find-up": "2.1.0", - "load-json-file": "2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "requires": { - "find-up": "2.1.0" - } - }, - "plur": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", - "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", - "requires": { - "irregular-plurals": "1.3.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" - }, - "pretty-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", - "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", - "requires": { - "is-finite": "1.0.2", - "parse-ms": "1.0.1", - "plur": "1.0.0" - }, - "dependencies": { - "plur": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", - "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=" - } - } - }, - "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "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.2.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" - } - } - } - }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "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=", - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "2.0.1" - } - } - } - }, - "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=" - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" - }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "requires": { - "regenerate": "1.3.2", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "registry-auth-token": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", - "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", - "requires": { - "rc": "1.2.1", - "safe-buffer": "5.1.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "requires": { - "rc": "1.2.1" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "requires": { - "jsesc": "0.5.0" - } - }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "requires": { - "es6-error": "4.0.2" - } - }, - "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { - "is-finite": "1.0.2" - } - }, - "require-precompiled": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", - "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=" - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "requires": { - "resolve-from": "3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" - } - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { - "align-text": "0.1.4" - } - }, - "ripemd160": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", - "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=" - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - }, - "samsam": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.2.1.tgz", - "integrity": "sha1-7dOQk6MYQ3DLhZJDsr3yVefY6mc=" - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "requires": { - "semver": "5.4.1" - } - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "sha.js": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", - "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "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=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sinon": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", - "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", - "requires": { - "diff": "3.3.0", - "formatio": "1.2.0", - "lolex": "1.6.0", - "native-promise-only": "0.8.1", - "path-to-regexp": "1.7.0", - "samsam": "1.2.1", - "text-encoding": "0.6.4", - "type-detect": "4.0.3" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - }, - "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==", - "requires": { - "is-fullwidth-code-point": "2.0.0" - } - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "requires": { - "is-plain-obj": "1.1.0" - } - }, - "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=" - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" - }, - "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "requires": { - "source-map": "0.5.6" - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=" - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.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=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.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=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-bom-buf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" - }, - "tapable": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", - "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=" - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "requires": { - "execa": "0.7.0" - } - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=" - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - }, - "time-require": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", - "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", - "requires": { - "chalk": "0.4.0", - "date-time": "0.1.1", - "pretty-ms": "0.2.2", - "text-table": "0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=" - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" - } - }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=" - }, - "parse-ms": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", - "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=" - }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "requires": { - "parse-ms": "0.1.2" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=" - } - } - }, - "time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=" - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, - "timers-browserify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", - "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", - "requires": { - "setimmediate": "1.0.5" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - }, - "trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=" - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" - }, - "type-detect": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", - "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=" - }, - "uglify-js": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", - "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", - "requires": { - "async": "0.2.10", - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" - }, - "uid2": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", - "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "requires": { - "crypto-random-string": "1.0.0" - } - }, - "unique-temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", - "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", - "requires": { - "mkdirp": "0.5.1", - "os-tmpdir": "1.0.2", - "uid2": "0.0.3" - } - }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" - }, - "update-notifier": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.2.0.tgz", - "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", - "requires": { - "boxen": "1.2.1", - "chalk": "1.1.3", - "configstore": "3.1.1", - "import-lazy": "2.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "requires": { - "prepend-http": "1.0.4" - } - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - } - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", - "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", - "requires": { - "async": "0.9.2", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" - } - } - }, - "webpack": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", - "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", - "requires": { - "acorn": "3.3.0", - "async": "1.5.2", - "clone": "1.0.2", - "enhanced-resolve": "0.9.1", - "interpret": "0.6.6", - "loader-utils": "0.2.17", - "memory-fs": "0.3.0", - "mkdirp": "0.5.1", - "node-libs-browser": "0.7.0", - "optimist": "0.6.1", - "supports-color": "3.2.3", - "tapable": "0.1.10", - "uglify-js": "2.7.5", - "watchpack": "0.2.9", - "webpack-core": "0.6.9" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", - "requires": { - "source-list-map": "0.1.8", - "source-map": "0.4.4" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "well-known-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", - "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=" - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "requires": { - "isexe": "2.0.0" - } - }, - "widest-line": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", - "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", - "requires": { - "string-width": "1.0.2" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.1.0.tgz", - "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==", - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "write-json-file": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.2.0.tgz", - "integrity": "sha1-UYYlBruzthnu+reFnx/WxtBTCHY=", - "requires": { - "detect-indent": "5.0.0", - "graceful-fs": "4.1.11", - "make-dir": "1.0.0", - "pify": "2.3.0", - "sort-keys": "1.1.2", - "write-file-atomic": "2.1.0" - }, - "dependencies": { - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { - "is-plain-obj": "1.1.0" - } - } - } - }, - "write-pkg": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", - "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", - "requires": { - "sort-keys": "2.0.0", - "write-json-file": "2.2.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - } - } - } - } -} diff --git a/cumulus/tasks/copy-idx-from-s3-to-efs/config/cloudformation.yml b/tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/copy-idx-from-s3-to-efs/config/cloudformation.yml rename to tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/config/cloudformation.yml diff --git a/cumulus/tasks/copy-idx-from-s3-to-efs/index.js b/tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/index.js similarity index 100% rename from cumulus/tasks/copy-idx-from-s3-to-efs/index.js rename to tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/index.js diff --git a/cumulus/tasks/copy-idx-from-s3-to-efs/package.json b/tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/package.json similarity index 100% rename from cumulus/tasks/copy-idx-from-s3-to-efs/package.json rename to tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/package.json diff --git a/cumulus/tasks/copy-idx-from-s3-to-efs/test/ast_l1t.yml b/tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/test/ast_l1t.yml similarity index 100% rename from cumulus/tasks/copy-idx-from-s3-to-efs/test/ast_l1t.yml rename to tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/test/ast_l1t.yml diff --git a/cumulus/tasks/copy-idx-from-s3-to-efs/test/copy-idx-spec.js b/tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/test/copy-idx-spec.js similarity index 100% rename from cumulus/tasks/copy-idx-from-s3-to-efs/test/copy-idx-spec.js rename to tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/test/copy-idx-spec.js diff --git a/cumulus/tasks/copy-idx-from-s3-to-efs/test/input_payload.json b/tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/test/input_payload.json similarity index 100% rename from cumulus/tasks/copy-idx-from-s3-to-efs/test/input_payload.json rename to tasks/.not_CMA_compliant/copy-idx-from-s3-to-efs/test/input_payload.json diff --git a/cumulus/tasks/delete-ingest-tracking-data/README.md b/tasks/.not_CMA_compliant/delete-ingest-tracking-data/README.md similarity index 100% rename from cumulus/tasks/delete-ingest-tracking-data/README.md rename to tasks/.not_CMA_compliant/delete-ingest-tracking-data/README.md diff --git a/cumulus/tasks/delete-ingest-tracking-data/config/cloudformation.yml b/tasks/.not_CMA_compliant/delete-ingest-tracking-data/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/delete-ingest-tracking-data/config/cloudformation.yml rename to tasks/.not_CMA_compliant/delete-ingest-tracking-data/config/cloudformation.yml diff --git a/cumulus/tasks/delete-ingest-tracking-data/index.js b/tasks/.not_CMA_compliant/delete-ingest-tracking-data/index.js similarity index 100% rename from cumulus/tasks/delete-ingest-tracking-data/index.js rename to tasks/.not_CMA_compliant/delete-ingest-tracking-data/index.js diff --git a/cumulus/tasks/delete-ingest-tracking-data/package.json b/tasks/.not_CMA_compliant/delete-ingest-tracking-data/package.json similarity index 100% rename from cumulus/tasks/delete-ingest-tracking-data/package.json rename to tasks/.not_CMA_compliant/delete-ingest-tracking-data/package.json diff --git a/cumulus/tasks/delete-ingest-tracking-data/test/filter-payload-spec.js b/tasks/.not_CMA_compliant/delete-ingest-tracking-data/test/filter-payload-spec.js similarity index 100% rename from cumulus/tasks/delete-ingest-tracking-data/test/filter-payload-spec.js rename to tasks/.not_CMA_compliant/delete-ingest-tracking-data/test/filter-payload-spec.js diff --git a/cumulus/tasks/delete-pdr-ftp/.babelrc b/tasks/.not_CMA_compliant/delete-pdr-ftp/.babelrc similarity index 100% rename from cumulus/tasks/delete-pdr-ftp/.babelrc rename to tasks/.not_CMA_compliant/delete-pdr-ftp/.babelrc diff --git a/cumulus/tasks/delete-pdr-ftp/.gitignore b/tasks/.not_CMA_compliant/delete-pdr-ftp/.gitignore similarity index 100% rename from cumulus/tasks/delete-pdr-ftp/.gitignore rename to tasks/.not_CMA_compliant/delete-pdr-ftp/.gitignore diff --git a/cumulus/tasks/delete-pdr-ftp/README.md b/tasks/.not_CMA_compliant/delete-pdr-ftp/README.md similarity index 100% rename from cumulus/tasks/delete-pdr-ftp/README.md rename to tasks/.not_CMA_compliant/delete-pdr-ftp/README.md diff --git a/cumulus/tasks/delete-pdr-ftp/config/cloudformation.yml b/tasks/.not_CMA_compliant/delete-pdr-ftp/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/delete-pdr-ftp/config/cloudformation.yml rename to tasks/.not_CMA_compliant/delete-pdr-ftp/config/cloudformation.yml diff --git a/cumulus/tasks/delete-pdr-ftp/ftp_util.js b/tasks/.not_CMA_compliant/delete-pdr-ftp/ftp_util.js similarity index 100% rename from cumulus/tasks/delete-pdr-ftp/ftp_util.js rename to tasks/.not_CMA_compliant/delete-pdr-ftp/ftp_util.js diff --git a/cumulus/tasks/delete-pdr-ftp/index.js b/tasks/.not_CMA_compliant/delete-pdr-ftp/index.js similarity index 100% rename from cumulus/tasks/delete-pdr-ftp/index.js rename to tasks/.not_CMA_compliant/delete-pdr-ftp/index.js diff --git a/cumulus/tasks/delete-pdr-ftp/package.json b/tasks/.not_CMA_compliant/delete-pdr-ftp/package.json similarity index 100% rename from cumulus/tasks/delete-pdr-ftp/package.json rename to tasks/.not_CMA_compliant/delete-pdr-ftp/package.json diff --git a/cumulus/tasks/delete-pdr-ftp/test/delete-pdr-ftp-spec.js b/tasks/.not_CMA_compliant/delete-pdr-ftp/test/delete-pdr-ftp-spec.js similarity index 100% rename from cumulus/tasks/delete-pdr-ftp/test/delete-pdr-ftp-spec.js rename to tasks/.not_CMA_compliant/delete-pdr-ftp/test/delete-pdr-ftp-spec.js diff --git a/cumulus/tasks/delete-pdr-s3/.babelrc b/tasks/.not_CMA_compliant/delete-pdr-s3/.babelrc similarity index 100% rename from cumulus/tasks/delete-pdr-s3/.babelrc rename to tasks/.not_CMA_compliant/delete-pdr-s3/.babelrc diff --git a/cumulus/tasks/delete-pdr-s3/.gitignore b/tasks/.not_CMA_compliant/delete-pdr-s3/.gitignore similarity index 100% rename from cumulus/tasks/delete-pdr-s3/.gitignore rename to tasks/.not_CMA_compliant/delete-pdr-s3/.gitignore diff --git a/cumulus/tasks/delete-pdr-s3/README.md b/tasks/.not_CMA_compliant/delete-pdr-s3/README.md similarity index 100% rename from cumulus/tasks/delete-pdr-s3/README.md rename to tasks/.not_CMA_compliant/delete-pdr-s3/README.md diff --git a/cumulus/tasks/delete-pdr-s3/config/cloudformation.yml b/tasks/.not_CMA_compliant/delete-pdr-s3/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/delete-pdr-s3/config/cloudformation.yml rename to tasks/.not_CMA_compliant/delete-pdr-s3/config/cloudformation.yml diff --git a/cumulus/tasks/delete-pdr-s3/index.js b/tasks/.not_CMA_compliant/delete-pdr-s3/index.js similarity index 100% rename from cumulus/tasks/delete-pdr-s3/index.js rename to tasks/.not_CMA_compliant/delete-pdr-s3/index.js diff --git a/cumulus/tasks/delete-pdr-s3/package.json b/tasks/.not_CMA_compliant/delete-pdr-s3/package.json similarity index 100% rename from cumulus/tasks/delete-pdr-s3/package.json rename to tasks/.not_CMA_compliant/delete-pdr-s3/package.json diff --git a/cumulus/tasks/delete-pdr-s3/test/delete-pdr-s3.test.js b/tasks/.not_CMA_compliant/delete-pdr-s3/test/delete-pdr-s3.test.js similarity index 100% rename from cumulus/tasks/delete-pdr-s3/test/delete-pdr-s3.test.js rename to tasks/.not_CMA_compliant/delete-pdr-s3/test/delete-pdr-s3.test.js diff --git a/cumulus/tasks/discover-cmr-granules/README.md b/tasks/.not_CMA_compliant/discover-cmr-granules/README.md similarity index 100% rename from cumulus/tasks/discover-cmr-granules/README.md rename to tasks/.not_CMA_compliant/discover-cmr-granules/README.md diff --git a/cumulus/tasks/discover-cmr-granules/config/cloudformation.yml b/tasks/.not_CMA_compliant/discover-cmr-granules/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/discover-cmr-granules/config/cloudformation.yml rename to tasks/.not_CMA_compliant/discover-cmr-granules/config/cloudformation.yml diff --git a/cumulus/tasks/discover-cmr-granules/index.js b/tasks/.not_CMA_compliant/discover-cmr-granules/index.js similarity index 100% rename from cumulus/tasks/discover-cmr-granules/index.js rename to tasks/.not_CMA_compliant/discover-cmr-granules/index.js diff --git a/cumulus/tasks/discover-cmr-granules/package.json b/tasks/.not_CMA_compliant/discover-cmr-granules/package.json similarity index 100% rename from cumulus/tasks/discover-cmr-granules/package.json rename to tasks/.not_CMA_compliant/discover-cmr-granules/package.json diff --git a/cumulus/tasks/discover-cmr-granules/test/discover-cmr-granules-spec.js b/tasks/.not_CMA_compliant/discover-cmr-granules/test/discover-cmr-granules-spec.js similarity index 100% rename from cumulus/tasks/discover-cmr-granules/test/discover-cmr-granules-spec.js rename to tasks/.not_CMA_compliant/discover-cmr-granules/test/discover-cmr-granules-spec.js diff --git a/cumulus/tasks/discover-http-tiles/README.md b/tasks/.not_CMA_compliant/discover-http-tiles/README.md similarity index 100% rename from cumulus/tasks/discover-http-tiles/README.md rename to tasks/.not_CMA_compliant/discover-http-tiles/README.md diff --git a/cumulus/tasks/discover-http-tiles/apache-index-tile-crawler.js b/tasks/.not_CMA_compliant/discover-http-tiles/apache-index-tile-crawler.js similarity index 100% rename from cumulus/tasks/discover-http-tiles/apache-index-tile-crawler.js rename to tasks/.not_CMA_compliant/discover-http-tiles/apache-index-tile-crawler.js diff --git a/cumulus/tasks/discover-http-tiles/config/cloudformation.yml b/tasks/.not_CMA_compliant/discover-http-tiles/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/discover-http-tiles/config/cloudformation.yml rename to tasks/.not_CMA_compliant/discover-http-tiles/config/cloudformation.yml diff --git a/cumulus/tasks/discover-http-tiles/http-tile-crawler.js b/tasks/.not_CMA_compliant/discover-http-tiles/http-tile-crawler.js similarity index 100% rename from cumulus/tasks/discover-http-tiles/http-tile-crawler.js rename to tasks/.not_CMA_compliant/discover-http-tiles/http-tile-crawler.js diff --git a/cumulus/tasks/discover-http-tiles/index.js b/tasks/.not_CMA_compliant/discover-http-tiles/index.js similarity index 100% rename from cumulus/tasks/discover-http-tiles/index.js rename to tasks/.not_CMA_compliant/discover-http-tiles/index.js diff --git a/cumulus/tasks/discover-http-tiles/package.json b/tasks/.not_CMA_compliant/discover-http-tiles/package.json similarity index 100% rename from cumulus/tasks/discover-http-tiles/package.json rename to tasks/.not_CMA_compliant/discover-http-tiles/package.json diff --git a/cumulus/tasks/discover-http-tiles/test/discover-http-tiles-spec.js b/tasks/.not_CMA_compliant/discover-http-tiles/test/discover-http-tiles-spec.js similarity index 100% rename from cumulus/tasks/discover-http-tiles/test/discover-http-tiles-spec.js rename to tasks/.not_CMA_compliant/discover-http-tiles/test/discover-http-tiles-spec.js diff --git a/cumulus/tasks/discover-pdr/.babelrc b/tasks/.not_CMA_compliant/discover-pdr/.babelrc similarity index 100% rename from cumulus/tasks/discover-pdr/.babelrc rename to tasks/.not_CMA_compliant/discover-pdr/.babelrc diff --git a/cumulus/tasks/discover-pdr/.gitignore b/tasks/.not_CMA_compliant/discover-pdr/.gitignore similarity index 100% rename from cumulus/tasks/discover-pdr/.gitignore rename to tasks/.not_CMA_compliant/discover-pdr/.gitignore diff --git a/cumulus/tasks/discover-pdr/README.md b/tasks/.not_CMA_compliant/discover-pdr/README.md similarity index 100% rename from cumulus/tasks/discover-pdr/README.md rename to tasks/.not_CMA_compliant/discover-pdr/README.md diff --git a/cumulus/tasks/discover-pdr/config/cloudformation.yml b/tasks/.not_CMA_compliant/discover-pdr/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/discover-pdr/config/cloudformation.yml rename to tasks/.not_CMA_compliant/discover-pdr/config/cloudformation.yml diff --git a/cumulus/tasks/discover-pdr/index.js b/tasks/.not_CMA_compliant/discover-pdr/index.js similarity index 100% rename from cumulus/tasks/discover-pdr/index.js rename to tasks/.not_CMA_compliant/discover-pdr/index.js diff --git a/cumulus/tasks/discover-pdr/package.json b/tasks/.not_CMA_compliant/discover-pdr/package.json similarity index 100% rename from cumulus/tasks/discover-pdr/package.json rename to tasks/.not_CMA_compliant/discover-pdr/package.json diff --git a/cumulus/tasks/discover-pdr/pdr.js b/tasks/.not_CMA_compliant/discover-pdr/pdr.js similarity index 100% rename from cumulus/tasks/discover-pdr/pdr.js rename to tasks/.not_CMA_compliant/discover-pdr/pdr.js diff --git a/cumulus/tasks/discover-pdr/test/discover-pdr-spec.js b/tasks/.not_CMA_compliant/discover-pdr/test/discover-pdr-spec.js similarity index 100% rename from cumulus/tasks/discover-pdr/test/discover-pdr-spec.js rename to tasks/.not_CMA_compliant/discover-pdr/test/discover-pdr-spec.js diff --git a/cumulus/tasks/download-activity-mock/.babelrc b/tasks/.not_CMA_compliant/download-activity-mock/.babelrc similarity index 100% rename from cumulus/tasks/download-activity-mock/.babelrc rename to tasks/.not_CMA_compliant/download-activity-mock/.babelrc diff --git a/cumulus/tasks/download-activity-mock/.gitignore b/tasks/.not_CMA_compliant/download-activity-mock/.gitignore similarity index 100% rename from cumulus/tasks/download-activity-mock/.gitignore rename to tasks/.not_CMA_compliant/download-activity-mock/.gitignore diff --git a/cumulus/tasks/download-activity-mock/README.md b/tasks/.not_CMA_compliant/download-activity-mock/README.md similarity index 100% rename from cumulus/tasks/download-activity-mock/README.md rename to tasks/.not_CMA_compliant/download-activity-mock/README.md diff --git a/cumulus/tasks/download-activity-mock/index.js b/tasks/.not_CMA_compliant/download-activity-mock/index.js similarity index 100% rename from cumulus/tasks/download-activity-mock/index.js rename to tasks/.not_CMA_compliant/download-activity-mock/index.js diff --git a/cumulus/tasks/download-activity-mock/package.json b/tasks/.not_CMA_compliant/download-activity-mock/package.json similarity index 100% rename from cumulus/tasks/download-activity-mock/package.json rename to tasks/.not_CMA_compliant/download-activity-mock/package.json diff --git a/cumulus/tasks/download-activity-mock/sips.js b/tasks/.not_CMA_compliant/download-activity-mock/sips.js similarity index 100% rename from cumulus/tasks/download-activity-mock/sips.js rename to tasks/.not_CMA_compliant/download-activity-mock/sips.js diff --git a/cumulus/tasks/download-activity-mock/test/download-activity-mock-spec.js b/tasks/.not_CMA_compliant/download-activity-mock/test/download-activity-mock-spec.js similarity index 100% rename from cumulus/tasks/download-activity-mock/test/download-activity-mock-spec.js rename to tasks/.not_CMA_compliant/download-activity-mock/test/download-activity-mock-spec.js diff --git a/cumulus/tasks/filter-payload/README.md b/tasks/.not_CMA_compliant/filter-payload/README.md similarity index 100% rename from cumulus/tasks/filter-payload/README.md rename to tasks/.not_CMA_compliant/filter-payload/README.md diff --git a/cumulus/tasks/filter-payload/config/cloudformation.yml b/tasks/.not_CMA_compliant/filter-payload/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/filter-payload/config/cloudformation.yml rename to tasks/.not_CMA_compliant/filter-payload/config/cloudformation.yml diff --git a/cumulus/tasks/filter-payload/index.js b/tasks/.not_CMA_compliant/filter-payload/index.js similarity index 100% rename from cumulus/tasks/filter-payload/index.js rename to tasks/.not_CMA_compliant/filter-payload/index.js diff --git a/cumulus/tasks/filter-payload/package.json b/tasks/.not_CMA_compliant/filter-payload/package.json similarity index 100% rename from cumulus/tasks/filter-payload/package.json rename to tasks/.not_CMA_compliant/filter-payload/package.json diff --git a/cumulus/tasks/filter-payload/test/filter-payload-spec.js b/tasks/.not_CMA_compliant/filter-payload/test/filter-payload-spec.js similarity index 100% rename from cumulus/tasks/filter-payload/test/filter-payload-spec.js rename to tasks/.not_CMA_compliant/filter-payload/test/filter-payload-spec.js diff --git a/cumulus/tasks/generate-mrf/README.md b/tasks/.not_CMA_compliant/generate-mrf/README.md similarity index 100% rename from cumulus/tasks/generate-mrf/README.md rename to tasks/.not_CMA_compliant/generate-mrf/README.md diff --git a/cumulus/tasks/generate-mrf/config-gen.js b/tasks/.not_CMA_compliant/generate-mrf/config-gen.js similarity index 100% rename from cumulus/tasks/generate-mrf/config-gen.js rename to tasks/.not_CMA_compliant/generate-mrf/config-gen.js diff --git a/cumulus/tasks/generate-mrf/config/cloudformation.yml b/tasks/.not_CMA_compliant/generate-mrf/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/generate-mrf/config/cloudformation.yml rename to tasks/.not_CMA_compliant/generate-mrf/config/cloudformation.yml diff --git a/cumulus/tasks/generate-mrf/index.js b/tasks/.not_CMA_compliant/generate-mrf/index.js similarity index 100% rename from cumulus/tasks/generate-mrf/index.js rename to tasks/.not_CMA_compliant/generate-mrf/index.js diff --git a/cumulus/tasks/generate-mrf/package.json b/tasks/.not_CMA_compliant/generate-mrf/package.json similarity index 100% rename from cumulus/tasks/generate-mrf/package.json rename to tasks/.not_CMA_compliant/generate-mrf/package.json diff --git a/cumulus/tasks/generate-mrf/templates/empty-tiles/empty256.jpg b/tasks/.not_CMA_compliant/generate-mrf/templates/empty-tiles/empty256.jpg similarity index 100% rename from cumulus/tasks/generate-mrf/templates/empty-tiles/empty256.jpg rename to tasks/.not_CMA_compliant/generate-mrf/templates/empty-tiles/empty256.jpg diff --git a/cumulus/tasks/generate-mrf/templates/empty-tiles/empty256.png b/tasks/.not_CMA_compliant/generate-mrf/templates/empty-tiles/empty256.png similarity index 100% rename from cumulus/tasks/generate-mrf/templates/empty-tiles/empty256.png rename to tasks/.not_CMA_compliant/generate-mrf/templates/empty-tiles/empty256.png diff --git a/cumulus/tasks/generate-mrf/templates/empty-tiles/empty512.jpg b/tasks/.not_CMA_compliant/generate-mrf/templates/empty-tiles/empty512.jpg similarity index 100% rename from cumulus/tasks/generate-mrf/templates/empty-tiles/empty512.jpg rename to tasks/.not_CMA_compliant/generate-mrf/templates/empty-tiles/empty512.jpg diff --git a/cumulus/tasks/generate-mrf/templates/empty-tiles/empty512.png b/tasks/.not_CMA_compliant/generate-mrf/templates/empty-tiles/empty512.png similarity index 100% rename from cumulus/tasks/generate-mrf/templates/empty-tiles/empty512.png rename to tasks/.not_CMA_compliant/generate-mrf/templates/empty-tiles/empty512.png diff --git a/cumulus/tasks/generate-mrf/templates/mrfgen_config.xml b/tasks/.not_CMA_compliant/generate-mrf/templates/mrfgen_config.xml similarity index 100% rename from cumulus/tasks/generate-mrf/templates/mrfgen_config.xml rename to tasks/.not_CMA_compliant/generate-mrf/templates/mrfgen_config.xml diff --git a/cumulus/tasks/generate-mrf/templates/products/_viirs.xml b/tasks/.not_CMA_compliant/generate-mrf/templates/products/_viirs.xml similarity index 100% rename from cumulus/tasks/generate-mrf/templates/products/_viirs.xml rename to tasks/.not_CMA_compliant/generate-mrf/templates/products/_viirs.xml diff --git a/cumulus/tasks/generate-mrf/templates/source-projections/_epsg3031.xml b/tasks/.not_CMA_compliant/generate-mrf/templates/source-projections/_epsg3031.xml similarity index 100% rename from cumulus/tasks/generate-mrf/templates/source-projections/_epsg3031.xml rename to tasks/.not_CMA_compliant/generate-mrf/templates/source-projections/_epsg3031.xml diff --git a/cumulus/tasks/generate-mrf/templates/source-projections/_epsg3413.xml b/tasks/.not_CMA_compliant/generate-mrf/templates/source-projections/_epsg3413.xml similarity index 100% rename from cumulus/tasks/generate-mrf/templates/source-projections/_epsg3413.xml rename to tasks/.not_CMA_compliant/generate-mrf/templates/source-projections/_epsg3413.xml diff --git a/cumulus/tasks/generate-mrf/templates/source-projections/_epsg4326.xml b/tasks/.not_CMA_compliant/generate-mrf/templates/source-projections/_epsg4326.xml similarity index 100% rename from cumulus/tasks/generate-mrf/templates/source-projections/_epsg4326.xml rename to tasks/.not_CMA_compliant/generate-mrf/templates/source-projections/_epsg4326.xml diff --git a/cumulus/tasks/generate-mrf/templates/target-projections/_epsg3031.xml b/tasks/.not_CMA_compliant/generate-mrf/templates/target-projections/_epsg3031.xml similarity index 100% rename from cumulus/tasks/generate-mrf/templates/target-projections/_epsg3031.xml rename to tasks/.not_CMA_compliant/generate-mrf/templates/target-projections/_epsg3031.xml diff --git a/cumulus/tasks/generate-mrf/templates/target-projections/_epsg3413.xml b/tasks/.not_CMA_compliant/generate-mrf/templates/target-projections/_epsg3413.xml similarity index 100% rename from cumulus/tasks/generate-mrf/templates/target-projections/_epsg3413.xml rename to tasks/.not_CMA_compliant/generate-mrf/templates/target-projections/_epsg3413.xml diff --git a/cumulus/tasks/generate-mrf/templates/target-projections/_epsg4326.xml b/tasks/.not_CMA_compliant/generate-mrf/templates/target-projections/_epsg4326.xml similarity index 100% rename from cumulus/tasks/generate-mrf/templates/target-projections/_epsg4326.xml rename to tasks/.not_CMA_compliant/generate-mrf/templates/target-projections/_epsg4326.xml diff --git a/cumulus/tasks/generate-mrf/test/generate-mrf-spec.js b/tasks/.not_CMA_compliant/generate-mrf/test/generate-mrf-spec.js similarity index 100% rename from cumulus/tasks/generate-mrf/test/generate-mrf-spec.js rename to tasks/.not_CMA_compliant/generate-mrf/test/generate-mrf-spec.js diff --git a/cumulus/tasks/generate-pan/.babelrc b/tasks/.not_CMA_compliant/generate-pan/.babelrc similarity index 100% rename from cumulus/tasks/generate-pan/.babelrc rename to tasks/.not_CMA_compliant/generate-pan/.babelrc diff --git a/cumulus/tasks/generate-pan/.gitignore b/tasks/.not_CMA_compliant/generate-pan/.gitignore similarity index 100% rename from cumulus/tasks/generate-pan/.gitignore rename to tasks/.not_CMA_compliant/generate-pan/.gitignore diff --git a/cumulus/tasks/generate-pan/README.md b/tasks/.not_CMA_compliant/generate-pan/README.md similarity index 100% rename from cumulus/tasks/generate-pan/README.md rename to tasks/.not_CMA_compliant/generate-pan/README.md diff --git a/cumulus/tasks/generate-pan/config/cloudformation.yml b/tasks/.not_CMA_compliant/generate-pan/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/generate-pan/config/cloudformation.yml rename to tasks/.not_CMA_compliant/generate-pan/config/cloudformation.yml diff --git a/cumulus/tasks/generate-pan/ftp_util.js b/tasks/.not_CMA_compliant/generate-pan/ftp_util.js similarity index 100% rename from cumulus/tasks/generate-pan/ftp_util.js rename to tasks/.not_CMA_compliant/generate-pan/ftp_util.js diff --git a/cumulus/tasks/generate-pan/index.js b/tasks/.not_CMA_compliant/generate-pan/index.js similarity index 100% rename from cumulus/tasks/generate-pan/index.js rename to tasks/.not_CMA_compliant/generate-pan/index.js diff --git a/cumulus/tasks/generate-pan/package.json b/tasks/.not_CMA_compliant/generate-pan/package.json similarity index 100% rename from cumulus/tasks/generate-pan/package.json rename to tasks/.not_CMA_compliant/generate-pan/package.json diff --git a/cumulus/tasks/generate-pan/pan.js b/tasks/.not_CMA_compliant/generate-pan/pan.js similarity index 100% rename from cumulus/tasks/generate-pan/pan.js rename to tasks/.not_CMA_compliant/generate-pan/pan.js diff --git a/cumulus/tasks/generate-pan/test/fixtures/all-success-fixture.js b/tasks/.not_CMA_compliant/generate-pan/test/fixtures/all-success-fixture.js similarity index 100% rename from cumulus/tasks/generate-pan/test/fixtures/all-success-fixture.js rename to tasks/.not_CMA_compliant/generate-pan/test/fixtures/all-success-fixture.js diff --git a/cumulus/tasks/generate-pan/test/fixtures/missing-file-fixture.js b/tasks/.not_CMA_compliant/generate-pan/test/fixtures/missing-file-fixture.js similarity index 100% rename from cumulus/tasks/generate-pan/test/fixtures/missing-file-fixture.js rename to tasks/.not_CMA_compliant/generate-pan/test/fixtures/missing-file-fixture.js diff --git a/cumulus/tasks/generate-pan/test/generate-pan-spec.js b/tasks/.not_CMA_compliant/generate-pan/test/generate-pan-spec.js similarity index 100% rename from cumulus/tasks/generate-pan/test/generate-pan-spec.js rename to tasks/.not_CMA_compliant/generate-pan/test/generate-pan-spec.js diff --git a/cumulus/tasks/generate-pdr-file-list/README.md b/tasks/.not_CMA_compliant/generate-pdr-file-list/README.md similarity index 100% rename from cumulus/tasks/generate-pdr-file-list/README.md rename to tasks/.not_CMA_compliant/generate-pdr-file-list/README.md diff --git a/cumulus/tasks/generate-pdr-file-list/config/cloudformation.yml b/tasks/.not_CMA_compliant/generate-pdr-file-list/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/generate-pdr-file-list/config/cloudformation.yml rename to tasks/.not_CMA_compliant/generate-pdr-file-list/config/cloudformation.yml diff --git a/cumulus/tasks/generate-pdr-file-list/index.js b/tasks/.not_CMA_compliant/generate-pdr-file-list/index.js similarity index 100% rename from cumulus/tasks/generate-pdr-file-list/index.js rename to tasks/.not_CMA_compliant/generate-pdr-file-list/index.js diff --git a/cumulus/tasks/generate-pdr-file-list/package.json b/tasks/.not_CMA_compliant/generate-pdr-file-list/package.json similarity index 100% rename from cumulus/tasks/generate-pdr-file-list/package.json rename to tasks/.not_CMA_compliant/generate-pdr-file-list/package.json diff --git a/cumulus/tasks/generate-pdr-file-list/pdr.js b/tasks/.not_CMA_compliant/generate-pdr-file-list/pdr.js similarity index 100% rename from cumulus/tasks/generate-pdr-file-list/pdr.js rename to tasks/.not_CMA_compliant/generate-pdr-file-list/pdr.js diff --git a/cumulus/tasks/generate-pdr-file-list/test/fixtures/bad-pdr-fixture.js b/tasks/.not_CMA_compliant/generate-pdr-file-list/test/fixtures/bad-pdr-fixture.js similarity index 100% rename from cumulus/tasks/generate-pdr-file-list/test/fixtures/bad-pdr-fixture.js rename to tasks/.not_CMA_compliant/generate-pdr-file-list/test/fixtures/bad-pdr-fixture.js diff --git a/cumulus/tasks/generate-pdr-file-list/test/fixtures/good-pdr-fixture.js b/tasks/.not_CMA_compliant/generate-pdr-file-list/test/fixtures/good-pdr-fixture.js similarity index 100% rename from cumulus/tasks/generate-pdr-file-list/test/fixtures/good-pdr-fixture.js rename to tasks/.not_CMA_compliant/generate-pdr-file-list/test/fixtures/good-pdr-fixture.js diff --git a/cumulus/tasks/generate-pdr-file-list/test/generate-pdr-file-list-spec.js b/tasks/.not_CMA_compliant/generate-pdr-file-list/test/generate-pdr-file-list-spec.js similarity index 100% rename from cumulus/tasks/generate-pdr-file-list/test/generate-pdr-file-list-spec.js rename to tasks/.not_CMA_compliant/generate-pdr-file-list/test/generate-pdr-file-list-spec.js diff --git a/cumulus/tasks/generate-pdrd/.babelrc b/tasks/.not_CMA_compliant/generate-pdrd/.babelrc similarity index 100% rename from cumulus/tasks/generate-pdrd/.babelrc rename to tasks/.not_CMA_compliant/generate-pdrd/.babelrc diff --git a/cumulus/tasks/generate-pdrd/.gitignore b/tasks/.not_CMA_compliant/generate-pdrd/.gitignore similarity index 100% rename from cumulus/tasks/generate-pdrd/.gitignore rename to tasks/.not_CMA_compliant/generate-pdrd/.gitignore diff --git a/cumulus/tasks/generate-pdrd/README.md b/tasks/.not_CMA_compliant/generate-pdrd/README.md similarity index 100% rename from cumulus/tasks/generate-pdrd/README.md rename to tasks/.not_CMA_compliant/generate-pdrd/README.md diff --git a/cumulus/tasks/generate-pdrd/config/cloudformation.yml b/tasks/.not_CMA_compliant/generate-pdrd/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/generate-pdrd/config/cloudformation.yml rename to tasks/.not_CMA_compliant/generate-pdrd/config/cloudformation.yml diff --git a/cumulus/tasks/generate-pdrd/ftp_util.js b/tasks/.not_CMA_compliant/generate-pdrd/ftp_util.js similarity index 100% rename from cumulus/tasks/generate-pdrd/ftp_util.js rename to tasks/.not_CMA_compliant/generate-pdrd/ftp_util.js diff --git a/cumulus/tasks/generate-pdrd/index.js b/tasks/.not_CMA_compliant/generate-pdrd/index.js similarity index 100% rename from cumulus/tasks/generate-pdrd/index.js rename to tasks/.not_CMA_compliant/generate-pdrd/index.js diff --git a/cumulus/tasks/generate-pdrd/package.json b/tasks/.not_CMA_compliant/generate-pdrd/package.json similarity index 100% rename from cumulus/tasks/generate-pdrd/package.json rename to tasks/.not_CMA_compliant/generate-pdrd/package.json diff --git a/cumulus/tasks/generate-pdrd/pdrd.js b/tasks/.not_CMA_compliant/generate-pdrd/pdrd.js similarity index 100% rename from cumulus/tasks/generate-pdrd/pdrd.js rename to tasks/.not_CMA_compliant/generate-pdrd/pdrd.js diff --git a/cumulus/tasks/generate-pdrd/test/fixtures/bad-file-entry-fixture.js b/tasks/.not_CMA_compliant/generate-pdrd/test/fixtures/bad-file-entry-fixture.js similarity index 100% rename from cumulus/tasks/generate-pdrd/test/fixtures/bad-file-entry-fixture.js rename to tasks/.not_CMA_compliant/generate-pdrd/test/fixtures/bad-file-entry-fixture.js diff --git a/cumulus/tasks/generate-pdrd/test/fixtures/invalid-pvl-fixture.js b/tasks/.not_CMA_compliant/generate-pdrd/test/fixtures/invalid-pvl-fixture.js similarity index 100% rename from cumulus/tasks/generate-pdrd/test/fixtures/invalid-pvl-fixture.js rename to tasks/.not_CMA_compliant/generate-pdrd/test/fixtures/invalid-pvl-fixture.js diff --git a/cumulus/tasks/generate-pdrd/test/fixtures/missing-fields-fixture.js b/tasks/.not_CMA_compliant/generate-pdrd/test/fixtures/missing-fields-fixture.js similarity index 100% rename from cumulus/tasks/generate-pdrd/test/fixtures/missing-fields-fixture.js rename to tasks/.not_CMA_compliant/generate-pdrd/test/fixtures/missing-fields-fixture.js diff --git a/cumulus/tasks/generate-pdrd/test/generate-pdrd-spec.js b/tasks/.not_CMA_compliant/generate-pdrd/test/generate-pdrd-spec.js similarity index 100% rename from cumulus/tasks/generate-pdrd/test/generate-pdrd-spec.js rename to tasks/.not_CMA_compliant/generate-pdrd/test/generate-pdrd-spec.js diff --git a/cumulus/tasks/run-gdal/README.md b/tasks/.not_CMA_compliant/run-gdal/README.md similarity index 100% rename from cumulus/tasks/run-gdal/README.md rename to tasks/.not_CMA_compliant/run-gdal/README.md diff --git a/cumulus/tasks/run-gdal/build-gdal/.gitignore b/tasks/.not_CMA_compliant/run-gdal/build-gdal/.gitignore similarity index 100% rename from cumulus/tasks/run-gdal/build-gdal/.gitignore rename to tasks/.not_CMA_compliant/run-gdal/build-gdal/.gitignore diff --git a/cumulus/tasks/run-gdal/build-gdal/Dockerfile b/tasks/.not_CMA_compliant/run-gdal/build-gdal/Dockerfile similarity index 100% rename from cumulus/tasks/run-gdal/build-gdal/Dockerfile rename to tasks/.not_CMA_compliant/run-gdal/build-gdal/Dockerfile diff --git a/cumulus/tasks/run-gdal/build-gdal/Makefile b/tasks/.not_CMA_compliant/run-gdal/build-gdal/Makefile similarity index 100% rename from cumulus/tasks/run-gdal/build-gdal/Makefile rename to tasks/.not_CMA_compliant/run-gdal/build-gdal/Makefile diff --git a/cumulus/tasks/run-gdal/config/cloudformation.yml b/tasks/.not_CMA_compliant/run-gdal/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/run-gdal/config/cloudformation.yml rename to tasks/.not_CMA_compliant/run-gdal/config/cloudformation.yml diff --git a/cumulus/tasks/run-gdal/deps/lambda-gdal.zip b/tasks/.not_CMA_compliant/run-gdal/deps/lambda-gdal.zip similarity index 100% rename from cumulus/tasks/run-gdal/deps/lambda-gdal.zip rename to tasks/.not_CMA_compliant/run-gdal/deps/lambda-gdal.zip diff --git a/cumulus/tasks/run-gdal/example/ast_l1t-to-mrf.json b/tasks/.not_CMA_compliant/run-gdal/example/ast_l1t-to-mrf.json similarity index 100% rename from cumulus/tasks/run-gdal/example/ast_l1t-to-mrf.json rename to tasks/.not_CMA_compliant/run-gdal/example/ast_l1t-to-mrf.json diff --git a/cumulus/tasks/run-gdal/example/ast_l1t-to-png.json b/tasks/.not_CMA_compliant/run-gdal/example/ast_l1t-to-png.json similarity index 100% rename from cumulus/tasks/run-gdal/example/ast_l1t-to-png.json rename to tasks/.not_CMA_compliant/run-gdal/example/ast_l1t-to-png.json diff --git a/cumulus/tasks/run-gdal/example/event.json b/tasks/.not_CMA_compliant/run-gdal/example/event.json similarity index 100% rename from cumulus/tasks/run-gdal/example/event.json rename to tasks/.not_CMA_compliant/run-gdal/example/event.json diff --git a/cumulus/tasks/run-gdal/index.js b/tasks/.not_CMA_compliant/run-gdal/index.js similarity index 100% rename from cumulus/tasks/run-gdal/index.js rename to tasks/.not_CMA_compliant/run-gdal/index.js diff --git a/cumulus/tasks/run-gdal/package.json b/tasks/.not_CMA_compliant/run-gdal/package.json similarity index 100% rename from cumulus/tasks/run-gdal/package.json rename to tasks/.not_CMA_compliant/run-gdal/package.json diff --git a/cumulus/tasks/run-gdal/webpack.config.js b/tasks/.not_CMA_compliant/run-gdal/webpack.config.js similarity index 100% rename from cumulus/tasks/run-gdal/webpack.config.js rename to tasks/.not_CMA_compliant/run-gdal/webpack.config.js diff --git a/cumulus/tasks/sync-http-urls/README.md b/tasks/.not_CMA_compliant/sync-http-urls/README.md similarity index 100% rename from cumulus/tasks/sync-http-urls/README.md rename to tasks/.not_CMA_compliant/sync-http-urls/README.md diff --git a/cumulus/tasks/sync-http-urls/config/cloudformation.yml b/tasks/.not_CMA_compliant/sync-http-urls/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/sync-http-urls/config/cloudformation.yml rename to tasks/.not_CMA_compliant/sync-http-urls/config/cloudformation.yml diff --git a/cumulus/tasks/sync-http-urls/index.js b/tasks/.not_CMA_compliant/sync-http-urls/index.js similarity index 100% rename from cumulus/tasks/sync-http-urls/index.js rename to tasks/.not_CMA_compliant/sync-http-urls/index.js diff --git a/cumulus/tasks/sync-http-urls/package.json b/tasks/.not_CMA_compliant/sync-http-urls/package.json similarity index 100% rename from cumulus/tasks/sync-http-urls/package.json rename to tasks/.not_CMA_compliant/sync-http-urls/package.json diff --git a/cumulus/tasks/sync-http-urls/test/sync-http-urls-spec.js b/tasks/.not_CMA_compliant/sync-http-urls/test/sync-http-urls-spec.js similarity index 100% rename from cumulus/tasks/sync-http-urls/test/sync-http-urls-spec.js rename to tasks/.not_CMA_compliant/sync-http-urls/test/sync-http-urls-spec.js diff --git a/cumulus/tasks/sync-wms/README.md b/tasks/.not_CMA_compliant/sync-wms/README.md similarity index 100% rename from cumulus/tasks/sync-wms/README.md rename to tasks/.not_CMA_compliant/sync-wms/README.md diff --git a/cumulus/tasks/sync-wms/config/cloudformation.yml b/tasks/.not_CMA_compliant/sync-wms/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/sync-wms/config/cloudformation.yml rename to tasks/.not_CMA_compliant/sync-wms/config/cloudformation.yml diff --git a/cumulus/tasks/sync-wms/index.js b/tasks/.not_CMA_compliant/sync-wms/index.js similarity index 100% rename from cumulus/tasks/sync-wms/index.js rename to tasks/.not_CMA_compliant/sync-wms/index.js diff --git a/cumulus/tasks/sync-wms/package.json b/tasks/.not_CMA_compliant/sync-wms/package.json similarity index 100% rename from cumulus/tasks/sync-wms/package.json rename to tasks/.not_CMA_compliant/sync-wms/package.json diff --git a/cumulus/tasks/sync-wms/test/sync-wms-spec.js b/tasks/.not_CMA_compliant/sync-wms/test/sync-wms-spec.js similarity index 100% rename from cumulus/tasks/sync-wms/test/sync-wms-spec.js rename to tasks/.not_CMA_compliant/sync-wms/test/sync-wms-spec.js diff --git a/cumulus/tasks/tee/README.md b/tasks/.not_CMA_compliant/tee/README.md similarity index 100% rename from cumulus/tasks/tee/README.md rename to tasks/.not_CMA_compliant/tee/README.md diff --git a/cumulus/tasks/tee/config/cloudformation.yml b/tasks/.not_CMA_compliant/tee/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/tee/config/cloudformation.yml rename to tasks/.not_CMA_compliant/tee/config/cloudformation.yml diff --git a/cumulus/tasks/tee/index.js b/tasks/.not_CMA_compliant/tee/index.js similarity index 100% rename from cumulus/tasks/tee/index.js rename to tasks/.not_CMA_compliant/tee/index.js diff --git a/cumulus/tasks/tee/package.json b/tasks/.not_CMA_compliant/tee/package.json similarity index 100% rename from cumulus/tasks/tee/package.json rename to tasks/.not_CMA_compliant/tee/package.json diff --git a/cumulus/tasks/trigger-ingest/README.md b/tasks/.not_CMA_compliant/trigger-ingest/README.md similarity index 100% rename from cumulus/tasks/trigger-ingest/README.md rename to tasks/.not_CMA_compliant/trigger-ingest/README.md diff --git a/cumulus/tasks/trigger-ingest/config/cloudformation.yml b/tasks/.not_CMA_compliant/trigger-ingest/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/trigger-ingest/config/cloudformation.yml rename to tasks/.not_CMA_compliant/trigger-ingest/config/cloudformation.yml diff --git a/cumulus/tasks/trigger-ingest/index.js b/tasks/.not_CMA_compliant/trigger-ingest/index.js similarity index 100% rename from cumulus/tasks/trigger-ingest/index.js rename to tasks/.not_CMA_compliant/trigger-ingest/index.js diff --git a/cumulus/tasks/trigger-ingest/package.json b/tasks/.not_CMA_compliant/trigger-ingest/package.json similarity index 100% rename from cumulus/tasks/trigger-ingest/package.json rename to tasks/.not_CMA_compliant/trigger-ingest/package.json diff --git a/cumulus/tasks/trigger-ingest/test/trigger-ingest-spec.js b/tasks/.not_CMA_compliant/trigger-ingest/test/trigger-ingest-spec.js similarity index 100% rename from cumulus/tasks/trigger-ingest/test/trigger-ingest-spec.js rename to tasks/.not_CMA_compliant/trigger-ingest/test/trigger-ingest-spec.js diff --git a/cumulus/tasks/trigger-mrf-gen/README.md b/tasks/.not_CMA_compliant/trigger-mrf-gen/README.md similarity index 100% rename from cumulus/tasks/trigger-mrf-gen/README.md rename to tasks/.not_CMA_compliant/trigger-mrf-gen/README.md diff --git a/cumulus/tasks/trigger-mrf-gen/config/cloudformation.yml b/tasks/.not_CMA_compliant/trigger-mrf-gen/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/trigger-mrf-gen/config/cloudformation.yml rename to tasks/.not_CMA_compliant/trigger-mrf-gen/config/cloudformation.yml diff --git a/cumulus/tasks/trigger-mrf-gen/index.js b/tasks/.not_CMA_compliant/trigger-mrf-gen/index.js similarity index 100% rename from cumulus/tasks/trigger-mrf-gen/index.js rename to tasks/.not_CMA_compliant/trigger-mrf-gen/index.js diff --git a/cumulus/tasks/trigger-mrf-gen/package.json b/tasks/.not_CMA_compliant/trigger-mrf-gen/package.json similarity index 100% rename from cumulus/tasks/trigger-mrf-gen/package.json rename to tasks/.not_CMA_compliant/trigger-mrf-gen/package.json diff --git a/cumulus/tasks/trigger-process-pdrs/README.md b/tasks/.not_CMA_compliant/trigger-process-pdrs/README.md similarity index 100% rename from cumulus/tasks/trigger-process-pdrs/README.md rename to tasks/.not_CMA_compliant/trigger-process-pdrs/README.md diff --git a/cumulus/tasks/trigger-process-pdrs/config/cloudformation.yml b/tasks/.not_CMA_compliant/trigger-process-pdrs/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/trigger-process-pdrs/config/cloudformation.yml rename to tasks/.not_CMA_compliant/trigger-process-pdrs/config/cloudformation.yml diff --git a/cumulus/tasks/trigger-process-pdrs/index.js b/tasks/.not_CMA_compliant/trigger-process-pdrs/index.js similarity index 100% rename from cumulus/tasks/trigger-process-pdrs/index.js rename to tasks/.not_CMA_compliant/trigger-process-pdrs/index.js diff --git a/cumulus/tasks/trigger-process-pdrs/package.json b/tasks/.not_CMA_compliant/trigger-process-pdrs/package.json similarity index 100% rename from cumulus/tasks/trigger-process-pdrs/package.json rename to tasks/.not_CMA_compliant/trigger-process-pdrs/package.json diff --git a/cumulus/tasks/trigger-process-pdrs/test/trigger-process-pdrs-spec.js b/tasks/.not_CMA_compliant/trigger-process-pdrs/test/trigger-process-pdrs-spec.js similarity index 100% rename from cumulus/tasks/trigger-process-pdrs/test/trigger-process-pdrs-spec.js rename to tasks/.not_CMA_compliant/trigger-process-pdrs/test/trigger-process-pdrs-spec.js diff --git a/cumulus/tasks/validate-archives/README.md b/tasks/.not_CMA_compliant/validate-archives/README.md similarity index 100% rename from cumulus/tasks/validate-archives/README.md rename to tasks/.not_CMA_compliant/validate-archives/README.md diff --git a/cumulus/tasks/validate-archives/archive-validations.js b/tasks/.not_CMA_compliant/validate-archives/archive-validations.js similarity index 100% rename from cumulus/tasks/validate-archives/archive-validations.js rename to tasks/.not_CMA_compliant/validate-archives/archive-validations.js diff --git a/cumulus/tasks/validate-archives/config/cloudformation.yml b/tasks/.not_CMA_compliant/validate-archives/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/validate-archives/config/cloudformation.yml rename to tasks/.not_CMA_compliant/validate-archives/config/cloudformation.yml diff --git a/cumulus/tasks/validate-archives/index.js b/tasks/.not_CMA_compliant/validate-archives/index.js similarity index 100% rename from cumulus/tasks/validate-archives/index.js rename to tasks/.not_CMA_compliant/validate-archives/index.js diff --git a/cumulus/tasks/validate-archives/package.json b/tasks/.not_CMA_compliant/validate-archives/package.json similarity index 100% rename from cumulus/tasks/validate-archives/package.json rename to tasks/.not_CMA_compliant/validate-archives/package.json diff --git a/cumulus/tasks/validate-archives/test/fixtures/all-success-fixture.js b/tasks/.not_CMA_compliant/validate-archives/test/fixtures/all-success-fixture.js similarity index 100% rename from cumulus/tasks/validate-archives/test/fixtures/all-success-fixture.js rename to tasks/.not_CMA_compliant/validate-archives/test/fixtures/all-success-fixture.js diff --git a/cumulus/tasks/validate-archives/test/fixtures/missing-file-fixture.js b/tasks/.not_CMA_compliant/validate-archives/test/fixtures/missing-file-fixture.js similarity index 100% rename from cumulus/tasks/validate-archives/test/fixtures/missing-file-fixture.js rename to tasks/.not_CMA_compliant/validate-archives/test/fixtures/missing-file-fixture.js diff --git a/cumulus/tasks/validate-archives/test/vaidate-archives-spec.js b/tasks/.not_CMA_compliant/validate-archives/test/vaidate-archives-spec.js similarity index 100% rename from cumulus/tasks/validate-archives/test/vaidate-archives-spec.js rename to tasks/.not_CMA_compliant/validate-archives/test/vaidate-archives-spec.js diff --git a/cumulus/tasks/validate-pdr/.babelrc b/tasks/.not_CMA_compliant/validate-pdr/.babelrc similarity index 100% rename from cumulus/tasks/validate-pdr/.babelrc rename to tasks/.not_CMA_compliant/validate-pdr/.babelrc diff --git a/cumulus/tasks/validate-pdr/.gitignore b/tasks/.not_CMA_compliant/validate-pdr/.gitignore similarity index 100% rename from cumulus/tasks/validate-pdr/.gitignore rename to tasks/.not_CMA_compliant/validate-pdr/.gitignore diff --git a/cumulus/tasks/validate-pdr/README.md b/tasks/.not_CMA_compliant/validate-pdr/README.md similarity index 100% rename from cumulus/tasks/validate-pdr/README.md rename to tasks/.not_CMA_compliant/validate-pdr/README.md diff --git a/cumulus/tasks/validate-pdr/config/cloudformation.yml b/tasks/.not_CMA_compliant/validate-pdr/config/cloudformation.yml similarity index 100% rename from cumulus/tasks/validate-pdr/config/cloudformation.yml rename to tasks/.not_CMA_compliant/validate-pdr/config/cloudformation.yml diff --git a/cumulus/tasks/validate-pdr/index.js b/tasks/.not_CMA_compliant/validate-pdr/index.js similarity index 100% rename from cumulus/tasks/validate-pdr/index.js rename to tasks/.not_CMA_compliant/validate-pdr/index.js diff --git a/cumulus/tasks/validate-pdr/package.json b/tasks/.not_CMA_compliant/validate-pdr/package.json similarity index 100% rename from cumulus/tasks/validate-pdr/package.json rename to tasks/.not_CMA_compliant/validate-pdr/package.json diff --git a/cumulus/tasks/validate-pdr/pdr-validations.js b/tasks/.not_CMA_compliant/validate-pdr/pdr-validations.js similarity index 100% rename from cumulus/tasks/validate-pdr/pdr-validations.js rename to tasks/.not_CMA_compliant/validate-pdr/pdr-validations.js diff --git a/cumulus/tasks/validate-pdr/pdr.js b/tasks/.not_CMA_compliant/validate-pdr/pdr.js similarity index 100% rename from cumulus/tasks/validate-pdr/pdr.js rename to tasks/.not_CMA_compliant/validate-pdr/pdr.js diff --git a/cumulus/tasks/validate-pdr/test/fixtures/file-errors-fixture.js b/tasks/.not_CMA_compliant/validate-pdr/test/fixtures/file-errors-fixture.js similarity index 100% rename from cumulus/tasks/validate-pdr/test/fixtures/file-errors-fixture.js rename to tasks/.not_CMA_compliant/validate-pdr/test/fixtures/file-errors-fixture.js diff --git a/cumulus/tasks/validate-pdr/test/fixtures/invalid-pvl-fixture.js b/tasks/.not_CMA_compliant/validate-pdr/test/fixtures/invalid-pvl-fixture.js similarity index 100% rename from cumulus/tasks/validate-pdr/test/fixtures/invalid-pvl-fixture.js rename to tasks/.not_CMA_compliant/validate-pdr/test/fixtures/invalid-pvl-fixture.js diff --git a/cumulus/tasks/validate-pdr/test/fixtures/missing-fields-fixture.js b/tasks/.not_CMA_compliant/validate-pdr/test/fixtures/missing-fields-fixture.js similarity index 100% rename from cumulus/tasks/validate-pdr/test/fixtures/missing-fields-fixture.js rename to tasks/.not_CMA_compliant/validate-pdr/test/fixtures/missing-fields-fixture.js diff --git a/cumulus/tasks/validate-pdr/test/fixtures/success-fixture.js b/tasks/.not_CMA_compliant/validate-pdr/test/fixtures/success-fixture.js similarity index 100% rename from cumulus/tasks/validate-pdr/test/fixtures/success-fixture.js rename to tasks/.not_CMA_compliant/validate-pdr/test/fixtures/success-fixture.js diff --git a/cumulus/tasks/validate-pdr/test/pdr-validations.test.js b/tasks/.not_CMA_compliant/validate-pdr/test/pdr-validations.test.js similarity index 100% rename from cumulus/tasks/validate-pdr/test/pdr-validations.test.js rename to tasks/.not_CMA_compliant/validate-pdr/test/pdr-validations.test.js diff --git a/cumulus/tasks/validate-pdr/test/validate-pdr.test.js b/tasks/.not_CMA_compliant/validate-pdr/test/validate-pdr.test.js similarity index 100% rename from cumulus/tasks/validate-pdr/test/validate-pdr.test.js rename to tasks/.not_CMA_compliant/validate-pdr/test/validate-pdr.test.js diff --git a/cumulus/tasks/discover-granules/README.md b/tasks/discover-granules/README.md similarity index 100% rename from cumulus/tasks/discover-granules/README.md rename to tasks/discover-granules/README.md diff --git a/cumulus/tasks/discover-granules/cumulus.json b/tasks/discover-granules/cumulus.json similarity index 100% rename from cumulus/tasks/discover-granules/cumulus.json rename to tasks/discover-granules/cumulus.json diff --git a/cumulus/tasks/discover-granules/index.js b/tasks/discover-granules/index.js similarity index 100% rename from cumulus/tasks/discover-granules/index.js rename to tasks/discover-granules/index.js diff --git a/cumulus/tasks/discover-granules/package.json b/tasks/discover-granules/package.json similarity index 100% rename from cumulus/tasks/discover-granules/package.json rename to tasks/discover-granules/package.json diff --git a/cumulus/tasks/discover-granules/schemas/config.json b/tasks/discover-granules/schemas/config.json similarity index 100% rename from cumulus/tasks/discover-granules/schemas/config.json rename to tasks/discover-granules/schemas/config.json diff --git a/cumulus/tasks/discover-granules/schemas/output.json b/tasks/discover-granules/schemas/output.json similarity index 100% rename from cumulus/tasks/discover-granules/schemas/output.json rename to tasks/discover-granules/schemas/output.json diff --git a/cumulus/tasks/discover-granules/tests/.eslintrc.json b/tasks/discover-granules/tests/.eslintrc.json similarity index 100% rename from cumulus/tasks/discover-granules/tests/.eslintrc.json rename to tasks/discover-granules/tests/.eslintrc.json diff --git a/cumulus/tasks/discover-granules/tests/fixtures/mur.json b/tasks/discover-granules/tests/fixtures/mur.json similarity index 100% rename from cumulus/tasks/discover-granules/tests/fixtures/mur.json rename to tasks/discover-granules/tests/fixtures/mur.json diff --git a/cumulus/tasks/discover-granules/tests/index.js b/tasks/discover-granules/tests/index.js similarity index 100% rename from cumulus/tasks/discover-granules/tests/index.js rename to tasks/discover-granules/tests/index.js diff --git a/cumulus/tasks/discover-granules/webpack.config.js b/tasks/discover-granules/webpack.config.js similarity index 100% rename from cumulus/tasks/discover-granules/webpack.config.js rename to tasks/discover-granules/webpack.config.js diff --git a/cumulus/tasks/discover-pdrs/README.md b/tasks/discover-pdrs/README.md similarity index 100% rename from cumulus/tasks/discover-pdrs/README.md rename to tasks/discover-pdrs/README.md diff --git a/cumulus/tasks/discover-pdrs/cumulus.json b/tasks/discover-pdrs/cumulus.json similarity index 100% rename from cumulus/tasks/discover-pdrs/cumulus.json rename to tasks/discover-pdrs/cumulus.json diff --git a/cumulus/tasks/discover-pdrs/index.js b/tasks/discover-pdrs/index.js similarity index 100% rename from cumulus/tasks/discover-pdrs/index.js rename to tasks/discover-pdrs/index.js diff --git a/cumulus/tasks/discover-pdrs/package.json b/tasks/discover-pdrs/package.json similarity index 100% rename from cumulus/tasks/discover-pdrs/package.json rename to tasks/discover-pdrs/package.json diff --git a/cumulus/tasks/discover-pdrs/schemas/config.json b/tasks/discover-pdrs/schemas/config.json similarity index 100% rename from cumulus/tasks/discover-pdrs/schemas/config.json rename to tasks/discover-pdrs/schemas/config.json diff --git a/cumulus/tasks/discover-pdrs/schemas/output.json b/tasks/discover-pdrs/schemas/output.json similarity index 100% rename from cumulus/tasks/discover-pdrs/schemas/output.json rename to tasks/discover-pdrs/schemas/output.json diff --git a/cumulus/tasks/discover-pdrs/tests/.eslintrc.json b/tasks/discover-pdrs/tests/.eslintrc.json similarity index 100% rename from cumulus/tasks/discover-pdrs/tests/.eslintrc.json rename to tasks/discover-pdrs/tests/.eslintrc.json diff --git a/cumulus/tasks/discover-pdrs/tests/fixtures/input.json b/tasks/discover-pdrs/tests/fixtures/input.json similarity index 100% rename from cumulus/tasks/discover-pdrs/tests/fixtures/input.json rename to tasks/discover-pdrs/tests/fixtures/input.json diff --git a/cumulus/tasks/discover-pdrs/tests/index.js b/tasks/discover-pdrs/tests/index.js similarity index 100% rename from cumulus/tasks/discover-pdrs/tests/index.js rename to tasks/discover-pdrs/tests/index.js diff --git a/cumulus/tasks/discover-pdrs/tests/s3.js b/tasks/discover-pdrs/tests/s3.js similarity index 100% rename from cumulus/tasks/discover-pdrs/tests/s3.js rename to tasks/discover-pdrs/tests/s3.js diff --git a/cumulus/tasks/discover-pdrs/webpack.config.js b/tasks/discover-pdrs/webpack.config.js similarity index 100% rename from cumulus/tasks/discover-pdrs/webpack.config.js rename to tasks/discover-pdrs/webpack.config.js diff --git a/cumulus/tasks/discover-s3-granules/README.md b/tasks/discover-s3-granules/README.md similarity index 100% rename from cumulus/tasks/discover-s3-granules/README.md rename to tasks/discover-s3-granules/README.md diff --git a/cumulus/tasks/discover-s3-granules/index.js b/tasks/discover-s3-granules/index.js similarity index 100% rename from cumulus/tasks/discover-s3-granules/index.js rename to tasks/discover-s3-granules/index.js diff --git a/cumulus/tasks/discover-s3-granules/package.json b/tasks/discover-s3-granules/package.json similarity index 100% rename from cumulus/tasks/discover-s3-granules/package.json rename to tasks/discover-s3-granules/package.json diff --git a/cumulus/tasks/discover-s3-granules/schemas/config.json b/tasks/discover-s3-granules/schemas/config.json similarity index 100% rename from cumulus/tasks/discover-s3-granules/schemas/config.json rename to tasks/discover-s3-granules/schemas/config.json diff --git a/cumulus/tasks/discover-s3-granules/schemas/output.json b/tasks/discover-s3-granules/schemas/output.json similarity index 100% rename from cumulus/tasks/discover-s3-granules/schemas/output.json rename to tasks/discover-s3-granules/schemas/output.json diff --git a/cumulus/tasks/discover-s3-granules/tests/fixtures/input.json b/tasks/discover-s3-granules/tests/fixtures/input.json similarity index 100% rename from cumulus/tasks/discover-s3-granules/tests/fixtures/input.json rename to tasks/discover-s3-granules/tests/fixtures/input.json diff --git a/cumulus/tasks/discover-s3-granules/tests/index.js b/tasks/discover-s3-granules/tests/index.js similarity index 100% rename from cumulus/tasks/discover-s3-granules/tests/index.js rename to tasks/discover-s3-granules/tests/index.js diff --git a/cumulus/tasks/discover-s3-granules/webpack.config.js b/tasks/discover-s3-granules/webpack.config.js similarity index 100% rename from cumulus/tasks/discover-s3-granules/webpack.config.js rename to tasks/discover-s3-granules/webpack.config.js diff --git a/cumulus/tasks/hello-world/README.md b/tasks/hello-world/README.md similarity index 100% rename from cumulus/tasks/hello-world/README.md rename to tasks/hello-world/README.md diff --git a/cumulus/tasks/hello-world/index.js b/tasks/hello-world/index.js similarity index 100% rename from cumulus/tasks/hello-world/index.js rename to tasks/hello-world/index.js diff --git a/cumulus/tasks/hello-world/package.json b/tasks/hello-world/package.json similarity index 100% rename from cumulus/tasks/hello-world/package.json rename to tasks/hello-world/package.json diff --git a/cumulus/tasks/hello-world/tests/hello_world_test.js b/tasks/hello-world/tests/hello_world_test.js similarity index 100% rename from cumulus/tasks/hello-world/tests/hello_world_test.js rename to tasks/hello-world/tests/hello_world_test.js diff --git a/cumulus/tasks/hello-world/webpack.config.js b/tasks/hello-world/webpack.config.js similarity index 100% rename from cumulus/tasks/hello-world/webpack.config.js rename to tasks/hello-world/webpack.config.js diff --git a/cumulus/tasks/parse-pdr/README.md b/tasks/parse-pdr/README.md similarity index 100% rename from cumulus/tasks/parse-pdr/README.md rename to tasks/parse-pdr/README.md diff --git a/cumulus/tasks/parse-pdr/index.js b/tasks/parse-pdr/index.js similarity index 100% rename from cumulus/tasks/parse-pdr/index.js rename to tasks/parse-pdr/index.js diff --git a/cumulus/tasks/parse-pdr/package.json b/tasks/parse-pdr/package.json similarity index 100% rename from cumulus/tasks/parse-pdr/package.json rename to tasks/parse-pdr/package.json diff --git a/cumulus/tasks/parse-pdr/schemas/config.json b/tasks/parse-pdr/schemas/config.json similarity index 100% rename from cumulus/tasks/parse-pdr/schemas/config.json rename to tasks/parse-pdr/schemas/config.json diff --git a/cumulus/tasks/parse-pdr/schemas/input.json b/tasks/parse-pdr/schemas/input.json similarity index 100% rename from cumulus/tasks/parse-pdr/schemas/input.json rename to tasks/parse-pdr/schemas/input.json diff --git a/cumulus/tasks/parse-pdr/schemas/output.json b/tasks/parse-pdr/schemas/output.json similarity index 100% rename from cumulus/tasks/parse-pdr/schemas/output.json rename to tasks/parse-pdr/schemas/output.json diff --git a/cumulus/tasks/parse-pdr/tests/parse_pdrs_test.js b/tasks/parse-pdr/tests/parse_pdrs_test.js similarity index 100% rename from cumulus/tasks/parse-pdr/tests/parse_pdrs_test.js rename to tasks/parse-pdr/tests/parse_pdrs_test.js diff --git a/cumulus/tasks/parse-pdr/webpack.config.js b/tasks/parse-pdr/webpack.config.js similarity index 100% rename from cumulus/tasks/parse-pdr/webpack.config.js rename to tasks/parse-pdr/webpack.config.js diff --git a/cumulus/tasks/pdr-status-check/README.md b/tasks/pdr-status-check/README.md similarity index 100% rename from cumulus/tasks/pdr-status-check/README.md rename to tasks/pdr-status-check/README.md diff --git a/cumulus/tasks/pdr-status-check/index.js b/tasks/pdr-status-check/index.js similarity index 100% rename from cumulus/tasks/pdr-status-check/index.js rename to tasks/pdr-status-check/index.js diff --git a/cumulus/tasks/pdr-status-check/package.json b/tasks/pdr-status-check/package.json similarity index 100% rename from cumulus/tasks/pdr-status-check/package.json rename to tasks/pdr-status-check/package.json diff --git a/cumulus/tasks/pdr-status-check/schemas/input.json b/tasks/pdr-status-check/schemas/input.json similarity index 100% rename from cumulus/tasks/pdr-status-check/schemas/input.json rename to tasks/pdr-status-check/schemas/input.json diff --git a/cumulus/tasks/pdr-status-check/schemas/output.json b/tasks/pdr-status-check/schemas/output.json similarity index 100% rename from cumulus/tasks/pdr-status-check/schemas/output.json rename to tasks/pdr-status-check/schemas/output.json diff --git a/cumulus/tasks/pdr-status-check/tests/index.js b/tasks/pdr-status-check/tests/index.js similarity index 100% rename from cumulus/tasks/pdr-status-check/tests/index.js rename to tasks/pdr-status-check/tests/index.js diff --git a/cumulus/tasks/pdr-status-check/webpack.config.js b/tasks/pdr-status-check/webpack.config.js similarity index 100% rename from cumulus/tasks/pdr-status-check/webpack.config.js rename to tasks/pdr-status-check/webpack.config.js diff --git a/cumulus/tasks/post-to-cmr/README.md b/tasks/post-to-cmr/README.md similarity index 100% rename from cumulus/tasks/post-to-cmr/README.md rename to tasks/post-to-cmr/README.md diff --git a/cumulus/tasks/post-to-cmr/index.js b/tasks/post-to-cmr/index.js similarity index 100% rename from cumulus/tasks/post-to-cmr/index.js rename to tasks/post-to-cmr/index.js diff --git a/cumulus/tasks/post-to-cmr/package.json b/tasks/post-to-cmr/package.json similarity index 100% rename from cumulus/tasks/post-to-cmr/package.json rename to tasks/post-to-cmr/package.json diff --git a/cumulus/tasks/post-to-cmr/schemas/config.json b/tasks/post-to-cmr/schemas/config.json similarity index 100% rename from cumulus/tasks/post-to-cmr/schemas/config.json rename to tasks/post-to-cmr/schemas/config.json diff --git a/cumulus/tasks/post-to-cmr/schemas/input.json b/tasks/post-to-cmr/schemas/input.json similarity index 100% rename from cumulus/tasks/post-to-cmr/schemas/input.json rename to tasks/post-to-cmr/schemas/input.json diff --git a/cumulus/tasks/post-to-cmr/schemas/output.json b/tasks/post-to-cmr/schemas/output.json similarity index 100% rename from cumulus/tasks/post-to-cmr/schemas/output.json rename to tasks/post-to-cmr/schemas/output.json diff --git a/cumulus/tasks/post-to-cmr/tests/cmr_test.js b/tasks/post-to-cmr/tests/cmr_test.js similarity index 100% rename from cumulus/tasks/post-to-cmr/tests/cmr_test.js rename to tasks/post-to-cmr/tests/cmr_test.js diff --git a/cumulus/tasks/post-to-cmr/tests/data/meta.xml b/tasks/post-to-cmr/tests/data/meta.xml similarity index 100% rename from cumulus/tasks/post-to-cmr/tests/data/meta.xml rename to tasks/post-to-cmr/tests/data/meta.xml diff --git a/cumulus/tasks/post-to-cmr/tests/data/payload.json b/tasks/post-to-cmr/tests/data/payload.json similarity index 100% rename from cumulus/tasks/post-to-cmr/tests/data/payload.json rename to tasks/post-to-cmr/tests/data/payload.json diff --git a/cumulus/tasks/post-to-cmr/webpack.config.js b/tasks/post-to-cmr/webpack.config.js similarity index 100% rename from cumulus/tasks/post-to-cmr/webpack.config.js rename to tasks/post-to-cmr/webpack.config.js diff --git a/cumulus/tasks/queue-granules/README.md b/tasks/queue-granules/README.md similarity index 100% rename from cumulus/tasks/queue-granules/README.md rename to tasks/queue-granules/README.md diff --git a/cumulus/tasks/queue-granules/index.js b/tasks/queue-granules/index.js similarity index 100% rename from cumulus/tasks/queue-granules/index.js rename to tasks/queue-granules/index.js diff --git a/cumulus/tasks/queue-granules/package.json b/tasks/queue-granules/package.json similarity index 100% rename from cumulus/tasks/queue-granules/package.json rename to tasks/queue-granules/package.json diff --git a/cumulus/tasks/queue-granules/schemas/config.json b/tasks/queue-granules/schemas/config.json similarity index 100% rename from cumulus/tasks/queue-granules/schemas/config.json rename to tasks/queue-granules/schemas/config.json diff --git a/cumulus/tasks/queue-granules/schemas/input.json b/tasks/queue-granules/schemas/input.json similarity index 100% rename from cumulus/tasks/queue-granules/schemas/input.json rename to tasks/queue-granules/schemas/input.json diff --git a/cumulus/tasks/queue-granules/schemas/output.json b/tasks/queue-granules/schemas/output.json similarity index 100% rename from cumulus/tasks/queue-granules/schemas/output.json rename to tasks/queue-granules/schemas/output.json diff --git a/cumulus/tasks/queue-granules/tests/.eslintrc.json b/tasks/queue-granules/tests/.eslintrc.json similarity index 100% rename from cumulus/tasks/queue-granules/tests/.eslintrc.json rename to tasks/queue-granules/tests/.eslintrc.json diff --git a/cumulus/tasks/queue-granules/tests/fixtures/input.json b/tasks/queue-granules/tests/fixtures/input.json similarity index 100% rename from cumulus/tasks/queue-granules/tests/fixtures/input.json rename to tasks/queue-granules/tests/fixtures/input.json diff --git a/cumulus/tasks/queue-granules/tests/fixtures/workflow-template.json b/tasks/queue-granules/tests/fixtures/workflow-template.json similarity index 100% rename from cumulus/tasks/queue-granules/tests/fixtures/workflow-template.json rename to tasks/queue-granules/tests/fixtures/workflow-template.json diff --git a/cumulus/tasks/queue-granules/tests/index.js b/tasks/queue-granules/tests/index.js similarity index 100% rename from cumulus/tasks/queue-granules/tests/index.js rename to tasks/queue-granules/tests/index.js diff --git a/cumulus/tasks/queue-granules/webpack.config.js b/tasks/queue-granules/webpack.config.js similarity index 100% rename from cumulus/tasks/queue-granules/webpack.config.js rename to tasks/queue-granules/webpack.config.js diff --git a/cumulus/tasks/queue-pdrs/README.md b/tasks/queue-pdrs/README.md similarity index 100% rename from cumulus/tasks/queue-pdrs/README.md rename to tasks/queue-pdrs/README.md diff --git a/cumulus/tasks/queue-pdrs/index.js b/tasks/queue-pdrs/index.js similarity index 100% rename from cumulus/tasks/queue-pdrs/index.js rename to tasks/queue-pdrs/index.js diff --git a/cumulus/tasks/queue-pdrs/package.json b/tasks/queue-pdrs/package.json similarity index 100% rename from cumulus/tasks/queue-pdrs/package.json rename to tasks/queue-pdrs/package.json diff --git a/cumulus/tasks/queue-pdrs/schemas/config.json b/tasks/queue-pdrs/schemas/config.json similarity index 100% rename from cumulus/tasks/queue-pdrs/schemas/config.json rename to tasks/queue-pdrs/schemas/config.json diff --git a/cumulus/tasks/queue-pdrs/schemas/input.json b/tasks/queue-pdrs/schemas/input.json similarity index 100% rename from cumulus/tasks/queue-pdrs/schemas/input.json rename to tasks/queue-pdrs/schemas/input.json diff --git a/cumulus/tasks/queue-pdrs/schemas/output.json b/tasks/queue-pdrs/schemas/output.json similarity index 100% rename from cumulus/tasks/queue-pdrs/schemas/output.json rename to tasks/queue-pdrs/schemas/output.json diff --git a/cumulus/tasks/queue-pdrs/tests/.eslintrc.json b/tasks/queue-pdrs/tests/.eslintrc.json similarity index 100% rename from cumulus/tasks/queue-pdrs/tests/.eslintrc.json rename to tasks/queue-pdrs/tests/.eslintrc.json diff --git a/cumulus/tasks/queue-pdrs/tests/fixtures/input.json b/tasks/queue-pdrs/tests/fixtures/input.json similarity index 100% rename from cumulus/tasks/queue-pdrs/tests/fixtures/input.json rename to tasks/queue-pdrs/tests/fixtures/input.json diff --git a/cumulus/tasks/queue-pdrs/tests/fixtures/workflow-template.json b/tasks/queue-pdrs/tests/fixtures/workflow-template.json similarity index 100% rename from cumulus/tasks/queue-pdrs/tests/fixtures/workflow-template.json rename to tasks/queue-pdrs/tests/fixtures/workflow-template.json diff --git a/cumulus/tasks/queue-pdrs/tests/index.js b/tasks/queue-pdrs/tests/index.js similarity index 100% rename from cumulus/tasks/queue-pdrs/tests/index.js rename to tasks/queue-pdrs/tests/index.js diff --git a/cumulus/tasks/queue-pdrs/webpack.config.js b/tasks/queue-pdrs/webpack.config.js similarity index 100% rename from cumulus/tasks/queue-pdrs/webpack.config.js rename to tasks/queue-pdrs/webpack.config.js diff --git a/cumulus/tasks/sf-sns-report/README.md b/tasks/sf-sns-report/README.md similarity index 100% rename from cumulus/tasks/sf-sns-report/README.md rename to tasks/sf-sns-report/README.md diff --git a/cumulus/tasks/sf-sns-report/index.js b/tasks/sf-sns-report/index.js similarity index 100% rename from cumulus/tasks/sf-sns-report/index.js rename to tasks/sf-sns-report/index.js diff --git a/cumulus/tasks/sf-sns-report/package.json b/tasks/sf-sns-report/package.json similarity index 100% rename from cumulus/tasks/sf-sns-report/package.json rename to tasks/sf-sns-report/package.json diff --git a/cumulus/tasks/sf-sns-report/schemas/config.json b/tasks/sf-sns-report/schemas/config.json similarity index 100% rename from cumulus/tasks/sf-sns-report/schemas/config.json rename to tasks/sf-sns-report/schemas/config.json diff --git a/cumulus/tasks/sf-sns-report/tests/.eslintrc.json b/tasks/sf-sns-report/tests/.eslintrc.json similarity index 100% rename from cumulus/tasks/sf-sns-report/tests/.eslintrc.json rename to tasks/sf-sns-report/tests/.eslintrc.json diff --git a/cumulus/tasks/sf-sns-report/tests/index.js b/tasks/sf-sns-report/tests/index.js similarity index 100% rename from cumulus/tasks/sf-sns-report/tests/index.js rename to tasks/sf-sns-report/tests/index.js diff --git a/cumulus/tasks/sf-sns-report/webpack.config.js b/tasks/sf-sns-report/webpack.config.js similarity index 100% rename from cumulus/tasks/sf-sns-report/webpack.config.js rename to tasks/sf-sns-report/webpack.config.js diff --git a/cumulus/tasks/sync-granule/README.md b/tasks/sync-granule/README.md similarity index 100% rename from cumulus/tasks/sync-granule/README.md rename to tasks/sync-granule/README.md diff --git a/cumulus/tasks/sync-granule/index.js b/tasks/sync-granule/index.js similarity index 100% rename from cumulus/tasks/sync-granule/index.js rename to tasks/sync-granule/index.js diff --git a/cumulus/tasks/sync-granule/package.json b/tasks/sync-granule/package.json similarity index 100% rename from cumulus/tasks/sync-granule/package.json rename to tasks/sync-granule/package.json diff --git a/cumulus/tasks/sync-granule/schemas/config.json b/tasks/sync-granule/schemas/config.json similarity index 100% rename from cumulus/tasks/sync-granule/schemas/config.json rename to tasks/sync-granule/schemas/config.json diff --git a/cumulus/tasks/sync-granule/schemas/input.json b/tasks/sync-granule/schemas/input.json similarity index 100% rename from cumulus/tasks/sync-granule/schemas/input.json rename to tasks/sync-granule/schemas/input.json diff --git a/cumulus/tasks/sync-granule/schemas/output.json b/tasks/sync-granule/schemas/output.json similarity index 100% rename from cumulus/tasks/sync-granule/schemas/output.json rename to tasks/sync-granule/schemas/output.json diff --git a/cumulus/tasks/sync-granule/tests/.eslintrc.json b/tasks/sync-granule/tests/.eslintrc.json similarity index 100% rename from cumulus/tasks/sync-granule/tests/.eslintrc.json rename to tasks/sync-granule/tests/.eslintrc.json diff --git a/cumulus/tasks/sync-granule/tests/sync_granule_test.js b/tasks/sync-granule/tests/sync_granule_test.js similarity index 100% rename from cumulus/tasks/sync-granule/tests/sync_granule_test.js rename to tasks/sync-granule/tests/sync_granule_test.js diff --git a/cumulus/tasks/sync-granule/webpack.config.js b/tasks/sync-granule/webpack.config.js similarity index 100% rename from cumulus/tasks/sync-granule/webpack.config.js rename to tasks/sync-granule/webpack.config.js diff --git a/tests/fixtures/workflows/pdr_parse_ingest.json b/tests/fixtures/workflows/pdr_parse_ingest.json index 14dc893c40a..70c03187bb5 100644 --- a/tests/fixtures/workflows/pdr_parse_ingest.json +++ b/tests/fixtures/workflows/pdr_parse_ingest.json @@ -6,7 +6,7 @@ "steps": [ { "name": "DiscoverPdrs", - "lambda": "cumulus/tasks/discover-pdrs", + "lambda": "tasks/discover-pdrs", "handler": "index.handler", "cumulusConfig": { "templateUri": "{{$.meta.templates.ParsePdr}}", @@ -20,7 +20,7 @@ }, { "name": "QueuePdrs", - "lambda": "cumulus/tasks/queue-pdrs", + "lambda": "tasks/queue-pdrs", "handler": "index.handler", "cumulusConfig": { "provider": "{{$.meta.provider}}", @@ -38,7 +38,7 @@ "steps": [ { "name": "ParsePdr", - "lambda": "cumulus/tasks/parse-pdr", + "lambda": "tasks/parse-pdr", "handler": "index.handler", "cumulusConfig": { "useQueue": true, From 4edcd190eb3f4041918bc6ddc9db8c7a877f6a50 Mon Sep 17 00:00:00 2001 From: Scisco Date: Tue, 27 Mar 2018 17:12:41 -0400 Subject: [PATCH 02/11] update lerna paths --- .circleci/config.yml | 63 ++++++++------------------------------------ lerna.json | 3 +-- 2 files changed, 12 insertions(+), 54 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 130eddf0dac..02db97e4b2d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,14 +36,6 @@ jobs: keys: - cumulus-tasks-{{ checksum "global-hash" }} - - restore_cache: - keys: - - gitc-tasks-{{ checksum "global-hash" }} - - - restore_cache: - keys: - - services-{{ checksum "global-hash" }} - - run: name: Installing Dependencies command: | @@ -79,50 +71,17 @@ jobs: - save_cache: key: cumulus-tasks-{{ checksum "global-hash" }} paths: - - ./cumulus/tasks/hello-world/node_modules - - ./cumulus/tasks/discover-granules/node_modules - - ./cumulus/tasks/discover-pdrs/node_modules - - ./cumulus/tasks/parse-pdr/node_modules - - ./cumulus/tasks/post-to-cmr/node_modules - - ./cumulus/tasks/pdr-status-check/node_modules - - ./cumulus/tasks/queue-granules/node_modules - - ./cumulus/tasks/queue-pdrs/node_modules - - ./cumulus/tasks/sync-granule/node_modules - - ./cumulus/tasks/discover-s3-granules/node_modules - - ./cumulus/tasks/sf-sns-report/node_modules - - - save_cache: - key: gitc-tasks-{{ checksum "global-hash" }} - paths: - - ./cumulus/tasks/copy-idx-from-s3-to-efs/node_modules - - ./cumulus/tasks/delete-ingest-tracking-data/node_modules - - ./cumulus/tasks/delete-pdr-ftp/node_modules - - ./cumulus/tasks/delete-pdr-s3/node_modules - - ./cumulus/tasks/discover-cmr-granules/node_modules - - ./cumulus/tasks/discover-http-tiles/node_modules - - ./cumulus/tasks/dowload-activity-mock/node_modules - - ./cumulus/tasks/filter-payload/node_modules - - ./cumulus/tasks/generate-mrf/node_modules - - ./cumulus/tasks/generate-pan/node_modules - - ./cumulus/tasks/generate-pdrd/node_modules - - ./cumulus/tasks/run-gdal/node_modules - - ./cumulus/tasks/sync-http-urls/node_modules - - ./cumulus/tasks/sync-wms/node_modules - - ./cumulus/tasks/tee/node_modules - - ./cumulus/tasks/trigger-ingest/node_modules - - ./cumulus/tasks/trigger-mrf-gen/node_modules - - ./cumulus/tasks/trigger-process-pdrs/node_modules - - ./cumulus/tasks/validate-archives/node_modules - - ./cumulus/tasks/discover-pdr/node_modules - - ./cumulus/tasks/generate-pdr-file-list/node_modules - - ./cumulus/tasks/validate-pdr/node_modules - - - save_cache: - key: services-{{ checksum "global-hash" }} - paths: - - ./cumulus/services/sfn-scheduler/node_modules - - ./cumulus/services/sfn-throttler/node_modules - + - ./tasks/hello-world/node_modules + - ./tasks/discover-granules/node_modules + - ./tasks/discover-pdrs/node_modules + - ./tasks/parse-pdr/node_modules + - ./tasks/post-to-cmr/node_modules + - ./tasks/pdr-status-check/node_modules + - ./tasks/queue-granules/node_modules + - ./tasks/queue-pdrs/node_modules + - ./tasks/sync-granule/node_modules + - ./tasks/discover-s3-granules/node_modules + - ./tasks/sf-sns-report/node_modules - run: name: Running Tests diff --git a/lerna.json b/lerna.json index ea04ef403b4..79938b19107 100644 --- a/lerna.json +++ b/lerna.json @@ -3,7 +3,6 @@ "version": "1.2.0", "packages": [ "packages/*", - "cumulus/tasks/*", - "cumulus/services/*" + "tasks/*" ] } From 8061a405c1562ef3fbc0b8904dc5fec0eb6d01a1 Mon Sep 17 00:00:00 2001 From: Scisco Date: Tue, 27 Mar 2018 17:18:07 -0400 Subject: [PATCH 03/11] update paths in tests --- tasks/parse-pdr/tests/parse_pdrs_test.js | 2 +- tasks/sync-granule/tests/sync_granule_test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/parse-pdr/tests/parse_pdrs_test.js b/tasks/parse-pdr/tests/parse_pdrs_test.js index 0cb3ff3d98d..42f6f3e75a8 100644 --- a/tasks/parse-pdr/tests/parse_pdrs_test.js +++ b/tasks/parse-pdr/tests/parse_pdrs_test.js @@ -175,7 +175,7 @@ test('Parse a PDR from an S3 provider', async (t) => { await s3().putObject({ Bucket: bucket, Key: pdrName, - Body: fs.createReadStream('../../../packages/test-data/pdrs/MOD09GQ.PDR') + Body: fs.createReadStream('../../packages/test-data/pdrs/MOD09GQ.PDR') }).promise(); const event = cloneDeep(modis); diff --git a/tasks/sync-granule/tests/sync_granule_test.js b/tasks/sync-granule/tests/sync_granule_test.js index 2abfd3daa0f..210f43fb779 100644 --- a/tasks/sync-granule/tests/sync_granule_test.js +++ b/tasks/sync-granule/tests/sync_granule_test.js @@ -194,7 +194,7 @@ test('download granule from S3 provider', async (t) => { await s3().putObject({ Bucket: t.context.event.config.provider.host, Key: `${granuleFilePath}/${granuleFileName}`, - Body: fs.createReadStream(`../../../packages/test-data/granules/${granuleFileName}`) + Body: fs.createReadStream(`../../packages/test-data/granules/${granuleFileName}`) }).promise(); const output = await syncGranule(t.context.event); From e0a2efba824742e09df60ca0fd6f10db7e26fcd3 Mon Sep 17 00:00:00 2001 From: Scisco Date: Tue, 27 Mar 2018 17:19:24 -0400 Subject: [PATCH 04/11] update readme to include localstack requirement for tests --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1aee8f3ee97..f6747539022 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ If you prefer to run docker in detached mode (i.e. run containers in the backgro Run the test commands next + $ export LOCALSTACK_HOST=localhost $ yarn test Run end to end tests by From f25d974ab6659627fa6fc8cc182a16d97caf4ee2 Mon Sep 17 00:00:00 2001 From: Scisco Date: Tue, 27 Mar 2018 17:25:58 -0400 Subject: [PATCH 05/11] update eslint number --- .eslint-ratchet-high-water-mark | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslint-ratchet-high-water-mark b/.eslint-ratchet-high-water-mark index a4ea6e7a770..9e5e9704e3d 100644 --- a/.eslint-ratchet-high-water-mark +++ b/.eslint-ratchet-high-water-mark @@ -1 +1 @@ -2059 +1370 From 08e501af2c6f9a96cc145eb42ad580ed640688ce Mon Sep 17 00:00:00 2001 From: Scisco Date: Wed, 28 Mar 2018 09:23:26 -0400 Subject: [PATCH 06/11] update language --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 408eb6690d3..54c0668de70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Updated -- Cumulus Repositories folder structure updated: +- Cumulus repository folders structure updated: - removed the `cumulus` folder altogether - moved `cumulus/tasks` to `tasks` folder at the root level - moved the tasks that are not converted to use CMA to `tasks/.not_CMA_compliant` From 74323e4aed45f43cf71fdcd8c221906c3732bdb1 Mon Sep 17 00:00:00 2001 From: Scisco Date: Wed, 28 Mar 2018 11:03:03 -0400 Subject: [PATCH 07/11] change updated to changed --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54c0668de70..4447cb8a4f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] -### Updated +### Changed - Cumulus repository folders structure updated: - removed the `cumulus` folder altogether From 94ddc4292713f490a8b087cd474290a4a675e5c5 Mon Sep 17 00:00:00 2001 From: Scisco Date: Wed, 28 Mar 2018 11:49:14 -0400 Subject: [PATCH 08/11] deprecate discover-s3-granules --- CHANGELOG.md | 3 +++ tasks/{ => .deprecated}/discover-s3-granules/README.md | 0 tasks/{ => .deprecated}/discover-s3-granules/index.js | 0 tasks/{ => .deprecated}/discover-s3-granules/package.json | 0 .../{ => .deprecated}/discover-s3-granules/schemas/config.json | 0 .../{ => .deprecated}/discover-s3-granules/schemas/output.json | 0 .../discover-s3-granules/tests/fixtures/input.json | 0 tasks/{ => .deprecated}/discover-s3-granules/tests/index.js | 0 tasks/{ => .deprecated}/discover-s3-granules/webpack.config.js | 0 9 files changed, 3 insertions(+) rename tasks/{ => .deprecated}/discover-s3-granules/README.md (100%) rename tasks/{ => .deprecated}/discover-s3-granules/index.js (100%) rename tasks/{ => .deprecated}/discover-s3-granules/package.json (100%) rename tasks/{ => .deprecated}/discover-s3-granules/schemas/config.json (100%) rename tasks/{ => .deprecated}/discover-s3-granules/schemas/output.json (100%) rename tasks/{ => .deprecated}/discover-s3-granules/tests/fixtures/input.json (100%) rename tasks/{ => .deprecated}/discover-s3-granules/tests/index.js (100%) rename tasks/{ => .deprecated}/discover-s3-granules/webpack.config.js (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4447cb8a4f0..355e3ca28af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - moved `cumulus/tasks` to `tasks` folder at the root level - moved the tasks that are not converted to use CMA to `tasks/.not_CMA_compliant` - updated paths where necessary + +### Deprecated +- discover-s3-granules is deprecated. The functionality is provided by the discover-granules task ### Fixed - **CUMULUS-331:** Fix aws.downloadS3File to handle non-existent key - Using test ftp provider for discover-granules testing [CUMULUS-427] diff --git a/tasks/discover-s3-granules/README.md b/tasks/.deprecated/discover-s3-granules/README.md similarity index 100% rename from tasks/discover-s3-granules/README.md rename to tasks/.deprecated/discover-s3-granules/README.md diff --git a/tasks/discover-s3-granules/index.js b/tasks/.deprecated/discover-s3-granules/index.js similarity index 100% rename from tasks/discover-s3-granules/index.js rename to tasks/.deprecated/discover-s3-granules/index.js diff --git a/tasks/discover-s3-granules/package.json b/tasks/.deprecated/discover-s3-granules/package.json similarity index 100% rename from tasks/discover-s3-granules/package.json rename to tasks/.deprecated/discover-s3-granules/package.json diff --git a/tasks/discover-s3-granules/schemas/config.json b/tasks/.deprecated/discover-s3-granules/schemas/config.json similarity index 100% rename from tasks/discover-s3-granules/schemas/config.json rename to tasks/.deprecated/discover-s3-granules/schemas/config.json diff --git a/tasks/discover-s3-granules/schemas/output.json b/tasks/.deprecated/discover-s3-granules/schemas/output.json similarity index 100% rename from tasks/discover-s3-granules/schemas/output.json rename to tasks/.deprecated/discover-s3-granules/schemas/output.json diff --git a/tasks/discover-s3-granules/tests/fixtures/input.json b/tasks/.deprecated/discover-s3-granules/tests/fixtures/input.json similarity index 100% rename from tasks/discover-s3-granules/tests/fixtures/input.json rename to tasks/.deprecated/discover-s3-granules/tests/fixtures/input.json diff --git a/tasks/discover-s3-granules/tests/index.js b/tasks/.deprecated/discover-s3-granules/tests/index.js similarity index 100% rename from tasks/discover-s3-granules/tests/index.js rename to tasks/.deprecated/discover-s3-granules/tests/index.js diff --git a/tasks/discover-s3-granules/webpack.config.js b/tasks/.deprecated/discover-s3-granules/webpack.config.js similarity index 100% rename from tasks/discover-s3-granules/webpack.config.js rename to tasks/.deprecated/discover-s3-granules/webpack.config.js From 5e57490eee09c30e067dd2f7ac517d39d8304142 Mon Sep 17 00:00:00 2001 From: Scisco Date: Wed, 28 Mar 2018 11:50:35 -0400 Subject: [PATCH 09/11] remove discover-s3-granules --- .circleci/config.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 02db97e4b2d..cee948edb81 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -80,7 +80,6 @@ jobs: - ./tasks/queue-granules/node_modules - ./tasks/queue-pdrs/node_modules - ./tasks/sync-granule/node_modules - - ./tasks/discover-s3-granules/node_modules - ./tasks/sf-sns-report/node_modules - run: From 8d1a9386a6b0a1e6c8a66e36959a918c797a98d9 Mon Sep 17 00:00:00 2001 From: Scisco Date: Wed, 28 Mar 2018 11:58:58 -0400 Subject: [PATCH 10/11] update ratchet number --- .eslint-ratchet-high-water-mark | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslint-ratchet-high-water-mark b/.eslint-ratchet-high-water-mark index ea29ccd0715..fba12d19c74 100644 --- a/.eslint-ratchet-high-water-mark +++ b/.eslint-ratchet-high-water-mark @@ -1 +1 @@ -1362 +1349 From 6ba38694c0cfd08080ae8ff318ae00fba5aa6e98 Mon Sep 17 00:00:00 2001 From: Scisco Date: Wed, 28 Mar 2018 14:32:28 -0400 Subject: [PATCH 11/11] move changed to fixed --- CHANGELOG.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 355e3ca28af..20192040451 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,14 +6,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] -### Changed - -- Cumulus repository folders structure updated: - - removed the `cumulus` folder altogether - - moved `cumulus/tasks` to `tasks` folder at the root level - - moved the tasks that are not converted to use CMA to `tasks/.not_CMA_compliant` - - updated paths where necessary - ### Deprecated - discover-s3-granules is deprecated. The functionality is provided by the discover-granules task ### Fixed @@ -23,6 +15,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - **CUMULUS-414: "Schema validation not being performed on many tasks"** revised npm build scripts of tasks that use cumulus-message-adapter to place schema directories into dist directories. - **CUMULUS-271: "Empty response body from rules PUT endpoint"** Added the updated rule to response body. - Increased memory allotment for `CustomBootstrap` lambda function. Resolves failed deployments where `CustomBootstrap` lambda function was failing with error `Process exited before completing request`. This was causing deployments to stall, fail to update and fail to rollback. This error is thrown when the lambda function tries to use more memory than it is allotted. +- Cumulus repository folders structure updated: + - removed the `cumulus` folder altogether + - moved `cumulus/tasks` to `tasks` folder at the root level + - moved the tasks that are not converted to use CMA to `tasks/.not_CMA_compliant` + - updated paths where necessary ## [v1.2.0] - 2018-03-20