diff --git a/.github/workflows/publish-package.yml b/.github/workflows/publish-package.yml
index 876310d..fe05396 100644
--- a/.github/workflows/publish-package.yml
+++ b/.github/workflows/publish-package.yml
@@ -51,9 +51,16 @@ jobs:
if: github.ref == 'refs/heads/master'
run: npm run benchmark
- - name: Release + Deploy
+ - name: Release + Publish package
env:
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
run: npm run semantic-release:all
+
+ - name: Deploy to netlify
+ if: github.ref == 'refs/heads/master'
+ run: npm run netlify:deploy
+ env:
+ NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
+ NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
diff --git a/benchmark/src/main.ts b/benchmark/src/main.ts
index 372033e..ed1fd57 100644
--- a/benchmark/src/main.ts
+++ b/benchmark/src/main.ts
@@ -15,7 +15,7 @@ export interface BenchmarkResult {
runsSampled: number
}
-const benchmarkResultPath = `${__dirname}/../../../../apps/web-app/src/assets/benchmarkResults.json`
+const benchmarkResultPath = `${__dirname}/../../../../web-app/src/assets/benchmarkResults.json`
async function main() {
const packageVersions: string[] = JSON.parse(execSync('npm view ss-search versions --json').toString())
diff --git a/package-lock.json b/package-lock.json
index 84867f8..7539436 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -73,6 +73,7 @@
"jest": "29.6.4",
"jest-environment-jsdom": "29.6.4",
"jest-environment-node": "^29.4.1",
+ "netlify": "^13.1.10",
"nx": "16.8.1",
"nx-cloud": "latest",
"prettier": "2.8.8",
@@ -81,6 +82,9 @@
"typescript": "5.1.6",
"vite": "4.3.9",
"vitest": "0.32.4"
+ },
+ "engines": {
+ "node": ">=18 <19"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -3475,6 +3479,12 @@
"react": "^17.0.0 || ^18.0.0"
}
},
+ "node_modules/@netlify/open-api": {
+ "version": "2.21.0",
+ "resolved": "https://registry.npmjs.org/@netlify/open-api/-/open-api-2.21.0.tgz",
+ "integrity": "sha512-btuPsjyX+dk/zM7e9UWM1s+EbVahwfsUoMuMV3RVttHgVR971m+CiDObTwZ0rtco8J+ibnPIsC16FA6iLRu6hw==",
+ "dev": true
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -10304,6 +10314,15 @@
"integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
"dev": true
},
+ "node_modules/data-uri-to-buffer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 12"
+ }
+ },
"node_modules/data-urls": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
@@ -12399,6 +12418,29 @@
"bser": "2.1.1"
}
},
+ "node_modules/fetch-blob": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "dependencies": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
"node_modules/fflate": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.0.tgz",
@@ -12726,6 +12768,18 @@
"node": ">= 6"
}
},
+ "node_modules/formdata-polyfill": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+ "dev": true,
+ "dependencies": {
+ "fetch-blob": "^3.1.2"
+ },
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -16157,6 +16211,12 @@
"node": ">= 0.6"
}
},
+ "node_modules/micro-api-client": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/micro-api-client/-/micro-api-client-3.3.0.tgz",
+ "integrity": "sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg==",
+ "dev": true
+ },
"node_modules/micromatch": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
@@ -16466,6 +16526,42 @@
"integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==",
"dev": true
},
+ "node_modules/netlify": {
+ "version": "13.1.10",
+ "resolved": "https://registry.npmjs.org/netlify/-/netlify-13.1.10.tgz",
+ "integrity": "sha512-ByFz8S08HWVKd9r/lkTahZX7xSq4IRyPCUvuaduI4GHyQaSWEdVNK1krC05vlhL9W0SzDn8Yjowh0Ru4PKrOYw==",
+ "dev": true,
+ "dependencies": {
+ "@netlify/open-api": "^2.19.1",
+ "lodash-es": "^4.17.21",
+ "micro-api-client": "^3.3.0",
+ "node-fetch": "^3.0.0",
+ "omit.js": "^2.0.2",
+ "p-wait-for": "^4.0.0",
+ "qs": "^6.9.6"
+ },
+ "engines": {
+ "node": "^14.16.0 || >=16.0.0"
+ }
+ },
+ "node_modules/netlify/node_modules/node-fetch": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+ "dev": true,
+ "dependencies": {
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-fetch"
+ }
+ },
"node_modules/next-tick": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
@@ -16488,6 +16584,25 @@
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"dev": true
},
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "engines": {
+ "node": ">=10.5.0"
+ }
+ },
"node_modules/node-emoji": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
@@ -19532,6 +19647,12 @@
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
"dev": true
},
+ "node_modules/omit.js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-2.0.2.tgz",
+ "integrity": "sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==",
+ "dev": true
+ },
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -19793,6 +19914,33 @@
"node": ">=6"
}
},
+ "node_modules/p-wait-for": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-4.1.0.tgz",
+ "integrity": "sha512-i8nE5q++9h8oaQHWltS1Tnnv4IoMDOlqN7C0KFG2OdbK0iFJIt6CROZ8wfBM+K4Pxqfnq4C4lkkpXqTEpB5DZw==",
+ "dev": true,
+ "dependencies": {
+ "p-timeout": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-wait-for/node_modules/p-timeout": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz",
+ "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -25323,6 +25471,15 @@
"minimalistic-assert": "^1.0.0"
}
},
+ "node_modules/web-streams-polyfill": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
+ "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/webidl-conversions": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
diff --git a/package.json b/package.json
index 9eecad1..7a08790 100644
--- a/package.json
+++ b/package.json
@@ -3,6 +3,10 @@
"version": "1.8.1",
"license": "MIT",
"repository": "https://github.com/yann510/ss-search",
+ "private": true,
+ "engines": {
+ "node": ">=18 <19"
+ },
"scripts": {
"format:all": "prettier --write --config .prettierrc \"**/*.{ts,tsx,js,json}\"",
"lint:all": "nx run-many --target=lint --all",
@@ -10,9 +14,9 @@
"build:all": "nx run-many --target=build --all",
"semantic-release:all": "nx run-many --target=semantic-release --all",
"benchmark": "nx run benchmark:build && node dist/benchmark/main.js",
- "web-app:serve": "nx run web-app:serve"
+ "web-app:serve": "nx run web-app:serve",
+ "netlify:deploy": "netlify deploy --prod --dir=dist/web-app"
},
- "private": true,
"dependencies": {
"@emotion/react": "11.11.1",
"@emotion/styled": "11.11.0",
@@ -78,6 +82,7 @@
"jest": "29.6.4",
"jest-environment-jsdom": "29.6.4",
"jest-environment-node": "^29.4.1",
+ "netlify": "13.1.10",
"nx": "16.8.1",
"nx-cloud": "latest",
"prettier": "2.8.8",
diff --git a/apps/web-app/.eslintrc.json b/web-app/.eslintrc.json
similarity index 81%
rename from apps/web-app/.eslintrc.json
rename to web-app/.eslintrc.json
index a39ac5d..c5bdb41 100644
--- a/apps/web-app/.eslintrc.json
+++ b/web-app/.eslintrc.json
@@ -1,5 +1,5 @@
{
- "extends": ["plugin:@nx/react", "../../.eslintrc.json"],
+ "extends": ["plugin:@nx/react", "../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
diff --git a/apps/web-app/jest.config.ts b/web-app/jest.config.ts
similarity index 76%
rename from apps/web-app/jest.config.ts
rename to web-app/jest.config.ts
index d8dc9f8..ce53b8f 100644
--- a/apps/web-app/jest.config.ts
+++ b/web-app/jest.config.ts
@@ -1,11 +1,11 @@
/* eslint-disable */
export default {
displayName: 'web-app',
- preset: '../../jest.preset.js',
+ preset: '../jest.preset.js',
transform: {
'^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest',
'^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/react/babel'] }],
},
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
- coverageDirectory: '../../coverage/apps/web-app',
+ coverageDirectory: '../coverage/web-app',
}
diff --git a/apps/web-app/project.json b/web-app/project.json
similarity index 71%
rename from apps/web-app/project.json
rename to web-app/project.json
index cdaeda5..a699a7b 100644
--- a/apps/web-app/project.json
+++ b/web-app/project.json
@@ -1,7 +1,7 @@
{
"name": "web-app",
- "$schema": "../../node_modules/nx/schemas/project-schema.json",
- "sourceRoot": "apps/web-app/src",
+ "$schema": "../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "web-app/src",
"projectType": "application",
"targets": {
"build": {
@@ -10,11 +10,11 @@
"defaultConfiguration": "production",
"options": {
"target": "web",
- "outputPath": "dist/apps/web-app",
- "main": "apps/web-app/src/main.tsx",
- "tsConfig": "apps/web-app/tsconfig.app.json",
- "rspackConfig": "apps/web-app/rspack.config.js",
- "assets": ["apps/web-app/src/favicon.ico", "apps/web-app/src/assets"]
+ "outputPath": "dist/web-app",
+ "main": "web-app/src/main.tsx",
+ "tsConfig": "web-app/tsconfig.app.json",
+ "rspackConfig": "web-app/rspack.config.js",
+ "assets": ["web-app/src/favicon.ico", "web-app/src/assets"]
},
"configurations": {
"development": {
@@ -43,14 +43,14 @@
"executor": "@nx/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
- "lintFilePatterns": ["apps/web-app/**/*.{ts,tsx,js,jsx}"]
+ "lintFilePatterns": ["web-app/**/*.{ts,tsx,js,jsx}"]
}
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
- "jestConfig": "apps/web-app/jest.config.ts",
+ "jestConfig": "web-app/jest.config.ts",
"passWithNoTests": true
},
"configurations": {
diff --git a/apps/web-app/rspack.config.js b/web-app/rspack.config.js
similarity index 100%
rename from apps/web-app/rspack.config.js
rename to web-app/rspack.config.js
diff --git a/apps/web-app/src/assets/_redirects b/web-app/src/assets/_redirects
similarity index 100%
rename from apps/web-app/src/assets/_redirects
rename to web-app/src/assets/_redirects
diff --git a/apps/web-app/src/assets/benchmarkResults.json b/web-app/src/assets/benchmarkResults.json
similarity index 100%
rename from apps/web-app/src/assets/benchmarkResults.json
rename to web-app/src/assets/benchmarkResults.json
diff --git a/apps/web-app/src/assets/data-chunk-0.json b/web-app/src/assets/data-chunk-0.json
similarity index 100%
rename from apps/web-app/src/assets/data-chunk-0.json
rename to web-app/src/assets/data-chunk-0.json
diff --git a/apps/web-app/src/assets/data-chunk-1.json b/web-app/src/assets/data-chunk-1.json
similarity index 100%
rename from apps/web-app/src/assets/data-chunk-1.json
rename to web-app/src/assets/data-chunk-1.json
diff --git a/apps/web-app/src/assets/data-chunk-2.json b/web-app/src/assets/data-chunk-2.json
similarity index 100%
rename from apps/web-app/src/assets/data-chunk-2.json
rename to web-app/src/assets/data-chunk-2.json
diff --git a/apps/web-app/src/assets/data-chunk-3.json b/web-app/src/assets/data-chunk-3.json
similarity index 100%
rename from apps/web-app/src/assets/data-chunk-3.json
rename to web-app/src/assets/data-chunk-3.json
diff --git a/apps/web-app/src/assets/data-chunk-4.json b/web-app/src/assets/data-chunk-4.json
similarity index 100%
rename from apps/web-app/src/assets/data-chunk-4.json
rename to web-app/src/assets/data-chunk-4.json
diff --git a/apps/web-app/src/assets/data-chunk-5.json b/web-app/src/assets/data-chunk-5.json
similarity index 100%
rename from apps/web-app/src/assets/data-chunk-5.json
rename to web-app/src/assets/data-chunk-5.json
diff --git a/apps/web-app/src/assets/data-chunk-6.json b/web-app/src/assets/data-chunk-6.json
similarity index 100%
rename from apps/web-app/src/assets/data-chunk-6.json
rename to web-app/src/assets/data-chunk-6.json
diff --git a/apps/web-app/src/assets/data-chunk-7.json b/web-app/src/assets/data-chunk-7.json
similarity index 100%
rename from apps/web-app/src/assets/data-chunk-7.json
rename to web-app/src/assets/data-chunk-7.json
diff --git a/apps/web-app/src/assets/data-chunk-8.json b/web-app/src/assets/data-chunk-8.json
similarity index 100%
rename from apps/web-app/src/assets/data-chunk-8.json
rename to web-app/src/assets/data-chunk-8.json
diff --git a/apps/web-app/src/assets/data-chunk-9.json b/web-app/src/assets/data-chunk-9.json
similarity index 100%
rename from apps/web-app/src/assets/data-chunk-9.json
rename to web-app/src/assets/data-chunk-9.json
diff --git a/apps/web-app/src/assets/index.html b/web-app/src/assets/index.html
similarity index 94%
rename from apps/web-app/src/assets/index.html
rename to web-app/src/assets/index.html
index b95648f..4be0663 100644
--- a/apps/web-app/src/assets/index.html
+++ b/web-app/src/assets/index.html
@@ -15,7 +15,7 @@
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
-
+