From 3e6269a3bf88df6edfc86c8981029043f14138cf Mon Sep 17 00:00:00 2001 From: Rich Gwozdz Date: Thu, 24 Aug 2023 12:55:07 -0700 Subject: [PATCH] chore: modify script --- README.md | 92 +++--------- fork-scripts/ci-tests.yml | 36 +++++ fork-scripts/modify-fork.js | 40 ++++-- fork-scripts/package-lock.json | 254 +++++++++++++++++++++++++++++++++ fork-scripts/package.json | 4 +- 5 files changed, 338 insertions(+), 88 deletions(-) create mode 100644 fork-scripts/ci-tests.yml diff --git a/README.md b/README.md index 0f0473693..8fc255147 100644 --- a/README.md +++ b/README.md @@ -1,93 +1,33 @@ -# Koop +# Koop Fork -*Translate, query, & integrate any geospatial API on the web* +This is a specialized fork of the Koop repositiory. -Koop is a JavaScript toolkit for making requests to spatial APIs. It exposes a Node.js web server that faciliates on-the-fly transformations of geospatial data from one format to another and delivers it to clients by HTTP. Koop allows you to keep your data in its native format, while making it accessible in any format required. Out-of-the-box, Koop can translates your data into the GeoServices specification supported by ArcGIS products. It's plugin architecture supports output in other formats including vector-tile, WMS, and plain old GeoJSON. Learn more at [https://koopjs.github.io](https://koopjs.github.io). +## Creating a release branch +1. Make sure your master branch is synchronized with the Koop upstream. This will require a rebase due to the changes made on this fork. -Koop's plugin-architecture facilates custom deployments specific to your needs. "Provider" plugins to connect to novel data formats and translate to a common format (GeoJSON), while "output" plugins then transform that GeoJSON to other specifications. See a list of plugins already authored and maintained [here](https://koopjs.github.io/docs/available-plugins). If you have a novel datasource or require an as-yet unsupported output format, new plugins can be easily developed and integrated. See the [development section of the Koop docs](https://koopjs.github.io/docs/development). - -![lots of geojson into feature services](https://user-images.githubusercontent.com/7832202/28444721-43eb6ea6-6d8d-11e7-8d56-3af46fd5bf88.png) - -## Demo -Want to see Koop in action? The repository ships with a demo that shows Koops support for GeoServices (ArcGIS). It leverages the file-geojson data provider and the GeoServices output-plugin: +2. Branch off of synced master. In this example we call the branch cdf-11.2: ```bash -git clone https://github.com/koopjs/koop -cd koop -npm run demo +> git checkout -b cdf-11.2 ``` -Koop will start listening on port 8080. You should the following console logging noting the exposed file-geojson/GeoService routes: - +3. Run modification script. This will result in file deletions, modifications, and the creation of a Github Action. ```bash -2023-03-17T19:18:29.416Z info: [Geoservices] routes for [file-geojson] provider -2023-03-17T19:18:29.416Z info: ROUTE | [GET, POST] | /file-geojson/rest/info -2023-03-17T19:18:29.416Z info: ROUTE | [GET, POST] | /file-geojson/tokens/:method -2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/tokens -2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/rest/services/:id/FeatureServer/:layer/:method -2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/rest/services/:id/FeatureServer/layers -2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/rest/services/:id/FeatureServer/:layer -2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/rest/services/:id/FeatureServer -2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/rest/services/:id/FeatureServer* +> node fork-scripts/modify-fork.js && npm install ``` -The following request will take the demo data from `demo/provider-data/line.geojson` and send it as geojson: - -``` -http://localhost:8080/file-geojson/rest/services/line/FeatureServer/0/query -``` - -Query for features with a specific property value: - -``` -http://localhost:8080/file-geojson/rest/services/line/FeatureServer/0/query?where=foo='bar' +4. Run E2E tests and ensure they all pass +```bash +> npm run test:e2e ``` -Return data in a different coordinate system: - -``` -http://localhost:8080/file-geojson/rest/services/line/FeatureServer/0/query?outSR=3857 +5. Commit changes and push your branch +```bash +> git commit -m 'chore: prep for cdf release' +> git push origin cdf-11.2 ``` -## Koop Monorepo - -This repository is home of the Koop monorepo. In contains a collection of packages that are shipped by default with every Koop instance. [koop-core](https://github.com/koopjs/koop/packages/core) is the parent package and is used to generate a default configuration of Koop. References to the "Koop version" refer to the version of this package. The other packages in this monorepo are dependencies of core and include the Geoservices output-plugin and its dependencies, the default in-memory data cache, and a logger. All other plugins (providers, outputs, etc) are in separate repositories. - -The Koop dependency graph is shown below. -![Screen Shot 2022-11-30 at 1 03 46 PM](https://user-images.githubusercontent.com/4369192/204908289-82659cfe-fcf3-404a-aa70-79baf540f1b8.png) - -### Test Coverage -Test coverages for each package are shown below. Coverage for some packages includes integration tests as opposed to true unit tests. Difference in coverage is shown below. Our goal is to have complete unit test coverage, and breakout integration/e2e tests separately. - -| package | integration + unit | unit | -|---|---|---| -|cache-memory|N/A|![coverage](./packages/cache-memory/coverage.svg)| -|featureserver|![coverage](./packages/featureserver/coverage.svg)|![coverage](./packages/featureserver/coverage-unit.svg)| -|koop-core|N/A|![coverage](./packages/core/coverage.svg)| -|logger|N/A|![coverage](./packages/logger/coverage.svg)| -|output-geoservices|N/A|![coverage](./packages/output-geoservices/coverage.svg)| -|winnow|![coverage](./packages/winnow/coverage.svg)|![coverage](./packages/winnow/coverage-unit.svg)| - -## Contributing -Pull requests are welcomed and encouraged. Please consider the following PR guidelines: -1. Provide a clear description of what the PR is trying to solve. Link to any existing issues -2. Aim for clear, readable code. -3. Use conventional commit messages. For convenience, you can add commits with `npm run commit`. -3. Add unit tests and ensure any new code has 100% test coverage. You can do this by running `npm run test:cov` and then looking for your file in the `/coverage/index.html` output. -4. Run `npm run lint:fix` and ensure you're not commiting lint -5. If your new code requires a release, please run `npm run changeset:add` and commit the generated changeset file as a part of your PR. - -Esri welcomes contributions from anyone and everyone. Please see our [guidelines for contributing](https://github.com/Esri/contributing). - -## Issues -Find a bug or want to request a new feature? Post it [here](https://github.com/koopjs/koop/issues). - -## Resources - -* [Koop Documentation](https://koopjs.github.io/) -* [ArcGIS REST API Documentation](http://resources.arcgis.com/en/help/arcgis-rest-api/) -* [ArcGIS for Developers](http://developers.arcgis.com) -* [@esri](http://twitter.com/esri) +6. Consider adding branch protection rules on Github (to prevent deletions). ## License diff --git a/fork-scripts/ci-tests.yml b/fork-scripts/ci-tests.yml new file mode 100644 index 000000000..5630e9dea --- /dev/null +++ b/fork-scripts/ci-tests.yml @@ -0,0 +1,36 @@ +name: CI tests + +on: + push: + paths: + - "./.github/**.yml" + - "**/packages/**.js" + - "**/packages/**/package.json" + +jobs: + pr-tests: + name: Install, lint, test + runs-on: ${{ matrix.os }} + strategy: + matrix: + node-version: [18.x] + os: [ubuntu-latest, windows-latest] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Install npm 7 + run: npm i -g npm@7 --registry=https://registry.npmjs.org + + - name: Install + run: npm ci + + - name: Lint + run: npm run lint:ci + + - name: E2E tests + run: npm run test:e2e diff --git a/fork-scripts/modify-fork.js b/fork-scripts/modify-fork.js index 4b794bde8..26bb26e76 100644 --- a/fork-scripts/modify-fork.js +++ b/fork-scripts/modify-fork.js @@ -1,4 +1,7 @@ const path = require('path'); +const { promisify } = require('util'); +const copyfiles = require('copyfiles'); +const copy = promisify(copyfiles); const deleteAsync = require('del'); const findInFiles = require('find-in-files'); const { modifyJsonFile } = require('modify-json-file'); @@ -6,20 +9,25 @@ const replace = require('replace'); const packages = require('../package.json').workspaces; async function execute() { - await deleteIrrelevantFiles(); + await deleteNonEssentialFiles(); await modifyPackageFiles(); await replacePackageReferences(); await replaceKoopCoreRefs(); + return copyGithubAction(); } async function modifyPackageFiles() { - for (let i = 0; i < packages.length; i++) { - const packageFile = require(path.join('..', packages[i], 'package.json')); + console.log('- modifying package.json files'); + for (let i = 0; i < packages.length; i++) { + const filePath = path.join('../', packages[i], 'package.json'); + const packageFile = require(filePath); + const name = packageFile.name.replace('@koopjs/', ''); + const buildDest = `../../customdata/framework/${name}`; await modifyJsonFile( - `./${packages[i]}/package.json`, + path.join(packages[i], 'package.json'), { - name: packageFile.name.replace('@koopjs/', ''), + name, dependencies: stripKoopDeps(packageFile.dependencies), devDependencies: undefined, files: undefined, @@ -29,6 +37,10 @@ async function modifyPackageFiles() { repository: undefined, directories: undefined, types: undefined, + scripts: { + clean: `shx rm -rf ${buildDest} && shx rm package-lock.json`, + build: `shx mkdir ${buildDest} && shx cp package.json ${buildDest} && shx cp -r ./src ${buildDest} && shx cp -r ./node_modules ${buildDest}`, + }, }, { ifFieldIsMissing: 'skip' }, ); @@ -47,7 +59,8 @@ function stripKoopDeps(dependencies) { }, {}); } -async function deleteIrrelevantFiles() { +async function deleteNonEssentialFiles() { + console.log('- deleting nonessential files'); await deleteAsync([ 'packages/**/*.*', '!packages/**', @@ -63,15 +76,23 @@ async function deleteIrrelevantFiles() { 'packages/**/*.ts', 'packages/**/*.spec.js', ]); - await deleteAsync(['packages/**/test']); + + await deleteAsync(['.github/workflows/*.yml']); return deleteAsync(['packages/**/benchmark']); } +async function copyGithubAction() { + return copy(['fork-scripts/ci-tests.yml', '.github/workflows'], { up: true}); +} + async function replacePackageReferences() { + console.log( + '- replacing references to monorepo packages with relative paths', + ); for (let i = 0; i < packages.length; i++) { const found = await findInFiles.find( /@koopjs\/[a-z-]+/, - packages[i], + path.join(packages[i]), '.js$', ); @@ -103,11 +124,12 @@ async function replacePackageReferences() { } async function replaceKoopCoreRefs() { + console.log('- replacing koop-core references in demo and e2e test files'); const directories = ['test', 'demo']; for (let i = 0; i < directories.length; i++) { const found = await findInFiles.find( '@koopjs/koop-core', - directories[i], + path.join(directories[i]), '.js$', ); diff --git a/fork-scripts/package-lock.json b/fork-scripts/package-lock.json index 636587989..1cc1544eb 100644 --- a/fork-scripts/package-lock.json +++ b/fork-scripts/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "Apache-2.0", "devDependencies": { + "copyfiles": "^2.4.1", "del": "^6.1.1", "find-in-files": "^0.5.0", "modify-json-file": "^1.2.2", @@ -221,6 +222,128 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/copyfiles": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", + "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "dev": true, + "dependencies": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + }, + "bin": { + "copyfiles": "copyfiles", + "copyup": "copyfiles" + } + }, + "node_modules/copyfiles/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/copyfiles/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/copyfiles/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/copyfiles/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/copyfiles/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/copyfiles/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/copyfiles/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/copyfiles/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -288,6 +411,15 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -557,6 +689,12 @@ "node": ">=8" } }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -621,6 +759,18 @@ "node": "*" } }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/modify-json-file": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/modify-json-file/-/modify-json-file-1.2.2.tgz", @@ -639,6 +789,16 @@ "node": ">=12" } }, + "node_modules/noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -756,6 +916,12 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -786,6 +952,18 @@ } ] }, + "node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, "node_modules/replace": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/replace/-/replace-1.2.2.tgz", @@ -867,6 +1045,12 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -882,6 +1066,12 @@ "node": ">=8" } }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -950,6 +1140,46 @@ "node": ">=4" } }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -980,6 +1210,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, "node_modules/which-module": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", @@ -1039,6 +1284,15 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", diff --git a/fork-scripts/package.json b/fork-scripts/package.json index fe68cbd7c..5b64d8ba6 100644 --- a/fork-scripts/package.json +++ b/fork-scripts/package.json @@ -3,12 +3,10 @@ "version": "1.0.0", "description": "", "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, "author": "", "license": "Apache-2.0", "devDependencies": { + "copyfiles": "^2.4.1", "del": "^6.1.1", "find-in-files": "^0.5.0", "modify-json-file": "^1.2.2",