diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 96d1ffd176..81d093922a 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -22,8 +22,6 @@ const config = { // don't lint fixtures 'packages/*/tests/**/fixtures*/**', 'packages/*/benchmarks/**/fixtures*/**', - 'packages/framework-info/test/fixtures/**', - 'packages/framework-info/dist/**', 'packages/*/lib/**', 'packages/*/dist/**', diff --git a/.prettierignore b/.prettierignore index a20dbebb26..6f7d3d8984 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,7 +2,6 @@ packages/*/tests/**/fixtures/** packages/*/test/**/fixtures*/** packages/*/benchmarks/**/fixtures*/** -packages/framework-info/test/fixtures/** # don't lint outputs packages/*/lib packages/*/dist diff --git a/package-lock.json b/package-lock.json index 468c93e4ad..882bd5b7c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -107,198 +107,6 @@ "node": ">=4" } }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.6", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", @@ -317,29 +125,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/highlight": { "version": "7.23.4", "license": "MIT", @@ -413,50 +198,6 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/template": { - "version": "7.22.15", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { "version": "7.25.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", @@ -1884,6 +1625,7 @@ "version": "0.3.5", "dev": true, "license": "MIT", + "optional": true, "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -6632,10 +6374,6 @@ "resolved": "packages/edge-bundler", "link": true }, - "node_modules/@netlify/framework-info": { - "resolved": "packages/framework-info", - "link": true - }, "node_modules/@netlify/functions-utils": { "resolved": "packages/functions-utils", "link": true @@ -8664,16 +8402,6 @@ "@types/json-schema": "*" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "dev": true, @@ -9375,225 +9103,67 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", "dev": true, - "license": "MIT", - "peer": true + "license": "BSD-2-Clause" }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0", "dev": true, - "license": "MIT", - "peer": true, + "license": "BSD-2-Clause", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=18.12.0" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", + "node_modules/@yarnpkg/parsers/node_modules/argparse": { + "version": "1.0.10", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "sprintf-js": "~1.0.2" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", + "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { + "version": "3.14.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", + "node_modules/@zkochan/js-yaml": { + "version": "0.0.6", "dev": true, - "license": "Apache-2.0", - "peer": true, + "license": "MIT", "dependencies": { - "@xtuc/long": "4.2.2" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "peer": true + "node_modules/abbrev": { + "version": "1.1.1", + "license": "ISC" }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "peer": true, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "dev": true, - "license": "Apache-2.0", - "peer": true - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/@yarnpkg/parsers": { - "version": "3.0.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=18.12.0" - } - }, - "node_modules/@yarnpkg/parsers/node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { - "version": "3.14.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@zkochan/js-yaml": { - "version": "0.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "license": "ISC" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" } }, "node_modules/acorn": { @@ -10418,24 +9988,6 @@ "version": "1.6.4", "license": "ISC" }, - "node_modules/babel-loader": { - "version": "8.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "license": "MIT" @@ -10527,14 +10079,6 @@ "node": ">=8" } }, - "node_modules/big.js": { - "version": "5.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/bin-links": { "version": "3.0.3", "dev": true, @@ -11207,15 +10751,6 @@ "node": ">=10" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.0" - } - }, "node_modules/chunkd": { "version": "2.0.1", "dev": true, @@ -11819,11 +11354,6 @@ "version": "3.0.0", "license": "ISC" }, - "node_modules/commondir": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/compare-func": { "version": "2.0.0", "dev": true, @@ -12525,248 +12055,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cpy-cli": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cpy": "^9.0.0", - "meow": "^10.1.2" - }, - "bin": { - "cpy": "cli.js" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/camelcase-keys": { - "version": "7.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/decamelize": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/map-obj": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/meow": { - "version": "10.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.2", - "camelcase-keys": "^7.0.0", - "decamelize": "^5.0.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.2", - "read-pkg-up": "^8.0.0", - "redent": "^4.0.0", - "trim-newlines": "^4.0.2", - "type-fest": "^1.2.2", - "yargs-parser": "^20.2.9" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cpy-cli/node_modules/read-pkg": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/read-pkg-up": { - "version": "8.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/redent": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^5.0.0", - "strip-indent": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/strip-indent": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/trim-newlines": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/type-fest": { - "version": "1.4.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy-cli/node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cpy/node_modules/aggregate-error": { "version": "4.0.1", "license": "MIT", @@ -13768,14 +13056,6 @@ "version": "9.2.2", "license": "MIT" }, - "node_modules/emojis-list": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", @@ -13808,19 +13088,6 @@ "once": "^1.4.0" } }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/enquirer": { "version": "2.3.6", "dev": true, @@ -15614,89 +14881,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find-replace": { "version": "3.0.0", "dev": true, @@ -16022,15 +15206,6 @@ "node": ">=8" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/get-amd-module-type": { "version": "5.0.1", "license": "MIT", @@ -16451,12 +15626,6 @@ "node": ">= 6" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "dev": true, - "license": "BSD-2-Clause", - "peer": true - }, "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.11", "license": "MIT", @@ -18134,35 +17303,6 @@ "node": ">=8" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/js-string-escape": { "version": "1.0.1", "dev": true, @@ -18185,18 +17325,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/json-buffer": { "version": "3.0.1", "license": "MIT" @@ -18224,25 +17352,14 @@ "dev": true, "license": "ISC", "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/json5": { - "version": "2.2.3", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "license": "ISC" + }, "node_modules/jsonc-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", @@ -18937,28 +18054,6 @@ "node": ">=8" } }, - "node_modules/loader-runner": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/local-pkg": { "version": "0.4.3", "dev": true, @@ -19356,14 +18451,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/magic-string": { - "version": "0.25.9", - "dev": true, - "license": "MIT", - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, "node_modules/make-dir": { "version": "3.1.0", "license": "MIT", @@ -21742,11 +20829,6 @@ "parse-path": "^7.0.0" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/path-exists": { "version": "5.0.0", "license": "MIT", @@ -22440,15 +21522,6 @@ "version": "1.0.0", "license": "MIT" }, - "node_modules/randombytes": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/react-is": { "version": "17.0.2", "license": "MIT" @@ -23114,42 +22187,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-inject": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "estree-walker": "^0.6.1", - "magic-string": "^0.25.3", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-inject/node_modules/estree-walker": { - "version": "0.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/rollup-plugin-node-polyfills": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "rollup-plugin-inject": "^3.0.0" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "dev": true, - "license": "MIT", - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "dev": true, - "license": "MIT" - }, "node_modules/run-async": { "version": "2.4.1", "dev": true, @@ -23258,51 +22295,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/schema-utils": { - "version": "2.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -23359,15 +22351,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/set-blocking": { "version": "2.0.0", "license": "ISC" @@ -23648,11 +22631,6 @@ "source-map": "^0.6.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "dev": true, - "license": "MIT" - }, "node_modules/spdx-correct": { "version": "3.2.0", "license": "Apache-2.0", @@ -24109,15 +23087,6 @@ "node": ">=8" } }, - "node_modules/tapable": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/tar": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", @@ -24231,6 +23200,7 @@ "version": "5.26.0", "dev": true, "license": "BSD-2-Clause", + "optional": true, "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -24245,93 +23215,11 @@ "node": ">=10" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "dev": true, "license": "MIT", + "optional": true, "peer": true }, "node_modules/test-exclude": { @@ -25358,19 +24246,6 @@ "dev": true, "license": "ISC" }, - "node_modules/watchpack": { - "version": "2.4.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/wcwidth": { "version": "1.0.1", "dev": true, @@ -25390,111 +24265,6 @@ "version": "3.0.1", "license": "BSD-2-Clause" }, - "node_modules/webpack": { - "version": "5.89.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/well-known-symbols": { "version": "2.0.0", "dev": true, @@ -26282,7 +25052,6 @@ "@netlify/cache-utils": "^5.1.6", "@netlify/config": "^20.19.0", "@netlify/edge-bundler": "12.2.3", - "@netlify/framework-info": "^9.8.13", "@netlify/functions-utils": "^5.2.79", "@netlify/git-utils": "^5.1.1", "@netlify/opentelemetry-utils": "^1.2.1", @@ -26294,7 +25063,7 @@ "chalk": "^5.0.0", "clean-stack": "^4.0.0", "execa": "^6.0.0", - "fdir": "^6.3.0", + "fdir": "^6.0.1", "figures": "^5.0.0", "filter-obj": "^5.0.0", "got": "^12.0.0", @@ -27054,6 +25823,7 @@ "packages/framework-info": { "name": "@netlify/framework-info", "version": "9.8.13", + "extraneous": true, "license": "MIT", "dependencies": { "ajv": "^8.12.0", @@ -27111,7 +25881,7 @@ "dependencies": { "execa": "^6.0.0", "map-obj": "^5.0.0", - "micromatch": "^4.0.8", + "micromatch": "^4.0.2", "moize": "^6.1.3", "path-exists": "^5.0.0" }, diff --git a/packages/build-info/src/index.ts b/packages/build-info/src/index.ts index d15f74cb3b..891266658e 100644 --- a/packages/build-info/src/index.ts +++ b/packages/build-info/src/index.ts @@ -2,6 +2,7 @@ export * from './file-system.js' export * from './logger.js' export { DetectedFramework, FrameworkInfo } from './frameworks/framework.js' export * from './get-framework.js' +export * from './list-frameworks.js' export * from './project.js' export * from './settings/get-build-settings.js' export * from './settings/get-toml-settings.js' diff --git a/packages/build-info/src/list-frameworks.ts b/packages/build-info/src/list-frameworks.ts new file mode 100644 index 0000000000..5ed001ba4f --- /dev/null +++ b/packages/build-info/src/list-frameworks.ts @@ -0,0 +1,7 @@ +import type { Framework } from './frameworks/framework.js' + +export const listFrameworks = async ({ projectDir }: { projectDir: string }): Promise => { + // FIXME(serhalp) implement + console.log({ projectDir }) + throw new Error('Not implemented') +} diff --git a/packages/build/package.json b/packages/build/package.json index 2e23e140b5..36380d45da 100644 --- a/packages/build/package.json +++ b/packages/build/package.json @@ -72,7 +72,6 @@ "@netlify/cache-utils": "^5.1.6", "@netlify/config": "^20.19.0", "@netlify/edge-bundler": "12.2.3", - "@netlify/framework-info": "^9.8.13", "@netlify/functions-utils": "^5.2.79", "@netlify/git-utils": "^5.1.1", "@netlify/opentelemetry-utils": "^1.2.1", diff --git a/packages/build/src/core/build.ts b/packages/build/src/core/build.ts index 8f438479f1..c76087762a 100644 --- a/packages/build/src/core/build.ts +++ b/packages/build/src/core/build.ts @@ -1,4 +1,3 @@ -import { supportedRuntimes } from '@netlify/framework-info' import { addAttributesToActiveSpan } from '@netlify/opentelemetry-utils' import { getErrorInfo } from '../error/info.js' @@ -24,6 +23,11 @@ import { warnOnMissingSideFiles } from './missing_side_file.js' import { normalizeFlags } from './normalize_flags.js' import type { BuildFlags } from './types.js' +const supportedRuntimes = { + next: { package: '@netlify/plugin-nextjs', skipFlag: 'NETLIFY_NEXT_PLUGIN_SKIP' }, + gatsby: { package: '@netlify/plugin-gatsby', skipFlag: 'NETLIFY_GATSBY_PLUGIN_SKIP' }, +} + // Performed on build start. Must be kept small and unlikely to fail since it // does not have proper error handling. Error handling relies on `errorMonitor` // being built, which relies itself on flags being normalized. diff --git a/packages/build/src/plugins_core/pre_dev_cleanup/index.ts b/packages/build/src/plugins_core/pre_dev_cleanup/index.ts index c4a41a9c1c..c5dbd6eb79 100644 --- a/packages/build/src/plugins_core/pre_dev_cleanup/index.ts +++ b/packages/build/src/plugins_core/pre_dev_cleanup/index.ts @@ -1,7 +1,7 @@ import { rm, stat } from 'node:fs/promises' import { resolve } from 'node:path' -import { listFrameworks } from '@netlify/framework-info' +import { listFrameworks } from '@netlify/build-info' import { log } from '../../log/logger.js' import { CoreStep, CoreStepCondition, CoreStepFunction, CoreStepFunctionArgs } from '../types.js' diff --git a/packages/framework-info/.gitignore b/packages/framework-info/.gitignore deleted file mode 100644 index 67ed40ad8a..0000000000 --- a/packages/framework-info/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -node_modules -yarn-error.log -.vscode -dist -src/generated -.DS_Store - -# Local Netlify folder -.netlify - -# These are mock node_modules folder for testing purposes -!tests/fixtures/simple/node_modules -!tests/fixtures/multiple/node_modules -!tests/fixtures/monorepos/node_modules diff --git a/packages/framework-info/CHANGELOG.md b/packages/framework-info/CHANGELOG.md deleted file mode 100644 index 0010c90f3b..0000000000 --- a/packages/framework-info/CHANGELOG.md +++ /dev/null @@ -1,789 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to -[Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - -## [9.8.13](https://github.com/netlify/build/compare/framework-info-v9.8.12...framework-info-v9.8.13) (2024-05-27) - - -### Bug Fixes - -* revert update of `read-pkg-up` ([#5672](https://github.com/netlify/build/issues/5672)) ([d30cea9](https://github.com/netlify/build/commit/d30cea9db5ca1262540554fc53eac9fe011bbe8a)) - -## [9.8.12](https://github.com/netlify/build/compare/framework-info-v9.8.11...framework-info-v9.8.12) (2024-05-14) - - -### Bug Fixes - -* **deps:** replace dependency read-pkg-up with read-package-up ^11.0.0 ([#5504](https://github.com/netlify/build/issues/5504)) ([d32e5bd](https://github.com/netlify/build/commit/d32e5bd871752aa5b895fc4f5e1a8656b9257126)) - -## [9.8.11](https://github.com/netlify/build/compare/framework-info-v9.8.10...framework-info-v9.8.11) (2024-03-26) - - -### Bug Fixes - -* don't poll HTTP on startup to prevent dependency cycle between framework dev server and Netlify Dev ([#5558](https://github.com/netlify/build/issues/5558)) ([0291702](https://github.com/netlify/build/commit/0291702cac745ef0f32d9e651340841582b25de9)) - -## [9.8.10](https://github.com/netlify/build/compare/framework-info-v9.8.9...framework-info-v9.8.10) (2023-06-09) - - -### Bug Fixes - -* **deps:** update dependency filter-obj to v5 ([#4482](https://github.com/netlify/build/issues/4482)) ([24ec285](https://github.com/netlify/build/commit/24ec285a83e189d99d2ac29af2d67ac9ba23efe5)) - -## [9.8.9](https://github.com/netlify/build/compare/framework-info-v9.8.8...framework-info-v9.8.9) (2023-06-05) - - -### Bug Fixes - -* update minimum version of semver to be ESM compatible ([#5049](https://github.com/netlify/build/issues/5049)) ([6454437](https://github.com/netlify/build/commit/6454437dbbc54de309c2a7dbeb59149e1b7d02ca)) - -## [9.8.8](https://github.com/netlify/build/compare/framework-info-v9.8.7...framework-info-v9.8.8) (2023-06-01) - - -### Bug Fixes - -* **deps:** remove unnecessary dependency on node-url ([#5029](https://github.com/netlify/build/issues/5029)) ([40b09be](https://github.com/netlify/build/commit/40b09becb1f6138eec0c4a2686776a6b12353424)) - -## [9.8.7](https://github.com/netlify/build/compare/framework-info-v9.8.6...framework-info-v9.8.7) (2023-05-12) - - -### Bug Fixes - -* remove `del` package ([#5006](https://github.com/netlify/build/issues/5006)) ([f2c7df3](https://github.com/netlify/build/commit/f2c7df35019fa8f356ff8c13874760e8fbebc381)) - -## [9.8.6](https://github.com/netlify/build/compare/framework-info-v9.8.5...framework-info-v9.8.6) (2023-04-25) - - -### Bug Fixes - -* **deps:** update dependency @netlify/zip-it-and-ship-it to v9 ([#4982](https://github.com/netlify/build/issues/4982)) ([4a77bbc](https://github.com/netlify/build/commit/4a77bbcb6b1edb6f705282a8cece7963710e8e3e)) - -## [9.8.5](https://github.com/netlify/build/compare/framework-info-v9.8.4...framework-info-v9.8.5) (2023-03-06) - - -### Bug Fixes - -* fix deployment of framework-info icons ([#4917](https://github.com/netlify/build/issues/4917)) ([5803c1a](https://github.com/netlify/build/commit/5803c1ac5cfea481cc5229bf46c55eaa8072b573)) - -## [9.8.4](https://github.com/netlify/build/compare/framework-info-v9.8.3...framework-info-v9.8.4) (2023-03-01) - - -### Bug Fixes - -* **framework-info:** detect gatsby typescript project ([#4895](https://github.com/netlify/build/issues/4895)) ([3978402](https://github.com/netlify/build/commit/39784024f631ff22b998ac731bcd9b6bd807a576)) - -## [9.8.3](https://github.com/netlify/build/compare/framework-info-v9.8.2...framework-info-v9.8.3) (2023-02-27) - - -### Bug Fixes - -* **framework-info:** add missing types in package.json ([#4873](https://github.com/netlify/build/issues/4873)) ([b03c28e](https://github.com/netlify/build/commit/b03c28ea812724c01bd54e04f6bf19fd0a2f6247)) - -## [9.8.2](https://github.com/netlify/build/compare/framework-info-v9.8.1...framework-info-v9.8.2) (2023-02-17) - - -### Bug Fixes - -* Updated logos to correct file name ([#4867](https://github.com/netlify/build/issues/4867)) ([08dbacb](https://github.com/netlify/build/commit/08dbacbb0aa2173b609c93083d47b391c40c8b19)) - -## [9.8.1](https://github.com/netlify/build/compare/framework-info-v9.8.0...framework-info-v9.8.1) (2023-02-09) - - -### Bug Fixes - -* respect manual order of frameworks ([#4858](https://github.com/netlify/build/issues/4858)) ([45c0cf2](https://github.com/netlify/build/commit/45c0cf2b3fbc669a0c39f7b0529fce741b25106b)) - -## [9.8.0](https://github.com/netlify/build/compare/framework-info-v9.7.2...framework-info-v9.8.0) (2023-02-09) - - -### Features - -* export getFrameworkById ([#4852](https://github.com/netlify/build/issues/4852)) ([ff37e4c](https://github.com/netlify/build/commit/ff37e4c0ae5775fe7748b0e12c14df159b592709)) - - -### Bug Fixes - -* migrate framework-info to TS and vitest and enable more strictness ([#4819](https://github.com/netlify/build/issues/4819)) ([5acb25b](https://github.com/netlify/build/commit/5acb25b3e1e8cd6d5fa85fdb76baea5a34a1131b)) -* Revert "fix: update Solid Start default port ([#4845](https://github.com/netlify/build/issues/4845))" ([#4851](https://github.com/netlify/build/issues/4851)) ([eea7d29](https://github.com/netlify/build/commit/eea7d29d7535cb7252b9e806b3d4987954710c30)) - -## [9.7.2](https://github.com/netlify/build/compare/framework-info-v9.7.1...framework-info-v9.7.2) (2023-02-01) - - -### Bug Fixes - -* update Solid Start default port ([#4845](https://github.com/netlify/build/issues/4845)) ([e5f4c12](https://github.com/netlify/build/commit/e5f4c12b67b1be521d0feb36148dbc82c6f59f8a)) - -## [9.7.1](https://github.com/netlify/build/compare/framework-info-v9.7.0...framework-info-v9.7.1) (2023-01-18) - - -### Bug Fixes - -* Correctly handle missing node_modules ([#4828](https://github.com/netlify/build/issues/4828)) ([2e9ff5c](https://github.com/netlify/build/commit/2e9ff5ca8ad17ea234e06956f662f0beee8d33a7)) - -## [9.7.0](https://github.com/netlify/build/compare/framework-info-v9.6.0...framework-info-v9.7.0) (2023-01-16) - - -### Features - -* install framework runtime ([#4812](https://github.com/netlify/build/issues/4812)) ([5abc39d](https://github.com/netlify/build/commit/5abc39dfd074bfda52fef3222ee9d73c2ed98403)) - - -### Bug Fixes - -* correct default sveltekit publish directory ([#4823](https://github.com/netlify/build/issues/4823)) ([fbc98fd](https://github.com/netlify/build/commit/fbc98fdc1efea1b720dfe0e15b7a1a6879e52e20)) - -## [9.6.0](https://github.com/netlify/build/compare/framework-info-v9.5.3...framework-info-v9.6.0) (2023-01-10) - - -### Features - -* add build system detection ([#4763](https://github.com/netlify/build/issues/4763)) ([73bdb7b](https://github.com/netlify/build/commit/73bdb7bed7347cf6a8c4d729142c322297a0dce8)) -* move framework-info into build packages ([#4783](https://github.com/netlify/build/issues/4783)) ([d37cbc4](https://github.com/netlify/build/commit/d37cbc48e4524ef486b3e408ae4e38125618a49c)) - - -### Bug Fixes - -* **deps:** update dependency @netlify/edge-bundler to v4.1.0 ([#4696](https://github.com/netlify/build/issues/4696)) ([f7044e0](https://github.com/netlify/build/commit/f7044e013804096dfb61ba0459226ff6d702ddf3)) - -## [9.5.3](https://github.com/netlify/framework-info/compare/v9.5.2...v9.5.3) (2022-12-06) - - -### Bug Fixes - -* support new 11ty config files ([#848](https://github.com/netlify/framework-info/issues/848)) ([3aa65f8](https://github.com/netlify/framework-info/commit/3aa65f8ad65984ff3477e61d859cdc5d5dc5ac8a)) - -## [9.5.2](https://github.com/netlify/framework-info/compare/v9.5.1...v9.5.2) (2022-11-21) - - -### Bug Fixes - -* **deps:** update dependency ajv to v8.11.2 ([#839](https://github.com/netlify/framework-info/issues/839)) ([4d7e59f](https://github.com/netlify/framework-info/commit/4d7e59f9e8b74edb07f2ec3f995143c781932587)) -* handle version for frameworks which are not detected by npm package ([#842](https://github.com/netlify/framework-info/issues/842)) ([5735d2e](https://github.com/netlify/framework-info/commit/5735d2e298e6637c65add9680cbccac0c0245f51)) - -## [9.5.1](https://github.com/netlify/framework-info/compare/v9.5.0...v9.5.1) (2022-11-10) - - -### Bug Fixes - -* updated Remix framework info that was missing ([#836](https://github.com/netlify/framework-info/issues/836)) ([e594ddf](https://github.com/netlify/framework-info/commit/e594ddfc84df0cfdb292176fc61d26cd3c115722)) - -## [9.5.0](https://github.com/netlify/framework-info/compare/v9.4.0...v9.5.0) (2022-11-01) - - -### Features - -* update next.js logos ([#825](https://github.com/netlify/framework-info/issues/825)) ([213ec23](https://github.com/netlify/framework-info/commit/213ec23ad22ee5826a9fd1e3a81264d7107bd095)) - - -### Bug Fixes - -* update filepaths ([#831](https://github.com/netlify/framework-info/issues/831)) ([308b2a6](https://github.com/netlify/framework-info/commit/308b2a65446240d456dbb0c5dfda03b5c76972e0)) -* update the files entry in package.json ([#828](https://github.com/netlify/framework-info/issues/828)) ([259f6c0](https://github.com/netlify/framework-info/commit/259f6c0efb250a915192723afccb5f7d8f55ff96)) - -## [9.4.0](https://github.com/netlify/framework-info/compare/v9.3.0...v9.4.0) (2022-10-27) - - -### Features - -* detect installed version of framework ([#822](https://github.com/netlify/framework-info/issues/822)) ([8f4c78a](https://github.com/netlify/framework-info/commit/8f4c78a66f04b39da1f19422e42d7e4739af6d54)) -* migrate from webpack to vite ([#819](https://github.com/netlify/framework-info/issues/819)) ([13430d9](https://github.com/netlify/framework-info/commit/13430d9deaa7ac739a622ba950bf7eac6cd5fd56)) - - -### Bug Fixes - -* changed the Vite port to the new Vite default port 5173 ([#792](https://github.com/netlify/framework-info/issues/792)) ([664e6df](https://github.com/netlify/framework-info/commit/664e6df4062da80cffd583d45b3e6364da47bc0f)) -* **deps:** update dependency semver to v7.3.8 ([#820](https://github.com/netlify/framework-info/issues/820)) ([33d106e](https://github.com/netlify/framework-info/commit/33d106e08bdb1e9ec5cdcfb7862a1c6f02a353aa)) -* use correct icon for Remix framework ([#811](https://github.com/netlify/framework-info/issues/811)) ([9a6fb03](https://github.com/netlify/framework-info/commit/9a6fb037d137100b8f58617e9c643cbf2256ccee)) - -## [9.3.0](https://github.com/netlify/framework-info/compare/v9.2.0...v9.3.0) (2022-10-04) - - -### Features - -* add a light-theme friendly logo for harp ([#812](https://github.com/netlify/framework-info/issues/812)) ([7cfce5a](https://github.com/netlify/framework-info/commit/7cfce5a5a33e709d06d61c84cf11d9cf5d698330)) -* add detection for SolidJS ([#813](https://github.com/netlify/framework-info/issues/813)) ([b06c7df](https://github.com/netlify/framework-info/commit/b06c7df5ea262a41d35cc07602144f97680ea6d5)) -* replace parcel logo name with parcel icon ([#808](https://github.com/netlify/framework-info/issues/808)) ([8a6260f](https://github.com/netlify/framework-info/commit/8a6260fd0360ccaefc3ecdb14b307b228e4c18d0)) - -### Bug Fixes - -* updated SvelteKit framework info ([#818](https://github.com/netlify/framework-info/issues/818)) - ([acd85cf](https://github.com/netlify/framework-info/commit/acd85cf798a7f9ab169dc5e62dd5543e0c185d29)) - -## [9.2.0](https://github.com/netlify/framework-info/compare/v9.1.1...v9.2.0) (2022-08-09) - - -### Features - -* add framework logos where available ([#802](https://github.com/netlify/framework-info/issues/802)) ([a6a1a22](https://github.com/netlify/framework-info/commit/a6a1a22ba150ce9864f8d3f7e10b98f2f9c03ef7)) -* add Gatsby logo to returned framework info ([#797](https://github.com/netlify/framework-info/issues/797)) ([2a1ee73](https://github.com/netlify/framework-info/commit/2a1ee739535e0ebb209d14c56f4205db2229de9c)) - - -### Bug Fixes - -* fixed typo in qwik excluded dependency ([#805](https://github.com/netlify/framework-info/issues/805)) ([8a4352d](https://github.com/netlify/framework-info/commit/8a4352d1540556ad85c282bd24a0436243e07561)) - -## [9.1.1](https://github.com/netlify/framework-info/compare/v9.1.0...v9.1.1) (2022-07-17) - - -### Bug Fixes - -* **deps:** update dependency is-plain-obj to v4.1.0 ([#781](https://github.com/netlify/framework-info/issues/781)) ([3ca96f2](https://github.com/netlify/framework-info/commit/3ca96f2fe34da0ce26b50d1801fd5e6f7c45dd38)) - -## [9.1.0](https://github.com/netlify/framework-info/compare/v9.0.2...v9.1.0) (2022-06-14) - - -### Features - -* add specific vite-powered frameworks ([#777](https://github.com/netlify/framework-info/issues/777)) ([fa305fe](https://github.com/netlify/framework-info/commit/fa305fea08363c13bd39a1cc4ba0530a4e8cac60)) - - -### Bug Fixes - -* **deps:** update dependency ajv to v8.11.0 ([#741](https://github.com/netlify/framework-info/issues/741)) ([179f9ec](https://github.com/netlify/framework-info/commit/179f9ec549e903354eab3ae949075256aaac27bd)) -* **deps:** update dependency locate-path to v7.1.1 ([#775](https://github.com/netlify/framework-info/issues/775)) ([2eaafa1](https://github.com/netlify/framework-info/commit/2eaafa1ab64cd422667c119b365039cc85339958)) -* **deps:** update dependency semver to v7.3.6 ([#748](https://github.com/netlify/framework-info/issues/748)) ([9b91402](https://github.com/netlify/framework-info/commit/9b914026cf6ec4d147236bf1c2aea40b8f352057)) -* **deps:** update dependency semver to v7.3.7 ([#753](https://github.com/netlify/framework-info/issues/753)) ([27854a3](https://github.com/netlify/framework-info/commit/27854a3d8af478c7f4c40cdeff7054d941749a96)) - -### [9.0.2](https://github.com/netlify/framework-info/compare/v9.0.1...v9.0.2) (2022-02-21) - - -### Bug Fixes - -* **deps:** update dependency locate-path to v7.1.0 ([#709](https://github.com/netlify/framework-info/issues/709)) ([236e473](https://github.com/netlify/framework-info/commit/236e4734b064ccf058125b181d585cbfeaf05521)) -* **deps:** update dependency read-pkg-up to v9.1.0 ([#710](https://github.com/netlify/framework-info/issues/710)) ([b7e075f](https://github.com/netlify/framework-info/commit/b7e075f3fd79ffb65a93e12ede75d9bfdceaf8aa)) - -### [9.0.1](https://github.com/netlify/framework-info/compare/v9.0.0...v9.0.1) (2022-02-07) - - -### Bug Fixes - -* **deps:** update dependency ajv to v8.10.0 ([#697](https://github.com/netlify/framework-info/issues/697)) ([a21770a](https://github.com/netlify/framework-info/commit/a21770ae786bcf0ed5ed91d627b395976612d106)) -* **deps:** update dependency filter-obj to v3 ([#699](https://github.com/netlify/framework-info/issues/699)) ([5a32463](https://github.com/netlify/framework-info/commit/5a324633cacbef197bf4f0d0b0f61670a8645026)) -* **deps:** update dependency is-plain-obj to v4 ([#700](https://github.com/netlify/framework-info/issues/700)) ([3db4a32](https://github.com/netlify/framework-info/commit/3db4a32f0b9d20149823f82246dc85b845f5aac0)) -* **deps:** update dependency locate-path to v7 ([#701](https://github.com/netlify/framework-info/issues/701)) ([dac0c7b](https://github.com/netlify/framework-info/commit/dac0c7b93fcff1ae7d647b9f8d3795a07af65917)) -* **deps:** update dependency p-filter to v3 ([#691](https://github.com/netlify/framework-info/issues/691)) ([5143fd1](https://github.com/netlify/framework-info/commit/5143fd1859b731e6ad09d6e73badeb48cecc1f57)) -* **deps:** update dependency p-locate to v6 ([#692](https://github.com/netlify/framework-info/issues/692)) ([14a0feb](https://github.com/netlify/framework-info/commit/14a0feb415b078771d0cf36d2a9e16fadcc7c4c0)) -* **deps:** update dependency read-pkg-up to v9 ([#703](https://github.com/netlify/framework-info/issues/703)) ([f7dd862](https://github.com/netlify/framework-info/commit/f7dd8623dfdbadadc3edc2bf5d33c372c38d4e40)) - -## [9.0.0](https://github.com/netlify/framework-info/compare/v8.0.2...v9.0.0) (2022-01-19) - - -### ⚠ BREAKING CHANGES - -* use pure ES modules (#577) - -### Miscellaneous Chores - -* use pure ES modules ([#577](https://github.com/netlify/framework-info/issues/577)) ([2d3cf6a](https://github.com/netlify/framework-info/commit/2d3cf6a610bedb9dd8938d2b7e9ac6fe17247db0)) - -### [8.0.2](https://github.com/netlify/framework-info/compare/v8.0.1...v8.0.2) (2022-01-17) - - -### Bug Fixes - -* **deps:** update dependency ajv to v8.9.0 ([#670](https://github.com/netlify/framework-info/issues/670)) ([9e29378](https://github.com/netlify/framework-info/commit/9e29378ab7adee8e692b5e158e4bef1a938f26f7)) - -### [8.0.1](https://github.com/netlify/framework-info/compare/v8.0.0...v8.0.1) (2022-01-12) - - -### Bug Fixes - -* **remix:** use correct configuration ([#663](https://github.com/netlify/framework-info/issues/663)) ([e35f96e](https://github.com/netlify/framework-info/commit/e35f96eaa410274153a4436638cc74a9f9acc747)) - -## [8.0.0](https://github.com/netlify/framework-info/compare/v7.0.0...v8.0.0) (2022-01-10) - - -### ⚠ BREAKING CHANGES - -* add Remix, make dev port optional (#658) - -### Features - -* add Remix, make dev port optional ([#658](https://github.com/netlify/framework-info/issues/658)) ([0c4e5bd](https://github.com/netlify/framework-info/commit/0c4e5bdb80af49fc37f15626a2d0acb8d3d20b11)) - -## [7.0.0](https://www.github.com/netlify/framework-info/compare/v6.1.0...v7.0.0) (2021-12-14) - - -### ⚠ BREAKING CHANGES - -* drop support for `next` < 10.0.9 and @netlify/plugin-nextjs < 4.0.0 (#606) - -### Features - -* drop support for `next` < 10.0.9 and @netlify/plugin-nextjs < 4.0.0 ([#606](https://www.github.com/netlify/framework-info/issues/606)) ([5949a88](https://www.github.com/netlify/framework-info/commit/5949a886f90ea4d0cf645a2a7d357af4ae9db359)) - - -### Bug Fixes - -* remove `--ignore-scripts` from `npm publish` in prereleases ([#589](https://www.github.com/netlify/framework-info/issues/589)) ([481d3e5](https://www.github.com/netlify/framework-info/commit/481d3e5a308a804188a5d8ceb772f7a48268e4e2)) - -## [6.1.0](https://www.github.com/netlify/framework-info/compare/v6.0.0...v6.1.0) (2021-12-06) - - -### Features - -* process JSON files at build time ([#578](https://www.github.com/netlify/framework-info/issues/578)) ([c1eaed6](https://www.github.com/netlify/framework-info/commit/c1eaed6b28de9d4136a40ae023c656b138641cf8)) - -## [6.0.0](https://www.github.com/netlify/framework-info/compare/v5.11.0...v6.0.0) (2021-11-24) - - -### ⚠ BREAKING CHANGES - -* drop support for Node 10 (#571) - -### Bug Fixes - -* **deps:** update dependency ajv to v8.8.0 ([#562](https://www.github.com/netlify/framework-info/issues/562)) ([27d37d8](https://www.github.com/netlify/framework-info/commit/27d37d81f63c36c5a5a3260bb3a084cb18aa00c7)) - - -### Miscellaneous Chores - -* drop support for Node 10 ([#571](https://www.github.com/netlify/framework-info/issues/571)) ([576368d](https://www.github.com/netlify/framework-info/commit/576368de4545a7b6d6e2361e929fedc4bb893dad)) - -## [5.11.0](https://www.github.com/netlify/framework-info/compare/v5.10.0...v5.11.0) (2021-10-11) - - -### Features - -* add Nuxt 3 ([#445](https://www.github.com/netlify/framework-info/issues/445)) ([39f9e3f](https://www.github.com/netlify/framework-info/commit/39f9e3fff4370a23f1d62f76cc07bfda3b20e59b)) - -## [5.10.0](https://www.github.com/netlify/framework-info/compare/v5.9.2...v5.10.0) (2021-10-11) - - -### Features - -* **gatsby:** set node version to 14 for build and functions ([#413](https://www.github.com/netlify/framework-info/issues/413)) ([c4bd400](https://www.github.com/netlify/framework-info/commit/c4bd400647e389c4f4d0454a5f1926cb6e8d84da)) - -### [5.9.2](https://www.github.com/netlify/framework-info/compare/v5.9.1...v5.9.2) (2021-09-20) - - -### Bug Fixes - -* **deps:** update dependency ajv to v8.6.3 ([#407](https://www.github.com/netlify/framework-info/issues/407)) ([7c67a75](https://www.github.com/netlify/framework-info/commit/7c67a759d2f507d43bd7058806dbb5cf87b1d159)) - -### [5.9.1](https://www.github.com/netlify/framework-info/compare/v5.9.0...v5.9.1) (2021-08-18) - - -### Bug Fixes - -* **sveltekit:** specify better output location ([#380](https://www.github.com/netlify/framework-info/issues/380)) ([9b9acea](https://www.github.com/netlify/framework-info/commit/9b9acea4f8505243275e957f166dacda220a5a2d)) - -## [5.9.0](https://www.github.com/netlify/framework-info/compare/v5.8.0...v5.9.0) (2021-08-17) - - -### Features - -* **gatsby:** precompile functions in develop ([#378](https://www.github.com/netlify/framework-info/issues/378)) ([74f5831](https://www.github.com/netlify/framework-info/commit/74f58312c75e6e8e89ebbfa3ec6d80419a2dc120)) - -## [5.8.0](https://www.github.com/netlify/framework-info/compare/v5.7.3...v5.8.0) (2021-08-03) - - -### Features - -* add auto installed plugin for gatsby ([#299](https://www.github.com/netlify/framework-info/issues/299)) ([d93a1c6](https://www.github.com/netlify/framework-info/commit/d93a1c605c65582e31d86ce97a2c3d2c0366be32)) - -### [5.7.3](https://www.github.com/netlify/framework-info/compare/v5.7.2...v5.7.3) (2021-08-02) - - -### Bug Fixes - -* **dev:** add list of excluded dev commands ([#363](https://www.github.com/netlify/framework-info/issues/363)) ([f5c9bb6](https://www.github.com/netlify/framework-info/commit/f5c9bb6eefbf36e183144a97ed0a34301eed5ec0)) - -### [5.7.2](https://www.github.com/netlify/framework-info/compare/v5.7.1...v5.7.2) (2021-07-13) - - -### Bug Fixes - -* **dev-detection:** prioritize dev over serve ([#348](https://www.github.com/netlify/framework-info/issues/348)) ([6667e9f](https://www.github.com/netlify/framework-info/commit/6667e9f5cade41fc8b556d800ce1e8e1a8fd2e2d)) - -### [5.7.1](https://www.github.com/netlify/framework-info/compare/v5.7.0...v5.7.1) (2021-07-12) - - -### Bug Fixes - -* sort framework ids when reporting an error ([#342](https://www.github.com/netlify/framework-info/issues/342)) ([e315dfb](https://www.github.com/netlify/framework-info/commit/e315dfb2f41cb2c5840a38ca581b19b36694e83d)) - -## [5.7.0](https://www.github.com/netlify/framework-info/compare/v5.6.1...v5.7.0) (2021-07-12) - - -### Features - -* add Astro ([#338](https://www.github.com/netlify/framework-info/issues/338)) ([53a30bb](https://www.github.com/netlify/framework-info/commit/53a30bbff14c828e3641cdbc7c325355cd15b73f)) - -### [5.6.1](https://www.github.com/netlify/framework-info/compare/v5.6.0...v5.6.1) (2021-07-11) - - -### Bug Fixes - -* **framework-vite:** remove HTTP polling ([#340](https://www.github.com/netlify/framework-info/issues/340)) ([d5245cd](https://www.github.com/netlify/framework-info/commit/d5245cd65983fcc974d1099f2f4fca92f981b8af)) - -## [5.6.0](https://www.github.com/netlify/framework-info/compare/v5.5.0...v5.6.0) (2021-07-05) - - -### Features - -* add Zola ([#326](https://www.github.com/netlify/framework-info/issues/326)) ([2f571d9](https://www.github.com/netlify/framework-info/commit/2f571d908f82bc7b555c38d5cf5be790b5600c63)) - - -### Bug Fixes - -* **deps:** update dependency ajv to v8.6.1 ([6051f44](https://www.github.com/netlify/framework-info/commit/6051f443995fa54f3e54cfa20e3f88a539b855a5)) - -## [5.5.0](https://www.github.com/netlify/framework-info/compare/v5.4.0...v5.5.0) (2021-06-30) - - -### Features - -* add detection of Next with Nx ([#327](https://www.github.com/netlify/framework-info/issues/327)) ([16f2c41](https://www.github.com/netlify/framework-info/commit/16f2c413d7b0dfef7146dafadf51ac7d8a15c43c)) - -## [5.4.0](https://www.github.com/netlify/framework-info/compare/v5.3.0...v5.4.0) (2021-06-27) - - -### Features - -* add WMR ([#315](https://www.github.com/netlify/framework-info/issues/315)) ([393e950](https://www.github.com/netlify/framework-info/commit/393e95039958b6830e9890d478020f68acde2bc8)) - -## [5.3.0](https://www.github.com/netlify/framework-info/compare/v5.2.0...v5.3.0) (2021-06-15) - - -### Features - -* add SvelteKit ([#308](https://www.github.com/netlify/framework-info/issues/308)) ([95d1ca9](https://www.github.com/netlify/framework-info/commit/95d1ca9a6f94bf76d5aa8494ee6f433ed236c15d)) - -## [5.2.0](https://www.github.com/netlify/framework-info/compare/v5.1.4...v5.2.0) (2021-06-13) - - -### Features - -* Add Cecil ([#300](https://www.github.com/netlify/framework-info/issues/300)) ([7019a64](https://www.github.com/netlify/framework-info/commit/7019a6431bc6e69cb54c6143ceda6b8c2311c66c)) - -### [5.1.4](https://www.github.com/netlify/framework-info/compare/v5.1.3...v5.1.4) (2021-06-07) - - -### Bug Fixes - -* **deps:** update dependency ajv to v8.6.0 ([cd263e8](https://www.github.com/netlify/framework-info/commit/cd263e8664df09753594bb8d98fcb6e0f34ee2b8)) - -### [5.1.3](https://www.github.com/netlify/framework-info/compare/v5.1.2...v5.1.3) (2021-06-02) - - -### Bug Fixes - -* **nuxt:** update name ([#283](https://www.github.com/netlify/framework-info/issues/283)) ([f5486e5](https://www.github.com/netlify/framework-info/commit/f5486e569fe77af56e7f770103bcc51785899012)) - -### [5.1.2](https://www.github.com/netlify/framework-info/compare/v5.1.1...v5.1.2) (2021-05-31) - - -### Bug Fixes - -* **jekyll:** add additional config files ([#281](https://www.github.com/netlify/framework-info/issues/281)) ([461aebb](https://www.github.com/netlify/framework-info/commit/461aebbf3ad7d56689890171dafbea01ae32845b)) - -### [5.1.1](https://www.github.com/netlify/framework-info/compare/v5.1.0...v5.1.1) (2021-05-31) - - -### Bug Fixes - -* **deps:** update dependency is-plain-obj to v3 ([#277](https://www.github.com/netlify/framework-info/issues/277)) ([ec61f07](https://www.github.com/netlify/framework-info/commit/ec61f075605196c228d9829159689165f3eb64dd)) -* **deps:** update dependency locate-path to v6 ([#278](https://www.github.com/netlify/framework-info/issues/278)) ([66fb671](https://www.github.com/netlify/framework-info/commit/66fb671ee1364b67384aa39f5e9f06b089a30f31)) -* **deps:** update dependency p-locate to v5 ([#279](https://www.github.com/netlify/framework-info/issues/279)) ([1d1718a](https://www.github.com/netlify/framework-info/commit/1d1718a0ef18bb61fc12182b68d4946b2292aafa)) - -## [5.1.0](https://www.github.com/netlify/framework-info/compare/v5.0.0...v5.1.0) (2021-05-30) - - -### Features - -* **frameworks:** Adds framework detection json for RedwoodJS ([d62f8ba](https://www.github.com/netlify/framework-info/commit/d62f8ba6895295d69638ff47446e0a1e7aa9131a)) - -## [5.0.0](https://www.github.com/netlify/framework-info/compare/v4.1.1...v5.0.0) (2021-05-27) - - -### ⚠ BREAKING CHANGES - -* drop support for Node.js 8 (#258) - -### Miscellaneous Chores - -* drop support for Node.js 8 ([#258](https://www.github.com/netlify/framework-info/issues/258)) ([80c626e](https://www.github.com/netlify/framework-info/commit/80c626e98cb6d2801639f4b78a0b2007b6b68474)) - -### [4.1.1](https://www.github.com/netlify/framework-info/compare/v4.1.0...v4.1.1) (2021-05-14) - - -### Bug Fixes - -* **deps:** update dependency ajv to v8.4.0 ([deb2935](https://www.github.com/netlify/framework-info/commit/deb2935b34da5df822501da6ba6022fc0552908a)) - -## [4.1.0](https://www.github.com/netlify/framework-info/compare/v4.0.1...v4.1.0) (2021-05-11) - - -### Features - -* add Blitz.js support ([#243](https://www.github.com/netlify/framework-info/issues/243)) ([fb01ff5](https://www.github.com/netlify/framework-info/commit/fb01ff504f4a399405c5e1f8916f3413f468d2db)) - -### [4.0.1](https://www.github.com/netlify/framework-info/compare/v4.0.0...v4.0.1) (2021-05-09) - - -### Bug Fixes - -* **deps:** update dependency ajv to v8.2.0 ([#231](https://www.github.com/netlify/framework-info/issues/231)) ([4c1b29d](https://www.github.com/netlify/framework-info/commit/4c1b29db48623f862e4cec72a983cca4064bc96a)) - -## [4.0.0](https://www.github.com/netlify/framework-info/compare/v3.3.0...v4.0.0) (2021-04-26) - - -### ⚠ BREAKING CHANGES - -* **bin:** remove the cli execution - -### Miscellaneous Chores - -* **bin:** remove the cli execution ([7f09120](https://www.github.com/netlify/framework-info/commit/7f0912062774f0ee06ad10e47c885f402971a953)) - -## [3.3.0](https://www.github.com/netlify/framework-info/compare/v3.2.1...v3.3.0) (2021-04-06) - - -### Features - -* **frameworks:** add Vite ([#206](https://www.github.com/netlify/framework-info/issues/206)) ([15ca31a](https://www.github.com/netlify/framework-info/commit/15ca31a62ac4c16e48e0c5cef199d00c097fd5d5)) - -### [3.2.1](https://www.github.com/netlify/framework-info/compare/v3.2.0...v3.2.1) (2021-03-29) - - -### Bug Fixes - -* **deps:** update dependency ajv to v8 ([#192](https://www.github.com/netlify/framework-info/issues/192)) ([7c81511](https://www.github.com/netlify/framework-info/commit/7c8151152d024ac145a1bfe4d7ac7878eb071e70)) - -## [3.2.0](https://www.github.com/netlify/framework-info/compare/v3.1.3...v3.2.0) (2021-03-16) - - -### Features - -* add static assets directory ([#177](https://www.github.com/netlify/framework-info/issues/177)) ([e830e07](https://www.github.com/netlify/framework-info/commit/e830e0764a85c03034e2d6dbdd1d0c0247666d42)) - -### [3.1.3](https://www.github.com/netlify/framework-info/compare/v3.1.2...v3.1.3) (2021-03-01) - - -### Bug Fixes - -* support browsers without globalThis ([#152](https://www.github.com/netlify/framework-info/issues/152)) ([2f7306d](https://www.github.com/netlify/framework-info/commit/2f7306dce002301bc114d1770591221e1c3c6149)) - -### [3.1.2](https://www.github.com/netlify/framework-info/compare/v3.1.1...v3.1.2) (2021-02-24) - - -### Bug Fixes - -* Update the build command and directory for Angular.js ([edd9212](https://www.github.com/netlify/framework-info/commit/edd9212d4b2dc33265ee96510f9aa4c47e2753ac)) - -### [3.1.1](https://www.github.com/netlify/framework-info/compare/v3.1.0...v3.1.1) (2021-02-18) - - -### Bug Fixes - -* fix `files` in `package.json` ([1751eab](https://www.github.com/netlify/framework-info/commit/1751eabdb96dab3b68b16b07055ce0a5893d14f5)) - -## [3.1.0](https://www.github.com/netlify/framework-info/compare/v3.0.0...v3.1.0) (2021-02-11) - - -### Features - -* **dev:** add polling strategies ([#125](https://www.github.com/netlify/framework-info/issues/125)) ([4c553e8](https://www.github.com/netlify/framework-info/commit/4c553e8be40f6b01948ccbeb56ee58f86dd6bfb0)) - -## [3.0.0](https://www.github.com/netlify/framework-info/compare/v2.3.0...v3.0.0) (2021-02-10) - - -### ⚠ BREAKING CHANGES - -* rename title to name (#139) -* rename name property to id (#137) - -### Features - -* rename name property to id ([#137](https://www.github.com/netlify/framework-info/issues/137)) ([bf298d2](https://www.github.com/netlify/framework-info/commit/bf298d2ce4e4ca010a4cf05642aac952f0afa675)) -* rename title to name ([#139](https://www.github.com/netlify/framework-info/issues/139)) ([2b444e0](https://www.github.com/netlify/framework-info/commit/2b444e071b4a2b5c82afa639240c7014bc3a865c)) - -## [2.3.0](https://www.github.com/netlify/framework-info/compare/v2.2.0...v2.3.0) (2021-02-10) - - -### Features - -* add frameworks titles ([#134](https://www.github.com/netlify/framework-info/issues/134)) ([4aec35e](https://www.github.com/netlify/framework-info/commit/4aec35e7917d98a27ac9fe9f8c0b35b652fad594)) - -## [2.2.0](https://www.github.com/netlify/framework-info/compare/v2.1.1...v2.2.0) (2021-02-08) - - -### Features - -* add nodeVersion option ([#124](https://www.github.com/netlify/framework-info/issues/124)) ([647f94b](https://www.github.com/netlify/framework-info/commit/647f94b15c642c65c6cd1d74396ac17c8d02c8e4)) - -### [2.1.1](https://www.github.com/netlify/framework-info/compare/v2.1.0...v2.1.1) (2021-01-25) - - -### Bug Fixes - -* remove duplicate plugins entry from grunt.json ([#116](https://www.github.com/netlify/framework-info/issues/116)) ([2721217](https://www.github.com/netlify/framework-info/commit/2721217dfa4f9525f02465dfdc89006b5b6bdd83)) - -## [2.1.0](https://www.github.com/netlify/framework-info/compare/v2.0.0...v2.1.0) (2021-01-25) - - -### Features - -* add plugins detection ([#111](https://www.github.com/netlify/framework-info/issues/111)) ([db4e8f5](https://www.github.com/netlify/framework-info/commit/db4e8f5eaeb3f7f05f7f2c82ec94fdc8312322d2)) - -## [2.0.0](https://www.github.com/netlify/framework-info/compare/v1.1.2...v2.0.0) (2021-01-07) - - -### ⚠ BREAKING CHANGES - -* rename watch to dev (#96) -* add build command detection (#92) - -### Features - -* add build command detection ([#92](https://www.github.com/netlify/framework-info/issues/92)) ([4d5c35e](https://www.github.com/netlify/framework-info/commit/4d5c35ee948f5a97a0896cb1907a58a85ca6588b)) - - -### Bug Fixes - -* **docs:** update readme ([#98](https://www.github.com/netlify/framework-info/issues/98)) ([8c734df](https://www.github.com/netlify/framework-info/commit/8c734df7bdf30e5cdf7e2bf49860671901edc45b)) -* rename watch to dev ([#96](https://www.github.com/netlify/framework-info/issues/96)) ([58aadd5](https://www.github.com/netlify/framework-info/commit/58aadd50f66bf54e43adf6c5fc2c6a0b8ae65965)) -* sort preferred scripts ([#99](https://www.github.com/netlify/framework-info/issues/99)) ([d7d9093](https://www.github.com/netlify/framework-info/commit/d7d9093dde7b69a959a14280647b4de0b67f616a)) -* **create-react-app:** update build directory ([#94](https://www.github.com/netlify/framework-info/issues/94)) ([54222d5](https://www.github.com/netlify/framework-info/commit/54222d52ed4e18bca3322744277b3ce4d372fd09)) - -### [1.1.2](https://www.github.com/netlify/framework-info/compare/v1.1.1...v1.1.2) (2020-12-20) - - -### Bug Fixes - -* **eleventy:** update watch command ([#74](https://www.github.com/netlify/framework-info/issues/74)) ([26a3b71](https://www.github.com/netlify/framework-info/commit/26a3b71c04d02c0a1d1baa3dbbc69745adc6683d)) -* **watch-command:** return watch commands in consistent order ([#76](https://www.github.com/netlify/framework-info/issues/76)) ([eb9de6d](https://www.github.com/netlify/framework-info/commit/eb9de6db1c1a1f2e9e9660a3e6c5ea79e561c679)) - -### [1.1.1](https://www.github.com/netlify/framework-info/compare/v1.1.0...v1.1.1) (2020-12-17) - - -### Bug Fixes - -* **angular:** update watch command ([#72](https://www.github.com/netlify/framework-info/issues/72)) ([fb5425f](https://www.github.com/netlify/framework-info/commit/fb5425f49fcd11eac1043a0a620300be53870628)) - -## [1.1.0](https://www.github.com/netlify/framework-info/compare/v1.0.0...v1.1.0) (2020-12-16) - - -### Features - -* make the library browser compatible ([#58](https://www.github.com/netlify/framework-info/issues/58)) ([b172413](https://www.github.com/netlify/framework-info/commit/b17241389e4ead400b8f7bfddd35496b260d6f25)) - -## [1.0.0](https://www.github.com/netlify/framework-info/compare/v0.3.2...v1.0.0) (2020-12-15) - - -### ⚠ BREAKING CHANGES - -* remove ignoredWatchCommand option (#59) - -### Code Refactoring - -* remove ignoredWatchCommand option ([#59](https://www.github.com/netlify/framework-info/issues/59)) ([defd809](https://www.github.com/netlify/framework-info/commit/defd80956006a0b3ff65e265115d662c4bd8b679)) - -## [v0.3.2](https://github.com/netlify/framework-info/compare/v0.3.1...v0.3.2) - -### Merged - -- chore(deps): update dependency @netlify/eslint-config-node to v2 - [`#60`](https://github.com/netlify/framework-info/pull/60) -- chore(deps): lock file maintenance [`#61`](https://github.com/netlify/framework-info/pull/61) - -## [v0.3.1](https://github.com/netlify/framework-info/compare/v0.3.0...v0.3.1) - 2020-12-10 - -### Merged - -- fix: add missing frameworks to main.js [`#57`](https://github.com/netlify/framework-info/pull/57) - -## [v0.3.0](https://github.com/netlify/framework-info/compare/v0.2.0...v0.3.0) - 2020-12-10 - -### Merged - -- chore: add commit linting [`#55`](https://github.com/netlify/framework-info/pull/55) -- chore: add pr labeler [`#54`](https://github.com/netlify/framework-info/pull/54) -- chore: fix version script [`#53`](https://github.com/netlify/framework-info/pull/53) -- feat: add quasar-v0.17 [`#52`](https://github.com/netlify/framework-info/pull/52) -- feat: add docusaurus v2 [`#51`](https://github.com/netlify/framework-info/pull/51) -- fix(docusaurus): add missing BROWSER env variable [`#50`](https://github.com/netlify/framework-info/pull/50) -- chore: gitignore vscode [`#49`](https://github.com/netlify/framework-info/pull/49) -- fix(jsdoc): use typedef instead of dot notation [`#48`](https://github.com/netlify/framework-info/pull/48) -- chore: apply eslint config node [`#47`](https://github.com/netlify/framework-info/pull/47) -- fix(contributing): use correct repo name [`#45`](https://github.com/netlify/framework-info/pull/45) -- chore: use eslint config node [`#46`](https://github.com/netlify/framework-info/pull/46) -- chore(deps): lock file maintenance [`#43`](https://github.com/netlify/framework-info/pull/43) -- chore(deps): lock file maintenance [`#39`](https://github.com/netlify/framework-info/pull/39) -- chore(deps): lock file maintenance [`#38`](https://github.com/netlify/framework-info/pull/38) -- chore(deps): lock file maintenance [`#37`](https://github.com/netlify/framework-info/pull/37) -- chore(deps): lock file maintenance [`#36`](https://github.com/netlify/framework-info/pull/36) -- github tools: fix fossa workflow file [`#35`](https://github.com/netlify/framework-info/pull/35) -- chore(deps): lock file maintenance [`#34`](https://github.com/netlify/framework-info/pull/34) -- Add `--fail` flag to `curl` for Codecov [`#33`](https://github.com/netlify/framework-info/pull/33) - -### Commits - -- Fix lock file [`a1d7de4`](https://github.com/netlify/framework-info/commit/a1d7de4c64f9e70f14635aab7aaa3f71d15aa3e4) -- fix github actions workflow file for fossa - [`9ab34c1`](https://github.com/netlify/framework-info/commit/9ab34c165dd8efeb582a94f16f0f842c52a6f3dc) - -## [v0.2.0](https://github.com/netlify/framework-info/compare/v0.1.3...v0.2.0) - 2020-10-29 - -### Merged - -- Add `hasFramework()` [`#31`](https://github.com/netlify/framework-info/pull/31) -- chore(deps): update dependency eslint-config-prettier to v6.14.0 - [`#29`](https://github.com/netlify/framework-info/pull/29) -- Add `is-plain-obj` to `renovate.json5` [`#28`](https://github.com/netlify/framework-info/pull/28) -- chore(deps): update dependency eslint-config-prettier to v6.13.0 - [`#26`](https://github.com/netlify/framework-info/pull/26) -- chore(deps): update dependency ajv to v6.12.6 [`#25`](https://github.com/netlify/framework-info/pull/25) -- chore(deps): update dependency gh-release to v4.0.3 [`#24`](https://github.com/netlify/framework-info/pull/24) -- Add `del` to `renovate.json5` [`#23`](https://github.com/netlify/framework-info/pull/23) -- chore(deps): update dependency eslint-plugin-import to v2.22.1 - [`#21`](https://github.com/netlify/framework-info/pull/21) -- chore(deps): update dependency eslint-config-prettier to v6.12.0 - [`#20`](https://github.com/netlify/framework-info/pull/20) -- chore(deps): update dependency gh-release to v4.0.2 [`#19`](https://github.com/netlify/framework-info/pull/19) -- chore(deps): update dependency auto-changelog to v2.2.1 [`#18`](https://github.com/netlify/framework-info/pull/18) -- Add `yargs` to `renovate.json5` [`#17`](https://github.com/netlify/framework-info/pull/17) -- chore(deps): update dependency ajv to v6.12.5 [`#14`](https://github.com/netlify/framework-info/pull/14) -- chore(deps): update dependency gh-release to v4 [`#15`](https://github.com/netlify/framework-info/pull/15) -- chore(deps): lock file maintenance [`#13`](https://github.com/netlify/framework-info/pull/13) -- chore(deps): lock file maintenance [`#11`](https://github.com/netlify/framework-info/pull/11) -- chore(deps): lock file maintenance [`#9`](https://github.com/netlify/framework-info/pull/9) -- chore(deps): lock file maintenance [`#6`](https://github.com/netlify/framework-info/pull/6) - -### Commits - -- Merge pull request #30 from netlify/renovate/actions-checkout-2.x - [`7dbe1c0`](https://github.com/netlify/framework-info/commit/7dbe1c03f020ce1dc703b58a756039160078bfe5) -- chore(deps): update actions/checkout action to v2 - [`b9086ab`](https://github.com/netlify/framework-info/commit/b9086ab3a30d727c5e3f7c966fb6772be7a5f2e1) -- Merge pull request #10 from netlify/renovate/lock-file-maintenance - [`6d87bdf`](https://github.com/netlify/framework-info/commit/6d87bdf9971c5bec2614d9cc4d82c27b596fb88d) - -## [v0.1.3](https://github.com/netlify/framework-info/compare/v0.1.2...v0.1.3) - 2020-08-07 - -### Commits - -- Dummy commit [`6e2dc72`](https://github.com/netlify/framework-info/commit/6e2dc72a98986b239e5549731f2904e97908bdcd) - -## [v0.1.2](https://github.com/netlify/framework-info/compare/v0.1.1...v0.1.2) - 2020-08-07 - -## [v0.1.1](https://github.com/netlify/framework-info/compare/v0.1.0...v0.1.1) - 2020-08-07 - -## v0.1.0 - 2020-08-07 - -### Merged - -- github tools: add fossa license scanning [`#1`](https://github.com/netlify/framework-info/pull/1) - -### Commits - -- Init [`fc3e3d7`](https://github.com/netlify/framework-info/commit/fc3e3d76dae04fb1f017eb1b11567d2a8f298125) -- Add frameworks [`03ed590`](https://github.com/netlify/framework-info/commit/03ed59041abcbc10fcd9ffbe9bc212bd9f955470) -- chore(deps): lock file maintenance - [`6bc61ba`](https://github.com/netlify/framework-info/commit/6bc61baae3968974d4496faed01c84efd38feb74) diff --git a/packages/framework-info/CONTRIBUTING.md b/packages/framework-info/CONTRIBUTING.md deleted file mode 100644 index ac93dd0141..0000000000 --- a/packages/framework-info/CONTRIBUTING.md +++ /dev/null @@ -1,31 +0,0 @@ -# CONTRIBUTING - -Contributions are always welcome, no matter how large or small. Before contributing, please read the -[code of conduct](CODE_OF_CONDUCT.md). - -## Setup - -From the root of the repository: - -```sh -npm install -npm run build -- --scope=@netlify/framework-info -npm test -- --scope=@netlify/framework-info -``` - -## Releasing - -Merge the release PR - -### Creating a prerelease - -1. Create a branch named `releases/framework-info//` with the version and tag you'd like to release. -2. Push the branch to the repo. - -For example, a branch named `releases/framework-info/rc/4.0.0` will create the version `v4.0.0-rc` and publish it under -the `rc` tag. - -## License - -By contributing to Netlify Node Client, you agree that your contributions will be licensed under its -[MIT license](LICENSE). diff --git a/packages/framework-info/LICENSE b/packages/framework-info/LICENSE deleted file mode 100644 index 7d56877130..0000000000 --- a/packages/framework-info/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2020 Netlify - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/framework-info/README.md b/packages/framework-info/README.md deleted file mode 100644 index 7fbc97947c..0000000000 --- a/packages/framework-info/README.md +++ /dev/null @@ -1,394 +0,0 @@ -Framework detection utility. - -Detects which framework a specific website is using. The framework's build/dev commands, directories and server port are -also returned. - -The following frameworks are detected: - -- Static site generators: Gatsby, Hugo, Jekyll, Next.js, Nuxt, Hexo, Gridsome, Docusaurus, Eleventy, Middleman, - Phenomic, React-static, Stencil, Vuepress, Assemble, DocPad, Harp, Metalsmith, Roots, Wintersmith -- Front-end frameworks: create-react-app, Vue, Sapper, Angular, Ember, Svelte, Expo, Quasar -- Build tools: Parcel, Brunch, Grunt, Gulp - -If you're looking for a way to run `framework-info` via CLI check the -[`build-info`](https://github.com/netlify/build/tree/main/packages/build-info) project. - -[Additions and updates are welcome!](#add-or-update-a-framework) - -# Example (Node.js) - -```js -import { listFrameworks, hasFramework, getFramework, getFrameworkById } from '@netlify/framework-info' - -console.log(await listFrameworks({ projectDir: './path/to/gatsby/website' })) -// [ -// { -// id: 'gatsby', -// name: 'Gatsby', -// category: 'static_site_generator', -// dev: { -// commands: ['gatsby develop'], -// port: 8000, -// pollingStrategies: [{ name: 'TCP' }] -// }, -// build: { -// commands: ['gatsby build'], -// directory: 'public' -// }, -// staticAssetsDirectory: "static", -// env: { GATSBY_LOGGER: 'yurnalist' }, -// plugins: [] -// } -// ] - -console.log(await listFrameworks({ projectDir: './path/to/vue/website' })) -// [ -// { -// id: 'vue', -// name: 'Vue.js', -// category: 'frontend_framework', -// dev: { -// commands: ['npm run serve'], -// port: 8080, -// pollingStrategies: [{ name: 'TCP' }] -// }, -// build: { -// commands: ['vue-cli-service build'], -// directory: 'dist' -// }, -// env: {}, -// plugins: [] -// } -// ] - -console.log(await hasFramework('vue', { projectDir: './path/to/vue/website' })) -// true - -console.log(await getFramework('vue', { projectDir: './path/to/vue/website' })) -// { -// id: 'vue', -// name: 'Vue.js', -// category: 'frontend_framework', -// dev: { -// commands: ['npm run serve'], -// port: 8080, -// pollingStrategies: [{ name: 'TCP' }] -// }, -// build: { -// commands: ['vue-cli-service build'], -// directory: 'dist' -// }, -// env: {}, -// plugins: [] -// } - -console.log(getFrameworkById('vue')) -// { -// id: 'vue', -// name: 'Vue.js', -// category: 'frontend_framework', -// dev: { -// commands: ['npm run serve'], -// port: 8080, -// pollingStrategies: [{ name: 'TCP' }] -// }, -// build: { -// commands: ['vue-cli-service build'], -// directory: 'dist' -// }, -// env: {}, -// plugins: [] -// } -``` - -# Installation - -```bash -npm install @netlify/framework-info -``` - -# Usage (Node.js) - -## listFrameworks(options?) - -`options`: `object?`\ -_Return value_: `Promise` - -### Options - -#### projectDir - -_Type_: `string`\ -_Default value_: `process.cwd()` - -Path to the website's directory. - -### Return value - -This returns a `Promise` resolving to an array of objects describing each framework. The array can be empty, contain a -single object or several objects. - -Each object has the following properties. - -#### id - -_Type_: `string` - -Id such as `"gatsby"`. - -## name - -_Type_: `string` - -Framework name such as `"Gatsby"`. - -#### category - -_Type_: `string` - -Category among `"static_site_generator"`, `"frontend_framework"` and `"build_tool"`. - -#### dev - -_Type_: `object` - -Information about the dev command. - -##### commands - -_Type_: `string[]` - -Dev command. There might be several alternatives. - -##### port - -_Type_: `number` - -Server port. - -##### pollingStrategies - -_Type_: `object[]` - -Polling strategies to use when checking if the dev server is ready. - -#### build - -_Type_: `object` - -Information about the build command. - -##### commands - -_Type_: `string[]` - -Build command. There might be several alternatives. - -##### directory - -_Type_: `string` - -Relative path to the directory where files are built. - -#### staticAssetsDirectory - -_Type_: `string` - -Directory where the framework stores static assets. Can be `undefined`. - -#### env - -_Type_: `object` - -Environment variables that should be set when calling the dev command. - -#### plugins - -_Type_: `string[]` - -A list of recommend Netlify build plugins to install for the framework. - -## hasFramework(frameworkId, options?) - -`options`: `object?`\ -_Return value_: `Promise` - -Same as [`listFramework()`](#listframeworksoptions) except only for a specific framework and returns a boolean. - -## getFramework(frameworkId, options?) - -`options`: `object?`\ -_Return value_: `Promise` - -Same as [`listFramework()`](#listframeworksoptions) except the framework is passed as argument instead of being -detected. A single framework object is returned. - -# Usage (CLI) - -```bash -$ framework-info [projectDirectory] -``` - -This prints the ids of each framework. - -If known is found, `unknown` is printed. - -Available flags: - -- `--long`: Show more information about each framework. The output will be a JSON array. - -# Add or update a framework - -Each framework is a JSON file in the `/src/frameworks/` directory. For example: - -```json -{ - "id": "gatsby", - "name": "Gatsby", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["gatsby"], - "excludedNpmDependencies": [], - "configFiles": ["gatsby-config.js"] - }, - "dev": { - "command": "gatsby develop", - "port": 8000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "gatsby build", - "directory": "public" - }, - "staticAssetsDirectory": "static", - "env": { "GATSBY_LOGGER": "yurnalist" }, - "plugins": [] -} -``` - -All properties are required. - -## id - -_Type_: `string` - -Id of the framework. - -## name - -_Type_: `string` - -Name of the framework. - -## category - -_Type_: `string` - -One of `"static_site_generator"`, `"frontend_framework"` or `"build_tool"`. - -## detect - -_Type_: `object` - -Information used to detect this framework - -### npmDependencies - -_Type_: `string[]` - -Framework's npm packages. Any project with one of those packages in their `package.json` (`dependencies` or -`devDependencies`) will be considered as using the framework. - -If empty, this is ignored. - -### excludedNpmDependencies - -_Type_: `string[]` - -Inverse of `npmDependencies`. If any project is using one of those packages, it will not be considered as using the -framework. - -If empty, this is ignored. - -### configFiles - -_Type_: `string[]` - -Framework's configuration files. Those should be paths relative to the [project's directory](#projectdir). Any project -with one of configuration files will be considered as using the framework. - -If empty, this is ignored. - -## dev - -_Type_: `object` - -Parameters to detect the dev command. - -### command - -_Type_: `string` - -Default dev command. - -### port - -_Type_: `number` - -Local dev server port. - -### pollingStrategies - -_Type_: `object[]` - -Polling strategies to use when checking if the dev server is ready. - -## build - -_Type_: `object` - -Parameters to detect the build command. - -### command - -_Type_: `string` - -Default build command. - -### directory - -_Type_: `string` - -Directory where built files are written to. - -## staticAssetsDirectory - -_Type_: `string` - -Directory where the framework stores static assets where relevant for the framework. - -## env - -_Type_: `object` - -Environment variables that should be set when running the dev command. - -## plugins - -_Type_: `object[]` - -A list of Netlify build plugins package names and conditions. If a condition is met for a plugin it will be returned in -the framework's plugin's list. - -For example - -```json -{ - "plugins": [ - { - "packageName": "@netlify/plugin-nextjs", - "condition": { "minNodeVersion": "10.13.0" } - } - ] -} -``` diff --git a/packages/framework-info/index.html b/packages/framework-info/index.html deleted file mode 100644 index 677ac9d101..0000000000 --- a/packages/framework-info/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - - Framework Info - - - diff --git a/packages/framework-info/package.json b/packages/framework-info/package.json deleted file mode 100644 index 8f5a5d689a..0000000000 --- a/packages/framework-info/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "@netlify/framework-info", - "version": "9.8.13", - "description": "Framework detection utility", - "type": "module", - "main": "./dist/index.umd.cjs", - "exports": { - "node": "./lib/main.js", - "default": "./dist/index.umd.cjs" - }, - "types": "./lib/main.d.ts", - "files": [ - "lib", - "dist/index.umd.cjs" - ], - "scripts": { - "prebuild": "node scripts/transform_json.js", - "build": "run-s build:*", - "build:ts": "tsc", - "build:browser": "run-s build:browser:*", - "build:browser:core": "vite build", - "build:browser:site-root": "cpy index.html ./dist", - "pretest": "run-s prebuild", - "test": "vitest run", - "test:dev": "vitest", - "test:ci": "vitest run --reporter=default" - }, - "keywords": [ - "dependency-management", - "continuous-integration", - "deployment", - "es6", - "framework", - "gulp", - "javascript", - "html", - "library", - "markdown", - "nodejs", - "npmjs", - "package-manager", - "webapp", - "jamstack", - "static-site-generator", - "static-site", - "gatsby", - "hugo", - "netlify" - ], - "author": "Netlify, Inc", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/netlify/build.git", - "directory": "packages/framework-info" - }, - "homepage": "https://github.com/netlify/build", - "bugs": { - "url": "https://github.com/netlify/build/issues" - }, - "dependencies": { - "ajv": "^8.12.0", - "filter-obj": "^5.0.0", - "find-up": "^6.3.0", - "is-plain-obj": "^4.0.0", - "locate-path": "^7.0.0", - "p-filter": "^3.0.0", - "p-locate": "^6.0.0", - "process": "^0.11.10", - "read-package-up": "^11.0.0", - "semver": "^7.3.8" - }, - "devDependencies": { - "babel-loader": "^8.2.2", - "cpy": "^9.0.0", - "cpy-cli": "^4.0.0", - "fast-glob": "^3.2.12", - "npm-run-all2": "^5.0.0", - "path-browserify": "^1.0.1", - "rollup-plugin-node-polyfills": "^0.2.1", - "tmp-promise": "^3.0.2", - "typescript": "^5.0.0", - "vite": "^4.0.4", - "vitest": "^0.34.0" - }, - "engines": { - "node": "^14.14.0 || >=16.0.0" - }, - "ava": { - "verbose": true, - "workerThreads": false - } -} diff --git a/packages/framework-info/scripts/frameworks.js b/packages/framework-info/scripts/frameworks.js deleted file mode 100644 index 2ad8a7667e..0000000000 --- a/packages/framework-info/scripts/frameworks.js +++ /dev/null @@ -1,60 +0,0 @@ -// We purposely order the following array to ensure the most relevant framework -// is always first, if several frameworks are detected at once. - -// Therefore, we cannot use `fs.readdir()`. -export const FRAMEWORK_NAMES = [ - // Static site generators - 'astro', - 'docusaurus', - 'docusaurus-v2', - 'eleventy', - 'gatsby', - 'gridsome', - 'hexo', - 'hugo', - 'hydrogen', - 'jekyll', - 'middleman', - 'next-nx', - 'next', - 'blitz', - 'nuxt', - 'nuxt3', - 'phenomic', - 'qwik', - 'react-static', - 'redwoodjs', - 'remix', - 'solid-js', - 'solid-start', - 'stencil', - 'vuepress', - 'assemble', - 'docpad', - 'harp', - 'metalsmith', - 'roots', - 'wintersmith', - 'cecil', - 'zola', - - // Front-end frameworks - 'angular', - 'create-react-app', - 'ember', - 'expo', - 'quasar', - 'quasar-v0.17', - 'sapper', - 'svelte', - 'svelte-kit', - 'vue', - - // Build tools - 'brunch', - 'parcel', - 'grunt', - 'gulp', - 'vite', - 'wmr', -] diff --git a/packages/framework-info/scripts/transform_json.js b/packages/framework-info/scripts/transform_json.js deleted file mode 100644 index 3b041b20f8..0000000000 --- a/packages/framework-info/scripts/transform_json.js +++ /dev/null @@ -1,64 +0,0 @@ -import { promises as fs } from 'fs' -import process from 'process' - -import { FRAMEWORK_NAMES } from './frameworks.js' - -const FRAMEWORKS_SOURCE = new URL('./frameworks.js', import.meta.url) -const FRAMEWORKS_DIR = new URL('../src/frameworks/', import.meta.url) -const BUILD_DIR = new URL('../src/generated/', import.meta.url) -const FRAMEWORKS_BUILD = new URL('frameworks.ts', BUILD_DIR) -const FRAMEWORK_NAMES_BUILD = new URL('frameworkNames.ts', BUILD_DIR) - -// We enforce frameworks to be written with JSON to ensure they remain logicless -// which is simpler for contributors and avoid adding unnecessary logic. -// However, Node.js does not support JSON imports without any experimental -// flags. Also, not all browsers support it unless Webpack preprocesses it. -// Therefore, we transform JSON to JavaScript files using at build time. -const transformFrameworks = async function () { - await fs.mkdir(BUILD_DIR, { recursive: true }) - // We use the framework names here to generate the frameworks infos, so that - // we keep the exact same order as in FRAMEWORK_NAMES - const frameworks = await Promise.all(FRAMEWORK_NAMES.map(transformFramework)) - const fileContents = `${FRAMEWORKS_HEADER}${JSON.stringify(frameworks, null, 2)}` - await fs.writeFile(FRAMEWORKS_BUILD, fileContents) -} - -const updateLogoUrls = function (contents) { - const updatedContents = contents - const originalLogo = contents.logo - if (originalLogo) { - for (const [theme, urlPath] of Object.entries(originalLogo)) { - updatedContents.logo[theme] = (process.env.DEPLOY_PRIME_URL || 'https://framework-info.netlify.app') + urlPath - } - } - - return updatedContents -} - -const transformFramework = async function (frameworkName) { - const frameworkUrl = new URL(`${frameworkName}.json`, FRAMEWORKS_DIR) - const jsonContents = await fs.readFile(frameworkUrl) - const contents = JSON.parse(jsonContents) - - const updatedContents = updateLogoUrls(contents) - return updatedContents -} - -const FRAMEWORKS_HEADER = `import type { FrameworkDefinition } from "../types.js" -// This file is autogenerated at build time -export const FRAMEWORKS: FrameworkDefinition[] = ` - -const transformFrameworkNames = async function () { - const frameworkNamesContent = await fs.readFile(FRAMEWORKS_SOURCE, 'utf-8') - const fileContents = `${FRAMEWORK_NAMES_HEADER}${frameworkNamesContent.trim()}${FRAMEWORK_NAMES_FOOTER}` - await fs.writeFile(FRAMEWORK_NAMES_BUILD, fileContents) -} - -const FRAMEWORK_NAMES_HEADER = '// This file is autogenerated at build time\n\n' - -const FRAMEWORK_NAMES_FOOTER = ` as const - -export type FrameworkName = typeof FRAMEWORK_NAMES[number]` - -await transformFrameworks() -await transformFrameworkNames() diff --git a/packages/framework-info/src/context.ts b/packages/framework-info/src/context.ts deleted file mode 100644 index 7e14acf102..0000000000 --- a/packages/framework-info/src/context.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { cwd, version as nodejsVersion } from 'process' - -import { locatePath } from 'locate-path' -import { PackageJson, readPackageUp } from 'read-package-up' - -interface PackageJsonInfo { - packageJson?: PackageJson - packageJsonPath?: string -} - -export type PathExists = (path: string) => Promise - -export interface Context extends PackageJsonInfo { - pathExists: PathExists - nodeVersion: string -} - -export const getPackageJson = async (projectDir: string): Promise => { - try { - const result = await readPackageUp({ cwd: projectDir, normalize: false }) - if (result === undefined) { - return {} - } - - const { packageJson, path: packageJsonPath } = result - - return { packageJson, packageJsonPath } - } catch { - return {} - } -} - -export const getContext = async (projectDir: string = cwd(), nodeVersion: string = nodejsVersion): Promise => { - const { packageJson, packageJsonPath = projectDir } = await getPackageJson(projectDir) - - return { - pathExists: async (path) => (await locatePath([path], { type: 'file', cwd: projectDir })) !== undefined, - packageJson, - packageJsonPath, - nodeVersion, - } -} diff --git a/packages/framework-info/src/core.ts b/packages/framework-info/src/core.ts deleted file mode 100644 index a4a39523d3..0000000000 --- a/packages/framework-info/src/core.ts +++ /dev/null @@ -1,139 +0,0 @@ -import pFilter from 'p-filter' -import type { PackageJson } from 'read-package-up' - -import type { Context, PathExists } from './context.js' -import { usesFramework } from './detect.js' -import { getDevCommands } from './dev.js' -import type { FrameworkName } from './generated/frameworkNames.js' -import { FRAMEWORKS } from './generated/frameworks.js' -import { getPackageJsonContent } from './package.js' -import { getPlugins } from './plugins.js' -import { getRunScriptCommand } from './run_script.js' -import type { Framework, FrameworkDefinition } from './types.js' - -const getContext = (context: Context) => { - const { pathExists, packageJson, packageJsonPath = '.', nodeVersion } = context - - return { pathExists, packageJson, packageJsonPath, nodeVersion } -} - -/** - * Return all the frameworks used by a project. - */ -export const listFrameworks = async function (context: Context): Promise { - const { pathExists, packageJson, packageJsonPath, nodeVersion } = getContext(context) - const { npmDependencies, scripts, runScriptCommand } = await getProjectInfo({ - pathExists, - packageJson, - packageJsonPath, - }) - const frameworks = await pFilter(FRAMEWORKS, (framework) => usesFramework(framework, { pathExists, npmDependencies })) - const frameworkInfos = frameworks.map((framework) => - getFrameworkInfo(framework, { scripts, runScriptCommand, nodeVersion }), - ) - return frameworkInfos -} - -/** - * Return whether a project uses a specific framework - */ -export const hasFramework = async function (frameworkId: FrameworkName, context: Context): Promise { - const framework = getFrameworkById(frameworkId) - const { pathExists, packageJson, packageJsonPath } = getContext(context) - const { npmDependencies } = await getProjectInfo({ pathExists, packageJson, packageJsonPath }) - const result = await usesFramework(framework, { pathExists, npmDependencies }) - return result -} - -/** - * Return some information about a framework used by a project. - */ -export const getFramework = async function (frameworkId: FrameworkName, context: Context): Promise { - const framework = getFrameworkById(frameworkId) - const { pathExists, packageJson, packageJsonPath, nodeVersion } = getContext(context) - const { scripts, runScriptCommand } = await getProjectInfo({ - pathExists, - packageJson, - packageJsonPath, - }) - const frameworkInfo = getFrameworkInfo(framework, { scripts, runScriptCommand, nodeVersion }) - return frameworkInfo -} -/** - * Gets the framework by its id - * @param {string} frameworkId - Id such as `"gatsby"` - * @returns - */ - -export const getFrameworkById = function (frameworkId: FrameworkName): FrameworkDefinition { - const framework = FRAMEWORKS.find(({ id }) => id === frameworkId) - if (framework === undefined) { - const frameworkIds = FRAMEWORKS.map((knownFramework) => getFrameworkId(knownFramework)) - .sort() - .join(', ') - throw new Error(`Invalid framework "${frameworkId}". It should be one of: ${frameworkIds}`) - } - - return framework -} - -const getFrameworkId = function ({ id }: FrameworkDefinition): string { - return id -} - -const getProjectInfo = async function ({ - pathExists, - packageJson, - packageJsonPath, -}: { - pathExists: PathExists - packageJson: PackageJson | undefined - packageJsonPath: string -}) { - const { npmDependencies, scripts } = getPackageJsonContent(packageJson) - const runScriptCommand = await getRunScriptCommand({ pathExists, packageJsonPath }) - return { npmDependencies, scripts, runScriptCommand } -} - -const getFrameworkInfo = function ( - { - id, - name, - detect, - category, - dev: { command: frameworkDevCommand, port, pollingStrategies }, - build: { command: frameworkBuildCommand, directory }, - staticAssetsDirectory, - env, - logo, - plugins, - }: FrameworkDefinition, - { - scripts, - runScriptCommand, - nodeVersion, - }: { - scripts: Record - runScriptCommand: string - nodeVersion: string - }, -): Framework { - const devCommands = getDevCommands({ frameworkDevCommand, scripts, runScriptCommand }) - const recommendedPlugins = getPlugins(plugins, { nodeVersion }) - - return { - id, - name, - package: { - name: detect.npmDependencies[0], - version: 'unknown', - }, - category, - dev: { commands: devCommands, port, pollingStrategies }, - build: { commands: [frameworkBuildCommand], directory }, - staticAssetsDirectory, - env, - logo, - plugins: recommendedPlugins, - } -} diff --git a/packages/framework-info/src/detect.ts b/packages/framework-info/src/detect.ts deleted file mode 100644 index 8b72266248..0000000000 --- a/packages/framework-info/src/detect.ts +++ /dev/null @@ -1,52 +0,0 @@ -import pLocate from 'p-locate' - -import type { PathExists } from './context.js' -import type { FrameworkDefinition } from './types.js' - -// Checks if the project is using a specific framework: -// - if `framework.npmDependencies` is set, one of them must be present in the -// `package.json` `dependencies|devDependencies` -// - if `framework.excludedNpmDependencies` is set, none of them must be -// present in the `package.json` `dependencies|devDependencies` -// - if `framework.configFiles` is set, one of the files must exist -export const usesFramework = async function ( - { - detect: { - npmDependencies: frameworkNpmDependencies, - excludedNpmDependencies: frameworkExcludedNpmDependencies, - configFiles, - }, - }: FrameworkDefinition, - { pathExists, npmDependencies }: { pathExists: PathExists; npmDependencies: string[] }, -): Promise { - return ( - usesNpmDependencies(frameworkNpmDependencies, npmDependencies) && - lacksExcludedNpmDependencies(frameworkExcludedNpmDependencies, npmDependencies) && - (await usesConfigFiles(configFiles, pathExists)) - ) -} - -const usesNpmDependencies = function (frameworkNpmDependencies: string[], npmDependencies: string[]): boolean { - return ( - frameworkNpmDependencies.length === 0 || - frameworkNpmDependencies.some((frameworkNpmDependency) => npmDependencies.includes(frameworkNpmDependency)) - ) -} - -const lacksExcludedNpmDependencies = function ( - frameworkExcludedNpmDependencies: string[], - npmDependencies: string[], -): boolean { - return frameworkExcludedNpmDependencies.every( - (frameworkNpmDependency) => !npmDependencies.includes(frameworkNpmDependency), - ) -} - -const configExists = async (configFiles: string[], pathExists: PathExists): Promise => { - const exists = await pLocate(configFiles, (file: string) => pathExists(file)) - return !!exists -} - -const usesConfigFiles = async function (configFiles: string[], pathExists: PathExists): Promise { - return configFiles.length === 0 || (await configExists(configFiles, pathExists)) -} diff --git a/packages/framework-info/src/dev.ts b/packages/framework-info/src/dev.ts deleted file mode 100644 index 408ac008b6..0000000000 --- a/packages/framework-info/src/dev.ts +++ /dev/null @@ -1,72 +0,0 @@ -// Retrieve framework's dev commands. -// We use, in priority order: -// - `package.json` `scripts` containing `framework.dev.command` -// - `package.json` `scripts` whose names are among `NPM_DEV_SCRIPTS` -// - `framework.dev.command` -export const getDevCommands = function ({ - frameworkDevCommand, - scripts, - runScriptCommand, -}: { - frameworkDevCommand?: string - scripts: Record - runScriptCommand: string -}): string[] { - if (frameworkDevCommand === undefined) { - return [] - } - const scriptDevCommands = getScriptDevCommands(scripts, frameworkDevCommand).map( - (scriptName) => `${runScriptCommand} ${scriptName}`, - ) - if (scriptDevCommands.length !== 0) { - return scriptDevCommands - } - - return [frameworkDevCommand] -} - -const getScriptDevCommands = function (scripts: Record, frameworkDevCommand: string): string[] { - const preferredScripts = getPreferredScripts(scripts, frameworkDevCommand) - if (preferredScripts.length !== 0) { - return preferredScripts - } - - const devScripts = Object.keys(scripts).filter((script) => isNpmDevScript(script, scripts[script])) - return devScripts.sort(scriptsSorter) -} - -const getSortIndex = (index: number): number => (index === -1 ? Number.MAX_SAFE_INTEGER : index) - -const scriptsSorter = (script1: string, script2: string): number => { - const index1 = NPM_DEV_SCRIPTS.findIndex((devScriptName) => matchesNpmWDevScript(script1, devScriptName)) - const index2 = NPM_DEV_SCRIPTS.findIndex((devScriptName) => matchesNpmWDevScript(script2, devScriptName)) - - return getSortIndex(index1) - getSortIndex(index2) -} - -const getPreferredScripts = function (scripts: Record, frameworkDevCommand: string): string[] { - return Object.entries(scripts) - .filter(([, scriptValue]) => scriptValue.includes(frameworkDevCommand)) - .map(([key]) => key) - .sort(scriptsSorter) -} - -// Check if the npm script is likely to contain a dev command -const isNpmDevScript = function (scriptName: string, scriptValue: string): boolean { - return NPM_DEV_SCRIPTS.some( - (devScriptName) => matchesNpmWDevScript(scriptName, devScriptName) && !isExcludedScript(scriptValue), - ) -} - -// We also match script names like `docs:dev` -const matchesNpmWDevScript = function (scriptName: string, devScriptName: string): boolean { - return scriptName === devScriptName || scriptName.endsWith(`:${devScriptName}`) -} - -const NPM_DEV_SCRIPTS = ['dev', 'serve', 'develop', 'start', 'run', 'build', 'web'] - -const isExcludedScript = function (scriptValue: string): boolean { - return EXCLUDED_SCRIPTS.some((excluded) => scriptValue.includes(excluded)) -} - -const EXCLUDED_SCRIPTS = ['netlify dev'] diff --git a/packages/framework-info/src/frameworks/angular.json b/packages/framework-info/src/frameworks/angular.json deleted file mode 100644 index 9656ef36c3..0000000000 --- a/packages/framework-info/src/frameworks/angular.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "angular", - "name": "Angular", - "category": "frontend_framework", - "detect": { - "npmDependencies": ["@angular/cli"], - "excludedNpmDependencies": [], - "configFiles": ["angular.json"] - }, - "dev": { - "command": "ng serve", - "port": 4200, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "ng build --prod", - "directory": "dist/" - }, - "logo": { - "default": "/logos/angular/default.svg", - "light": "/logos/angular/default.svg", - "dark": "/logos/angular/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/assemble.json b/packages/framework-info/src/frameworks/assemble.json deleted file mode 100644 index 9522150f31..0000000000 --- a/packages/framework-info/src/frameworks/assemble.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "id": "assemble", - "name": "Assemble", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["assemble"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": {}, - "build": { - "command": "grunt build", - "directory": "dist" - }, - "env": {}, - "logo": { - "default": "/logos/assemble/default.svg", - "light": "/logos/assemble/default.svg", - "dark": "/logos/assemble/default.svg" - }, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/astro.json b/packages/framework-info/src/frameworks/astro.json deleted file mode 100644 index b692a29d69..0000000000 --- a/packages/framework-info/src/frameworks/astro.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "id": "astro", - "name": "Astro", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["astro"], - "excludedNpmDependencies": [], - "configFiles": ["astro.config.mjs"] - }, - "dev": { - "command": "astro dev", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "astro build", - "directory": "dist" - }, - "staticAssetsDirectory": "public", - "env": {}, - "logo": { - "default": "/logos/astro/light.svg", - "light": "/logos/astro/light.svg", - "dark": "/logos/astro/dark.svg" - }, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/blitz.json b/packages/framework-info/src/frameworks/blitz.json deleted file mode 100644 index 49066a0774..0000000000 --- a/packages/framework-info/src/frameworks/blitz.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "blitz", - "name": "Blitz.js", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["blitz"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "blitz dev", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }] - }, - "build": { - "command": "blitz build", - "directory": "out" - }, - "logo": { - "default": "/logos/blitz/light.svg", - "light": "/logos/blitz/light.svg", - "dark": "/logos/blitz/dark.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/brunch.json b/packages/framework-info/src/frameworks/brunch.json deleted file mode 100644 index 819d538573..0000000000 --- a/packages/framework-info/src/frameworks/brunch.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "brunch", - "name": "Brunch", - "category": "build_tool", - "detect": { - "npmDependencies": ["brunch"], - "excludedNpmDependencies": [], - "configFiles": ["brunch-config.js"] - }, - "dev": { - "command": "brunch watch --server", - "port": 3333, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "brunch build", - "directory": "public" - }, - "env": {}, - "logo": { - "default": "/logos/brunch/default.svg", - "light": "/logos/brunch/default.svg", - "dark": "/logos/brunch/default.svg" - }, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/cecil.json b/packages/framework-info/src/frameworks/cecil.json deleted file mode 100644 index 7e93a63f80..0000000000 --- a/packages/framework-info/src/frameworks/cecil.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "cecil", - "name": "Cecil", - "category": "static_site_generator", - "detect": { - "npmDependencies": [], - "excludedNpmDependencies": [], - "configFiles": ["config.yml"] - }, - "dev": { - "command": "cecil serve", - "port": 8000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "cecil build", - "directory": "_site" - }, - "env": {}, - "logo": { - "default": "/logos/cecil/default.svg", - "light": "/logos/cecil/default.svg", - "dark": "/logos/cecil/default.svg" - }, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/create-react-app.json b/packages/framework-info/src/frameworks/create-react-app.json deleted file mode 100644 index 464e490575..0000000000 --- a/packages/framework-info/src/frameworks/create-react-app.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "id": "create-react-app", - "name": "Create React App", - "category": "frontend_framework", - "detect": { - "npmDependencies": ["react-scripts"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "react-scripts start", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "react-scripts build", - "directory": "build" - }, - "staticAssetsDirectory": "public", - "logo": { - "default": "/logos/create-react-app/default.svg", - "light": "/logos/create-react-app/default.svg", - "dark": "/logos/create-react-app/default.svg" - }, - "env": { "BROWSER": "none", "PORT": "3000" }, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/docpad.json b/packages/framework-info/src/frameworks/docpad.json deleted file mode 100644 index abcac85e0b..0000000000 --- a/packages/framework-info/src/frameworks/docpad.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "id": "docpad", - "name": "DocPad", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["docpad"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "docpad run", - "port": 9778, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "docpad generate", - "directory": "out" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/docusaurus-v2.json b/packages/framework-info/src/frameworks/docusaurus-v2.json deleted file mode 100644 index 610a23799c..0000000000 --- a/packages/framework-info/src/frameworks/docusaurus-v2.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "id": "docusaurus-v2", - "name": "Docusaurus 2", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["@docusaurus/core"], - "excludedNpmDependencies": [], - "configFiles": ["docusaurus.config.js"] - }, - "dev": { - "command": "docusaurus start", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "docusaurus build", - "directory": "build" - }, - "staticAssetsDirectory": "static", - "logo": { - "default": "/logos/docusaurus/default.svg", - "light": "/logos/docusaurus/default.svg", - "dark": "/logos/docusaurus/default.svg" - }, - "env": { "BROWSER": "none" }, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/docusaurus.json b/packages/framework-info/src/frameworks/docusaurus.json deleted file mode 100644 index b75833c578..0000000000 --- a/packages/framework-info/src/frameworks/docusaurus.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "id": "docusaurus", - "name": "Docusaurus", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["docusaurus"], - "excludedNpmDependencies": [], - "configFiles": ["siteConfig.js"] - }, - "dev": { - "command": "docusaurus-start", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "docusaurus-build", - "directory": "build/" - }, - "staticAssetsDirectory": "static", - "logo": { - "default": "/logos/docusaurus/default.svg", - "light": "/logos/docusaurus/default.svg", - "dark": "/logos/docusaurus/default.svg" - }, - "env": { "BROWSER": "none" }, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/eleventy.json b/packages/framework-info/src/frameworks/eleventy.json deleted file mode 100644 index 6507977a49..0000000000 --- a/packages/framework-info/src/frameworks/eleventy.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "eleventy", - "name": "Eleventy", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["@11ty/eleventy"], - "excludedNpmDependencies": [], - "configFiles": [".eleventy.js", "eleventy.config.js", "eleventy.config.cjs"] - }, - "dev": { - "command": "eleventy --serve", - "port": 8080, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "eleventy", - "directory": "_site" - }, - "logo": { - "default": "/logos/eleventy/default.svg", - "light": "/logos/eleventy/default.svg", - "dark": "/logos/eleventy/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/ember.json b/packages/framework-info/src/frameworks/ember.json deleted file mode 100644 index 76f4001a73..0000000000 --- a/packages/framework-info/src/frameworks/ember.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "ember", - "name": "Ember.js", - "category": "frontend_framework", - "detect": { - "npmDependencies": ["ember-cli"], - "excludedNpmDependencies": [], - "configFiles": ["ember-cli-build.js"] - }, - "dev": { - "command": "ember serve", - "port": 4200, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "ember build", - "directory": "dist" - }, - "logo": { - "default": "/logos/ember/default.svg", - "light": "/logos/ember/light.svg", - "dark": "/logos/ember/dark.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/expo.json b/packages/framework-info/src/frameworks/expo.json deleted file mode 100644 index 71d114ba3c..0000000000 --- a/packages/framework-info/src/frameworks/expo.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "expo", - "name": "Expo", - "category": "frontend_framework", - "detect": { - "npmDependencies": ["expo"], - "excludedNpmDependencies": [], - "configFiles": ["app.json"] - }, - "dev": { - "command": "expo start --web", - "port": 19006, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "expo build:web", - "directory": "web-build" - }, - "logo": { - "default": "/logos/expo/default.svg", - "light": "/logos/expo/light.svg", - "dark": "/logos/expo/dark.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/gatsby.json b/packages/framework-info/src/frameworks/gatsby.json deleted file mode 100644 index cc02b109f5..0000000000 --- a/packages/framework-info/src/frameworks/gatsby.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "id": "gatsby", - "name": "Gatsby", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["gatsby"], - "excludedNpmDependencies": [], - "configFiles": ["gatsby-config.js", "gatsby-config.ts"] - }, - "dev": { - "command": "gatsby develop", - "port": 8000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "gatsby build", - "directory": "public" - }, - "staticAssetsDirectory": "static", - "env": { - "GATSBY_LOGGER": "yurnalist", - "GATSBY_PRECOMPILE_DEVELOP_FUNCTIONS": "true", - "AWS_LAMBDA_JS_RUNTIME": "nodejs14.x", - "NODE_VERSION": "14" - }, - "logo": { - "default": "/logos/gatsby/default.svg", - "light": "/logos/gatsby/light.svg", - "dark": "/logos/gatsby/dark.svg" - }, - "plugins": [ - { - "packageName": "@netlify/plugin-gatsby", - "condition": { "minNodeVersion": "12.13.0" } - } - ] -} diff --git a/packages/framework-info/src/frameworks/gridsome.json b/packages/framework-info/src/frameworks/gridsome.json deleted file mode 100644 index 13567a2582..0000000000 --- a/packages/framework-info/src/frameworks/gridsome.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "gridsome", - "name": "Gridsome", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["gridsome"], - "excludedNpmDependencies": [], - "configFiles": ["gridsome.config.js"] - }, - "dev": { - "command": "gridsome develop", - "port": 8080, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "gridsome build", - "directory": "dist" - }, - "logo": { - "default": "/logos/gridsome/default.svg", - "light": "/logos/gridsome/light.svg", - "dark": "/logos/gridsome/dark.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/grunt.json b/packages/framework-info/src/frameworks/grunt.json deleted file mode 100644 index cdab5030d9..0000000000 --- a/packages/framework-info/src/frameworks/grunt.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "id": "grunt", - "name": "Grunt", - "category": "build_tool", - "detect": { - "npmDependencies": ["grunt"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": {}, - "build": { - "command": "grunt build", - "directory": "dist" - }, - "logo": { - "default": "/logos/grunt/default.svg", - "light": "/logos/grunt/default.svg", - "dark": "/logos/grunt/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/gulp.json b/packages/framework-info/src/frameworks/gulp.json deleted file mode 100644 index ea3466a22c..0000000000 --- a/packages/framework-info/src/frameworks/gulp.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "id": "gulp", - "name": "gulp.js", - "category": "build_tool", - "detect": { - "npmDependencies": ["gulp"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": {}, - "build": { - "command": "gulp build", - "directory": "dist" - }, - "logo": { - "default": "/logos/gulp/default.svg", - "light": "/logos/gulp/default.svg", - "dark": "/logos/gulp/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/harp.json b/packages/framework-info/src/frameworks/harp.json deleted file mode 100644 index ca3d4c7e6b..0000000000 --- a/packages/framework-info/src/frameworks/harp.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "harp", - "name": "Harp", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["harp"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "harp server", - "port": 9000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "harp compile", - "directory": "www" - }, - "logo": { - "default": "/logos/harp/default.svg", - "light": "/logos/harp/light.svg", - "dark": "/logos/harp/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/hexo.json b/packages/framework-info/src/frameworks/hexo.json deleted file mode 100644 index 0b0f6a66bb..0000000000 --- a/packages/framework-info/src/frameworks/hexo.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "hexo", - "name": "Hexo", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["hexo"], - "excludedNpmDependencies": [], - "configFiles": ["_config.yml"] - }, - "dev": { - "command": "hexo server", - "port": 4000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "hexo generate", - "directory": "public" - }, - "logo": { - "default": "/logos/hexo/default.svg", - "light": "/logos/hexo/light.svg", - "dark": "/logos/hexo/dark.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/hugo.json b/packages/framework-info/src/frameworks/hugo.json deleted file mode 100644 index 653d199667..0000000000 --- a/packages/framework-info/src/frameworks/hugo.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "hugo", - "name": "Hugo", - "category": "static_site_generator", - "detect": { - "npmDependencies": [], - "excludedNpmDependencies": [], - "configFiles": ["config.json", "config.toml", "config.yaml", "hugo.toml"] - }, - "dev": { - "command": "hugo server -w", - "port": 1313, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "hugo", - "directory": "public" - }, - "logo": { - "default": "/logos/hugo/default.svg", - "light": "/logos/hugo/default.svg", - "dark": "/logos/hugo/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/hydrogen.json b/packages/framework-info/src/frameworks/hydrogen.json deleted file mode 100644 index 41cc3fda6e..0000000000 --- a/packages/framework-info/src/frameworks/hydrogen.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "hydrogen", - "name": "Hydrogen", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["@shopify/hydrogen"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "vite", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }] - }, - "build": { - "command": "npm run build", - "directory": "dist/client" - }, - "logo": { - "default": "/logos/hydrogen/default.svg", - "light": "/logos/hydrogen/default.svg", - "dark": "/logos/hydrogen/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/jekyll.json b/packages/framework-info/src/frameworks/jekyll.json deleted file mode 100644 index 6fc231eef5..0000000000 --- a/packages/framework-info/src/frameworks/jekyll.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "jekyll", - "name": "Jekyll", - "category": "static_site_generator", - "detect": { - "npmDependencies": [], - "excludedNpmDependencies": [], - "configFiles": ["_config.yml", "_config.yaml", "_config.toml"] - }, - "dev": { - "command": "bundle exec jekyll serve -w", - "port": 4000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "bundle exec jekyll build", - "directory": "_site" - }, - "logo": { - "default": "/logos/jekyll/dark.svg", - "light": "/logos/jekyll/light.svg", - "dark": "/logos/jekyll/dark.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/metalsmith.json b/packages/framework-info/src/frameworks/metalsmith.json deleted file mode 100644 index 65dfa9c18e..0000000000 --- a/packages/framework-info/src/frameworks/metalsmith.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "id": "metalsmith", - "name": "Metalsmith", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["metalsmith"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": {}, - "build": { - "command": "metalsmith", - "directory": "build" - }, - "logo": { - "default": "/logos/metalsmith/default.svg", - "light": "/logos/metalsmith/default.svg", - "dark": "/logos/metalsmith/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/middleman.json b/packages/framework-info/src/frameworks/middleman.json deleted file mode 100644 index a8e1796b6e..0000000000 --- a/packages/framework-info/src/frameworks/middleman.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "middleman", - "name": "Middleman", - "category": "static_site_generator", - "detect": { - "npmDependencies": [], - "excludedNpmDependencies": [], - "configFiles": ["config.rb"] - }, - "dev": { - "command": "bundle exec middleman server", - "port": 4567, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "bundle exec middleman build", - "directory": "build" - }, - "logo": { - "default": "/logos/middleman/default.svg", - "light": "/logos/middleman/default.svg", - "dark": "/logos/middleman/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/next-nx.json b/packages/framework-info/src/frameworks/next-nx.json deleted file mode 100644 index 111dcebaf6..0000000000 --- a/packages/framework-info/src/frameworks/next-nx.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "next-nx", - "name": "Next.js with Nx", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["@nrwl/next"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "nx serve", - "port": 4200, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "nx build", - "directory": "dist/apps//.next" - }, - "env": {}, - "plugins": [ - { - "packageName": "@netlify/plugin-nextjs", - "condition": { "minNodeVersion": "10.13.0" } - } - ] -} diff --git a/packages/framework-info/src/frameworks/next.json b/packages/framework-info/src/frameworks/next.json deleted file mode 100644 index 7aedc768cc..0000000000 --- a/packages/framework-info/src/frameworks/next.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "id": "next", - "name": "Next.js", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["next"], - "excludedNpmDependencies": ["@nrwl/next"], - "configFiles": [] - }, - "dev": { - "command": "next", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }] - }, - "build": { - "command": "next build", - "directory": ".next" - }, - "logo": { - "default": "/logos/nextjs/light.svg", - "light": "/logos/nextjs/light.svg", - "dark": "/logos/nextjs/dark.svg" - }, - "env": {}, - "plugins": [ - { - "packageName": "@netlify/plugin-nextjs", - "condition": { "minNodeVersion": "10.13.0" } - } - ] -} diff --git a/packages/framework-info/src/frameworks/nuxt.json b/packages/framework-info/src/frameworks/nuxt.json deleted file mode 100644 index efe3504f63..0000000000 --- a/packages/framework-info/src/frameworks/nuxt.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "nuxt", - "name": "Nuxt 2", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["nuxt", "nuxt-edge"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "nuxt", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "nuxt generate", - "directory": "dist" - }, - "logo": { - "default": "/logos/nuxt/default.svg", - "light": "/logos/nuxt/light.svg", - "dark": "/logos/nuxt/dark.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/nuxt3.json b/packages/framework-info/src/frameworks/nuxt3.json deleted file mode 100644 index 0142c6933c..0000000000 --- a/packages/framework-info/src/frameworks/nuxt3.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "id": "nuxt3", - "name": "Nuxt 3", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["nuxt3"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "npm run dev", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "npm run build", - "directory": "dist" - }, - "env": { - "AWS_LAMBDA_JS_RUNTIME": "nodejs14.x", - "NODE_VERSION": "14" - }, - "logo": { - "default": "/logos/nuxt/default.svg", - "light": "/logos/nuxt/light.svg", - "dark": "/logos/nuxt/dark.svg" - }, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/parcel.json b/packages/framework-info/src/frameworks/parcel.json deleted file mode 100644 index 26514eb1d1..0000000000 --- a/packages/framework-info/src/frameworks/parcel.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "parcel", - "name": "Parcel", - "category": "build_tool", - "detect": { - "npmDependencies": ["parcel-bundler", "parcel"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "parcel", - "port": 1234, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "parcel build", - "directory": "dist" - }, - "logo": { - "default": "/logos/parcel/default.svg", - "light": "/logos/parcel/default.svg", - "dark": "/logos/parcel/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/phenomic.json b/packages/framework-info/src/frameworks/phenomic.json deleted file mode 100644 index 077a4c88d3..0000000000 --- a/packages/framework-info/src/frameworks/phenomic.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "phenomic", - "name": "Phenomic", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["@phenomic/core"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "phenomic start", - "port": 3333, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "phenomic build", - "directory": "public" - }, - "logo": { - "default": "/logos/phenomic/default.svg", - "light": "/logos/phenomic/default.svg", - "dark": "/logos/phenomic/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/quasar-v0.17.json b/packages/framework-info/src/frameworks/quasar-v0.17.json deleted file mode 100644 index 614c600249..0000000000 --- a/packages/framework-info/src/frameworks/quasar-v0.17.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "quasar-v0.17", - "name": "Quasar", - "category": "frontend_framework", - "detect": { - "npmDependencies": ["quasar-cli"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "quasar dev -p 8080", - "port": 8080, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "quasar build", - "directory": ".quasar" - }, - "logo": { - "default": "/logos/quasar/default.svg", - "light": "/logos/quasar/default.svg", - "dark": "/logos/quasar/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/quasar.json b/packages/framework-info/src/frameworks/quasar.json deleted file mode 100644 index 94fce06e16..0000000000 --- a/packages/framework-info/src/frameworks/quasar.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "quasar", - "name": "Quasar", - "category": "frontend_framework", - "detect": { - "npmDependencies": ["@quasar/app"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "quasar dev -p 8081", - "port": 8081, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "quasar build", - "directory": "dist/spa" - }, - "logo": { - "default": "/logos/quasar/default.svg", - "light": "/logos/quasar/default.svg", - "dark": "/logos/quasar/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/qwik.json b/packages/framework-info/src/frameworks/qwik.json deleted file mode 100644 index ac97947551..0000000000 --- a/packages/framework-info/src/frameworks/qwik.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "qwik", - "name": "Qwik", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["@builder.io/qwik"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "vite", - "port": 5173, - "pollingStrategies": [{ "name": "TCP" }] - }, - "build": { - "command": "npm run build", - "directory": "dist" - }, - "logo": { - "default": "/logos/qwik/default.svg", - "light": "/logos/qwik/default.svg", - "dark": "/logos/qwik/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/react-static.json b/packages/framework-info/src/frameworks/react-static.json deleted file mode 100644 index bf2de6563b..0000000000 --- a/packages/framework-info/src/frameworks/react-static.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "react-static", - "name": "React Static", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["react-static"], - "excludedNpmDependencies": [], - "configFiles": ["static.config.js"] - }, - "dev": { - "command": "react-static start", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "react-static build", - "directory": "dist" - }, - "logo": { - "default": "/logos/react-static/default.png", - "light": "/logos/react-static/default.png", - "dark": "/logos/react-static/default.png" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/redwoodjs.json b/packages/framework-info/src/frameworks/redwoodjs.json deleted file mode 100644 index 01cde8c813..0000000000 --- a/packages/framework-info/src/frameworks/redwoodjs.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "id": "redwoodjs", - "name": "RedwoodJS", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["@redwoodjs/core"], - "excludedNpmDependencies": [], - "configFiles": ["redwood.toml"] - }, - "dev": { - "command": "yarn rw dev", - "port": 8910, - "pollingStrategies": [ - { - "name": "TCP" - } - ] - }, - "build": { - "command": "rw deploy netlify", - "directory": "web/dist" - }, - "staticAssetsDirectory": "public", - "logo": { - "default": "/logos/redwoodjs/default.svg", - "light": "/logos/redwoodjs/default.svg", - "dark": "/logos/redwoodjs/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/remix.json b/packages/framework-info/src/frameworks/remix.json deleted file mode 100644 index 2b6a996447..0000000000 --- a/packages/framework-info/src/frameworks/remix.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "id": "remix", - "name": "Remix", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["remix", "@remix-run/netlify", "@remix-run/netlify-edge"], - "excludedNpmDependencies": [], - "configFiles": ["remix.config.js"] - }, - "dev": { - "command": "remix watch" - }, - "build": { - "command": "remix build", - "directory": "public" - }, - "logo": { - "default": "/logos/remix/default.svg", - "light": "/logos/remix/light.svg", - "dark": "/logos/remix/dark.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/roots.json b/packages/framework-info/src/frameworks/roots.json deleted file mode 100644 index a447078f9a..0000000000 --- a/packages/framework-info/src/frameworks/roots.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "roots", - "name": "Roots", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["roots"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "roots watch", - "port": 1111, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "roots compile", - "directory": "public" - }, - "logo": { - "default": "/logos/roots/default.svg", - "light": "/logos/roots/default.svg", - "dark": "/logos/roots/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/sapper.json b/packages/framework-info/src/frameworks/sapper.json deleted file mode 100644 index 735406f232..0000000000 --- a/packages/framework-info/src/frameworks/sapper.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "id": "sapper", - "name": "Sapper", - "category": "frontend_framework", - "detect": { - "npmDependencies": ["sapper"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "sapper dev", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "sapper export", - "directory": "__sapper__/export" - }, - "logo": { - "default": "/logos/sapper/default.svg", - "light": "/logos/sapper/default.svg", - "dark": "/logos/sapper/default.svg" - }, - "staticAssetsDirectory": "static", - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/solid-js.json b/packages/framework-info/src/frameworks/solid-js.json deleted file mode 100644 index 89aa4786c7..0000000000 --- a/packages/framework-info/src/frameworks/solid-js.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "solid-js", - "name": "SolidJS", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["solid-js"], - "excludedNpmDependencies": ["solid-start"], - "configFiles": [] - }, - "dev": { - "command": "npm run dev", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }] - }, - "build": { - "command": "npm run build", - "directory": "netlify" - }, - "logo": { - "default": "/logos/solid-js/default.svg", - "light": "/logos/solid-js/default.svg", - "dark": "/logos/solid-js/dark.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/solid-start.json b/packages/framework-info/src/frameworks/solid-start.json deleted file mode 100644 index f901aaeceb..0000000000 --- a/packages/framework-info/src/frameworks/solid-start.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "solid-start", - "name": "Solid Start", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["solid-start"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "solid-start dev", - "port": 3000, - "pollingStrategies": [{ "name": "TCP" }] - }, - "build": { - "command": "solid-start build", - "directory": "netlify" - }, - "logo": { - "default": "/logos/solid-start/default.svg", - "light": "/logos/solid-start/default.svg", - "dark": "/logos/solid-start/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/stencil.json b/packages/framework-info/src/frameworks/stencil.json deleted file mode 100644 index 08334e9bb9..0000000000 --- a/packages/framework-info/src/frameworks/stencil.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "stencil", - "name": "Stencil", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["@stencil/core"], - "excludedNpmDependencies": [], - "configFiles": ["stencil.config.ts"] - }, - "dev": { - "command": "stencil build --dev --watch --serve", - "port": 3333, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "stencil build", - "directory": "www" - }, - "logo": { - "default": "/logos/stencil/light.svg", - "light": "/logos/stencil/light.svg", - "dark": "/logos/stencil/dark.svg" - }, - "env": { "BROWSER": "none", "PORT": "3000" }, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/svelte-kit.json b/packages/framework-info/src/frameworks/svelte-kit.json deleted file mode 100644 index 74d3e9ed7e..0000000000 --- a/packages/framework-info/src/frameworks/svelte-kit.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "id": "svelte-kit", - "name": "SvelteKit", - "category": "frontend_framework", - "detect": { - "npmDependencies": ["@sveltejs/kit"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "vite dev", - "port": 5173, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "vite build", - "directory": "build" - }, - "logo": { - "default": "/logos/svelte-kit/default.svg", - "light": "/logos/svelte-kit/default.svg", - "dark": "/logos/svelte-kit/default.svg" - }, - "staticAssetsDirectory": "static", - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/svelte.json b/packages/framework-info/src/frameworks/svelte.json deleted file mode 100644 index 4c802718fb..0000000000 --- a/packages/framework-info/src/frameworks/svelte.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "svelte", - "name": "Svelte", - "category": "frontend_framework", - "detect": { - "npmDependencies": ["svelte"], - "excludedNpmDependencies": ["sapper", "@sveltejs/kit"], - "configFiles": [] - }, - "dev": { - "command": "npm run dev", - "port": 5000, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "npm run build", - "directory": "public" - }, - "logo": { - "default": "/logos/svelte-kit/default.svg", - "light": "/logos/svelte-kit/default.svg", - "dark": "/logos/svelte-kit/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/vite.json b/packages/framework-info/src/frameworks/vite.json deleted file mode 100644 index df3bbfb4d2..0000000000 --- a/packages/framework-info/src/frameworks/vite.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "vite", - "name": "Vite", - "category": "build_tool", - "detect": { - "npmDependencies": ["vite"], - "excludedNpmDependencies": ["@shopify/hydrogen", "@builder.io/qwik", "solid-start", "solid-js", "@sveltejs/kit"], - "configFiles": [] - }, - "dev": { - "command": "vite", - "port": 5173, - "pollingStrategies": [{ "name": "TCP" }] - }, - "build": { - "command": "vite build", - "directory": "dist" - }, - "logo": { - "default": "/logos/vite/default.svg", - "light": "/logos/vite/default.svg", - "dark": "/logos/vite/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/vue.json b/packages/framework-info/src/frameworks/vue.json deleted file mode 100644 index 619af87c38..0000000000 --- a/packages/framework-info/src/frameworks/vue.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "vue", - "name": "Vue.js", - "category": "frontend_framework", - "detect": { - "npmDependencies": ["@vue/cli-service"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "vue-cli-service serve", - "port": 8080, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "vue-cli-service build", - "directory": "dist" - }, - "logo": { - "default": "/logos/vue/default.svg", - "light": "/logos/vue/default.svg", - "dark": "/logos/vue/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/vuepress.json b/packages/framework-info/src/frameworks/vuepress.json deleted file mode 100644 index 62d4026185..0000000000 --- a/packages/framework-info/src/frameworks/vuepress.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "vuepress", - "name": "VuePress", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["vuepress"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "vuepress dev", - "port": 8080, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "vuepress build", - "directory": ".vuepress/dist" - }, - "logo": { - "default": "/logos/vuepress/default.svg", - "light": "/logos/vuepress/default.svg", - "dark": "/logos/vuepress/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/wintersmith.json b/packages/framework-info/src/frameworks/wintersmith.json deleted file mode 100644 index 5f67a6c01c..0000000000 --- a/packages/framework-info/src/frameworks/wintersmith.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "wintersmith", - "name": "Wintersmith", - "category": "static_site_generator", - "detect": { - "npmDependencies": ["wintersmith"], - "excludedNpmDependencies": [], - "configFiles": ["config.json"] - }, - "dev": { - "command": "wintersmith preview", - "port": 8080, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "wintersmith build", - "directory": "build" - }, - "logo": { - "default": "/logos/wintersmith/default.svg", - "light": "/logos/wintersmith/default.svg", - "dark": "/logos/wintersmith/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/wmr.json b/packages/framework-info/src/frameworks/wmr.json deleted file mode 100644 index e18344fc7f..0000000000 --- a/packages/framework-info/src/frameworks/wmr.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id": "wmr", - "name": "WMR", - "category": "build_tool", - "detect": { - "npmDependencies": ["wmr"], - "excludedNpmDependencies": [], - "configFiles": [] - }, - "dev": { - "command": "wmr", - "port": 8080, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "wmr build", - "directory": "dist" - }, - "logo": { - "default": "/logos/wmr/default.svg", - "light": "/logos/wmr/default.svg", - "dark": "/logos/wmr/default.svg" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/frameworks/zola.json b/packages/framework-info/src/frameworks/zola.json deleted file mode 100644 index d09ee20377..0000000000 --- a/packages/framework-info/src/frameworks/zola.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "id": "zola", - "name": "Zola", - "category": "static_site_generator", - "detect": { - "npmDependencies": [], - "excludedNpmDependencies": [], - "configFiles": ["config.toml"] - }, - "dev": { - "command": "zola serve", - "port": 1111, - "pollingStrategies": [{ "name": "TCP" }, { "name": "HTTP" }] - }, - "build": { - "command": "zola build", - "directory": "public" - }, - "env": {}, - "plugins": [] -} diff --git a/packages/framework-info/src/main.ts b/packages/framework-info/src/main.ts deleted file mode 100644 index 03c122d669..0000000000 --- a/packages/framework-info/src/main.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { join } from 'path' -import { cwd } from 'process' - -import { findUp } from 'find-up' - -import { getContext, getPackageJson } from './context.js' -import { listFrameworks as list, hasFramework as has, getFramework as get } from './core.js' -import type { FrameworkName } from './generated/frameworkNames.js' -import type { Framework } from './types.js' - -interface Options { - projectDir?: string - nodeVersion?: string -} - -/** - * Gets the version of the framework that is installed in a project. - * - * This cannot currently be used in the browser at this time, which is why it's defined - * here rather than in `core.js` as part of the `getFrameworkInfo` method - */ -const getFrameworkVersion = async (projectDir: string, frameworkInfo: Framework): Promise => { - if (!frameworkInfo.package || !frameworkInfo.package.name) { - return frameworkInfo - } - - const npmPackage = frameworkInfo.package.name - - // Get path of package.json for the installed framework. We need to traverse up the directories - // in the event that the project uses something like npm workspaces, and the installed framework package - // has been hoisted to the root directory of the project (which differs from the directory of the project/application being built) - const installedFrameworkPath = await findUp(join('node_modules', npmPackage, 'package.json'), { cwd: projectDir }) - - if (!installedFrameworkPath) { - return frameworkInfo - } - - const { packageJson } = await getPackageJson(installedFrameworkPath) - - return { - ...frameworkInfo, - package: { - name: npmPackage, - version: packageJson?.version || 'unknown', - }, - } -} - -/** - * Return all the frameworks used by a project. - */ -export const listFrameworks = async function (opts: Options = {}): Promise { - const context = await getContext(opts.projectDir, opts.nodeVersion) - const frameworkList = await list(context) - - const projectDir = opts && opts.projectDir ? opts.projectDir : cwd() - - const settledPromises = await Promise.allSettled( - frameworkList.map((framework) => getFrameworkVersion(projectDir, framework)), - ) - const updatedList = settledPromises.map((result) => { - if (result.status === 'fulfilled') { - return result.value - } - - throw result.reason - }) - - return updatedList -} - -/** - * Return whether a project uses a specific framework - */ -export const hasFramework = async function (frameworkId: FrameworkName, options: Options = {}): Promise { - const context = await getContext(options.projectDir, options.nodeVersion) - return has(frameworkId, context) -} - -/** - * Return some information about a framework used by a project. - */ -export const getFramework = async function (frameworkId: FrameworkName, options: Options = {}): Promise { - const context = await getContext(options.projectDir, options.nodeVersion) - - return get(frameworkId, context) -} - -export const supportedRuntimes = { - next: { package: '@netlify/plugin-nextjs', skipFlag: 'NETLIFY_NEXT_PLUGIN_SKIP' }, - gatsby: { package: '@netlify/plugin-gatsby', skipFlag: 'NETLIFY_GATSBY_PLUGIN_SKIP' }, -} diff --git a/packages/framework-info/src/package.ts b/packages/framework-info/src/package.ts deleted file mode 100644 index 3201d9dc48..0000000000 --- a/packages/framework-info/src/package.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { includeKeys } from 'filter-obj' -import isPlainObj from 'is-plain-obj' -import type { PackageJson } from 'read-package-up' - -export const getPackageJsonContent = function (packageJson: PackageJson | undefined) { - if (packageJson === undefined) { - return { npmDependencies: [], scripts: {} } - } - - const npmDependencies = getNpmDependencies(packageJson) - const scripts = getScripts(packageJson) - - return { npmDependencies, scripts } -} - -// Retrieve `package.json` `dependencies` and `devDependencies` names -const getNpmDependencies = function ({ dependencies, devDependencies }: PackageJson) { - return [...getObjectKeys(dependencies), ...getObjectKeys(devDependencies)] -} - -const getObjectKeys = function (value: any): string[] { - if (!isPlainObj(value)) { - return [] - } - - return Object.keys(value) -} - -// Retrieve `package.json` `scripts` -const getScripts = function ({ scripts }: PackageJson): Record { - if (!isPlainObj(scripts)) { - return {} - } - - return includeKeys(scripts, isValidScript) as Record -} - -const isValidScript = function (_key: unknown, value: any): value is string { - return typeof value === 'string' -} diff --git a/packages/framework-info/src/plugins.ts b/packages/framework-info/src/plugins.ts deleted file mode 100644 index e884ed4426..0000000000 --- a/packages/framework-info/src/plugins.ts +++ /dev/null @@ -1,21 +0,0 @@ -import Ajv from 'ajv' -import semver from 'semver' - -import type { FrameworkDefinition } from './types.js' - -const MIN_NODE_VERSION_KEYWORD = { - keyword: 'minNodeVersion', - validate: (minNodeVersion: string, { nodeVersion }: { nodeVersion: string }) => - semver.valid(minNodeVersion) && semver.valid(nodeVersion) && semver.gte(nodeVersion, minNodeVersion), -} - -// https://github.com/ajv-validator/ajv/issues/2132 -// @ts-expect-error Ajv types do not work with moduleResolution:nodenext -const ajv = new Ajv({}) -ajv.addKeyword(MIN_NODE_VERSION_KEYWORD) - -export const getPlugins = function (plugins: FrameworkDefinition['plugins'], { nodeVersion }: { nodeVersion: string }) { - return plugins - .filter(({ condition }) => ajv.validate(condition, { nodeVersion })) - .map(({ packageName }) => packageName) -} diff --git a/packages/framework-info/src/run_script.ts b/packages/framework-info/src/run_script.ts deleted file mode 100644 index fab9d37aae..0000000000 --- a/packages/framework-info/src/run_script.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { dirname } from 'path' - -import type { PathExists } from './context.js' - -// Retrieve the command to run `package.json` `scripts` commands -export const getRunScriptCommand = async function ({ - pathExists, - packageJsonPath, -}: { - pathExists: PathExists - packageJsonPath: string -}) { - const yarnExists = await pathExists(`${dirname(packageJsonPath)}/yarn.lock`) - if (yarnExists) { - return 'yarn' - } - - return 'npm run' -} diff --git a/packages/framework-info/src/types.ts b/packages/framework-info/src/types.ts deleted file mode 100644 index 627b9305a4..0000000000 --- a/packages/framework-info/src/types.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { FrameworkName } from './generated/frameworkNames.js' - -interface PollingStrategy { - name: 'HTTP' | 'TCP' -} - -interface Plugin { - packageName: string - condition: { - minNodeVersion: string - } -} - -interface BaseFramework { - id: FrameworkName - name: string - category: 'build_tool' | 'frontend_framework' | 'static_site_generator' - logo?: { - default: string - light: string - dark: string - } - staticAssetsDirectory?: string - env: Record -} - -export interface FrameworkDefinition extends BaseFramework { - detect: { - npmDependencies: string[] - excludedNpmDependencies: string[] - configFiles: string[] - } - dev: { - command?: string - port?: number - pollingStrategies?: PollingStrategy[] - } - build: { - command: string - directory: string - } - plugins: Plugin[] -} - -export interface Framework extends BaseFramework { - package: { - name: string - version: string - } - dev: { - commands?: string[] - port?: number - pollingStrategies?: PollingStrategy[] - } - build: { - commands: string[] - directory: string - } - plugins: string[] -} diff --git a/packages/framework-info/tests/__snapshots__/main.test.ts.snap b/packages/framework-info/tests/__snapshots__/main.test.ts.snap deleted file mode 100644 index c3c26e3d0a..0000000000 --- a/packages/framework-info/tests/__snapshots__/main.test.ts.snap +++ /dev/null @@ -1,283 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`getFramework > Should allow getting a specific framework 1`] = ` -{ - "build": { - "commands": [ - "sapper export", - ], - "directory": "__sapper__/export", - }, - "category": "frontend_framework", - "dev": { - "commands": [ - "sapper dev", - ], - "pollingStrategies": [ - { - "name": "TCP", - }, - { - "name": "HTTP", - }, - ], - "port": 3000, - }, - "env": {}, - "id": "sapper", - "logo": { - "dark": "https://framework-info.netlify.app/logos/sapper/default.svg", - "default": "https://framework-info.netlify.app/logos/sapper/default.svg", - "light": "https://framework-info.netlify.app/logos/sapper/default.svg", - }, - "name": "Sapper", - "package": { - "name": "sapper", - "version": "unknown", - }, - "plugins": [], - "staticAssetsDirectory": "static", -} -`; - -exports[`getFrameworks > Should detect frameworks 1`] = ` -[ - { - "build": { - "commands": [ - "sapper export", - ], - "directory": "__sapper__/export", - }, - "category": "frontend_framework", - "dev": { - "commands": [ - "sapper dev", - ], - "pollingStrategies": [ - { - "name": "TCP", - }, - { - "name": "HTTP", - }, - ], - "port": 3000, - }, - "env": {}, - "id": "sapper", - "logo": { - "dark": "https://framework-info.netlify.app/logos/sapper/default.svg", - "default": "https://framework-info.netlify.app/logos/sapper/default.svg", - "light": "https://framework-info.netlify.app/logos/sapper/default.svg", - }, - "name": "Sapper", - "package": { - "name": "sapper", - "version": "3.4.3", - }, - "plugins": [], - "staticAssetsDirectory": "static", - }, -] -`; - -exports[`getFrameworks > Should return the version of a framework that is not detected by npm package 1`] = ` -[ - { - "build": { - "commands": [ - "bundle exec middleman build", - ], - "directory": "build", - }, - "category": "static_site_generator", - "dev": { - "commands": [ - "bundle exec middleman server", - ], - "pollingStrategies": [ - { - "name": "TCP", - }, - { - "name": "HTTP", - }, - ], - "port": 4567, - }, - "env": {}, - "id": "middleman", - "logo": { - "dark": "https://framework-info.netlify.app/logos/middleman/default.svg", - "default": "https://framework-info.netlify.app/logos/middleman/default.svg", - "light": "https://framework-info.netlify.app/logos/middleman/default.svg", - }, - "name": "Middleman", - "package": { - "name": undefined, - "version": "unknown", - }, - "plugins": [], - "staticAssetsDirectory": undefined, - }, -] -`; - -exports[`getFrameworks > Should return the version of each framework when multiple are detected 1`] = ` -[ - { - "build": { - "commands": [ - "vuepress build", - ], - "directory": ".vuepress/dist", - }, - "category": "static_site_generator", - "dev": { - "commands": [ - "vuepress dev", - ], - "pollingStrategies": [ - { - "name": "TCP", - }, - { - "name": "HTTP", - }, - ], - "port": 8080, - }, - "env": {}, - "id": "vuepress", - "logo": { - "dark": "https://framework-info.netlify.app/logos/vuepress/default.svg", - "default": "https://framework-info.netlify.app/logos/vuepress/default.svg", - "light": "https://framework-info.netlify.app/logos/vuepress/default.svg", - }, - "name": "VuePress", - "package": { - "name": "vuepress", - "version": "4.5.6", - }, - "plugins": [], - "staticAssetsDirectory": undefined, - }, - { - "build": { - "commands": [ - "vue-cli-service build", - ], - "directory": "dist", - }, - "category": "frontend_framework", - "dev": { - "commands": [ - "vue-cli-service serve", - ], - "pollingStrategies": [ - { - "name": "TCP", - }, - { - "name": "HTTP", - }, - ], - "port": 8080, - }, - "env": {}, - "id": "vue", - "logo": { - "dark": "https://framework-info.netlify.app/logos/vue/default.svg", - "default": "https://framework-info.netlify.app/logos/vue/default.svg", - "light": "https://framework-info.netlify.app/logos/vue/default.svg", - }, - "name": "Vue.js", - "package": { - "name": "@vue/cli-service", - "version": "1.2.3", - }, - "plugins": [], - "staticAssetsDirectory": undefined, - }, -] -`; - -exports[`getFrameworks > Should return the version of the framework when the installed package is hoisted to the root project directory 1`] = ` -[ - { - "build": { - "commands": [ - "next build", - ], - "directory": ".next", - }, - "category": "static_site_generator", - "dev": { - "commands": [ - "next", - ], - "pollingStrategies": [ - { - "name": "TCP", - }, - ], - "port": 3000, - }, - "env": {}, - "id": "next", - "logo": { - "dark": "https://framework-info.netlify.app/logos/nextjs/dark.svg", - "default": "https://framework-info.netlify.app/logos/nextjs/light.svg", - "light": "https://framework-info.netlify.app/logos/nextjs/light.svg", - }, - "name": "Next.js", - "package": { - "name": "next", - "version": "3.2.1", - }, - "plugins": [ - "@netlify/plugin-nextjs", - ], - "staticAssetsDirectory": undefined, - }, -] -`; - -exports[`getFrameworks > Should work if version cannot be detected 1`] = ` -[ - { - "build": { - "commands": [ - "docpad generate", - ], - "directory": "out", - }, - "category": "static_site_generator", - "dev": { - "commands": [ - "docpad run", - ], - "pollingStrategies": [ - { - "name": "TCP", - }, - { - "name": "HTTP", - }, - ], - "port": 9778, - }, - "env": {}, - "id": "docpad", - "logo": undefined, - "name": "DocPad", - "package": { - "name": "docpad", - "version": "unknown", - }, - "plugins": [], - "staticAssetsDirectory": undefined, - }, -] -`; diff --git a/packages/framework-info/tests/detect.test.ts b/packages/framework-info/tests/detect.test.ts deleted file mode 100644 index efacb9da85..0000000000 --- a/packages/framework-info/tests/detect.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { version as nodeVersion } from 'process' - -import { expect, test } from 'vitest' - -import { getFrameworks } from './helpers/main.js' - -test('Should detect dependencies', async () => { - const frameworks = await getFrameworks('dependencies') - expect(frameworks).toHaveLength(1) -}) - -test('Should detect devDependencies', async () => { - const frameworks = await getFrameworks('dev_dependencies') - expect(frameworks).toHaveLength(1) -}) - -test('Should ignore empty framework.npmDependencies', async () => { - const frameworks = await getFrameworks('empty_dependencies') - expect(frameworks).toHaveLength(1) -}) - -test('Should detect any of several framework.npmDependencies', async () => { - const frameworks = await getFrameworks('several_dependencies') - expect(frameworks).toHaveLength(1) -}) - -test('Should ignore if matching any framework.excludedNpmDependencies', async () => { - const frameworks = await getFrameworks('excluded_dependencies') - expect(frameworks).toHaveLength(1) -}) - -test('Should detect config files', async () => { - const frameworks = await getFrameworks('config_files') - expect(frameworks).toHaveLength(1) -}) - -if (nodeVersion !== 'v8.3.0') { - test('Should detect Next.js plugin for Next.js if when Node version >= 10.13.0', async () => { - const frameworks = await getFrameworks('next-plugin') - expect(frameworks[0].id).toBe('next') - expect(frameworks[0].plugins).toEqual(['@netlify/plugin-nextjs']) - }) -} - -if (nodeVersion === 'v8.3.0') { - test('Should not detect Next.js plugin for Next.js if when Node version < 10.13.0', async () => { - const frameworks = await getFrameworks('next-plugin') - expect(frameworks[0].id).toBe('next') - expect(frameworks[0].plugins).toHaveLength(0) - }) -} diff --git a/packages/framework-info/tests/dev.test.ts b/packages/framework-info/tests/dev.test.ts deleted file mode 100644 index 586590e1e9..0000000000 --- a/packages/framework-info/tests/dev.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { expect, test } from 'vitest' - -import { getFrameworks } from './helpers/main.js' - -test('Should use package scripts as dev command', async () => { - const frameworks = await getFrameworks('use_scripts') - expect(frameworks).toHaveLength(1) - expect(frameworks[0].dev.commands).toEqual(['npm run dev', 'npm run start']) -}) - -test('Should allow package scripts names with colons', async () => { - const frameworks = await getFrameworks('colon_scripts') - expect(frameworks).toHaveLength(1) - expect(frameworks[0].dev.commands).toEqual(['npm run docs:dev']) -}) - -test('Should only use package scripts if it includes framework.dev.command', async () => { - const frameworks = await getFrameworks('dev_command_scripts') - expect(frameworks).toHaveLength(1) - expect(frameworks[0].dev.commands).toEqual(['npm run another']) -}) - -test('Should default dev.commands to framework.dev.command', async () => { - const frameworks = await getFrameworks('empty_scripts') - expect(frameworks).toHaveLength(1) - expect(frameworks[0].dev.commands).toEqual(['sapper dev']) -}) - -test('Should sort scripts in the format *:', async () => { - const frameworks = await getFrameworks('scripts-order/postfix-format') - expect(frameworks).toHaveLength(1) - expect(frameworks[0].dev.commands).toEqual(['npm run site:dev', 'npm run site:start', 'npm run site:build']) -}) - -test('Should sort scripts when dev command is a substring of build command', async () => { - const frameworks = await getFrameworks('scripts-order/command-substring') - expect(frameworks).toHaveLength(1) - expect(frameworks[0].dev.commands).toEqual(['npm run dev', 'npm run build']) -}) - -test('Should prioritize dev over serve', async () => { - const frameworks = await getFrameworks('scripts-order/vite-framework') - expect(frameworks).toHaveLength(1) - expect(frameworks[0].dev.commands).toEqual(['npm run dev', 'npm run serve', 'npm run build']) -}) - -test(`Should exclude 'netlify dev' script`, async () => { - const frameworks = await getFrameworks('excluded_script') - expect(frameworks).toHaveLength(1) - expect(frameworks[0].dev.commands).toEqual(['npm run build']) -}) diff --git a/packages/framework-info/tests/fixtures/colon_scripts/package.json b/packages/framework-info/tests/fixtures/colon_scripts/package.json deleted file mode 100644 index b60b5fe834..0000000000 --- a/packages/framework-info/tests/fixtures/colon_scripts/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "@quasar/app": "*" - }, - "scripts": { - "docs:dev": "test" - } -} diff --git a/packages/framework-info/tests/fixtures/config_files/config.rb b/packages/framework-info/tests/fixtures/config_files/config.rb deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/framework-info/tests/fixtures/config_files/package.json b/packages/framework-info/tests/fixtures/config_files/package.json deleted file mode 100644 index bd8dd310d2..0000000000 --- a/packages/framework-info/tests/fixtures/config_files/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "test", - "version": "1.0.0" -} diff --git a/packages/framework-info/tests/fixtures/dependencies/package.json b/packages/framework-info/tests/fixtures/dependencies/package.json deleted file mode 100644 index e5545f60ce..0000000000 --- a/packages/framework-info/tests/fixtures/dependencies/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "sapper": "*", - "other": "*" - } -} diff --git a/packages/framework-info/tests/fixtures/dev_command_scripts/package.json b/packages/framework-info/tests/fixtures/dev_command_scripts/package.json deleted file mode 100644 index ddb0147729..0000000000 --- a/packages/framework-info/tests/fixtures/dev_command_scripts/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "@quasar/app": "*" - }, - "scripts": { - "another": "test quasar dev -p 8081 test", - "other": "testThree", - "start": "testTwo", - "dev": "test" - } -} diff --git a/packages/framework-info/tests/fixtures/dev_dependencies/package.json b/packages/framework-info/tests/fixtures/dev_dependencies/package.json deleted file mode 100644 index 873334512d..0000000000 --- a/packages/framework-info/tests/fixtures/dev_dependencies/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "devDependencies": { - "sapper": "*", - "other": "*" - } -} diff --git a/packages/framework-info/tests/fixtures/empty/.gitkeep b/packages/framework-info/tests/fixtures/empty/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/framework-info/tests/fixtures/empty/package.json b/packages/framework-info/tests/fixtures/empty/package.json deleted file mode 100644 index bd8dd310d2..0000000000 --- a/packages/framework-info/tests/fixtures/empty/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "test", - "version": "1.0.0" -} diff --git a/packages/framework-info/tests/fixtures/empty_dependencies/config.rb b/packages/framework-info/tests/fixtures/empty_dependencies/config.rb deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/framework-info/tests/fixtures/empty_dependencies/package.json b/packages/framework-info/tests/fixtures/empty_dependencies/package.json deleted file mode 100644 index bd8dd310d2..0000000000 --- a/packages/framework-info/tests/fixtures/empty_dependencies/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "test", - "version": "1.0.0" -} diff --git a/packages/framework-info/tests/fixtures/empty_scripts/package.json b/packages/framework-info/tests/fixtures/empty_scripts/package.json deleted file mode 100644 index 0d408b9b4d..0000000000 --- a/packages/framework-info/tests/fixtures/empty_scripts/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "sapper": "*" - }, - "scripts": {} -} diff --git a/packages/framework-info/tests/fixtures/excluded_dependencies/package.json b/packages/framework-info/tests/fixtures/excluded_dependencies/package.json deleted file mode 100644 index 87f7ffa165..0000000000 --- a/packages/framework-info/tests/fixtures/excluded_dependencies/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "sapper": "*", - "svelte": "*" - } -} diff --git a/packages/framework-info/tests/fixtures/excluded_script/package.json b/packages/framework-info/tests/fixtures/excluded_script/package.json deleted file mode 100644 index 47c40d9c30..0000000000 --- a/packages/framework-info/tests/fixtures/excluded_script/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "create-app", - "version": "1.0.0", - "dependencies": { - "react-scripts": "*" - }, - "scripts": { - "start": "netlify dev", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - } -} diff --git a/packages/framework-info/tests/fixtures/invalid_dependencies/package.json b/packages/framework-info/tests/fixtures/invalid_dependencies/package.json deleted file mode 100644 index 38588eec73..0000000000 --- a/packages/framework-info/tests/fixtures/invalid_dependencies/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": true, - "devDependencies": { - "sapper": "*" - } -} diff --git a/packages/framework-info/tests/fixtures/invalid_package/package.json b/packages/framework-info/tests/fixtures/invalid_package/package.json deleted file mode 100644 index e1c0a76705..0000000000 --- a/packages/framework-info/tests/fixtures/invalid_package/package.json +++ /dev/null @@ -1 +0,0 @@ -{{ diff --git a/packages/framework-info/tests/fixtures/invalid_scripts/package.json b/packages/framework-info/tests/fixtures/invalid_scripts/package.json deleted file mode 100644 index 2a7c10a00d..0000000000 --- a/packages/framework-info/tests/fixtures/invalid_scripts/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "sapper": "*" - }, - "scripts": { - "build": true - } -} diff --git a/packages/framework-info/tests/fixtures/monorepos/app1/package.json b/packages/framework-info/tests/fixtures/monorepos/app1/package.json deleted file mode 100644 index 0f73fdd38d..0000000000 --- a/packages/framework-info/tests/fixtures/monorepos/app1/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "app1", - "version": "1.0.0", - "dependencies": { - "next":"*" - } -} diff --git a/packages/framework-info/tests/fixtures/monorepos/app2/package.json b/packages/framework-info/tests/fixtures/monorepos/app2/package.json deleted file mode 100644 index 132cc449a5..0000000000 --- a/packages/framework-info/tests/fixtures/monorepos/app2/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "app2", - "version": "2.0.0", - "dependencies": { - "next":"*" - } -} diff --git a/packages/framework-info/tests/fixtures/monorepos/node_modules/next/package.json b/packages/framework-info/tests/fixtures/monorepos/node_modules/next/package.json deleted file mode 100644 index 7706f9e51d..0000000000 --- a/packages/framework-info/tests/fixtures/monorepos/node_modules/next/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "3.2.1" -} diff --git a/packages/framework-info/tests/fixtures/multiple/node_modules/@vue/cli-service/package.json b/packages/framework-info/tests/fixtures/multiple/node_modules/@vue/cli-service/package.json deleted file mode 100644 index a510e8069c..0000000000 --- a/packages/framework-info/tests/fixtures/multiple/node_modules/@vue/cli-service/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "1.2.3" -} diff --git a/packages/framework-info/tests/fixtures/multiple/node_modules/vuepress/package.json b/packages/framework-info/tests/fixtures/multiple/node_modules/vuepress/package.json deleted file mode 100644 index 07484632ce..0000000000 --- a/packages/framework-info/tests/fixtures/multiple/node_modules/vuepress/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "4.5.6" -} diff --git a/packages/framework-info/tests/fixtures/multiple/package.json b/packages/framework-info/tests/fixtures/multiple/package.json deleted file mode 100644 index f8048b9e38..0000000000 --- a/packages/framework-info/tests/fixtures/multiple/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "@vue/cli-service": "*", - "vuepress": "*" - } -} diff --git a/packages/framework-info/tests/fixtures/next-plugin/package.json b/packages/framework-info/tests/fixtures/next-plugin/package.json deleted file mode 100644 index c9e1651805..0000000000 --- a/packages/framework-info/tests/fixtures/next-plugin/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "my-next-app", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "next": "10.0.5", - "react": "17.0.1", - "react-dom": "17.0.1" - } -} diff --git a/packages/framework-info/tests/fixtures/no-version/package.json b/packages/framework-info/tests/fixtures/no-version/package.json deleted file mode 100644 index 19a60488b3..0000000000 --- a/packages/framework-info/tests/fixtures/no-version/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "docpad": "*" - } -} diff --git a/packages/framework-info/tests/fixtures/no_package/config.rb b/packages/framework-info/tests/fixtures/no_package/config.rb deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/framework-info/tests/fixtures/package.json b/packages/framework-info/tests/fixtures/package.json deleted file mode 100644 index 561cc98b9d..0000000000 --- a/packages/framework-info/tests/fixtures/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "description": "This is only here so fixtures never reach outside of this folder when finding package.json" -} diff --git a/packages/framework-info/tests/fixtures/parent_package/package.json b/packages/framework-info/tests/fixtures/parent_package/package.json deleted file mode 100644 index 2f5f808687..0000000000 --- a/packages/framework-info/tests/fixtures/parent_package/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "sapper": "*" - } -} diff --git a/packages/framework-info/tests/fixtures/scripts-order/build-first/package.json b/packages/framework-info/tests/fixtures/scripts-order/build-first/package.json deleted file mode 100644 index fa498fa700..0000000000 --- a/packages/framework-info/tests/fixtures/scripts-order/build-first/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "scripts": { - "build": "rollup -c", - "dev": "rollup -c -w", - "start": "sirv public" - }, - "devDependencies": { - "svelte": "^3.0.0" - } -} diff --git a/packages/framework-info/tests/fixtures/scripts-order/command-substring/package.json b/packages/framework-info/tests/fixtures/scripts-order/command-substring/package.json deleted file mode 100644 index 3a9571bf57..0000000000 --- a/packages/framework-info/tests/fixtures/scripts-order/command-substring/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "parcel-ste", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "dependencies": { - "parcel-bundler": "^1.12.4" - }, - "scripts": { - "build": "parcel build index.html", - "dev": "parcel index.html" - } -} diff --git a/packages/framework-info/tests/fixtures/scripts-order/dev-first/package.json b/packages/framework-info/tests/fixtures/scripts-order/dev-first/package.json deleted file mode 100644 index 86c1eea55a..0000000000 --- a/packages/framework-info/tests/fixtures/scripts-order/dev-first/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "scripts": { - "dev": "rollup -c -w", - "build": "rollup -c", - "start": "sirv public" - }, - "devDependencies": { - "svelte": "^3.0.0" - } -} diff --git a/packages/framework-info/tests/fixtures/scripts-order/postfix-format/package.json b/packages/framework-info/tests/fixtures/scripts-order/postfix-format/package.json deleted file mode 100644 index be7b2a5c95..0000000000 --- a/packages/framework-info/tests/fixtures/scripts-order/postfix-format/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "scripts": { - "site:build": "rollup -c", - "site:start": "sirv public", - "site:dev": "rollup -c -w" - }, - "devDependencies": { - "svelte": "^3.0.0" - } -} diff --git a/packages/framework-info/tests/fixtures/scripts-order/vite-framework/package.json b/packages/framework-info/tests/fixtures/scripts-order/vite-framework/package.json deleted file mode 100644 index 31e880c0bc..0000000000 --- a/packages/framework-info/tests/fixtures/scripts-order/vite-framework/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "vite-project", - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "serve": "vite preview" - }, - "devDependencies": { - "vite": "^2.1.5" - } -} diff --git a/packages/framework-info/tests/fixtures/several_dependencies/package.json b/packages/framework-info/tests/fixtures/several_dependencies/package.json deleted file mode 100644 index acee9df381..0000000000 --- a/packages/framework-info/tests/fixtures/several_dependencies/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "parcel": "*" - } -} diff --git a/packages/framework-info/tests/fixtures/simple/node_modules/sapper/package.json b/packages/framework-info/tests/fixtures/simple/node_modules/sapper/package.json deleted file mode 100644 index 4c49bb1f29..0000000000 --- a/packages/framework-info/tests/fixtures/simple/node_modules/sapper/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "3.4.3" -} diff --git a/packages/framework-info/tests/fixtures/simple/package.json b/packages/framework-info/tests/fixtures/simple/package.json deleted file mode 100644 index 2f5f808687..0000000000 --- a/packages/framework-info/tests/fixtures/simple/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "sapper": "*" - } -} diff --git a/packages/framework-info/tests/fixtures/syntax_package/package.json b/packages/framework-info/tests/fixtures/syntax_package/package.json deleted file mode 100644 index 27ba77ddaf..0000000000 --- a/packages/framework-info/tests/fixtures/syntax_package/package.json +++ /dev/null @@ -1 +0,0 @@ -true diff --git a/packages/framework-info/tests/fixtures/use_scripts/package.json b/packages/framework-info/tests/fixtures/use_scripts/package.json deleted file mode 100644 index edd55d0ac2..0000000000 --- a/packages/framework-info/tests/fixtures/use_scripts/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "@quasar/app": "*" - }, - "scripts": { - "other": "testThree", - "start": "testTwo", - "dev": "test" - } -} diff --git a/packages/framework-info/tests/fixtures/yarn_scripts/package.json b/packages/framework-info/tests/fixtures/yarn_scripts/package.json deleted file mode 100644 index edd55d0ac2..0000000000 --- a/packages/framework-info/tests/fixtures/yarn_scripts/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "test", - "version": "1.0.0", - "dependencies": { - "@quasar/app": "*" - }, - "scripts": { - "other": "testThree", - "start": "testTwo", - "dev": "test" - } -} diff --git a/packages/framework-info/tests/fixtures/yarn_scripts/yarn.lock b/packages/framework-info/tests/fixtures/yarn_scripts/yarn.lock deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/framework-info/tests/frameworks.test.ts b/packages/framework-info/tests/frameworks.test.ts deleted file mode 100644 index d2854bd03e..0000000000 --- a/packages/framework-info/tests/frameworks.test.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { fileURLToPath } from 'url' - -import Ajv from 'ajv' -import glob from 'fast-glob' -import { describe, expect, test } from 'vitest' - -import { FRAMEWORK_NAMES } from '../src/generated/frameworkNames.js' -import { FRAMEWORKS } from '../src/generated/frameworks.js' - -const FRAMEWORKS_DIR = new URL('../src/frameworks/', import.meta.url) - -const ajv = new Ajv({}) - -const validate = function (value, schema) { - const isValid = ajv.validate(schema, value) - - if (isValid) { - return true - } - - return ajv.errorsText(ajv.errors, { separator: '\n' }) -} - -const RELATIVE_PATH_SCHEMA = { - type: 'string', - minLength: 1, - allOf: [{ not: { pattern: '^/' } }, { not: { pattern: '^\\.\\.?\\/' } }], -} - -const COMMAND_SCHEMA = { - type: 'string', - minLength: 1, -} - -const PLUGIN_SCHEMA = { - type: 'object', - required: ['packageName', 'condition'], - additionalProperties: false, - properties: { - packageName: { type: 'string', minLength: 1 }, - condition: { type: 'object' }, - }, -} - -const POLLING_STRATEGY_SCHEMA = { - type: 'object', - required: ['name'], - additionalProperties: false, - properties: { - name: { enum: ['TCP', 'HTTP'] }, - }, -} - -const MAX_PORT = 65_535 -const FRAMEWORK_JSON_SCHEMA = { - type: 'object', - required: ['id', 'name', 'category', 'detect', 'dev', 'build', 'env'], - additionalProperties: false, - properties: { - id: { type: 'string', pattern: '^[a-z\\d_]+', minLength: 1 }, - name: { type: 'string', pattern: '^\\w+', minLength: 1 }, - category: { - type: 'string', - enum: ['static_site_generator', 'frontend_framework', 'build_tool'], - }, - detect: { - type: 'object', - required: ['npmDependencies', 'excludedNpmDependencies', 'configFiles'], - additionalProperties: false, - properties: { - npmDependencies: { - type: 'array', - items: { type: 'string', minLength: 1 }, - }, - excludedNpmDependencies: { - type: 'array', - items: { type: 'string', minLength: 1 }, - }, - configFiles: { - type: 'array', - items: RELATIVE_PATH_SCHEMA, - }, - }, - }, - dev: { - oneOf: [ - { - type: 'object', - required: ['command'], - additionalProperties: false, - properties: { - command: COMMAND_SCHEMA, - port: { type: 'integer', minimum: 1, maximum: MAX_PORT }, - pollingStrategies: { - type: 'array', - items: POLLING_STRATEGY_SCHEMA, - minItems: 1, - uniqueItems: true, - }, - }, - }, - { type: 'object', additionalProperties: false, properties: {} }, - ], - }, - build: { - type: 'object', - required: ['command', 'directory'], - additionalProperties: false, - properties: { - command: COMMAND_SCHEMA, - directory: RELATIVE_PATH_SCHEMA, - }, - }, - staticAssetsDirectory: { - type: 'string', - }, - env: { - type: 'object', - additionalProperties: { type: 'string' }, - }, - logo: { - type: 'object', - additionalProperties: false, - properties: { - default: { type: 'string' }, - light: { type: 'string' }, - dark: { type: 'string' }, - }, - }, - plugins: { - type: 'array', - items: PLUGIN_SCHEMA, - }, - }, -} - -test.each(FRAMEWORKS)('Framework $id should have a valid shape', (framework) => { - expect(validate(framework, FRAMEWORK_JSON_SCHEMA)).toBe(true) -}) - -describe('JSON files', async () => { - const jsonFiles = await glob('*.json', { cwd: fileURLToPath(FRAMEWORKS_DIR) }) - - test('each json file should be required in main.ts FRAMEWORKS', async () => { - expect(FRAMEWORKS).toHaveLength(jsonFiles.length) - FRAMEWORKS.forEach(({ id }) => { - expect(jsonFiles).toContain(`${id}.json`) - }) - }) - - test('each json file should be listed in main.ts FRAMEWORK_NAMES', async () => { - expect(FRAMEWORK_NAMES).toHaveLength(jsonFiles.length) - FRAMEWORK_NAMES.forEach((id) => { - expect(jsonFiles).toContain(`${id}.json`) - }) - }) -}) diff --git a/packages/framework-info/tests/helpers/main.ts b/packages/framework-info/tests/helpers/main.ts deleted file mode 100644 index 52a5d7323c..0000000000 --- a/packages/framework-info/tests/helpers/main.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { fileURLToPath } from 'url' - -import { listFrameworks, getFramework as getFrameworkLib, hasFramework as hasFrameworkLib } from '../../src/main.js' - -export const FIXTURES_DIR = fileURLToPath(new URL('../fixtures', import.meta.url)) - -const getOptions = (fixtureName) => ({ projectDir: `${FIXTURES_DIR}/${fixtureName}` }) - -// Fire the main function with a specific fixture -export const getFrameworks = function (fixtureName) { - return listFrameworks(getOptions(fixtureName)) -} - -export const getFramework = function (fixtureName, frameworkId) { - return getFrameworkLib(frameworkId, getOptions(fixtureName)) -} - -export const hasFramework = function (fixtureName, frameworkId) { - return hasFrameworkLib(frameworkId, getOptions(fixtureName)) -} diff --git a/packages/framework-info/tests/main.test.ts b/packages/framework-info/tests/main.test.ts deleted file mode 100644 index dc68b054d0..0000000000 --- a/packages/framework-info/tests/main.test.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { describe, expect, test } from 'vitest' - -import { getFrameworks, getFramework, hasFramework } from './helpers/main.js' - -describe('getFrameworks', () => { - test('Should detect frameworks', async () => { - const frameworks = await getFrameworks('simple') - expect(frameworks).toMatchSnapshot() - }) - - test('Should return an empty array when no framework is detected', async () => { - const frameworks = await getFrameworks('empty') - expect(frameworks).toHaveLength(0) - }) - - test('Should return several items when multiple frameworks are detected', async () => { - const frameworks = await getFrameworks('multiple') - expect(frameworks).toHaveLength(2) - }) - - test('Should return the version of each framework when multiple are detected', async () => { - const frameworks = await getFrameworks('multiple') - expect(frameworks).toMatchSnapshot() - }) - - test('Should return the version of a framework that is not detected by npm package', async () => { - const frameworks = await getFrameworks('no_package') - expect(frameworks).toMatchSnapshot() - }) - - test('Should return the version of the framework when the installed package is hoisted to the root project directory', async () => { - const frameworks = await getFrameworks('monorepos/app1') - expect(frameworks).toMatchSnapshot() - }) - - test('Should work if version cannot be detected', async () => { - const frameworks = await getFrameworks('no-version') - expect(frameworks).toMatchSnapshot() - }) -}) - -describe('getFramework', () => { - test('Should allow getting a specific framework', async () => { - const framework = await getFramework('simple', 'sapper') - expect(framework).toMatchSnapshot() - }) - - test('Should throw when passing an invalid framework', async () => { - await expect(getFramework('simple', 'doesNotExist')).rejects.toThrowError() - }) -}) - -describe('hasFramework', () => { - test('Should allow testing a specific framework', async () => { - expect(await hasFramework('simple', 'sapper')).toBe(true) - expect(await hasFramework('simple', 'nuxt')).toBe(false) - }) - - test('Should throw when testing an invalid framework', async () => { - await expect(hasFramework('simple', 'doesNotExist')).rejects.toThrowError() - }) - - test('Should sort framework ids in invalid framework error message', async () => { - try { - await hasFramework('simple', 'doesNotExist') - expect.fail('should throw') - } catch (error) { - const [, frameworksFromMessage] = error.message.match(/It should be one of: (.+)/) - const frameworksArray = frameworksFromMessage.split(', ') - - expect(frameworksArray).toEqual([...frameworksArray].sort()) - } - }) -}) diff --git a/packages/framework-info/tests/options.test.ts b/packages/framework-info/tests/options.test.ts deleted file mode 100644 index 6dbe3215f7..0000000000 --- a/packages/framework-info/tests/options.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import process from 'process' - -import { expect, test, vi } from 'vitest' - -import { listFrameworks } from '../src/main.js' - -import { FIXTURES_DIR } from './helpers/main.js' - -test('projectDir option defaults to process.cwd()', async () => { - const spyInstance = vi.spyOn(process, 'cwd').mockReturnValue(`${FIXTURES_DIR}/simple`) - const frameworks = await listFrameworks({}) - expect(frameworks).toHaveLength(1) - spyInstance.mockRestore() -}) - -test('Can trigger with no options', async () => { - const spyInstance = vi.spyOn(process, 'cwd').mockReturnValue(`${FIXTURES_DIR}/simple`) - const frameworks = await listFrameworks() - expect(frameworks).toHaveLength(1) - spyInstance.mockRestore() -}) diff --git a/packages/framework-info/tests/package.test.ts b/packages/framework-info/tests/package.test.ts deleted file mode 100644 index 5bbcf4244f..0000000000 --- a/packages/framework-info/tests/package.test.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { rm } from 'fs/promises' - -import cpy from 'cpy' -import { dir as getTmpDir } from 'tmp-promise' -import { expect, test } from 'vitest' - -import { listFrameworks } from '../src/main.js' - -import { getFrameworks, FIXTURES_DIR } from './helpers/main.js' - -test('Should detect package.json in parent directories', async () => { - const frameworks = await getFrameworks('parent_package/parent') - expect(frameworks).toHaveLength(1) -}) - -test('Should work without a package.json', async () => { - const { path: tmpDir } = await getTmpDir() - try { - await cpy(`${FIXTURES_DIR}/no_package/**`, tmpDir) - const frameworks = await listFrameworks({ projectDir: tmpDir }) - expect(frameworks).toHaveLength(1) - } finally { - rm(tmpDir, { force: true, recursive: true, maxRetries: 10 }) - } -}) - -test('Should ignore invalid package.json', async () => { - const frameworks = await getFrameworks('invalid_package') - expect(frameworks).toHaveLength(0) -}) - -test('Should ignore package.json with a wrong syntax', async () => { - const frameworks = await getFrameworks('syntax_package') - expect(frameworks).toHaveLength(0) -}) - -test('Should ignore invalid package.json dependencies', async () => { - const frameworks = await getFrameworks('invalid_dependencies') - expect(frameworks).toHaveLength(1) -}) - -test('Should ignore invalid package.json scripts', async () => { - const frameworks = await getFrameworks('invalid_scripts') - expect(frameworks).toHaveLength(1) -}) - -test('Should ignore empty package.json scripts', async () => { - const frameworks = await getFrameworks('empty_scripts') - expect(frameworks).toHaveLength(1) -}) diff --git a/packages/framework-info/tests/run_script.test.ts b/packages/framework-info/tests/run_script.test.ts deleted file mode 100644 index 0c2f7e5733..0000000000 --- a/packages/framework-info/tests/run_script.test.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { expect, test } from 'vitest' - -import { getFrameworks } from './helpers/main.js' - -test('Should use Yarn when there is a yarn.lock', async () => { - const frameworks = await getFrameworks('yarn_scripts') - expect(frameworks).toHaveLength(1) - expect(frameworks[0].dev.commands).toEqual(['yarn dev', 'yarn start']) -}) diff --git a/packages/framework-info/tsconfig.json b/packages/framework-info/tsconfig.json deleted file mode 100644 index b6f7555f2e..0000000000 --- a/packages/framework-info/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "lib" /* Specify an output folder for all emitted files. */, - "strict": true, - "noImplicitAny": true, - "strictFunctionTypes": true, - "strictPropertyInitialization": true, - "useUnknownInCatchVariables": true, - "noImplicitReturns": true - }, - "include": ["src/**/*.ts"], - "exclude": ["tests/**"] -} diff --git a/packages/framework-info/vite.config.js b/packages/framework-info/vite.config.js deleted file mode 100644 index b40ac8d7cb..0000000000 --- a/packages/framework-info/vite.config.js +++ /dev/null @@ -1,32 +0,0 @@ -import { fileURLToPath } from 'node:url' - -import nodePolyfills from 'rollup-plugin-node-polyfills' - -const CORE_FILE = fileURLToPath(new URL('src/core.ts', import.meta.url)) - -/** @type {import('vite').UserConfig} */ -export default { - test: { - environment: 'node', - }, - resolve: { - alias: { - path: 'rollup-plugin-node-polyfills/polyfills/path', - }, - }, - // Need to specify the directory because if this is invoked from the repository root, - // the 'dist' folder is created outside of the 'framework-info' directory - root: '.', - publicDir: 'assets', - build: { - lib: { - entry: CORE_FILE, - name: 'frameworkInfo', - fileName: 'index', - }, - sourcemap: true, - rollupOptions: { - plugins: [nodePolyfills()], - }, - }, -} diff --git a/release-please-config.json b/release-please-config.json index 99733332cb..c18f2c40fc 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -6,7 +6,6 @@ "packages/cache-utils": {}, "packages/config": {}, "packages/edge-bundler": {}, - "packages/framework-info": {}, "packages/functions-utils": {}, "packages/git-utils": {}, "packages/headers-parser": {},