diff --git a/.nx/workflows/agents.yaml b/.nx/workflows/agents.yaml index f73921e1bfc82..5770b70ac3589 100644 --- a/.nx/workflows/agents.yaml +++ b/.nx/workflows/agents.yaml @@ -1,7 +1,7 @@ launch-templates: linux-medium: resource-class: 'docker_linux_amd64/medium+' - image: 'ubuntu22.04-node20.9-v2' + image: 'ubuntu22.04-node20.9-v3' env: GIT_AUTHOR_EMAIL: test@test.com GIT_AUTHOR_NAME: Test diff --git a/Cargo.lock b/Cargo.lock index be3481ce27efc..8258fbc20ed03 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -482,9 +482,8 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "filedescriptor" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e" +version = "0.8.3" +source = "git+https://github.com/cammisuli/wezterm#3db3f2d05f7188af9c7527214605f18332fac06d" dependencies = [ "libc", "thiserror", @@ -1537,6 +1536,7 @@ dependencies = [ "ignore", "ignore-files 2.0.0", "itertools", + "mio", "napi", "napi-build", "napi-derive", @@ -1660,8 +1660,7 @@ dependencies = [ [[package]] name = "portable-pty" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806ee80c2a03dbe1a9fb9534f8d19e4c0546b790cde8fd1fea9d6390644cb0be" +source = "git+https://github.com/cammisuli/wezterm#3db3f2d05f7188af9c7527214605f18332fac06d" dependencies = [ "anyhow", "bitflags 1.3.2", diff --git a/docs/generated/manifests/menus.json b/docs/generated/manifests/menus.json index 657b493379468..7668cfa3456f7 100644 --- a/docs/generated/manifests/menus.json +++ b/docs/generated/manifests/menus.json @@ -5005,9 +5005,9 @@ "disableCollapsible": false }, { - "name": "Angular: The browserTarget", - "path": "/deprecated/storybook/angular-browser-target", - "id": "angular-browser-target", + "name": "Angular - The projectBuildConfig", + "path": "/deprecated/storybook/angular-project-build-config", + "id": "angular-project-build-config", "isExternal": false, "children": [], "disableCollapsible": false @@ -5161,9 +5161,9 @@ "disableCollapsible": false }, { - "name": "Angular: The browserTarget", - "path": "/deprecated/storybook/angular-browser-target", - "id": "angular-browser-target", + "name": "Angular - The projectBuildConfig", + "path": "/deprecated/storybook/angular-project-build-config", + "id": "angular-project-build-config", "isExternal": false, "children": [], "disableCollapsible": false @@ -5212,9 +5212,9 @@ "disableCollapsible": false }, { - "name": "Angular: The browserTarget", - "path": "/deprecated/storybook/angular-browser-target", - "id": "angular-browser-target", + "name": "Angular - The projectBuildConfig", + "path": "/deprecated/storybook/angular-project-build-config", + "id": "angular-project-build-config", "isExternal": false, "children": [], "disableCollapsible": false diff --git a/docs/generated/manifests/nx.json b/docs/generated/manifests/nx.json index af5fbc4210bb5..7bb352452f68e 100644 --- a/docs/generated/manifests/nx.json +++ b/docs/generated/manifests/nx.json @@ -6852,14 +6852,14 @@ "tags": [] }, { - "id": "angular-browser-target", - "name": "Angular: The browserTarget", - "description": "This document explains the role of the browserTarget in Angular projects with a Storybook configuration, and how the Storybook executors use it.", + "id": "angular-project-build-config", + "name": "Angular - The projectBuildConfig", + "description": "This document explains the role of the projectBuildConfig in Angular projects with a Storybook configuration, and how the Storybook executors use it.", "mediaImage": "", - "file": "shared/deprecated/storybook/angular-browser-target", + "file": "shared/deprecated/storybook/angular-project-build-config", "itemList": [], "isExternal": false, - "path": "/deprecated/storybook/angular-browser-target", + "path": "/deprecated/storybook/angular-project-build-config", "tags": [] }, { @@ -7067,14 +7067,14 @@ "tags": [] }, { - "id": "angular-browser-target", - "name": "Angular: The browserTarget", - "description": "This document explains the role of the browserTarget in Angular projects with a Storybook configuration, and how the Storybook executors use it.", + "id": "angular-project-build-config", + "name": "Angular - The projectBuildConfig", + "description": "This document explains the role of the projectBuildConfig in Angular projects with a Storybook configuration, and how the Storybook executors use it.", "mediaImage": "", - "file": "shared/deprecated/storybook/angular-browser-target", + "file": "shared/deprecated/storybook/angular-project-build-config", "itemList": [], "isExternal": false, - "path": "/deprecated/storybook/angular-browser-target", + "path": "/deprecated/storybook/angular-project-build-config", "tags": [] }, { @@ -7137,15 +7137,15 @@ "path": "/deprecated/storybook/angular-storybook-targets", "tags": [] }, - "/deprecated/storybook/angular-browser-target": { - "id": "angular-browser-target", - "name": "Angular: The browserTarget", - "description": "This document explains the role of the browserTarget in Angular projects with a Storybook configuration, and how the Storybook executors use it.", + "/deprecated/storybook/angular-project-build-config": { + "id": "angular-project-build-config", + "name": "Angular - The projectBuildConfig", + "description": "This document explains the role of the projectBuildConfig in Angular projects with a Storybook configuration, and how the Storybook executors use it.", "mediaImage": "", - "file": "shared/deprecated/storybook/angular-browser-target", + "file": "shared/deprecated/storybook/angular-project-build-config", "itemList": [], "isExternal": false, - "path": "/deprecated/storybook/angular-browser-target", + "path": "/deprecated/storybook/angular-project-build-config", "tags": [] }, "/deprecated/storybook/migrate-webpack-final-angular": { diff --git a/docs/generated/packages/remix/generators/application.json b/docs/generated/packages/remix/generators/application.json index 2d2e45eec901d..67b65b0bcc4a8 100644 --- a/docs/generated/packages/remix/generators/application.json +++ b/docs/generated/packages/remix/generators/application.json @@ -45,7 +45,7 @@ }, "e2eTestRunner": { "type": "string", - "enum": ["cypress", "none"], + "enum": ["cypress", "playwright", "none"], "default": "cypress", "description": "Test runner to use for e2e tests" }, diff --git a/docs/generated/packages/storybook/executors/build.json b/docs/generated/packages/storybook/executors/build.json index 0f3075fb2ad78..3749dcfeb0b69 100644 --- a/docs/generated/packages/storybook/executors/build.json +++ b/docs/generated/packages/storybook/executors/build.json @@ -134,7 +134,7 @@ }, "additionalProperties": true, "required": ["configDir"], - "examplesFile": "---\ntitle: Storybook builder executor examples\ndescription: This page contains examples for the @nx/storybook:build executor.\n---\n\n`project.json`:\n\n```json\n//...\n\"ui\": {\n \"targets\": {\n //...\n \"build-storybook\": {\n \"executor\": \"@nx/storybook:build\",\n \"outputs\": [\"{options.outputDir}\"],\n \"options\": {\n \"outputDir\": \"dist/storybook/ui\",\n \"configDir\": \"libs/ui/.storybook\"\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n }\n}\n```\n\n```bash\nnx run ui:build-storybook\n```\n\n## Examples\n\n### For non-Angular projects\n\n{% tabs %}\n{% tab label=\"Working in docsMode\" %}\n\nYou can work in docs mode, building a documentation-only site, by setting the `docsMode` option to `true` and using the `@storybook/addon-docs` addon.\n\nRead more on the [Storybook documentation page for `addon-docs`](https://storybook.js.org/addons/@storybook/addon-docs).\n\n```json\n\"storybook\": {\n \"executor\": \"@nx/storybook:build\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\",\n \"docsMode\": true\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n}\n```\n\n{% /tab %}\n\n{% /tabs %}\n\n### For Angular projects\n\n{% tabs %}\n{% tab label=\"Default configuration\" %}\n\nThis is the default configuration for Angular projects using Storybook. You can see that it uses the native `@storybook/angular:build-storybook` executor. You can read more about the configuration options at the relevant [Storybook documentation page](https://storybook.js.org/docs/angular/get-started/install).\n\n```json\n\"build-storybook\": {\n \"executor\": \"@storybook/angular:build-storybook\",\n \"outputs\": [\"{options.outputDir}\"],\n \"options\": {\n \"outputDir\": \"dist/storybook/ngapp\",\n \"configDir\": \"apps/ngapp/.storybook\",\n \"browserTarget\": \"ngapp:build\",\n \"compodoc\": false\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n}\n```\n\n{% /tab %}\n{% tab label=\"Changing the browserTarget\" %}\n\nYou can set the [`browserTarget`](/deprecated/storybook/angular-browser-target) to use `build-storybook` as the builder. This is most useful in the cases where your project does not have a `build` target.\n\n```json\n\"build-storybook\": {\n \"executor\": \"@storybook/angular:build-storybook\",\n \"outputs\": [\"{options.outputDir}\"],\n \"options\": {\n \"outputDir\": \"dist/storybook/ngapp\",\n \"configDir\": \"apps/ngapp/.storybook\",\n \"browserTarget\": \"ngapp:build-storybook\",\n \"compodoc\": false\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n}\n```\n\n{% /tab %}\n\n{% tab label=\"Adding styles\" %}\n\nYou can add paths to stylesheets to be included in the Storybook build by using the `styles` array. You can also add `stylePreprocessorOptions`, much like you would do in the Angular builder. You can read more in our guide about [styles and preprocessor options for Storybook](/recipes/storybook/angular-configuring-styles).\n\n```json\n\"build-storybook\": {\n \"executor\": \"@storybook/angular:build-storybook\",\n \"outputs\": [\"{options.outputDir}\"],\n \"options\": {\n \"outputDir\": \"dist/storybook/ngapp\",\n \"configDir\": \"apps/ngapp/.storybook\",\n \"browserTarget\": \"ngapp:build-storybook\",\n \"compodoc\": false,\n \"styles\": [\"some-styles.css\"],\n \"stylePreprocessorOptions\": {\n \"includePaths\": [\"some-style-paths\"]\n }\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n}\n```\n\n{% /tab %}\n\n{% /tabs %}\n" + "examplesFile": "---\ntitle: Storybook builder executor examples\ndescription: This page contains examples for the @nx/storybook:build executor.\n---\n\n`project.json`:\n\n```json\n//...\n\"ui\": {\n \"targets\": {\n //...\n \"build-storybook\": {\n \"executor\": \"@nx/storybook:build\",\n \"outputs\": [\"{options.outputDir}\"],\n \"options\": {\n \"outputDir\": \"dist/storybook/ui\",\n \"configDir\": \"libs/ui/.storybook\"\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n }\n}\n```\n\n```bash\nnx run ui:build-storybook\n```\n\n## Examples\n\n### For non-Angular projects\n\n{% tabs %}\n{% tab label=\"Working in docsMode\" %}\n\nYou can work in docs mode, building a documentation-only site, by setting the `docsMode` option to `true` and using the `@storybook/addon-docs` addon.\n\nRead more on the [Storybook documentation page for `addon-docs`](https://storybook.js.org/addons/@storybook/addon-docs).\n\n```json\n\"storybook\": {\n \"executor\": \"@nx/storybook:build\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\",\n \"docsMode\": true\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n}\n```\n\n{% /tab %}\n\n{% /tabs %}\n\n### For Angular projects\n\n{% tabs %}\n{% tab label=\"Default configuration\" %}\n\nThis is the default configuration for Angular projects using Storybook. You can see that it uses the native `@storybook/angular:build-storybook` executor. You can read more about the configuration options at the relevant [Storybook documentation page](https://storybook.js.org/docs/angular/get-started/install).\n\n```json\n\"build-storybook\": {\n \"executor\": \"@storybook/angular:build-storybook\",\n \"outputs\": [\"{options.outputDir}\"],\n \"options\": {\n \"outputDir\": \"dist/storybook/ngapp\",\n \"configDir\": \"apps/ngapp/.storybook\",\n \"browserTarget\": \"ngapp:build\",\n \"compodoc\": false\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n}\n```\n\n{% /tab %}\n{% tab label=\"Changing the browserTarget\" %}\n\nYou can set the `browserTarget` to use `build-storybook` as the builder. This is most useful in the cases where your project does not have a `build` target. Read more about the `browserTarget` in the [Set up Storybook for Angular Projects](/recipes/storybook/overview-angular) recipe.\n\n```json\n\"build-storybook\": {\n \"executor\": \"@storybook/angular:build-storybook\",\n \"outputs\": [\"{options.outputDir}\"],\n \"options\": {\n \"outputDir\": \"dist/storybook/ngapp\",\n \"configDir\": \"apps/ngapp/.storybook\",\n \"browserTarget\": \"ngapp:build-storybook\",\n \"compodoc\": false\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n}\n```\n\n{% /tab %}\n\n{% tab label=\"Adding styles\" %}\n\nYou can add paths to stylesheets to be included in the Storybook build by using the `styles` array. You can also add `stylePreprocessorOptions`, much like you would do in the Angular builder. You can read more in our guide about [styles and preprocessor options for Storybook](/recipes/storybook/angular-configuring-styles).\n\n```json\n\"build-storybook\": {\n \"executor\": \"@storybook/angular:build-storybook\",\n \"outputs\": [\"{options.outputDir}\"],\n \"options\": {\n \"outputDir\": \"dist/storybook/ngapp\",\n \"configDir\": \"apps/ngapp/.storybook\",\n \"browserTarget\": \"ngapp:build-storybook\",\n \"compodoc\": false,\n \"styles\": [\"some-styles.css\"],\n \"stylePreprocessorOptions\": {\n \"includePaths\": [\"some-style-paths\"]\n }\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n}\n```\n\n{% /tab %}\n\n{% /tabs %}\n" }, "description": "Build Storybook.", "aliases": [], diff --git a/docs/generated/packages/storybook/executors/storybook.json b/docs/generated/packages/storybook/executors/storybook.json index 6cc2a1403fef6..dc136a96ea138 100644 --- a/docs/generated/packages/storybook/executors/storybook.json +++ b/docs/generated/packages/storybook/executors/storybook.json @@ -113,7 +113,7 @@ "additionalProperties": true, "definitions": {}, "required": ["configDir"], - "examplesFile": "---\ntitle: Storybook dev server executor examples\ndescription: This page contains examples for the @nx/storybook:storybook executor.\n---\n\n`project.json`:\n\n```json\n//...\n\"ui\": {\n \"targets\": {\n //...\n \"storybook\": {\n \"executor\": \"@nx/storybook:storybook\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\"\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n },\n }\n}\n```\n\n```bash\nnx run ui:storybook\n```\n\n## Examples\n\n### For non-Angular projects\n\n{% tabs %}\n{% tab label=\"Working in docsMode\" %}\n\nYou can work in docs mode, building a documentation-only site, by setting the `docsMode` option to `true` and using the `@storybook/addon-docs` addon.\n\nRead more on the [Storybook documentation page for `addon-docs`](https://storybook.js.org/addons/@storybook/addon-docs).\n\n```json\n\"storybook\": {\n \"executor\": \"@nx/storybook:storybook\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\",\n \"docsMode\": true\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n}\n```\n\n{% /tab %}\n\n{% /tabs %}\n\n### For Angular projects\n\n{% tabs %}\n{% tab label=\"Default configuration\" %}\n\nThis is the default configuration for Angular projects using Storybook. You can see that it uses the native `@storybook/angular:start-storybook` executor. You can read more about the configuration options at the relevant [Storybook documentation page](https://storybook.js.org/docs/angular/get-started/install).\n\n```json\n\"storybook\": {\n \"executor\": \"@storybook/angular:start-storybook\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\",\n \"browserTarget\": \"ui:build\",\n \"compodoc\": false\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n},\n```\n\n{% /tab %}\n{% tab label=\"Changing the browserTarget\" %}\n\nYou can set the [`browserTarget`](/deprecated/storybook/angular-browser-target) to use `build-storybook` as the builder. This is most useful in the cases where your project does not have a `build` target.\n\n```json\n\"storybook\": {\n \"executor\": \"@storybook/angular:start-storybook\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\",\n \"browserTarget\": \"ui:build-storybook\",\n \"compodoc\": false\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n},\n```\n\n{% /tab %}\n\n{% tab label=\"Adding styles\" %}\n\nYou can add paths to stylesheets to be included in the Storybook build by using the `styles` array. You can also add `stylePreprocessorOptions`, much like you would do in the Angular builder. You can read more in our guide about [styles and preprocessor options for Storybook](/recipes/storybook/angular-configuring-styles).\n\n```json\n\"storybook\": {\n \"executor\": \"@storybook/angular:start-storybook\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\",\n \"browserTarget\": \"ui:build\",\n \"compodoc\": false,\n \"styles\": [\"some-styles.css\"],\n \"stylePreprocessorOptions\": {\n \"includePaths\": [\"some-style-paths\"]\n }\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n},\n```\n\n{% /tab %}\n\n{% /tabs %}\n" + "examplesFile": "---\ntitle: Storybook dev server executor examples\ndescription: This page contains examples for the @nx/storybook:storybook executor.\n---\n\n`project.json`:\n\n```json\n//...\n\"ui\": {\n \"targets\": {\n //...\n \"storybook\": {\n \"executor\": \"@nx/storybook:storybook\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\"\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n },\n }\n}\n```\n\n```bash\nnx run ui:storybook\n```\n\n## Examples\n\n### For non-Angular projects\n\n{% tabs %}\n{% tab label=\"Working in docsMode\" %}\n\nYou can work in docs mode, building a documentation-only site, by setting the `docsMode` option to `true` and using the `@storybook/addon-docs` addon.\n\nRead more on the [Storybook documentation page for `addon-docs`](https://storybook.js.org/addons/@storybook/addon-docs).\n\n```json\n\"storybook\": {\n \"executor\": \"@nx/storybook:storybook\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\",\n \"docsMode\": true\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n}\n```\n\n{% /tab %}\n\n{% /tabs %}\n\n### For Angular projects\n\n{% tabs %}\n{% tab label=\"Default configuration\" %}\n\nThis is the default configuration for Angular projects using Storybook. You can see that it uses the native `@storybook/angular:start-storybook` executor. You can read more about the configuration options at the relevant [Storybook documentation page](https://storybook.js.org/docs/angular/get-started/install).\n\n```json\n\"storybook\": {\n \"executor\": \"@storybook/angular:start-storybook\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\",\n \"browserTarget\": \"ui:build\",\n \"compodoc\": false\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n},\n```\n\n{% /tab %}\n{% tab label=\"Changing the browserTarget\" %}\n\nYou can set the `browserTarget` to use `build-storybook` as the builder. This is most useful in the cases where your project does not have a `build` target. Read more about the `browserTarget` in the [Set up Storybook for Angular Projects](/recipes/storybook/overview-angular) recipe.\n\n```json\n\"storybook\": {\n \"executor\": \"@storybook/angular:start-storybook\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\",\n \"browserTarget\": \"ui:build-storybook\",\n \"compodoc\": false\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n},\n```\n\n{% /tab %}\n\n{% tab label=\"Adding styles\" %}\n\nYou can add paths to stylesheets to be included in the Storybook build by using the `styles` array. You can also add `stylePreprocessorOptions`, much like you would do in the Angular builder. You can read more in our guide about [styles and preprocessor options for Storybook](/recipes/storybook/angular-configuring-styles).\n\n```json\n\"storybook\": {\n \"executor\": \"@storybook/angular:start-storybook\",\n \"options\": {\n \"port\": 4400,\n \"configDir\": \"libs/ui/.storybook\",\n \"browserTarget\": \"ui:build\",\n \"compodoc\": false,\n \"styles\": [\"some-styles.css\"],\n \"stylePreprocessorOptions\": {\n \"includePaths\": [\"some-style-paths\"]\n }\n },\n \"configurations\": {\n \"ci\": {\n \"quiet\": true\n }\n }\n},\n```\n\n{% /tab %}\n\n{% /tabs %}\n" }, "description": "Serve Storybook.", "aliases": [], diff --git a/docs/map.json b/docs/map.json index 5007597a49a96..33a958d9d15a7 100644 --- a/docs/map.json +++ b/docs/map.json @@ -1429,10 +1429,10 @@ "file": "shared/deprecated/storybook/angular-storybook-targets" }, { - "id": "angular-browser-target", - "name": "Angular: The browserTarget", - "description": "This document explains the role of the browserTarget in Angular projects with a Storybook configuration, and how the Storybook executors use it.", - "file": "shared/deprecated/storybook/angular-browser-target" + "id": "angular-project-build-config", + "name": "Angular - The projectBuildConfig", + "description": "This document explains the role of the projectBuildConfig in Angular projects with a Storybook configuration, and how the Storybook executors use it.", + "file": "shared/deprecated/storybook/angular-project-build-config" }, { "id": "migrate-webpack-final-angular", diff --git a/docs/nx-cloud/reference/launch-templates.md b/docs/nx-cloud/reference/launch-templates.md index b1635b9616b1e..4d92d156fa24d 100644 --- a/docs/nx-cloud/reference/launch-templates.md +++ b/docs/nx-cloud/reference/launch-templates.md @@ -10,8 +10,8 @@ This is an example of a launch template using all built-in features: ```yaml launch-templates: my-linux-medium-js: - resourceClass: '' - image: 'ubuntu22.04-node20.9-v1' + resourceClass: 'docker_linux_amd64/medium' + image: 'ubuntu22.04-node20.9-v3' env: MY_ENV_VAR=shared init-steps: - name: Checkout # using a reusable step @@ -47,6 +47,7 @@ The following resource classes are available: - `docker_linux_amd64/large+` - `docker_linux_amd64/extra_large` - `docker_linux_amd64/extra_large+` +- `windows/medium` See their detailed description and pricing at [nx.app/pricing](https://nx.app/pricing). @@ -58,6 +59,11 @@ The following images are available: - `ubuntu22.04-node20.9-withDind-v1` - `ubuntu22.04-node20.9-v2` - `ubuntu22.04-node20.9-withDind-v2` +- `ubuntu22.04-node20.9-v3` +- `ubuntu22.04-node20.9-withDind-v3` +- `windows-2022` + +_Note: Windows-based images can only run on Windows-based resource classes._ Enterprise accounts can use custom images. diff --git a/docs/shared/deprecated/storybook/angular-browser-target.md b/docs/shared/deprecated/storybook/angular-project-build-config.md similarity index 54% rename from docs/shared/deprecated/storybook/angular-browser-target.md rename to docs/shared/deprecated/storybook/angular-project-build-config.md index be205f9c69e84..c40b09977ceef 100644 --- a/docs/shared/deprecated/storybook/angular-browser-target.md +++ b/docs/shared/deprecated/storybook/angular-project-build-config.md @@ -1,49 +1,18 @@ --- -title: Angular - The browserTarget -description: This document explains the role of the browserTarget in Angular projects with a Storybook configuration, and how the Storybook executors use it. +title: Angular - The projectBuildConfig +description: This document explains the role of projectBuildConfig in Angular projects with a Storybook configuration, and how the Storybook executors use it. --- -# The `browserTarget` for Angular projects with a Storybook configuration +# Setting up `projectBuildConfig` for Nx versions `<14.1.8` + +{% callout type="warning" title="Deprecated!" %} +**Careful**: This is for older versions of Nx - for the latest version please look at the [Set up Storybook for Angular Projects](/recipes/storybook/overview-angular) recipe. +{% /callout %} {% callout type="note" title="Note" %} This documentation page contains information about the [Storybook plugin](/nx-api/storybook), specifically regarding [Angular projects that are using Storybook](/recipes/storybook/overview-angular). {% /callout %} -## Setting up `browserTarget` - -If you're using [Storybook](/nx-api/storybook) in your Angular project, you will notice that `browserTarget` is specified for the `storybook` and `build-storybook` targets, much like it is done for `serve` or other targets. Angular needs the `browserTarget` for Storybook in order to know which configuration to use for the build. If your project is buildable (it has a `build` target, and uses the main Angular builder - `@angular-devkit/build-angular:browser`) the `browserTarget` for Storybook will use the `build` target, if it's not buildable it will use the `build-storybook` target. -You do not have to do anything manually. Nx will create the configuration for you. Even if you are migrating from an older version of Nx, Nx will make sure to change your `package.json` Storybook targets to match the new schema. - -You can read more about the `browserTarget` in the [official Angular documentation](https://angular.io/cli/serve). - -Your Storybook targets in your `project.json` will look like this: - -```jsonc {% fileName="project.json" %} - "storybook": { - "executor": "@storybook/angular:start-storybook", - "options": { - ... - "browserTarget": "my-project:build" - }, - ... - }, - "build-storybook": { - "executor": "@storybook/angular:build-storybook", - ... - "options": { - ... - "browserTarget": "my-project:build" - }, - ... - } -``` - -This setup instructs Nx to use the configuration under the `build` target of `my-project` when using the `storybook` and `build-storybook` executors. - -## Setting up `projectBuildConfig` for Nx versions `<14.1.8` - -**_Careful: This is for older versions of Nx - for the latest version please look at the section above, about `browserTarget`_** - If you are on Nx version `<14.1.8`, you're still using our custom executor, which means that you have to comply by the Nx Storybook schema. This means that the contents of `browserTarget` should be placed in the `projectBuildConfig` property. This is telling Storybook where to get the build configuration from. To know more about the purpose of `browserTarget` (and `projectBuildConfig`) read the section above. If you're using Nx version `>=13.4.6` either in a new Nx workspace, or you migrated your older Nx workspace to Nx version `>=13.4.6`, Nx will automatically add the `projectBuildConfig` property in your projects `project.json` files, for projects that are using Storybook. diff --git a/docs/shared/monorepo-ci-azure.md b/docs/shared/monorepo-ci-azure.md index 3ebb3e3daad02..3c982121225fb 100644 --- a/docs/shared/monorepo-ci-azure.md +++ b/docs/shared/monorepo-ci-azure.md @@ -24,10 +24,12 @@ jobs: pool: vmImage: 'ubuntu-latest' steps: + - checkout: self + fetchDepth: 0 + # Set Azure Devops CLI default settings - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) displayName: 'Set default Azure DevOps organization and project' - # Get last successfull commit from Azure Devops CLI - displayName: 'Get last successful commit SHA' condition: ne(variables['Build.Reason'], 'PullRequest') @@ -45,39 +47,19 @@ jobs: # Required for nx affected if we're on a branch - script: git branch --track main origin/main - - script: npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" # this line enables distribution + # This line enables distribution + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested + - script: npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" - script: npm ci + - script: npx nx-cloud record -- nx format:check --base=$(BASE_SHA) - - script: npx nx affected --base=$(BASE_SHA) -t lint test build --parallel=3 + - script: npx nx affected --base=$(BASE_SHA) -t lint test build e2e-ci ``` -{% callout type="note" title="Check your Shallow Fetch settings" %} - -Nx needs additional Git history available for [`affected`](/ci/features/affected) to function correctly. Make sure -Shallow fetching is disabled in your pipeline settings UI. For more info, check out this article from -Microsoft [here](https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/steps-checkout?view=azure-pipelines#shallow-fetch). - -{% /callout %} - -Unlike `GitHub Actions` and `CircleCI`, you don't have the metadata to help you track the last successful run on `main`. -In the example below, the base is set to `HEAD~1` (for push) or branching point (for pull requests), but a more robust -solution would be to tag a SHA in the main job once it succeeds and then use this tag as a base. You can also -try [using the devops CLI within the pipeline yaml](#get-the-commit-of-the-last-successful-build). See -the [nx-tag-successful-ci-run](https://github.com/nrwl/nx-tag-successful-ci-run) -and [nx-set-shas](https://github.com/nrwl/nx-set-shas) (version 1 implements tagging mechanism) repositories for more -information. - -We also have to set `NX_BRANCH` explicitly. NX_BRANCH does not impact the functionality of your runs, but does provide a -human-readable label to easily identify them in the Nx Cloud app. - -The `main` job implements the CI workflow. - ## Get the Commit of the Last Successful Build -In the example above we ran a script to retrieve the commit of the last successful build. The idea is to -use [Azure Devops CLI](https://learn.microsoft.com/en-us/cli/azure/pipelines?view=azure-cli-latest) -directly in -the [Pipeline Yaml](https://learn.microsoft.com/en-us/azure/devops/cli/azure-devops-cli-in-yaml?view=azure-devops) +In the example above, we ran a script to retrieve the commit of the last successful build. The idea is to +use [Azure Devops CLI](https://learn.microsoft.com/en-us/cli/azure/pipelines?view=azure-cli-latest) directly in the [Pipeline Yaml](https://learn.microsoft.com/en-us/azure/devops/cli/azure-devops-cli-in-yaml?view=azure-devops) First, we configure Devops CLI @@ -100,17 +82,15 @@ Then we can query the pipelines API (providing the auth token) AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) ``` -We can target a specific build, in this example we specified: +We can target a specific build; in this example, we specified: - The branch (--branch) -- The pipeline Id (--definition-ids) +- The pipeline ID (--definition-ids) - The result type (--result) -- The number of result (-top) +- The number of the result (-top) -By default the command returns an entire JSON object with all the information. But we can narrow it down to the desired -result with the `--query` param that uses [JMESPath](https://jmespath.org/) +The command returns an entire JSON object with all the information. But we can narrow it down to the desired result with the `--query` param that uses [JMESPath](https://jmespath.org/) format ([more details](https://learn.microsoft.com/en-us/cli/azure/query-azure-cli?tabs=concepts%2Cbash)) -Finally we extract the result in a -common [custom variable](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/set-variables-scripts?view=azure-devops&tabs=bash) -named `BASE_SHA` used later by `nx affected` commands +Finally, we extract the result in a common [custom variable](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/set-variables-scripts?view=azure-devops&tabs=bash) +named `BASE_SHA` used later by the `nx format` and `nx affected` commands. diff --git a/docs/shared/monorepo-ci-bitbucket-pipelines.md b/docs/shared/monorepo-ci-bitbucket-pipelines.md index d734089f838e0..410b3da212012 100644 --- a/docs/shared/monorepo-ci-bitbucket-pipelines.md +++ b/docs/shared/monorepo-ci-bitbucket-pipelines.md @@ -1,33 +1,46 @@ # Configuring CI Using Bitbucket Pipelines and Nx -Below is an example of an Bitbucket Pipelines, building and testing only what is affected. +Below is an example of a Bitbucket Pipelines, building and testing only what is affected. ```yaml {% fileName="bitbucket-pipelines.yml" %} image: node:20 + +clone: + depth: full + pipelines: pull-requests: '**': - step: name: 'Build and test affected apps on Pull Requests' - caches: # optional - - node script: - - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" # this line enables distribution + # This line enables distribution + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested + - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" - npm ci + - npx nx-cloud record -- nx format:check - - npx nx affected -t lint test build --base=origin/master --head=HEAD + - npx nx affected -t lint test build e2e-ci --base=origin/main branches: main: - step: name: "Build and test affected apps on 'main' branch changes" - caches: # optional - - node script: - - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" # this line enables distribution + - export NX_BRANCH=$BITBUCKET_PR_ID + # This line enables distribution + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested + - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" - npm ci + - npx nx-cloud record -- nx format:check - - npx nx affected -t lint test build --base=HEAD~1 + - npx nx affected -t lint test build e2e-ci --base=HEAD~1 ``` The `pull-requests` and `main` jobs implement the CI workflow. + +### Get the Commit of the Last Successful Build + +Unlike `GitHub Actions` and `CircleCI`, you don't have the metadata to help you track the last successful run on `main`. In the example below, the base is set to `HEAD~1` (for push) or branching point (for pull requests), but a more robust solution would be to tag an SHA in the main job once it succeeds and then use this tag as a base. See the [nx-tag-successful-ci-run](https://github.com/nrwl/nx-tag-successful-ci-run) and [nx-set-shas](https://github.com/nrwl/nx-set-shas) (version 1 implements tagging mechanism) repositories for more information. + +We also have to set `NX_BRANCH` explicitly. diff --git a/docs/shared/monorepo-ci-circle-ci.md b/docs/shared/monorepo-ci-circle-ci.md index 60948ca6b4221..dc7fac3fa45b1 100644 --- a/docs/shared/monorepo-ci-circle-ci.md +++ b/docs/shared/monorepo-ci-circle-ci.md @@ -1,23 +1,28 @@ # Configuring CI Using Circle CI and Nx -Below is an example of an Circle CI setup, building and testing only what is affected. +Below is an example of a Circle CI setup, building, and testing only what is affected. ```yaml {% fileName=".circleci/config.yml" %} version: 2.1 + orbs: - nx: nrwl/nx@1.5.1 + nx: nrwl/nx@1.6.2 + jobs: main: docker: - image: cimg/node:lts-browsers steps: - checkout - - run: npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" # this line enables distribution + # This line enables distribution + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested + - run: npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" - run: npm ci + - nx/set-shas - run: npx nx-cloud record -- nx format:check - - run: npx nx affected --base=$NX_BASE --head=$NX_HEAD -t lint test build --parallel=3 + - run: npx nx affected --base=$NX_BASE --head=$NX_HEAD -t lint test build e2e-ci workflows: build: jobs: @@ -26,13 +31,13 @@ workflows: ### Get the Commit of the Last Successful Build -`CircleCI` can track the last successful run on the `main` branch and use this as a reference point for the `BASE`. The `Nx Orb` provides a convenient implementation of this functionality which you can drop into your existing CI config. Specifically, `nx/set-shas` populates the `$NX_BASE` environment variable with the commit SHA of the last successful run. +`CircleCI` can track the last successful run on the `main` branch and use this as a reference point for the `BASE`. The [Nx Orb](https://github.com/nrwl/nx-orb) provides a convenient implementation of this functionality, which you can drop into your existing CI workflow. Specifically, for push commits, `nx/set-shas` populates the `$NX_BASE` environment variable with the commit SHA of the last successful run. To understand why knowing the last successful build is important for the affected command, check out the [in-depth explanation in Orb's docs](https://github.com/nrwl/nx-orb#background). ### Using CircleCI in a private repository -To use the [Nx Orb](https://github.com/nrwl/nx-orb) with a private repository on your main branch, you need to grant the orb access to your CircleCI API. You can do this by creating an environment variable called `CIRCLE_API_TOKEN` in the context or the project. +To use the [Nx Orb](https://github.com/nrwl/nx-orb) with a private repository on your main branch, you need to grant the orb access to your CircleCI API. Create an environment variable called `CIRCLE_API_TOKEN` in the context of the project. {% callout type="warning" title="Caution" %} It should be a user token, not the project token. diff --git a/docs/shared/monorepo-ci-github-actions.md b/docs/shared/monorepo-ci-github-actions.md index 8760b9a7c831f..cfceb5576df3b 100644 --- a/docs/shared/monorepo-ci-github-actions.md +++ b/docs/shared/monorepo-ci-github-actions.md @@ -1,6 +1,6 @@ # Configuring CI Using GitHub Actions and Nx -Below is an example of an GitHub Actions setup, building and testing only what is affected. +Below is an example of a GitHub Actions setup, building, and testing only what is affected. ```yaml {% fileName=".github/workflows/ci.yml" %} name: CI @@ -23,22 +23,25 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - # Cache node_modules - uses: actions/setup-node@v3 with: node-version: 20 cache: 'npm' - - run: npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" # this line enables distribution + # This line enables distribution + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested + - run: npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" - run: npm ci + - uses: nrwl/nx-set-shas@v3 # This line is needed for nx affected to work when CI is running on a PR - run: git branch --track main origin/main - run: npx nx-cloud record -- nx format:check - - run: npx nx affected -t lint test build --parallel=3 + - run: npx nx affected -t lint test build e2e-ci ``` ### Get the Commit of the Last Successful Build -`GitHub` can track the last successful run on the `main` branch and use this as a reference point for the `BASE`. The `nrwl/nx-set-shas` provides a convenient implementation of this functionality which you can drop into your existing CI config. +The `GitHub` can track the last successful run on the `main` branch and use this as a reference point for the `BASE`. The [nrwl/nx-set-shas](https://github.com/marketplace/actions/nx-set-shas) provides a convenient implementation of this functionality, which you can drop into your existing CI workflow. + To understand why knowing the last successful build is important for the affected command, check out the [in-depth explanation in Actions's docs](https://github.com/marketplace/actions/nx-set-shas#background). diff --git a/docs/shared/monorepo-ci-gitlab.md b/docs/shared/monorepo-ci-gitlab.md index a53b5fc65cd4e..99fec5bc06c44 100644 --- a/docs/shared/monorepo-ci-gitlab.md +++ b/docs/shared/monorepo-ci-gitlab.md @@ -1,16 +1,14 @@ # Configuring CI Using GitLab and Nx -Below is an example of an GitLab setup, building and testing only what is affected. +Below is an example of a GitLab setup, building and testing only what is affected. ```yaml {% fileName=".gitlab-ci.yml" %} -image: node:18 +image: node:20 -stages: - - lint - - test - - build +variables: + GIT_DEPTH: 0 -.distributed: +main: interruptible: true only: - main @@ -21,36 +19,15 @@ stages: - package-lock.json paths: - .npm/ - before_script: - - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" # this line enables distribution + script: + # Connect your workspace on <%= nxCloudHost %> and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested + - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" + - npm ci --cache .npm --prefer-offline - NX_HEAD=$CI_COMMIT_SHA - NX_BASE=${CI_MERGE_REQUEST_DIFF_BASE_SHA:-$CI_COMMIT_BEFORE_SHA} -variables: - GIT_DEPTH: 0 - -format-check: - stage: test - extends: .distributed - script: - npx nx-cloud record -- nx format:check --base=$NX_BASE --head=$NX_HEAD - -lint: - stage: test - extends: .distributed - script: - - npx nx affected --base=$NX_BASE --head=$NX_HEAD -t lint --parallel=3 - -test: - stage: test - extends: .distributed - script: - - npx nx affected --base=$NX_BASE --head=$NX_HEAD -t test --parallel=3 - -build: - stage: build - extends: .distributed - script: - - npx nx affected --base=$NX_BASE --head=$NX_HEAD -t build --parallel=3 + - npx nx affected --base=$NX_BASE --head=$NX_HEAD -t lint test build e2e-ci ``` diff --git a/docs/shared/monorepo-ci-jenkins.md b/docs/shared/monorepo-ci-jenkins.md index b5320cc6642b6..fefa0ee0d3ee6 100644 --- a/docs/shared/monorepo-ci-jenkins.md +++ b/docs/shared/monorepo-ci-jenkins.md @@ -1,6 +1,6 @@ # Configuring CI Using Jenkins and Nx -Below is an example of an Jenkins setup, building and testing only what is affected. +Below is an example of a Jenkins setup, building and testing only what is affected. ```groovy pipeline { @@ -17,10 +17,12 @@ pipeline { } agent any steps { - sh "npx nx-cloud start-ci-run --distribute-on='5 linux-medium-js' --stop-agents-after='build'" // this line enables distribution + // This line enables distribution + // The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested + sh "npx nx-cloud start-ci-run --distribute-on='5 linux-medium-js' --stop-agents-after='e2e-ci'" sh "npm ci" sh "npx nx-cloud record -- nx format:check" - sh "npx nx affected --base=HEAD~1 -t lint test build --parallel=3" + sh "npx nx affected --base=HEAD~1 -t lint test build e2e-ci" } } stage('PR') { @@ -29,10 +31,12 @@ pipeline { } agent any steps { - sh "npx nx-cloud start-ci-run --distribute-on='5 linux-medium-js' --stop-agents-after='build'" // this line enables distribution + // This line enables distribution + // The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested + sh "npx nx-cloud start-ci-run --distribute-on='5 linux-medium-js' --stop-agents-after='e2e-ci'" sh "npm ci" sh "npx nx-cloud record -- nx format:check" - sh "npx nx affected --base origin/${env.CHANGE_TARGET} -t lint test build --parallel=3" + sh "npx nx affected --base origin/${env.CHANGE_TARGET} -t lint test build e2e-ci" } } } diff --git a/docs/shared/recipes/ci-deployment.md b/docs/shared/recipes/ci-deployment.md index 5007b546613d0..19508a9f64386 100644 --- a/docs/shared/recipes/ci-deployment.md +++ b/docs/shared/recipes/ci-deployment.md @@ -6,6 +6,69 @@ Nx supports the generation of the project's `package.json` by identifying all th Additionally, we should generate pruned lock file according to the generated `package.json`. This makes the installation in the container significantly faster as we only need to install a subset of the packages. +Nx offers two varieties of Webpack plugin which can be used to generate `package.json`. + +{% tabs %} + +{% tab label="Nx 18+" %} + +## Basic Plugin Configuration + +`@nx/webpack/plugin` plugin is compatible with a conventional webpack configuration setup which offers a smooth integration with the Webpack CLI. +It is configured in the `plugins` array in `nx.json`. + +```json {% fileName="nx.json" %} +{ + "plugins": [ + { + "plugin": "@nx/webpack/plugin", + "options": { + "buildTargetName": "build", + "serveTargetName": "serve", + "serveStaticTargetName": "serve-static", + "previewStaticTargetName": "preview" + } + } + ] +} +``` + +Where `build`, `serve`, `serve-static` and `preview` in conjunction with your `webpack.config.js` are the names of the targets that are used to _build_, _serve_, and _preview_ the application respectively. + +### NxWebpackPlugin + +The [`NxWebpackPlugin`](/recipes/webpack/webpack-plugins#nxwebpackplugin) plugin takes a `main` entry file and produces a bundle in the output directory as defined in `output.path`. You can also pass the `index` option if it is a web app, which will handle outputting scripts and stylesheets in the output file. + +To generate a `package.json` we would declare it in the plugin options. + +```js {% fileName="apps/acme/app/webpack.config.js" %} +const { NxWebpackPlugin } = require('@nx/webpack'); +const { join } = require('path'); + +module.exports = { + output: { + path: join(__dirname, '../../dist/apps/acme'), + }, + devServer: { + port: 4200, + }, + plugins: [ + new NxWebpackPlugin({ + tsConfig: './tsconfig.app.json', + compiler: 'swc', + main: './src/main.tsx', + index: '.src/index.html', + styles: ['./src/styles.css'], + generatePackageJson: true, + }), + ], +}; +``` + +{% /tab %} + +{% tab label="Nx < 18" %} + ## Supported executors The `@nx/webpack:webpack` executor supports the `generatePackageJson` flag which generates both `package.json` as well as the lock file. @@ -16,12 +79,87 @@ Some executors automatically generate output `package.json` and the lock file ge - `@nx/js:tsc` - `@nx/next:build` -## Using a custom executor +{% /tab %} +{% /tabs %} + +## Programmtic usage + +If you are using a custom setup that does not support the creation of a `package.json` or a lock file, you can still use Nx to generate them via The `createPackageJson` and `createLockFile` functions which are exported from `@nx/js`: + +{% tabs %} + +{% tab label="Custom script" %} -If you are using a custom executor or an executor that does not support `generatePackgeJson` or `generateLockfile` flags, you can still use Nx to generate `package.json` and the lock file. The `createPackageJson` and `createLockFile` functions are exported from `@nx/devkit`: +If you need to use a custom script, to build your application it should look similar to the following: + +```javascript {% fileName="scripts/create-package-json.js" %} +const { + createProjectGraphAsync, + readCachedProjectGraph, + detectPackageManager, +} = require('@nx/devkit'); +const { + createLockFile, + createPackageJson, + getLockFileName, +} = require('@nx/js'); +const { writeFileSync } = require('fs'); + +async function main() { + const outputDir = 'dist'; // You can replace this with the output directory you want to use + // Detect the package manager you are using (npm, yarn, pnpm) + const pm = detectPackageManager(); + let projectGraph = readCachedProjectGraph(); + if (!projectGraph) { + projectGraph = await createProjectGraphAsync(); + } + // You can replace with the name of the project if you want. + const projectName = process.env.NX_TASK_TARGET_PROJECT; + const packageJson = createPackageJson(projectName, projectGraph, { + isProduction: true, // Used to strip any non-prod dependencies + root: projectGraph.nodes[projectName].data.root, + }); + + const lockFile = createLockFile( + packageJson, + projectGraph, + detectPackageManager() + ); + + const lockFileName = getLockFileName(pm); + + writeFileSync(`${outputDir}/package.json`, packageJson); + writeFileSync(`${outputDir}/${lockFileName}`, lockFile, { + encoding: 'utf8', + }); + + //... Any additional steps you want to run +} + +main(); +``` + +Then to run the script, update your `package.json` to include the following: + +```json {% fileName="package.json" %} +{ + "scripts": { + "copy-package-json": "node scripts/create-package-json.js", + "custom-build": "nx build && npm run copy-package-json" + } +} +``` + +Now, you can run `npm run custom-build` to build your application and generate the `package.json` and lock file. + +You can replace _npm_ with _yarn_ or _pnpm_ if you are using those package managers. + +{% /tab %} + +{% tab label="Custom executor" %} ```typescript -import { createPackageJson, createLockFile } from '@nx/devkit'; +import { createPackageJson, createLockFile } from '@nx/js'; import { writeFileSync } from 'fs'; export default async function buildExecutor( @@ -42,11 +180,18 @@ export default async function buildExecutor( // do any additional manipulations to "package.json" here const lockFile = createLockFile(packageJson); - writeJsonFile(`${options.outputPath}/package.json`, builtPackageJson); - writeFileSync(`${options.outputPath}/${packageLockFileName}}`, lockFile, { + writeJsonFile(`${options.outputPath}/package.json`, packageJson); + writeFileSync(`${options.outputPath}/${packageLockFileName}`, lockFile, { encoding: 'utf-8', }); // any subsequent executor code } ``` + +{% /tab %} +{% /tabs %} + +{% callout type="note" title="What about Vite?" %} +Vite is a build tool that is great for development, and we want to make sure that it is also great for production. We are working on an `NxVitePlugin` plugin for Vite that will have parity with the `NxWebpackPlugin`. Stay tuned for updates. +{% /callout %} diff --git a/docs/shared/recipes/storybook/plugin-angular.md b/docs/shared/recipes/storybook/plugin-angular.md index d20cbe390dd58..a8d30fea5c9d3 100644 --- a/docs/shared/recipes/storybook/plugin-angular.md +++ b/docs/shared/recipes/storybook/plugin-angular.md @@ -143,12 +143,43 @@ export const Heading: Story = { Notice the interaction test on the second story, inside the `play` function. This just tests if the default text that appears on generated components exists in the rendered component. You can edit this test to suit your needs. You can read more about interaction tests [here](https://storybook.js.org/docs/angular/writing-tests/interaction-testing). +## Understanding the role of `browserTarget` + +You will notice that `browserTarget` is specified for the `storybook` and `build-storybook` targets, much like it is done for `serve` or other targets. Angular needs the `browserTarget` for Storybook in order to know which configuration to use for the build. If your project is buildable (it has a `build` target, and uses the main Angular builder - `@angular-devkit/build-angular:browser`, `@angular-devkit/build-angular:application` or `@angular-devkit/build-angular:browser-esbuild`) the `browserTarget` for Storybook will use the `build` target, if it's not buildable (or is using another Angular builder) it will use the `build-storybook` target. +You do not have to do anything manually. Nx will create the configuration for you. Even if you are migrating from an older version of Nx, Nx will make sure to change your `package.json` Storybook targets to match the new schema. + +You can read more about the `browserTarget` in the [official Angular documentation](https://angular.io/cli/serve). + +Your Storybook targets in your `project.json` (or if you run `nx show project my-project --web`) will look like this: + +```jsonc {% fileName="project.json" %} + "storybook": { + "executor": "@storybook/angular:start-storybook", + "options": { + ... + "browserTarget": "my-project:build" + }, + ... + }, + "build-storybook": { + "executor": "@storybook/angular:build-storybook", + ... + "options": { + ... + "browserTarget": "my-project:build" + }, + ... + } +``` + +This setup instructs Nx to use the configuration under the `build` target of `my-project` when using the `storybook` and `build-storybook` executors. + ## More Documentation - [Set up Compodoc for Storybook on Nx](/recipes/storybook/angular-storybook-compodoc) - [Information about the `storybook` tasks](/deprecated/storybook/angular-storybook-targets) - [Configuring styles and preprocessor options](/recipes/storybook/angular-configuring-styles) -- [The `browserTarget`](/deprecated/storybook/angular-browser-target) +- [The `projectBuildConfig`](/deprecated/storybook/angular-project-build-config) You can find all Storybook-related Nx topics [here](/nx-api#storybook). diff --git a/docs/shared/reference/sitemap.md b/docs/shared/reference/sitemap.md index f4b7f900f2f35..a1ae8af926407 100644 --- a/docs/shared/reference/sitemap.md +++ b/docs/shared/reference/sitemap.md @@ -230,7 +230,7 @@ - [Angular Schematics and Builders](/deprecated/angular-schematics-builders) - [Storybook deprecated docs](/deprecated/storybook) - [Angular: Information about the Storybook targets](/deprecated/storybook/angular-storybook-targets) - - [Angular: The browserTarget](/deprecated/storybook/angular-browser-target) + - [Angular - The projectBuildConfig](/deprecated/storybook/angular-project-build-config) - [Angular: Storybook Migration to webpackFinal](/deprecated/storybook/migrate-webpack-final-angular) - [Angular: Upgrading to Storybook 6](/deprecated/storybook/upgrade-storybook-v6-angular) - [React: Storybook Migration to webpackFinal and the Nx Addon](/deprecated/storybook/migrate-webpack-final-react) diff --git a/e2e/angular-core/src/projects.test.ts b/e2e/angular-core/src/projects.test.ts index 5f3173c6bdec6..dd48850e27c81 100644 --- a/e2e/angular-core/src/projects.test.ts +++ b/e2e/angular-core/src/projects.test.ts @@ -218,8 +218,7 @@ describe('Angular Projects', () => { removeFile(`${app1}/src/app/inline-template.component.ts`); }, 1000000); - // TODO(crystal, @jaysoo): enable this test when buildable libs work - xit('should build the dependent buildable lib and its child lib, as well as the app', async () => { + it('should build the dependent buildable lib and its child lib, as well as the app', async () => { // ARRANGE const buildableLib = uniq('buildlib1'); const buildableChildLib = uniq('buildlib2'); @@ -324,6 +323,28 @@ describe('Angular Projects', () => { return config; }); + // update the nx.json + updateJson('nx.json', (config) => { + config.targetDefaults ??= {}; + config.targetDefaults['@nx/angular:webpack-browser'] ??= { + cache: true, + dependsOn: [`^build`], + inputs: + config.namedInputs && 'production' in config.namedInputs + ? ['production', '^production'] + : ['default', '^default'], + }; + config.targetDefaults['@nx/angular:browser-esbuild'] ??= { + cache: true, + dependsOn: [`^build`], + inputs: + config.namedInputs && 'production' in config.namedInputs + ? ['production', '^production'] + : ['default', '^default'], + }; + return config; + }); + // ACT const libOutput = runCLI(`build ${app1} --configuration=development`); const esbuildLibOutput = runCLI( diff --git a/e2e/eslint/src/linter.test.ts b/e2e/eslint/src/linter.test.ts index f94fe99ae9c9f..9d7d9405ee752 100644 --- a/e2e/eslint/src/linter.test.ts +++ b/e2e/eslint/src/linter.test.ts @@ -462,8 +462,7 @@ describe('Linter', () => { }); }); - // TODO(crystal, @meeroslav): Investigate why this is failing - xit('should report dependency check issues', () => { + it('should report dependency check issues', () => { const rootPackageJson = readJson('package.json'); const nxVersion = rootPackageJson.devDependencies.nx; const tslibVersion = rootPackageJson.dependencies['tslib']; @@ -476,7 +475,7 @@ describe('Linter', () => { `libs/${mylib}/src/lib/${mylib}.ts`, (content) => `import { names } from '@nx/devkit';\n\n` + - content.replace(/=> .*;/, `=> names(${mylib}).className;`) + content.replace(/=> .*;/, `=> names('${mylib}').className;`) ); // output should now report missing dependency diff --git a/e2e/nx-run/src/cache.test.ts b/e2e/nx-run/src/cache.test.ts index 950415e7b3b7f..f47cd399762a0 100644 --- a/e2e/nx-run/src/cache.test.ts +++ b/e2e/nx-run/src/cache.test.ts @@ -18,7 +18,8 @@ describe('cache', () => { afterEach(() => cleanupProject()); - it('should cache command execution', async () => { + // TODO(@Cammisuli): This test is flaky and needs to be investigated + xit('should cache command execution', async () => { const myapp1 = uniq('myapp1'); const myapp2 = uniq('myapp2'); runCLI(`generate @nx/web:app ${myapp1}`); diff --git a/nx-dev/nx-dev/public/images/launch-nx/new-plugin-nx-nuxt.jpg b/nx-dev/nx-dev/public/images/launch-nx/new-plugin-nx-nuxt.jpg new file mode 100644 index 0000000000000..daa42f9545ed1 Binary files /dev/null and b/nx-dev/nx-dev/public/images/launch-nx/new-plugin-nx-nuxt.jpg differ diff --git a/nx-dev/nx-dev/public/images/launch-nx/nx-agents.jpg b/nx-dev/nx-dev/public/images/launch-nx/nx-agents.jpg new file mode 100644 index 0000000000000..3addbe3017450 Binary files /dev/null and b/nx-dev/nx-dev/public/images/launch-nx/nx-agents.jpg differ diff --git a/nx-dev/nx-dev/redirect-rules.js b/nx-dev/nx-dev/redirect-rules.js index 97d75821a9e38..2a762c903863b 100644 --- a/nx-dev/nx-dev/redirect-rules.js +++ b/nx-dev/nx-dev/redirect-rules.js @@ -687,7 +687,9 @@ const packagesDocuments = { '/packages/storybook/documents/angular-configuring-styles': '/recipes/storybook/angular-configuring-styles', '/storybook/angular-browser-target': - '/deprecated/storybook/angular-browser-target', + '/deprecated/storybook/angular-project-build-config', + '/deprecated/storybook/angular-browser-target': + '/deprecated/storybook/angular-project-build-config', '/storybook/migrate-webpack-final-angular': '/deprecated/storybook/migrate-webpack-final-angular', '/storybook/upgrade-storybook-v6-angular': @@ -697,7 +699,7 @@ const packagesDocuments = { '/storybook/upgrade-storybook-v6-react': '/deprecated/storybook/upgrade-storybook-v6-react', '/packages/storybook/documents/angular-browser-target': - '/deprecated/storybook/angular-browser-target', + '/deprecated/storybook/angular-project-build-config', '/packages/storybook/documents/migrate-webpack-final-angular': '/deprecated/storybook/migrate-webpack-final-angular', '/packages/storybook/documents/upgrade-storybook-v6-angular': @@ -953,7 +955,7 @@ const latestRecipesRefactoring = { }; const coreFeatureAndConceptsRefactoring = { - '/features/share-your-cache': '/features/remote-cache', + '/features/share-your-cache': '/ci/features/remote-cache', '/concepts/more-concepts/customizing-inputs': '/recipes/running-tasks/configure-inputs', '/recipes/tips-n-tricks/root-level-scripts': diff --git a/nx-dev/ui-conference/src/lib/launch-week/announcements.tsx b/nx-dev/ui-conference/src/lib/launch-week/announcements.tsx index c0c3a3df60c38..83d6f8b646806 100644 --- a/nx-dev/ui-conference/src/lib/launch-week/announcements.tsx +++ b/nx-dev/ui-conference/src/lib/launch-week/announcements.tsx @@ -17,7 +17,7 @@ export function LaunchWeekAnnouncements(): JSX.Element { {/* MONDAY */}
-
+
@@ -41,7 +41,7 @@ export function LaunchWeekAnnouncements(): JSX.Element { This is what Nx Project Crystal is all about.

-
+
Watch the video + + Vote on ProductHunt +
+ + {/* TUESDAY */} +
+
+
+
+
+ + Tuesday + + + NEW PLUGIN: @nx/nuxt + +
+
+

+ Checkout the newest Nx Plugin: @nx/nuxt. We're excited to + collaborate closer with the Vue community, and have been + looking forward to launching this plugin since we first + announced Vue support last year! +
+
+ This is the first plugin to be created with Project Crystal + from day 1! Using this plugin - you can expect enhanced + support for the Nuxt framework in Nx. It's a game changer + for Nuxt developers who want to take advantage of Nx's + powerful monorepo capabilities. +

+
+
+ + Read the blog post + + + Watch the video + + + Catch the Livestream + +
+
+ +
+
+
+ + {/* WEDNESDAY */} +
+
+
+
+
+ + Wednesday + + + Nx Agents + +
+
+

+ Continuous Integration is broken, so we built Nx Agents to + fix it. Nx Agents is a new way to run your CI/CD pipelines. + It's a distributed and scalable solution built to handle + everything from the largest enterprise monorepo, down to + your weekend hackathon project. It's a game changer for all + developers that want to focus on shipping features, not + maintaining CI/CD infrastructure. +

+
+
+ + Read the blog post + + + Watch the video + + + Vote on ProductHunt + +
+
+ +
+
+
); diff --git a/nx-dev/ui-home/src/lib/improve-worst-ci-case.tsx b/nx-dev/ui-home/src/lib/improve-worst-ci-case.tsx index d3316e2ab811b..ec8f6d599a387 100644 --- a/nx-dev/ui-home/src/lib/improve-worst-ci-case.tsx +++ b/nx-dev/ui-home/src/lib/improve-worst-ci-case.tsx @@ -18,7 +18,7 @@ export function ImproveWorstCiCase(): JSX.Element {
Nx Agents -
- - Early access -
diff --git a/package.json b/package.json index 196d25becf338..6a319f3726e78 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@jest/reporters": "^29.4.1", "@jest/test-result": "^29.4.1", "@jest/types": "^29.4.1", - "@monodon/rust": "1.3.2", + "@monodon/rust": "1.3.3", "@napi-rs/cli": "2.14.0", "@nestjs/cli": "^9.0.0", "@nestjs/common": "^9.0.0", @@ -65,21 +65,21 @@ "@ngrx/store": "17.0.1", "@nuxt/kit": "^3.10.0", "@nuxt/schema": "^3.10.0", - "@nx/angular": "17.3.0-rc.1", - "@nx/cypress": "17.3.0-rc.1", - "@nx/devkit": "17.3.0-rc.1", - "@nx/esbuild": "17.3.0-rc.1", - "@nx/eslint": "17.3.0-rc.1", - "@nx/eslint-plugin": "17.3.0-rc.1", - "@nx/jest": "17.3.0-rc.1", - "@nx/js": "17.3.0-rc.1", - "@nx/next": "17.3.0-rc.1", - "@nx/playwright": "17.3.0-rc.1", - "@nx/react": "17.3.0-rc.1", - "@nx/storybook": "17.3.0-rc.1", - "@nx/vite": "17.3.0-rc.1", - "@nx/web": "17.3.0-rc.1", - "@nx/webpack": "17.3.0-rc.1", + "@nx/angular": "18.0.2", + "@nx/cypress": "18.0.2", + "@nx/devkit": "18.0.2", + "@nx/esbuild": "18.0.2", + "@nx/eslint": "18.0.2", + "@nx/eslint-plugin": "18.0.2", + "@nx/jest": "18.0.2", + "@nx/js": "18.0.2", + "@nx/next": "18.0.2", + "@nx/playwright": "18.0.2", + "@nx/react": "18.0.2", + "@nx/storybook": "18.0.2", + "@nx/vite": "18.0.2", + "@nx/web": "18.0.2", + "@nx/webpack": "18.0.2", "@phenomnomnominal/tsquery": "~5.0.1", "@playwright/test": "^1.36.1", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", @@ -232,7 +232,7 @@ "node-fetch": "^2.6.7", "npm-package-arg": "11.0.1", "nuxt": "^3.10.0", - "nx": "17.3.0-rc.1", + "nx": "18.0.2", "octokit": "^2.0.14", "open": "^8.4.0", "openai": "~4.3.1", @@ -259,7 +259,7 @@ "rollup-plugin-copy": "^3.4.0", "rollup-plugin-peer-deps-external": "^2.2.4", "rollup-plugin-postcss": "^4.0.1", - "rollup-plugin-typescript2": "0.34.1", + "rollup-plugin-typescript2": "0.36.0", "rxjs": "^7.8.0", "sass": "1.55.0", "sass-loader": "^12.2.0", diff --git a/packages/cypress/plugins/cypress-preset.ts b/packages/cypress/plugins/cypress-preset.ts index e4f387e245070..3d0066113044e 100644 --- a/packages/cypress/plugins/cypress-preset.ts +++ b/packages/cypress/plugins/cypress-preset.ts @@ -3,7 +3,7 @@ import { dirname, join, relative } from 'path'; import { lstatSync } from 'fs'; import vitePreprocessor from '../src/plugins/preprocessor-vite'; -import { NX_PLUGIN_OPTIONS } from '../src/utils/symbols'; +import { NX_PLUGIN_OPTIONS } from '../src/utils/constants'; import { exec } from 'child_process'; import { request as httpRequest } from 'http'; diff --git a/packages/cypress/src/plugins/plugin.ts b/packages/cypress/src/plugins/plugin.ts index 822f8a77878c3..8a815da95936a 100644 --- a/packages/cypress/src/plugins/plugin.ts +++ b/packages/cypress/src/plugins/plugin.ts @@ -18,7 +18,7 @@ import { existsSync, readdirSync } from 'fs'; import { globWithWorkspaceContext } from 'nx/src/utils/workspace-context'; import { calculateHashForCreateNodes } from '@nx/devkit/src/utils/calculate-hash-for-create-nodes'; import { projectGraphCacheDirectory } from 'nx/src/utils/cache-directory'; -import { NX_PLUGIN_OPTIONS } from '../utils/symbols'; +import { NX_PLUGIN_OPTIONS } from '../utils/constants'; import { loadConfigFile } from '@nx/devkit/src/utils/config-utils'; export interface CypressPluginOptions { diff --git a/packages/cypress/src/utils/symbols.ts b/packages/cypress/src/utils/constants.ts similarity index 55% rename from packages/cypress/src/utils/symbols.ts rename to packages/cypress/src/utils/constants.ts index f72080df39a53..d42062e06cc35 100644 --- a/packages/cypress/src/utils/symbols.ts +++ b/packages/cypress/src/utils/constants.ts @@ -1,4 +1,4 @@ /** * Key used to store options used by the nx plugin for @nx/cypress. */ -export const NX_PLUGIN_OPTIONS = Symbol('Nx Plugin Options'); +export const NX_PLUGIN_OPTIONS = '__NxPluginOptions__'; diff --git a/packages/eslint-plugin/src/utils/runtime-lint-utils.ts b/packages/eslint-plugin/src/utils/runtime-lint-utils.ts index 49fe6536177e4..e991cd477a750 100644 --- a/packages/eslint-plugin/src/utils/runtime-lint-utils.ts +++ b/packages/eslint-plugin/src/utils/runtime-lint-utils.ts @@ -416,7 +416,7 @@ export function hasBuildExecutor( ); } -const ESLINT_REGEX = /node_modules.*[\/\\]eslint$/; +const ESLINT_REGEX = /node_modules.*[\/\\]eslint(?:\.js)?$/; const JEST_REGEX = /node_modules\/.bin\/jest$/; // when we run unit tests in jest const NRWL_CLI_REGEX = /nx[\/\\]bin[\/\\]run-executor\.js$/; diff --git a/packages/next/package.json b/packages/next/package.json index c5ceafcfe01ee..1963b317f3a4f 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -49,6 +49,7 @@ "@nx/eslint": "file:../eslint", "@nx/react": "file:../react", "@nx/web": "file:../web", + "@nx/webpack": "file:../webpack", "@nx/workspace": "file:../workspace" }, "publishConfig": { diff --git a/packages/next/src/executors/build/lib/create-next-config-file.ts b/packages/next/src/executors/build/lib/create-next-config-file.ts index 588d4103fd1b2..89b66c7d5d2bc 100644 --- a/packages/next/src/executors/build/lib/create-next-config-file.ts +++ b/packages/next/src/executors/build/lib/create-next-config-file.ts @@ -77,10 +77,13 @@ export function createNextConfigFile( ); for (const moduleFile of moduleFilesToCopy) { ensureDirSync(dirname(join(context.root, options.outputPath, moduleFile))); - copyFileSync( - join(context.root, projectRoot, moduleFile), - join(context.root, options.outputPath, moduleFile) - ); + // We already generate a build version of package.json in the dist folder. + if (moduleFile !== 'package.json') { + copyFileSync( + join(context.root, projectRoot, moduleFile), + join(context.root, options.outputPath, moduleFile) + ); + } } } diff --git a/packages/nx/Cargo.toml b/packages/nx/Cargo.toml index 0890cf87221ff..a7b789b52e193 100644 --- a/packages/nx/Cargo.toml +++ b/packages/nx/Cargo.toml @@ -4,6 +4,7 @@ version = '0.1.0' edition = '2021' [dependencies] +portable-pty = { git = "https://github.com/cammisuli/wezterm" } anyhow = "1.0.71" colored = "2" crossbeam-channel = '0.5' @@ -17,7 +18,6 @@ ignore-files = "2.0.0" itertools = "0.10.5" once_cell = "1.18.0" parking_lot = { version = "0.12.1", features = ["send_guard"] } -portable-pty = "0.8.1" napi = { version = '2.12.6', default-features = false, features = [ 'anyhow', 'napi4', @@ -47,6 +47,9 @@ crossterm = "0.27.0" [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["fileapi"] } +[target.'cfg(not(windows))'.dependencies] +mio = "0.8" + [lib] crate-type = ['cdylib'] diff --git a/packages/nx/src/native/command.rs b/packages/nx/src/native/command.rs index 0022c559c3bca..fb7c4b72283d2 100644 --- a/packages/nx/src/native/command.rs +++ b/packages/nx/src/native/command.rs @@ -14,11 +14,12 @@ use napi::{Env, JsFunction}; use portable_pty::{ChildKiller, CommandBuilder, NativePtySystem, PtySize, PtySystem}; use tracing::trace; -#[cfg(target_os = "windows")] -static CURSOR_POSITION: std::sync::OnceLock = std::sync::OnceLock::new(); +#[cfg_attr(windows, path = "command/windows.rs")] +#[cfg_attr(not(windows), path = "command/unix.rs")] +mod os; fn command_builder() -> CommandBuilder { - if cfg!(target_os = "windows") { + if cfg!(windows) { let comspec = std::env::var("COMSPEC"); let shell = comspec .as_ref() @@ -98,6 +99,12 @@ impl ChildProcess { std::thread::spawn(move || { while let Ok(content) = rx.recv() { + // windows will add `ESC[6n` to the beginning of the output, + // we dont want to store this ANSI code in cache, because replays will cause issues + // remove it before sending it to js + #[cfg(windows)] + let content = content.replace("\x1B[6n", ""); + callback_tsfn.call(content, NonBlocking); } }); @@ -159,34 +166,18 @@ pub fn run_command( let mut reader = BufReader::new(reader); let mut buffer = [0; 8 * 1024]; - let mut strip_clear_code = cfg!(target_os = "windows"); - while let Ok(n) = reader.read(&mut buffer) { if n == 0 { break; } - let mut content = String::from_utf8_lossy(&buffer[..n]).to_string(); - if strip_clear_code { - strip_clear_code = false; - // remove clear screen - content = content.replacen("\x1B[2J", "", 1); - // remove cursor position 1,1 - content = content.replacen("\x1B[H", "", 1); - } - - #[cfg(target_os = "windows")] - { - let regex = CURSOR_POSITION.get_or_init(|| { - regex::Regex::new(r"\x1B\[\d+;\d+H") - .expect("failed to compile CURSOR ansi regex") - }); - content = regex.replace_all(&content, "").to_string(); - } + let content = &buffer[..n]; + message_tx + .send(String::from_utf8_lossy(content).to_string()) + .ok(); - message_tx.send(content.to_string()).ok(); if !quiet { - stdout.write_all(content.as_bytes()).ok(); + stdout.write_all(content).ok(); stdout.flush().ok(); } } @@ -204,12 +195,13 @@ pub fn run_command( // Stdin -> pty stdin if std::io::stdout().is_tty() { + enable_raw_mode().expect("Failed to enter raw terminal mode"); std::thread::spawn(move || { - enable_raw_mode().expect("Failed to enter raw terminal mode"); let mut stdin = std::io::stdin(); - #[allow(clippy::redundant_pattern_matching)] - // ignore errors that come from copying the stream - if let Ok(_) = std::io::copy(&mut stdin, &mut writer) {} + + if let Err(e) = os::write_to_pty(&mut stdin, &mut writer) { + trace!("Error writing to pty: {:?}", e); + } }); } @@ -237,7 +229,7 @@ pub fn nx_fork( ) -> napi::Result { let command = format!( "node {} {} {}", - handle_path_space(fork_script), + os::handle_path_space(fork_script), psuedo_ipc_path, id ); @@ -245,37 +237,3 @@ pub fn nx_fork( trace!("nx_fork command: {}", &command); run_command(command, command_dir, js_env, Some(quiet)) } - -#[cfg(target_os = "windows")] -pub fn handle_path_space(path: String) -> String { - use std::os::windows::ffi::OsStrExt; - use std::{ffi::OsString, os::windows::ffi::OsStringExt}; - - use winapi::um::fileapi::GetShortPathNameW; - let wide: Vec = std::path::PathBuf::from(&path) - .as_os_str() - .encode_wide() - .chain(Some(0)) - .collect(); - let mut buffer: Vec = vec![0; wide.len() * 2]; - let result = - unsafe { GetShortPathNameW(wide.as_ptr(), buffer.as_mut_ptr(), buffer.len() as u32) }; - if result == 0 { - path - } else { - let len = buffer.iter().position(|&x| x == 0).unwrap(); - let short_path: String = OsString::from_wide(&buffer[..len]) - .to_string_lossy() - .into_owned(); - short_path - } -} - -#[cfg(not(target_os = "windows"))] -fn handle_path_space(path: String) -> String { - if path.contains(' ') { - format!("'{}'", path) - } else { - path - } -} diff --git a/packages/nx/src/native/command/unix.rs b/packages/nx/src/native/command/unix.rs new file mode 100644 index 0000000000000..3ee3eee56b0be --- /dev/null +++ b/packages/nx/src/native/command/unix.rs @@ -0,0 +1,67 @@ +use std::{ + io::{Read, Stdin, Write}, + os::fd::AsRawFd, +}; + +use mio::{unix::SourceFd, Events}; +use tracing::trace; + +pub fn handle_path_space(path: String) -> String { + if path.contains(' ') { + format!("'{}'", path) + } else { + path + } +} + +pub fn write_to_pty(stdin: &mut Stdin, writer: &mut impl Write) -> anyhow::Result<()> { + let mut buffer = [0; 1024]; + + let mut poll = mio::Poll::new()?; + let mut events = Events::with_capacity(3); + + // Register stdin to the poll instance + let token = mio::Token(0); + poll.registry() + .register( + &mut SourceFd(&stdin.as_raw_fd()), + token, + mio::Interest::READABLE, + ) + .map_err(|e| anyhow::anyhow!("Failed to register stdin to poll: {}", e))?; + + loop { + // Poll for events + if let Err(e) = poll.poll(&mut events, None) { + if e.kind() == std::io::ErrorKind::Interrupted { + continue; + } + trace!("poll error: {:?}", e); + anyhow::bail!("Failed to poll for events: {}", e); + } + + for event in events.iter().map(|x| x.token()) { + match event { + mio::Token(0) => { + // Read data from stdin + loop { + match stdin.read(&mut buffer) { + Ok(n) => { + writer.write_all(&buffer[..n])?; + writer.flush()?; + } + Err(e) => { + if e.kind() == std::io::ErrorKind::WouldBlock { + break; + } else if e.kind() == std::io::ErrorKind::Interrupted { + continue; + } + } + } + } + } + _ => unreachable!(), + } + } + } +} diff --git a/packages/nx/src/native/command/windows.rs b/packages/nx/src/native/command/windows.rs new file mode 100644 index 0000000000000..ae87f38809654 --- /dev/null +++ b/packages/nx/src/native/command/windows.rs @@ -0,0 +1,31 @@ +use std::io::{Stdin, Write}; +use std::os::windows::ffi::OsStrExt; +use std::{ffi::OsString, os::windows::ffi::OsStringExt}; + +use winapi::um::fileapi::GetShortPathNameW; + +pub fn handle_path_space(path: String) -> String { + let wide: Vec = std::path::PathBuf::from(&path) + .as_os_str() + .encode_wide() + .chain(Some(0)) + .collect(); + let mut buffer: Vec = vec![0; wide.len() * 2]; + let result = + unsafe { GetShortPathNameW(wide.as_ptr(), buffer.as_mut_ptr(), buffer.len() as u32) }; + if result == 0 { + path + } else { + let len = buffer.iter().position(|&x| x == 0).unwrap(); + let short_path: String = OsString::from_wide(&buffer[..len]) + .to_string_lossy() + .into_owned(); + short_path + } +} + +pub fn write_to_pty(stdin: &mut Stdin, writer: &mut impl Write) -> anyhow::Result<()> { + std::io::copy(stdin, writer) + .map_err(|e| anyhow::anyhow!(e)) + .map(|_| ()) +} diff --git a/packages/nx/src/plugins/js/utils/register.ts b/packages/nx/src/plugins/js/utils/register.ts index 5c22a19db92cd..a6f174f05c8e5 100644 --- a/packages/nx/src/plugins/js/utils/register.ts +++ b/packages/nx/src/plugins/js/utils/register.ts @@ -209,15 +209,24 @@ function readCompilerOptions(tsConfigPath): CompilerOptions { const preferTsNode = process.env.NX_PREFER_TS_NODE === 'true'; if (swcNodeInstalled && !preferTsNode) { - const { - readDefaultTsConfig, - }: typeof import('@swc-node/register/read-default-tsconfig') = require('@swc-node/register/read-default-tsconfig'); - return readDefaultTsConfig(tsConfigPath); + return readCompilerOptionsWithSwc(tsConfigPath); } else { return readCompilerOptionsWithTypescript(tsConfigPath); } } +function readCompilerOptionsWithSwc(tsConfigPath) { + const { + readDefaultTsConfig, + }: typeof import('@swc-node/register/read-default-tsconfig') = require('@swc-node/register/read-default-tsconfig'); + const compilerOptions = readDefaultTsConfig(tsConfigPath); + // This is returned in compiler options for some reason, but not part of the typings. + // @swc-node/register filters the files to transpile based on it, but it can be limiting when processing + // files not part of the received tsconfig included files (e.g. shared helpers, or config files not in source, etc.). + delete compilerOptions.files; + return compilerOptions; +} + function readCompilerOptionsWithTypescript(tsConfigPath) { if (!ts) { ts = require('typescript'); diff --git a/packages/nx/src/utils/command-line-utils.spec.ts b/packages/nx/src/utils/command-line-utils.spec.ts index dc82ffbde607b..d5b66eefbb4b6 100644 --- a/packages/nx/src/utils/command-line-utils.spec.ts +++ b/packages/nx/src/utils/command-line-utils.spec.ts @@ -4,6 +4,22 @@ import { withEnvironmentVariables as withEnvironment } from '../internal-testing jest.mock('../project-graph/file-utils'); describe('splitArgs', () => { + let originalBase: string; + let originalHead: string; + + beforeEach(() => { + originalBase = process.env.NX_BASE; + originalHead = process.env.NX_HEAD; + + delete process.env.NX_BASE; + delete process.env.NX_HEAD; + }); + + afterEach(() => { + process.env.NX_BASE = originalBase; + process.env.NX_HEAD = originalHead; + }); + it('should split nx specific arguments into nxArgs', () => { expect( splitArgsIntoNxArgsAndOverrides( diff --git a/packages/playwright/src/plugins/plugin.ts b/packages/playwright/src/plugins/plugin.ts index 6b77beae44b44..33ddf9e258b4a 100644 --- a/packages/playwright/src/plugins/plugin.ts +++ b/packages/playwright/src/plugins/plugin.ts @@ -7,6 +7,7 @@ import { CreateNodesContext, detectPackageManager, joinPathFragments, + normalizePath, readJsonFile, TargetConfiguration, writeJsonFile, @@ -157,7 +158,9 @@ async function buildPlaywrightTargets( const dependsOn: TargetConfiguration['dependsOn'] = []; forEachTestFile( (testFile) => { - const relativeToProjectRoot = relative(projectRoot, testFile); + const relativeToProjectRoot = normalizePath( + relative(projectRoot, testFile) + ); const targetName = `${options.ciTargetName}--${relativeToProjectRoot}`; targets[targetName] = { ...ciBaseTargetConfig, diff --git a/packages/remix/src/generators/application/__snapshots__/application.impl.spec.ts.snap b/packages/remix/src/generators/application/__snapshots__/application.impl.spec.ts.snap index 559da7b1ef73a..f73d0613e55af 100644 --- a/packages/remix/src/generators/application/__snapshots__/application.impl.spec.ts.snap +++ b/packages/remix/src/generators/application/__snapshots__/application.impl.spec.ts.snap @@ -144,7 +144,7 @@ export default function Index() { " `; -exports[`Remix Application Integrated Repo --projectNameAndRootFormat=as-provided --e2eTestRunner should generate an e2e application for the app 1`] = ` +exports[`Remix Application Integrated Repo --projectNameAndRootFormat=as-provided --e2eTestRunner should generate a cypress e2e application for the app 1`] = ` "import { nxE2EPreset } from '@nx/cypress/plugins/cypress-preset'; import { defineConfig } from 'cypress'; @@ -158,6 +158,79 @@ export default defineConfig({ " `; +exports[`Remix Application Integrated Repo --projectNameAndRootFormat=as-provided --e2eTestRunner should generate a playwright e2e application for the app 1`] = ` +"import { defineConfig, devices } from '@playwright/test'; +import { nxE2EPreset } from '@nx/playwright/preset'; + +import { workspaceRoot } from '@nx/devkit'; + +// For CI, you may want to set BASE_URL to the deployed application. +const baseURL = process.env['BASE_URL'] || 'http://localhost:4200'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + ...nxE2EPreset(__filename, { testDir: './src' }), + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + baseURL, + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + /* Run your local dev server before starting the tests */ + webServer: { + command: 'pnpm exec nx serve test', + url: 'http://localhost:4200', + reuseExistingServer: !process.env.CI, + cwd: workspaceRoot, + }, + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + + // Uncomment for mobile browsers support + /* { + name: 'Mobile Chrome', + use: { ...devices['Pixel 5'] }, + }, + { + name: 'Mobile Safari', + use: { ...devices['iPhone 12'] }, + }, */ + + // Uncomment for branded browsers + /* { + name: 'Microsoft Edge', + use: { ...devices['Desktop Edge'], channel: 'msedge' }, + }, + { + name: 'Google Chrome', + use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + } */ + ], +}); +" +`; + exports[`Remix Application Integrated Repo --projectNameAndRootFormat=as-provided --js should create the application correctly 1`] = ` "import { createWatchPaths } from '@nx/remix'; import { dirname } from 'path'; @@ -549,7 +622,7 @@ export default function Index() { " `; -exports[`Remix Application Integrated Repo --projectNameAndRootFormat=derived --e2eTestRunner should generate an e2e application for the app 1`] = ` +exports[`Remix Application Integrated Repo --projectNameAndRootFormat=derived --e2eTestRunner should generate a cypress e2e application for the app 1`] = ` "import { nxE2EPreset } from '@nx/cypress/plugins/cypress-preset'; import { defineConfig } from 'cypress'; @@ -563,6 +636,79 @@ export default defineConfig({ " `; +exports[`Remix Application Integrated Repo --projectNameAndRootFormat=derived --e2eTestRunner should generate a playwright e2e application for the app 1`] = ` +"import { defineConfig, devices } from '@playwright/test'; +import { nxE2EPreset } from '@nx/playwright/preset'; + +import { workspaceRoot } from '@nx/devkit'; + +// For CI, you may want to set BASE_URL to the deployed application. +const baseURL = process.env['BASE_URL'] || 'http://localhost:4200'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + ...nxE2EPreset(__filename, { testDir: './src' }), + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + baseURL, + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + /* Run your local dev server before starting the tests */ + webServer: { + command: 'pnpm exec nx serve test', + url: 'http://localhost:4200', + reuseExistingServer: !process.env.CI, + cwd: workspaceRoot, + }, + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + + // Uncomment for mobile browsers support + /* { + name: 'Mobile Chrome', + use: { ...devices['Pixel 5'] }, + }, + { + name: 'Mobile Safari', + use: { ...devices['iPhone 12'] }, + }, */ + + // Uncomment for branded browsers + /* { + name: 'Microsoft Edge', + use: { ...devices['Desktop Edge'], channel: 'msedge' }, + }, + { + name: 'Google Chrome', + use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + } */ + ], +}); +" +`; + exports[`Remix Application Integrated Repo --projectNameAndRootFormat=derived --js should create the application correctly 1`] = ` "import { createWatchPaths } from '@nx/remix'; import { dirname } from 'path'; @@ -810,7 +956,7 @@ export default function Index() { " `; -exports[`Remix Application Standalone Project Repo --e2eTestRunner should generate an e2e application for the app 1`] = ` +exports[`Remix Application Standalone Project Repo --e2eTestRunner should generate a cypress e2e application for the app 1`] = ` "import { nxE2EPreset } from '@nx/cypress/plugins/cypress-preset'; import { defineConfig } from 'cypress'; @@ -1157,3 +1303,76 @@ exports[`Remix Application Standalone Project Repo should create the application } " `; + +exports[`Remix Application Standalone Project Repo should generate a playwright e2e application for the app 1`] = ` +"import { defineConfig, devices } from '@playwright/test'; +import { nxE2EPreset } from '@nx/playwright/preset'; + +import { workspaceRoot } from '@nx/devkit'; + +// For CI, you may want to set BASE_URL to the deployed application. +const baseURL = process.env['BASE_URL'] || 'http://localhost:4200'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + ...nxE2EPreset(__filename, { testDir: './src' }), + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + baseURL, + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + /* Run your local dev server before starting the tests */ + webServer: { + command: 'pnpm exec nx serve test', + url: 'http://localhost:4200', + reuseExistingServer: !process.env.CI, + cwd: workspaceRoot, + }, + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + + // Uncomment for mobile browsers support + /* { + name: 'Mobile Chrome', + use: { ...devices['Pixel 5'] }, + }, + { + name: 'Mobile Safari', + use: { ...devices['iPhone 12'] }, + }, */ + + // Uncomment for branded browsers + /* { + name: 'Microsoft Edge', + use: { ...devices['Desktop Edge'], channel: 'msedge' }, + }, + { + name: 'Google Chrome', + use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + } */ + ], +}); +" +`; diff --git a/packages/remix/src/generators/application/application.impl.spec.ts b/packages/remix/src/generators/application/application.impl.spec.ts index c1a4a60841302..6346c60a804e6 100644 --- a/packages/remix/src/generators/application/application.impl.spec.ts +++ b/packages/remix/src/generators/application/application.impl.spec.ts @@ -103,7 +103,7 @@ describe('Remix Application', () => { }); describe('--e2eTestRunner', () => { - it('should generate an e2e application for the app', async () => { + it('should generate a cypress e2e application for the app', async () => { // ARRANGE const tree = createTreeWithEmptyWorkspace(); @@ -121,6 +121,24 @@ describe('Remix Application', () => { expect(tree.read('e2e/cypress.config.ts', 'utf-8')).toMatchSnapshot(); }); }); + + it('should generate a playwright e2e application for the app', async () => { + // ARRANGE + const tree = createTreeWithEmptyWorkspace(); + + // ACT + await applicationGenerator(tree, { + name: 'test', + e2eTestRunner: 'playwright', + rootProject: true, + addPlugin: true, + }); + + // ASSERT + expectTargetsToBeCorrect(tree, '.'); + + expect(tree.read('e2e/playwright.config.ts', 'utf-8')).toMatchSnapshot(); + }); }); describe.each([ @@ -294,7 +312,7 @@ describe('Remix Application', () => { }); describe('--e2eTestRunner', () => { - it('should generate an e2e application for the app', async () => { + it('should generate a cypress e2e application for the app', async () => { // ARRANGE const tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' }); @@ -313,6 +331,26 @@ describe('Remix Application', () => { tree.read(`${appDir}-e2e/cypress.config.ts`, 'utf-8') ).toMatchSnapshot(); }); + + it('should generate a playwright e2e application for the app', async () => { + // ARRANGE + const tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' }); + + // ACT + await applicationGenerator(tree, { + name: 'test', + e2eTestRunner: 'playwright', + projectNameAndRootFormat, + addPlugin: true, + }); + + // ASSERT + expectTargetsToBeCorrect(tree, appDir); + + expect( + tree.read(`${appDir}-e2e/playwright.config.ts`, 'utf-8') + ).toMatchSnapshot(); + }); }); } ); diff --git a/packages/remix/src/generators/application/application.impl.ts b/packages/remix/src/generators/application/application.impl.ts index 629abdfd42306..b2563364e8fc5 100644 --- a/packages/remix/src/generators/application/application.impl.ts +++ b/packages/remix/src/generators/application/application.impl.ts @@ -28,11 +28,7 @@ import { typesReactDomVersion, typesReactVersion, } from '../../utils/versions'; -import { - NormalizedSchema, - normalizeOptions, - updateUnitTestConfig, -} from './lib'; +import { normalizeOptions, updateUnitTestConfig, addE2E } from './lib'; import { NxRemixGeneratorSchema } from './schema'; import { updateDependencies } from '../utils/update-dependencies'; import initGenerator from '../init/init'; @@ -270,31 +266,7 @@ export async function remixApplicationGeneratorInternal( extractTsConfigBase(tree); } - // TODO(@columferry): add support for playwright? - if (options.e2eTestRunner === 'cypress') { - const { configurationGenerator } = ensurePackage< - typeof import('@nx/cypress') - >('@nx/cypress', getPackageVersion(tree, 'nx')); - addFileServerTarget(tree, options, 'serve-static'); - addProjectConfiguration(tree, options.e2eProjectName, { - projectType: 'application', - root: options.e2eProjectRoot, - sourceRoot: joinPathFragments(options.e2eProjectRoot, 'src'), - targets: {}, - tags: [], - implicitDependencies: [options.projectName], - }); - tasks.push( - await configurationGenerator(tree, { - project: options.e2eProjectName, - directory: 'src', - skipFormat: true, - devServerTarget: `${options.projectName}:serve:development`, - baseUrl: 'http://localhost:4200', - addPlugin: options.addPlugin, - }) - ); - } + tasks.push(await addE2E(tree, options)); if (!options.skipFormat) { await formatFiles(tree); @@ -307,20 +279,4 @@ export async function remixApplicationGeneratorInternal( return runTasksInSerial(...tasks); } -function addFileServerTarget( - tree: Tree, - options: NormalizedSchema, - targetName: string -) { - const projectConfig = readProjectConfiguration(tree, options.projectName); - projectConfig.targets[targetName] = { - executor: '@nx/web:file-server', - options: { - buildTarget: `${options.projectName}:build`, - port: 4200, - }, - }; - updateProjectConfiguration(tree, options.projectName, projectConfig); -} - export default remixApplicationGenerator; diff --git a/packages/remix/src/generators/application/lib/add-e2e.ts b/packages/remix/src/generators/application/lib/add-e2e.ts new file mode 100644 index 0000000000000..de1d61bea9315 --- /dev/null +++ b/packages/remix/src/generators/application/lib/add-e2e.ts @@ -0,0 +1,86 @@ +import { + type Tree, + addProjectConfiguration, + joinPathFragments, + readProjectConfiguration, + updateProjectConfiguration, + ensurePackage, + getPackageManagerCommand, +} from '@nx/devkit'; +import { type NormalizedSchema } from './normalize-options'; +import { getPackageVersion } from '../../../utils/versions'; + +export async function addE2E(tree: Tree, options: NormalizedSchema) { + if (options.e2eTestRunner === 'cypress') { + const { configurationGenerator } = ensurePackage< + typeof import('@nx/cypress') + >('@nx/cypress', getPackageVersion(tree, 'nx')); + + addFileServerTarget(tree, options, 'serve-static'); + + addProjectConfiguration(tree, options.e2eProjectName, { + projectType: 'application', + root: options.e2eProjectRoot, + sourceRoot: joinPathFragments(options.e2eProjectRoot, 'src'), + targets: {}, + tags: [], + implicitDependencies: [options.projectName], + }); + + return await configurationGenerator(tree, { + project: options.e2eProjectName, + directory: 'src', + skipFormat: true, + devServerTarget: `${options.projectName}:serve:development`, + baseUrl: 'http://localhost:4200', + addPlugin: options.addPlugin, + }); + } else if (options.e2eTestRunner === 'playwright') { + const { configurationGenerator } = ensurePackage< + typeof import('@nx/playwright') + >('@nx/playwright', getPackageVersion(tree, 'nx')); + + addProjectConfiguration(tree, options.e2eProjectName, { + projectType: 'application', + root: options.e2eProjectRoot, + sourceRoot: joinPathFragments(options.e2eProjectRoot, 'src'), + targets: {}, + tags: [], + implicitDependencies: [options.projectName], + }); + + return configurationGenerator(tree, { + project: options.e2eProjectName, + skipFormat: true, + skipPackageJson: false, + directory: 'src', + js: false, + linter: options.linter, + setParserOptionsProject: false, + webServerCommand: `${getPackageManagerCommand().exec} nx serve ${ + options.name + }`, + webServerAddress: 'http://localhost:4200', + rootProject: options.rootProject, + addPlugin: options.addPlugin, + }); + } else { + return () => {}; + } +} + +function addFileServerTarget( + tree: Tree, + options: NormalizedSchema, + targetName: string +) { + const projectConfig = readProjectConfiguration(tree, options.projectName); + projectConfig.targets[targetName] = { + executor: '@nx/web:file-server', + options: { + buildTarget: `${options.projectName}:build`, + port: 4200, + }, + }; + updateProjectConfiguration(tree, options.projectName, projectConfig); +} diff --git a/packages/remix/src/generators/application/lib/index.ts b/packages/remix/src/generators/application/lib/index.ts index df3573ed82c11..713c924e664b3 100644 --- a/packages/remix/src/generators/application/lib/index.ts +++ b/packages/remix/src/generators/application/lib/index.ts @@ -1,2 +1,3 @@ export * from './normalize-options'; export * from './update-unit-test-config'; +export * from './add-e2e'; diff --git a/packages/remix/src/generators/application/schema.d.ts b/packages/remix/src/generators/application/schema.d.ts index 52fa508f09bd8..7b3da9aee6c43 100644 --- a/packages/remix/src/generators/application/schema.d.ts +++ b/packages/remix/src/generators/application/schema.d.ts @@ -9,7 +9,7 @@ export interface NxRemixGeneratorSchema { projectNameAndRootFormat?: ProjectNameAndRootFormat; linter?: Linter; unitTestRunner?: 'vitest' | 'jest' | 'none'; - e2eTestRunner?: 'cypress' | 'none'; + e2eTestRunner?: 'cypress' | 'playwright' | 'none'; skipFormat?: boolean; rootProject?: boolean; addPlugin?: boolean; diff --git a/packages/remix/src/generators/application/schema.json b/packages/remix/src/generators/application/schema.json index 8ead343cd4a33..3d5d894d05cbe 100644 --- a/packages/remix/src/generators/application/schema.json +++ b/packages/remix/src/generators/application/schema.json @@ -45,7 +45,7 @@ }, "e2eTestRunner": { "type": "string", - "enum": ["cypress", "none"], + "enum": ["cypress", "playwright", "none"], "default": "cypress", "description": "Test runner to use for e2e tests" }, diff --git a/packages/rollup/package.json b/packages/rollup/package.json index 76fb3834ae20a..aad4428579e27 100644 --- a/packages/rollup/package.json +++ b/packages/rollup/package.json @@ -42,7 +42,7 @@ "rollup-plugin-copy": "^3.4.0", "rollup-plugin-peer-deps-external": "^2.2.4", "rollup-plugin-postcss": "^4.0.1", - "rollup-plugin-typescript2": "0.34.1", + "rollup-plugin-typescript2": "0.36.0", "rxjs": "^7.8.0", "tslib": "^2.3.0", "@nx/devkit": "file:../devkit", diff --git a/packages/storybook/docs/build-storybook-executor-examples.md b/packages/storybook/docs/build-storybook-executor-examples.md index ae6f1245e2a39..7fdc3ed536303 100644 --- a/packages/storybook/docs/build-storybook-executor-examples.md +++ b/packages/storybook/docs/build-storybook-executor-examples.md @@ -89,7 +89,7 @@ This is the default configuration for Angular projects using Storybook. You can {% /tab %} {% tab label="Changing the browserTarget" %} -You can set the [`browserTarget`](/deprecated/storybook/angular-browser-target) to use `build-storybook` as the builder. This is most useful in the cases where your project does not have a `build` target. +You can set the `browserTarget` to use `build-storybook` as the builder. This is most useful in the cases where your project does not have a `build` target. Read more about the `browserTarget` in the [Set up Storybook for Angular Projects](/recipes/storybook/overview-angular) recipe. ```json "build-storybook": { diff --git a/packages/storybook/docs/storybook-executor-examples.md b/packages/storybook/docs/storybook-executor-examples.md index 2d21ac33901dd..42967dee05771 100644 --- a/packages/storybook/docs/storybook-executor-examples.md +++ b/packages/storybook/docs/storybook-executor-examples.md @@ -88,7 +88,7 @@ This is the default configuration for Angular projects using Storybook. You can {% /tab %} {% tab label="Changing the browserTarget" %} -You can set the [`browserTarget`](/deprecated/storybook/angular-browser-target) to use `build-storybook` as the builder. This is most useful in the cases where your project does not have a `build` target. +You can set the `browserTarget` to use `build-storybook` as the builder. This is most useful in the cases where your project does not have a `build` target. Read more about the `browserTarget` in the [Set up Storybook for Angular Projects](/recipes/storybook/overview-angular) recipe. ```json "storybook": { diff --git a/packages/storybook/src/utils/utilities.ts b/packages/storybook/src/utils/utilities.ts index ef5680332522f..e44bbfa0a9183 100644 --- a/packages/storybook/src/utils/utilities.ts +++ b/packages/storybook/src/utils/utilities.ts @@ -149,13 +149,18 @@ export function findStorybookAndBuildTargetsAndCompiler(targets: { '@nrwl/esbuild:esbuild', '@nrwl/next:build', '@nxext/vite:build', + '@angular-devkit/build-angular:application', '@angular-devkit/build-angular:browser', + '@angular-devkit/build-angular:browser-esbuild', ]; for (const target in targets) { if (arrayOfBuilders.includes(targets[target].executor)) { if ( - targets[target].executor === '@angular-devkit/build-angular:browser' + targets[target].executor === '@angular-devkit/build-angular:browser' || + targets[target].executor === + '@angular-devkit/build-angular:browser-esbuild' || + targets[target].executor === '@angular-devkit/build-angular:application' ) { /** * Not looking for '@nx/angular:ng-packagr-lite' or any other diff --git a/packages/vite/src/plugins/plugin.ts b/packages/vite/src/plugins/plugin.ts index 7e2fb3c97dd52..6a9150b6f3014 100644 --- a/packages/vite/src/plugins/plugin.ts +++ b/packages/vite/src/plugins/plugin.ts @@ -96,6 +96,15 @@ async function buildViteTargets( context.workspaceRoot, configFilePath ); + + // Workaround for the `build$3 is not a function` error that we sometimes see in agents. + // This should be removed later once we address the issue properly + try { + const importEsbuild = () => new Function('return import("esbuild")')(); + await importEsbuild(); + } catch { + // do nothing + } const { resolveConfig } = await loadViteDynamicImport(); const viteConfig = await resolveConfig( { diff --git a/packages/webpack/.eslintrc.json b/packages/webpack/.eslintrc.json index 8531c0f3919a0..4dab6d17bba4d 100644 --- a/packages/webpack/.eslintrc.json +++ b/packages/webpack/.eslintrc.json @@ -46,7 +46,8 @@ "source-map-loader", "swc-loader", "@swc/core", - "ts-loader" + "ts-loader", + "ajv" ] } ] diff --git a/packages/webpack/package.json b/packages/webpack/package.json index 516156015f52b..8df59ae516908 100644 --- a/packages/webpack/package.json +++ b/packages/webpack/package.json @@ -30,6 +30,7 @@ }, "dependencies": { "@babel/core": "^7.23.2", + "ajv": "^8.12.0", "autoprefixer": "^10.4.9", "babel-loader": "^9.1.2", "browserslist": "^4.21.4", diff --git a/packages/workspace/src/generators/ci-workflow/__snapshots__/ci-workflow.spec.ts.snap b/packages/workspace/src/generators/ci-workflow/__snapshots__/ci-workflow.spec.ts.snap index f2972d7786203..86906d67ccb13 100644 --- a/packages/workspace/src/generators/ci-workflow/__snapshots__/ci-workflow.spec.ts.snap +++ b/packages/workspace/src/generators/ci-workflow/__snapshots__/ci-workflow.spec.ts.snap @@ -24,6 +24,26 @@ jobs: pool: vmImage: 'ubuntu-latest' steps: + - checkout: self + fetchDepth: 0 + # Set Azure Devops CLI default settings + - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) + displayName: 'Set default Azure DevOps organization and project' + # Get last successfull commit from Azure Devops CLI + - displayName: 'Get last successful commit SHA' + condition: ne(variables['Build.Reason'], 'PullRequest') + env: + AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) + bash: | + LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"") + if [ -z "$LAST_SHA" ] + then + echo "Last successful commit not found. Using fallback 'HEAD~1': $BASE_SHA" + else + echo "Last successful commit SHA: $LAST_SHA" + echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" + fi + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested # - script: npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" @@ -44,20 +64,33 @@ clone: pipelines: pull-requests: '**': - - parallel: - - step: - name: CI - script: - - export NX_BRANCH=$BITBUCKET_PR_ID + - step: + name: 'Build and test affected apps on Pull Requests' + script: + - export NX_BRANCH=$BITBUCKET_PR_ID + + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested + # - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" + + - npm ci - # Connect your workspace on my.nx.app and uncomment this to enable task distribution. - # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested - # - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" + - npx nx-cloud record -- nx format:check + - npx nx affected -t lint test build e2e-ci --base=origin/main - - npm ci + branches: + main: + - step: + name: 'Build and test affected apps on "main" branch changes' + script: + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested + # - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" - - npx nx-cloud record -- nx format:check - - npx nx affected -t lint test build e2e-ci + - npm ci + + - npx nx-cloud record -- nx format:check + - npx nx affected -t lint test build e2e-ci --base=HEAD~1 " `; @@ -194,6 +227,26 @@ jobs: pool: vmImage: 'ubuntu-latest' steps: + - checkout: self + fetchDepth: 0 + # Set Azure Devops CLI default settings + - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) + displayName: 'Set default Azure DevOps organization and project' + # Get last successfull commit from Azure Devops CLI + - displayName: 'Get last successful commit SHA' + condition: ne(variables['Build.Reason'], 'PullRequest') + env: + AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) + bash: | + LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"") + if [ -z "$LAST_SHA" ] + then + echo "Last successful commit not found. Using fallback 'HEAD~1': $BASE_SHA" + else + echo "Last successful commit SHA: $LAST_SHA" + echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" + fi + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested # - script: npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" @@ -214,20 +267,33 @@ clone: pipelines: pull-requests: '**': - - parallel: - - step: - name: CI - script: - - export NX_BRANCH=$BITBUCKET_PR_ID + - step: + name: 'Build and test affected apps on Pull Requests' + script: + - export NX_BRANCH=$BITBUCKET_PR_ID - # Connect your workspace on my.nx.app and uncomment this to enable task distribution. - # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested - # - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested + # - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" - - npm ci + - npm ci - - npx nx-cloud record -- nx format:check - - npx nx affected -t lint test build + - npx nx-cloud record -- nx format:check + - npx nx affected -t lint test build --base=origin/main + + branches: + main: + - step: + name: 'Build and test affected apps on "main" branch changes' + script: + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested + # - npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" + + - npm ci + + - npx nx-cloud record -- nx format:check + - npx nx affected -t lint test build --base=HEAD~1 " `; @@ -391,6 +457,26 @@ jobs: pool: vmImage: 'ubuntu-latest' steps: + - checkout: self + fetchDepth: 0 + # Set Azure Devops CLI default settings + - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) + displayName: 'Set default Azure DevOps organization and project' + # Get last successfull commit from Azure Devops CLI + - displayName: 'Get last successful commit SHA' + condition: ne(variables['Build.Reason'], 'PullRequest') + env: + AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) + bash: | + LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"") + if [ -z "$LAST_SHA" ] + then + echo "Last successful commit not found. Using fallback 'HEAD~1': $BASE_SHA" + else + echo "Last successful commit SHA: $LAST_SHA" + echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" + fi + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested # - script: pnpm exec nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" @@ -413,22 +499,37 @@ clone: pipelines: pull-requests: '**': - - parallel: - - step: - name: CI - script: - - export NX_BRANCH=$BITBUCKET_PR_ID + - step: + name: 'Build and test affected apps on Pull Requests' + script: + - export NX_BRANCH=$BITBUCKET_PR_ID - # Connect your workspace on my.nx.app and uncomment this to enable task distribution. - # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested - # - pnpm exec nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested + # - pnpm exec nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" - - npm install --prefix=$HOME/.local -g pnpm@8 + - npm install --prefix=$HOME/.local -g pnpm@8 - - pnpm install --frozen-lockfile + - pnpm install --frozen-lockfile - - pnpm exec nx-cloud record -- nx format:check - - pnpm exec nx affected -t lint test build + - pnpm exec nx-cloud record -- nx format:check + - pnpm exec nx affected -t lint test build --base=origin/main + + branches: + main: + - step: + name: 'Build and test affected apps on "main" branch changes' + script: + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested + # - pnpm exec nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" + + - npm install --prefix=$HOME/.local -g pnpm@8 + + - pnpm install --frozen-lockfile + + - pnpm exec nx-cloud record -- nx format:check + - pnpm exec nx affected -t lint test build --base=HEAD~1 " `; @@ -603,6 +704,26 @@ jobs: pool: vmImage: 'ubuntu-latest' steps: + - checkout: self + fetchDepth: 0 + # Set Azure Devops CLI default settings + - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) + displayName: 'Set default Azure DevOps organization and project' + # Get last successfull commit from Azure Devops CLI + - displayName: 'Get last successful commit SHA' + condition: ne(variables['Build.Reason'], 'PullRequest') + env: + AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) + bash: | + LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"") + if [ -z "$LAST_SHA" ] + then + echo "Last successful commit not found. Using fallback 'HEAD~1': $BASE_SHA" + else + echo "Last successful commit SHA: $LAST_SHA" + echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" + fi + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested # - script: yarn nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" @@ -623,20 +744,33 @@ clone: pipelines: pull-requests: '**': - - parallel: - - step: - name: CI - script: - - export NX_BRANCH=$BITBUCKET_PR_ID + - step: + name: 'Build and test affected apps on Pull Requests' + script: + - export NX_BRANCH=$BITBUCKET_PR_ID + + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested + # - yarn nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" + + - yarn install --frozen-lockfile + + - yarn nx-cloud record -- nx format:check + - yarn nx affected -t lint test build --base=origin/main - # Connect your workspace on my.nx.app and uncomment this to enable task distribution. - # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested - # - yarn nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" + branches: + main: + - step: + name: 'Build and test affected apps on "main" branch changes' + script: + # Connect your workspace on my.nx.app and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested + # - yarn nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="build" - - yarn install --frozen-lockfile + - yarn install --frozen-lockfile - - yarn nx-cloud record -- nx format:check - - yarn nx affected -t lint test build + - yarn nx-cloud record -- nx format:check + - yarn nx affected -t lint test build --base=HEAD~1 " `; diff --git a/packages/workspace/src/generators/ci-workflow/files/azure/azure-pipelines.yml__tmpl__ b/packages/workspace/src/generators/ci-workflow/files/azure/azure-pipelines.yml__tmpl__ index 6c9e0486f2572..082036ca09d60 100644 --- a/packages/workspace/src/generators/ci-workflow/files/azure/azure-pipelines.yml__tmpl__ +++ b/packages/workspace/src/generators/ci-workflow/files/azure/azure-pipelines.yml__tmpl__ @@ -21,6 +21,26 @@ jobs: pool: vmImage: 'ubuntu-latest' steps: + - checkout: self + fetchDepth: 0 + # Set Azure Devops CLI default settings + - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) + displayName: 'Set default Azure DevOps organization and project' + # Get last successfull commit from Azure Devops CLI + - displayName: 'Get last successful commit SHA' + condition: ne(variables['Build.Reason'], 'PullRequest') + env: + AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) + bash: | + LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\"ci.sourceSha\"") + if [ -z "$LAST_SHA" ] + then + echo "Last successful commit not found. Using fallback 'HEAD~1': $BASE_SHA" + else + echo "Last successful commit SHA: $LAST_SHA" + echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" + fi + # Connect your workspace on <%= nxCloudHost %> and uncomment this to enable task distribution. # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "<% if(hasE2E){ %>e2e-ci<% } else { %>build<% } %>" targets have been requested # - script: <%= packageManagerPrefix %> nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="<% if(hasE2E){ %>e2e-ci<% } else { %>build<% } %>" diff --git a/packages/workspace/src/generators/ci-workflow/files/bitbucket-pipelines/bitbucket-pipelines.yml__tmpl__ b/packages/workspace/src/generators/ci-workflow/files/bitbucket-pipelines/bitbucket-pipelines.yml__tmpl__ index 5ee02f5153b7a..826702e0b8be3 100644 --- a/packages/workspace/src/generators/ci-workflow/files/bitbucket-pipelines/bitbucket-pipelines.yml__tmpl__ +++ b/packages/workspace/src/generators/ci-workflow/files/bitbucket-pipelines/bitbucket-pipelines.yml__tmpl__ @@ -6,20 +6,36 @@ clone: pipelines: pull-requests: '**': - - parallel: - - step: - name: <%= workflowName %> - script: - - export NX_BRANCH=$BITBUCKET_PR_ID - - # Connect your workspace on <%= nxCloudHost %> and uncomment this to enable task distribution. - # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "<% if(hasE2E){ %>e2e-ci<% } else { %>build<% } %>" targets have been requested - # - <%= packageManagerPrefix %> nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="<% if(hasE2E){ %>e2e-ci<% } else { %>build<% } %>" - - <% if(packageManager == 'pnpm'){ %> - - npm install --prefix=$HOME/.local -g pnpm@8 - <% } %> - - <%= packageManagerInstall %> - - - <%= packageManagerPrefix %> nx-cloud record -- nx format:check - - <%= packageManagerPrefix %> nx affected -t lint test build<% if(hasE2E){ %> e2e-ci<% } %> + - step: + name: 'Build and test affected apps on Pull Requests' + script: + - export NX_BRANCH=$BITBUCKET_PR_ID + + # Connect your workspace on <%= nxCloudHost %> and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "<% if(hasE2E){ %>e2e-ci<% } else { %>build<% } %>" targets have been requested + # - <%= packageManagerPrefix %> nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="<% if(hasE2E){ %>e2e-ci<% } else { %>build<% } %>" + + <% if(packageManager == 'pnpm'){ %> + - npm install --prefix=$HOME/.local -g pnpm@8 + <% } %> + - <%= packageManagerInstall %> + + - <%= packageManagerPrefix %> nx-cloud record -- nx format:check + - <%= packageManagerPrefix %> nx affected -t lint test build<% if(hasE2E){ %> e2e-ci<% } %> --base=origin/<%= mainBranch %> + + branches: + main: + - step: + name: 'Build and test affected apps on "<%= mainBranch %>" branch changes' + script: + # Connect your workspace on <%= nxCloudHost %> and uncomment this to enable task distribution. + # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "<% if(hasE2E){ %>e2e-ci<% } else { %>build<% } %>" targets have been requested + # - <%= packageManagerPrefix %> nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="<% if(hasE2E){ %>e2e-ci<% } else { %>build<% } %>" + + <% if(packageManager == 'pnpm'){ %> + - npm install --prefix=$HOME/.local -g pnpm@8 + <% } %> + - <%= packageManagerInstall %> + + - <%= packageManagerPrefix %> nx-cloud record -- nx format:check + - <%= packageManagerPrefix %> nx affected -t lint test build<% if(hasE2E){ %> e2e-ci<% } %> --base=HEAD~1 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7579a598e6ede..544b066e2ddab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + overrides: minimist: ^1.2.6 underscore: ^1.12.1 @@ -224,8 +228,8 @@ devDependencies: specifier: ^29.4.1 version: 29.5.0 '@monodon/rust': - specifier: 1.3.2 - version: 1.3.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 1.3.3 + version: 1.3.3(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(typescript@5.3.3)(verdaccio@5.15.4) '@napi-rs/cli': specifier: 2.14.0 version: 2.14.0 @@ -243,7 +247,7 @@ devDependencies: version: 9.1.6(@nestjs/common@9.1.6)(@nestjs/core@9.1.6) '@nestjs/schematics': specifier: ^9.1.0 - version: 9.1.0(chokidar@3.5.3)(typescript@4.9.4) + version: 9.1.0(typescript@5.3.3) '@nestjs/swagger': specifier: ^6.0.0 version: 6.1.3(@nestjs/common@9.1.6)(@nestjs/core@9.1.6)(reflect-metadata@0.1.14) @@ -266,50 +270,50 @@ devDependencies: specifier: ^3.10.0 version: 3.10.0(rollup@2.79.0) '@nx/angular': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@angular-devkit/build-angular@17.1.0)(@angular-devkit/core@17.1.0)(@angular-devkit/schematics@17.1.0)(@schematics/angular@17.1.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.48.0)(html-webpack-plugin@5.5.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@angular-devkit/build-angular@17.1.0)(@angular-devkit/core@17.1.0)(@angular-devkit/schematics@17.1.0)(@schematics/angular@17.1.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.48.0)(html-webpack-plugin@5.5.0)(js-yaml@4.1.0)(nx@18.0.2)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) '@nx/cypress': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@nx/devkit': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(nx@17.3.0-rc.1) + specifier: 18.0.2 + version: 18.0.2(nx@18.0.2) '@nx/esbuild': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@nx/eslint': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4) '@nx/eslint-plugin': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.0.0)(eslint@8.48.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.0.0)(eslint@8.48.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@nx/jest': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) '@nx/js': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@nx/next': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@babel/core@7.23.2)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(next@14.0.4)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0) + specifier: 18.0.2 + version: 18.0.2(@babel/core@7.23.2)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(next@14.0.4)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0) '@nx/playwright': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@playwright/test@1.36.1)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@playwright/test@1.36.1)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@nx/react': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@nx/storybook': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@nx/vite': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(vite@5.0.8)(vitest@1.0.4) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4)(vite@5.0.8)(vitest@1.0.4) '@nx/web': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@nx/webpack': - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@phenomnomnominal/tsquery': specifier: ~5.0.1 version: 5.0.1(typescript@5.3.3) @@ -767,8 +771,8 @@ devDependencies: specifier: ^3.10.0 version: 3.10.0(@types/node@18.19.8)(eslint@8.48.0)(less@4.1.3)(rollup@2.79.0)(sass@1.55.0)(stylus@0.59.0)(typescript@5.3.3)(vite@5.0.8) nx: - specifier: 17.3.0-rc.1 - version: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86) + specifier: 18.0.2 + version: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86) octokit: specifier: ^2.0.14 version: 2.0.14 @@ -845,8 +849,8 @@ devDependencies: specifier: ^4.0.1 version: 4.0.2(postcss@8.4.19)(ts-node@10.9.1) rollup-plugin-typescript2: - specifier: 0.34.1 - version: 0.34.1(rollup@2.79.0)(typescript@5.3.3) + specifier: 0.36.0 + version: 0.36.0(rollup@2.79.0)(typescript@5.3.3) rxjs: specifier: ^7.8.0 version: 7.8.1 @@ -1754,8 +1758,8 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.23.2): + resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1772,8 +1776,8 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.7): - resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.23.7): + resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1790,8 +1794,8 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.23.2): - resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} + /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.2): + resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1802,25 +1806,7 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - dev: true - - /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.23.7): - resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.7) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 @@ -2304,34 +2290,18 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) dev: true - /@babel/plugin-proposal-decorators@7.22.7(@babel/core@7.23.2): - resolution: {integrity: sha512-omXqPF7Onq4Bb7wHxXjM3jSMSJvUUbvDvmmds7KI5n9Cq6Ln5I05I1W2nRlRof1rGdiUxJrxwe285WF96XlBXQ==} + /@babel/plugin-proposal-decorators@7.23.9(@babel/core@7.23.2): + resolution: {integrity: sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) - '@babel/helper-split-export-declaration': 7.22.6 '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-decorators@7.22.7(@babel/core@7.23.7): - resolution: {integrity: sha512-omXqPF7Onq4Bb7wHxXjM3jSMSJvUUbvDvmmds7KI5n9Cq6Ln5I05I1W2nRlRof1rGdiUxJrxwe285WF96XlBXQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.7) - dev: true - /@babel/plugin-proposal-decorators@7.23.9(@babel/core@7.23.7): resolution: {integrity: sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA==} engines: {node: '>=6.9.0'} @@ -2982,7 +2952,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -2993,7 +2963,7 @@ packages: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) dev: true @@ -3550,7 +3520,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -3562,7 +3532,7 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) dev: true @@ -6424,8 +6394,8 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@monodon/rust@1.3.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-WcI8y0s8mVngdF/nwvki5EP3LS7YDnIxZyMcU34iVT6flVexcipN2F89e0pLb8ER9yS2AaMyvuDyX1JlqDi9bg==} + /@monodon/rust@1.3.3(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-rDzKRAxlh5ohZSBTXrSt4vt++ZfZZuZ+6/XwrOohsfm8NTxd37JvkXH2nBLrNkqhcej0NiR/T2R/lpPKR7UEFQ==} dependencies: '@ltd/j-toml': 1.38.0 '@nx/devkit': 17.1.2(nx@17.1.2) @@ -6686,6 +6656,20 @@ packages: - chokidar dev: true + /@nestjs/schematics@9.1.0(typescript@5.3.3): + resolution: {integrity: sha512-/7CyMTnPJSK9/xD9CkCqwuHPOlHVlLC2RDnbdCJ7mIO07SdbBbY14msTqtYW9VRQtsjZPLh1GTChf7ryJUImwA==} + peerDependencies: + typescript: '>=4.3.5' + dependencies: + '@angular-devkit/core': 15.2.4(chokidar@3.5.3) + '@angular-devkit/schematics': 15.2.4(chokidar@3.5.3) + jsonc-parser: 3.2.0 + pluralize: 8.0.0 + typescript: 5.3.3 + transitivePeerDependencies: + - chokidar + dev: true + /@nestjs/swagger@6.1.3(@nestjs/common@9.1.6)(@nestjs/core@9.1.6)(reflect-metadata@0.1.14): resolution: {integrity: sha512-H9C/yRgLFb5QrAt6iGrYmIX9X7Q0zXkgZaTNUATljUBra+RCWrEUbLHBcGjTAOtcIyGV/vmyCLv68YSVcZoE0Q==} peerDependencies: @@ -7038,10 +7022,10 @@ packages: - supports-color dev: true - /@nrwl/angular@17.3.0-rc.1(@angular-devkit/build-angular@17.1.0)(@angular-devkit/core@17.1.0)(@angular-devkit/schematics@17.1.0)(@schematics/angular@17.1.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.48.0)(html-webpack-plugin@5.5.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-CzjgmPdqzztgc8MLtHpuUFSJIOTiHjBGLeMqs1BvK6PyTevqcpucLeh5nztyQHjzHBVgEOuEOT0h+pvCpP+E1A==} + /@nrwl/angular@18.0.2(@angular-devkit/build-angular@17.1.0)(@angular-devkit/core@17.1.0)(@angular-devkit/schematics@17.1.0)(@schematics/angular@17.1.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.48.0)(html-webpack-plugin@5.5.0)(js-yaml@4.1.0)(nx@18.0.2)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-b7ft9OrJzYe90iI71L3w6boN4x5zRm0Crj5LA5XQXPy5feNBCP+oXyaq52Dmz1JpIYhAqi1tvnODSNzQEG6gYA==} dependencies: - '@nx/angular': 17.3.0-rc.1(@angular-devkit/build-angular@17.1.0)(@angular-devkit/core@17.1.0)(@angular-devkit/schematics@17.1.0)(@schematics/angular@17.1.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.48.0)(html-webpack-plugin@5.5.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/angular': 18.0.2(@angular-devkit/build-angular@17.1.0)(@angular-devkit/core@17.1.0)(@angular-devkit/schematics@17.1.0)(@schematics/angular@17.1.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.48.0)(html-webpack-plugin@5.5.0)(js-yaml@4.1.0)(nx@18.0.2)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) tslib: 2.6.2 transitivePeerDependencies: - '@angular-devkit/build-angular' @@ -7081,10 +7065,10 @@ packages: - webpack-cli dev: true - /@nrwl/cypress@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-JNSdT6ASdu15jNYkXUVNsOQw7upkKH1DTWeOLf/XJjKT8Tt6s5V/xMj+qpRQFyl8rLMfv84iim79w93hPRcOpw==} + /@nrwl/cypress@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-eIoxE5u+fqMgdkHnqVhRgEEFuycBFo7/JGqbWEU6cIa8y7JEZ3n7c3BMri1whqL9p0VmIaXzZfulE1wpdqpFxw==} dependencies: - '@nx/cypress': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/cypress': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7093,7 +7077,6 @@ packages: - '@types/node' - cypress - debug - - eslint - js-yaml - nx - supports-color @@ -7109,18 +7092,18 @@ packages: - nx dev: true - /@nrwl/devkit@17.3.0-rc.1(nx@17.3.0-rc.1): - resolution: {integrity: sha512-+WMPvHPVtv4dYQ01pi6JjVKCK5KUAKzua3EWDuLqVdxvlsymIIYbcC6FBHhiM083eebm1WGL2+UAHb/QF1GP6g==} + /@nrwl/devkit@18.0.2(nx@18.0.2): + resolution: {integrity: sha512-DvZtiTJLt8K/TjCWllha2myGzPgWO4BgbmIVuxyNvFbZTYkDiPBr5InW0pICSAX2DPFv4NvA77t8dxNCPNvZvA==} dependencies: - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) + '@nx/devkit': 18.0.2(nx@18.0.2) transitivePeerDependencies: - nx dev: true - /@nrwl/esbuild@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-a3YLLE3hYx746PrKc1nIrOId8Kr9edaCNYdLqRFms3LQeYYvnOt3Tlsn917mH8jW2Cu4W7iyenTKqUZqcoTFyw==} + /@nrwl/esbuild@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-qSlt3wbVg+VQSCmzPC+JWyEQZWDuyInSZJEMVplqVNZD3H1XxF/Nzk15vGnautpdZj6VttqI2BT56IA8JsPDzg==} dependencies: - '@nx/esbuild': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/esbuild': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7135,10 +7118,10 @@ packages: - verdaccio dev: true - /@nrwl/eslint-plugin-nx@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.0.0)(eslint@8.48.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-J9D6nGpTlefdftNkhUALDjlLy3ipU6kjucmLYM1hSmkkzMdaslUDTiaFmrChQZJ+lanxB1rXYO4b1Rj+N4O5GQ==} + /@nrwl/eslint-plugin-nx@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.0.0)(eslint@8.48.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-cCwO5AnIU3HrwerB95uqmms9UkV+CtpICpYRHEucJLzC7AKbJ4PMzUXwKHDCW5X6n8z1E5IvGt9uGLAC7BEH9A==} dependencies: - '@nx/eslint-plugin': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.0.0)(eslint@8.48.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/eslint-plugin': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.0.0)(eslint@8.48.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7155,10 +7138,10 @@ packages: - verdaccio dev: true - /@nrwl/jest@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-MvsEWOYwlRuKC0wNv9YNl5GZz9Ev3ggnj58HNJhibF0ezNF6Fiav27N9TV2ZoLxpntFjCmFIhYpEU6P9kcm8nw==} + /@nrwl/jest@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-xYN7Ewar79AFMw03uVIeOoqYhC21jrKQm9R7xUxEZJC5n2sJKc56yPM8TsoZ8KTKkTrCQB8RbiGTtuh6zsYZ0A==} dependencies: - '@nx/jest': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/jest': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7191,10 +7174,10 @@ packages: - verdaccio dev: true - /@nrwl/js@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-5fZTT0M6HgbVc7mYI7wqU17FFxnvqqyyvkpWgRTvyQqsgJmmMlRIicQbUREhqmGBYs+i83fMT0V1mdKRrWL13Q==} + /@nrwl/js@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-gkvNdgcWct9svO0GG4jmYDvr7To69zibFPar43eIWrTUDB+oooA54+nB8GIqrU4P5caabQY+ePtRj77sC58qhg==} dependencies: - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7208,10 +7191,10 @@ packages: - verdaccio dev: true - /@nrwl/next@17.3.0-rc.1(@babel/core@7.23.2)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(next@14.0.4)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0): - resolution: {integrity: sha512-kS7kt3l7LU383xLY/9PNOUjDirhFKW0AzVApInaPHCsHypL2MBGHHXh7MMa1r5iwRbsKD6A5wOlrHK4n1fuNMw==} + /@nrwl/next@18.0.2(@babel/core@7.23.2)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(next@14.0.4)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0): + resolution: {integrity: sha512-n9HUBZIfUIKlpULiwuylv59vx/A/OEn87eCJP5gVVcl/J5lrCvH1froOVufdf6fcw0g7ZFb3GUDjEsrVpX0BEg==} dependencies: - '@nx/next': 17.3.0-rc.1(@babel/core@7.23.2)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(next@14.0.4)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0) + '@nx/next': 18.0.2(@babel/core@7.23.2)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(next@14.0.4)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0) transitivePeerDependencies: - '@babel/core' - '@babel/traverse' @@ -7220,7 +7203,6 @@ packages: - '@swc/wasm' - '@types/node' - debug - - eslint - file-loader - js-yaml - next @@ -7231,10 +7213,10 @@ packages: - webpack dev: true - /@nrwl/react@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0): - resolution: {integrity: sha512-VTH228Kepa7ZqMw3s6wCMD/TNViAx9epQjDt/nf0esvUDanB4e1BysfjmHCyljNQxdCnCyW7oR4TzARXCOFm9Q==} + /@nrwl/react@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-nu7IGkKsjuRjWDHI5cyT/Q6xeBIHPCUe4LC50+l9EzVJc3X91hr7Qp/7cI5c/84vDriZupZ/IMrFQfuVabadrg==} dependencies: - '@nx/react': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0) + '@nx/react': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7242,19 +7224,17 @@ packages: - '@swc/wasm' - '@types/node' - debug - - eslint - js-yaml - nx - supports-color - typescript - verdaccio - - webpack dev: true - /@nrwl/storybook@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-E9FtlmPCnJSoEUA2hDzq04lgBL82kaOanpEJGGIstIg41kYBIA+8/+lZeohtciubWmjzfJvQIC+Ga+vCYc3NSw==} + /@nrwl/storybook@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-OwXo57fQYfxNTf0Eknl9peXa/nai62ExEIWwkTKrOh+dgL4y4SRWCo8FvpDBAGALWoy8ZYI29ogElZhkKIj/9w==} dependencies: - '@nx/storybook': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/storybook': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7263,7 +7243,6 @@ packages: - '@types/node' - cypress - debug - - eslint - js-yaml - nx - supports-color @@ -7283,11 +7262,11 @@ packages: - debug dev: true - /@nrwl/tao@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86): - resolution: {integrity: sha512-hyOXdZen8G6UoDOWfPSkIenLYftGBds4hHfKeqQwzQuQClpg4ocMc1+8zuFw+FD+/eF1+uuwMM1xfJ7jjsEbCA==} + /@nrwl/tao@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86): + resolution: {integrity: sha512-stukJDZIP0H0Vw+I1DKVyG5grsSWdaemnYFzhkJl3IxNz1oN2kXGmGOd8j9JYEBiLJyQ15fFrEGnLRqSgXkT+A==} hasBin: true dependencies: - nx: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86) + nx: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86) tslib: 2.6.2 transitivePeerDependencies: - '@swc-node/register' @@ -7295,10 +7274,10 @@ packages: - debug dev: true - /@nrwl/vite@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(vite@5.0.8)(vitest@1.0.4): - resolution: {integrity: sha512-F1Tvbsjvd10SwMH2YhNrRBnBHMiuuVk91Njy2J7I6hyk8IGGtciVbIWu5haj3HnhEA4GfKgIba5iW/Q7koq82w==} + /@nrwl/vite@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4)(vite@5.0.8)(vitest@1.0.4): + resolution: {integrity: sha512-KayPn/yyCwQmsbL8RAxO/yy1AgYKt3Ow6Ag6BzAJ70Ob21hn6B8gn5bxa4G0nkxVJ5hboO5p70wqlo+zIpIKJA==} dependencies: - '@nx/vite': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(vite@5.0.8)(vitest@1.0.4) + '@nx/vite': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4)(vite@5.0.8)(vitest@1.0.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7314,10 +7293,10 @@ packages: - vitest dev: true - /@nrwl/web@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-N4OD1f5JYwJEmulrpMf8Z/Pdswia9Etqey0A6D7qUuRogSyXc+ZVTQ7Ri5IjwL95dRJLXhZDjSVIhuiEg0AxXw==} + /@nrwl/web@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-cRlnQq5iT6cGQKt2sOVECRlnQd8NBLRkNZHjYjeCnuijP+oYlx+5F4JLc+TWy3DTpYhyOodDT4v5+YqstyBEHA==} dependencies: - '@nx/web': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/web': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7331,10 +7310,10 @@ packages: - verdaccio dev: true - /@nrwl/webpack@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-tUdS71I5bAZStiICJD/QLJhMNWxdy8NfdLj1imz+QsuhTWfWlhzq55p9ghsOIFwDqhwIopqaVW7XGdUVmJ5q7g==} + /@nrwl/webpack@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-oPujjd7wcDZe16JKgKN5qBI3oeqErRyAgG5vMCSulbHGJA0Qx7fiMJPsAGp0poNDAgsXD51lRCYYss9sXKu6EA==} dependencies: - '@nx/webpack': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/webpack': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) transitivePeerDependencies: - '@babel/traverse' - '@parcel/css' @@ -7373,10 +7352,10 @@ packages: - debug dev: true - /@nrwl/workspace@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86): - resolution: {integrity: sha512-PEEi/PCOUE0i2aPSutKGEnFnemoyEQm8uSiFYiEiMkBC0//sS0KVrSn5XY+e9sHyHkJeFYelZwHYDryj6kqwAw==} + /@nrwl/workspace@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86): + resolution: {integrity: sha512-9b/wn/Hni8c94eso9m1T5WQB4OZGpqw9PkO8bLTKhECwvoTid+/5IJuQeKvZzTmuXaLE41m7i2hm2MdAj+wUrQ==} dependencies: - '@nx/workspace': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86) + '@nx/workspace': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86) transitivePeerDependencies: - '@swc-node/register' - '@swc/core' @@ -7620,8 +7599,8 @@ packages: - encoding dev: true - /@nx/angular@17.3.0-rc.1(@angular-devkit/build-angular@17.1.0)(@angular-devkit/core@17.1.0)(@angular-devkit/schematics@17.1.0)(@schematics/angular@17.1.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.48.0)(html-webpack-plugin@5.5.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-hbDZtSBaRDO+LBtZpaVUbtqfZsTTxmZb2GFJlB8O0XMkacBLlEW8MxTaUlS/JBJLrlhlpBGgYObLlPFUnzXjMw==} + /@nx/angular@18.0.2(@angular-devkit/build-angular@17.1.0)(@angular-devkit/core@17.1.0)(@angular-devkit/schematics@17.1.0)(@schematics/angular@17.1.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.48.0)(html-webpack-plugin@5.5.0)(js-yaml@4.1.0)(nx@18.0.2)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-o/gtKzThMPabmKXE3ePLPjP3AUv5pu+vr/B6unFzQtTmUFodKb1Mf7+RjsSAqCWLzAgdUyzVAXmUXV4VRu50jQ==} peerDependencies: '@angular-devkit/build-angular': '>= 15.0.0 < 18.0.0' '@angular-devkit/core': '>= 15.0.0 < 18.0.0' @@ -7636,27 +7615,27 @@ packages: '@angular-devkit/build-angular': 17.1.0(@angular/compiler-cli@17.1.0)(@swc/core@1.3.86)(@types/express@4.17.14)(@types/node@18.19.8)(html-webpack-plugin@5.5.0)(jest-environment-jsdom@29.4.3)(jest@29.4.3)(ng-packagr@17.1.1)(stylus@0.59.0)(tailwindcss@3.2.4)(typescript@5.3.3) '@angular-devkit/core': 17.1.0 '@angular-devkit/schematics': 17.1.0 - '@nrwl/angular': 17.3.0-rc.1(@angular-devkit/build-angular@17.1.0)(@angular-devkit/core@17.1.0)(@angular-devkit/schematics@17.1.0)(@schematics/angular@17.1.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.48.0)(html-webpack-plugin@5.5.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/cypress': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/eslint': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4) - '@nx/jest': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/web': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/webpack': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/workspace': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86) + '@nrwl/angular': 18.0.2(@angular-devkit/build-angular@17.1.0)(@angular-devkit/core@17.1.0)(@angular-devkit/schematics@17.1.0)(@schematics/angular@17.1.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.48.0)(html-webpack-plugin@5.5.0)(js-yaml@4.1.0)(nx@18.0.2)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/cypress': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/eslint': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4) + '@nx/jest': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/web': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/webpack': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/workspace': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.3.3) '@schematics/angular': 17.1.0 '@typescript-eslint/type-utils': 6.18.1(eslint@8.48.0)(typescript@5.3.3) chalk: 4.1.2 esbuild: 0.19.5 find-cache-dir: 3.3.2 - ignore: 5.2.4 + ignore: 5.3.1 magic-string: 0.30.5 minimatch: 9.0.3 piscina: 4.2.1 rxjs: 7.8.1 - semver: 7.5.3 + semver: 7.5.4 tslib: 2.6.2 webpack: 5.88.0(@swc/core@1.3.86)(esbuild@0.19.5) webpack-merge: 5.10.0 @@ -7692,22 +7671,22 @@ packages: - webpack-cli dev: true - /@nx/cypress@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-Ie49KljiDne1ifjLMx/QN1hYS3mCnlKfrdnjlqgK1CNq4hu4JgEx1DYH1Qpg0dFcHsdLHke5KzpJoBcKacLM5Q==} + /@nx/cypress@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-SsZZTmT1HLW/w/Zh2VqGAb7Ykuqdu51eIsvC+3HVVJfgZSM8Nvdtxp7JAWAHgreNbcghYcl0+giTyG0sdweCHw==} peerDependencies: cypress: '>= 3 < 14' peerDependenciesMeta: cypress: optional: true dependencies: - '@nrwl/cypress': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/eslint': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nrwl/cypress': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/eslint': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.3.3) cypress: 13.0.0 detect-port: 1.5.1 - semver: 7.5.3 + semver: 7.5.4 tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' @@ -7716,7 +7695,6 @@ packages: - '@swc/wasm' - '@types/node' - debug - - eslint - js-yaml - nx - supports-color @@ -7739,37 +7717,37 @@ packages: tslib: 2.6.2 dev: true - /@nx/devkit@17.3.0-rc.1(nx@17.3.0-rc.1): - resolution: {integrity: sha512-GmKonNk9CTCAk/Nxfj1mVf0JK+gh0K5DNA19i73Freif5eDL+pLSKL1oVeDWW+D6oibQVb1qUIvsukZDVQ0pEw==} + /@nx/devkit@18.0.2(nx@18.0.2): + resolution: {integrity: sha512-1LiAHWRYaQkSIUsNxynHM+k4luLDuErThXKsIdOyZr4Qkw0k7v/Aw7HMdx9Usgo+mC3wc+EF7SQUnWCnQ2KHww==} peerDependencies: nx: '>= 16 <= 18' dependencies: - '@nrwl/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) + '@nrwl/devkit': 18.0.2(nx@18.0.2) ejs: 3.1.8 enquirer: 2.3.6 - ignore: 5.2.4 - nx: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86) - semver: 7.5.3 + ignore: 5.3.1 + nx: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86) + semver: 7.5.4 tmp: 0.2.1 tslib: 2.6.2 yargs-parser: 21.1.1 dev: true - /@nx/esbuild@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-Qm6WmZDWYy4P/R+fiDMOOLeDS1MB3ppeU5bjAXnHAMsArcLngQ1R2frhIjYK869976OXc37M5W4oPIJ0UadFIw==} + /@nx/esbuild@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-8ZYlVJh/jOfom/PQ2QGQ/hKmxbP/LIJQN76ZHZXmIjqR/ntnWa26RPRQSaJU6jnzHuNBEaRBlewXPWYeGo9MTQ==} peerDependencies: esbuild: ~0.19.2 peerDependenciesMeta: esbuild: optional: true dependencies: - '@nrwl/esbuild': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nrwl/esbuild': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) chalk: 4.1.2 esbuild: 0.19.5 fast-glob: 3.2.7 - fs-extra: 11.1.1 + fs-extra: 11.2.0 tsconfig-paths: 4.1.2 tslib: 2.6.2 transitivePeerDependencies: @@ -7785,8 +7763,8 @@ packages: - verdaccio dev: true - /@nx/eslint-plugin@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.0.0)(eslint@8.48.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-MMdYFWmUbc2pEYfNlgb2k9DeIerQ9M958E6yMqugjc1OojNEbH+KyrjwgCtr5kIOUXSVZiSd9cMbEEWthB4kYg==} + /@nx/eslint-plugin@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.0.0)(eslint@8.48.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-9Bn1w7WkNFwELz5TL64R+450rhWWAXXqJneC6K4y9Uoxd6qB/8tRK0fAydAT+JN3TMk5DjfejhpW2emPHlyr2w==} peerDependencies: '@typescript-eslint/parser': ^6.13.2 eslint-config-prettier: ^9.0.0 @@ -7794,9 +7772,9 @@ packages: eslint-config-prettier: optional: true dependencies: - '@nrwl/eslint-plugin-nx': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.0.0)(eslint@8.48.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nrwl/eslint-plugin-nx': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.0.0)(eslint@8.48.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@typescript-eslint/parser': 6.18.1(eslint@8.48.0)(typescript@5.3.3) '@typescript-eslint/type-utils': 6.18.1(eslint@8.48.0)(typescript@5.3.3) '@typescript-eslint/utils': 6.18.1(eslint@8.48.0)(typescript@5.3.3) @@ -7804,7 +7782,7 @@ packages: confusing-browser-globals: 1.0.11 eslint-config-prettier: 9.0.0(eslint@8.48.0) jsonc-eslint-parser: 2.1.0 - semver: 7.5.3 + semver: 7.5.4 tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' @@ -7820,20 +7798,17 @@ packages: - verdaccio dev: true - /@nx/eslint@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4): - resolution: {integrity: sha512-3Ze13Sz3AdQ0ZcMZ2f80Map24mFF+R1eaFC5dbTp6RdIpTM5CkryAwkv+vXxJU2f2w08CEgAkPoPqYxhgX7FwQ==} + /@nx/eslint@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4): + resolution: {integrity: sha512-oipV2P0fzh9faCV86145vFPrKgMWqeLhGceqrEx83waXdqhebQ6ByQg8thrrIg6mSLkssdeg1OltZAZnO2MhVQ==} peerDependencies: - eslint: ^8.0.0 js-yaml: 4.1.0 peerDependenciesMeta: - eslint: - optional: true js-yaml: optional: true dependencies: - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/linter': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/linter': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4) eslint: 8.48.0 js-yaml: 4.1.0 tslib: 2.6.2 @@ -7850,14 +7825,14 @@ packages: - verdaccio dev: true - /@nx/jest@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-DkOIlw8UZHY2iIOlsguMppjEozOhmJIRhR3t1W9hSq1Fyr5PCnEplT0LhJ4zu8mvd/vB7JhH8GFRY/uuS2u99w==} + /@nx/jest@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-e+/Q6GnA4j+mdjvga663VrqFROO4PpTJzijxdKPnGmoA09MWN7quoIk4mYG1LdK+mhUYG6IcG6GSgz18PIOUUQ==} dependencies: '@jest/reporters': 29.5.0 '@jest/test-result': 29.7.0 - '@nrwl/jest': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nrwl/jest': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(ts-node@10.9.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.3.3) chalk: 4.1.2 identity-obj-proxy: 3.0.0 @@ -7933,8 +7908,8 @@ packages: - typescript dev: true - /@nx/js@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-eYyMDWOaLqv1jMybIKZgXTDem364IzGiBrrVl7Qhk4Bbo8FIPYsnUPxLLW+E6FWDKaea9JNtG/lwu3dZpIDPtQ==} + /@nx/js@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-Znc8ywE871OrAaMeR0OB1TojiY5dtDCme1TciZ2oNvH8Qb3IMd9AxL0XqcL2N6Rc2U6UxPb9CajQ02v8k3sRRQ==} peerDependencies: verdaccio: ^5.0.4 peerDependenciesMeta: @@ -7942,15 +7917,15 @@ packages: optional: true dependencies: '@babel/core': 7.23.7 - '@babel/plugin-proposal-decorators': 7.22.7(@babel/core@7.23.7) + '@babel/plugin-proposal-decorators': 7.23.9(@babel/core@7.23.7) '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.7) '@babel/plugin-transform-runtime': 7.23.7(@babel/core@7.23.7) '@babel/preset-env': 7.23.7(@babel/core@7.23.7) '@babel/preset-typescript': 7.22.5(@babel/core@7.23.7) '@babel/runtime': 7.23.7 - '@nrwl/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/workspace': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86) + '@nrwl/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/workspace': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.3.3) babel-plugin-const-enum: 1.2.0(@babel/core@7.23.7) babel-plugin-macros: 2.8.0 @@ -7959,14 +7934,14 @@ packages: columnify: 1.6.0 detect-port: 1.5.1 fast-glob: 3.2.7 - fs-extra: 11.1.1 - ignore: 5.2.4 + fs-extra: 11.2.0 + ignore: 5.3.1 js-tokens: 4.0.0 minimatch: 9.0.3 npm-package-arg: 11.0.1 npm-run-path: 4.0.1 ora: 5.3.0 - semver: 7.5.3 + semver: 7.5.4 source-map-support: 0.5.19 ts-node: 10.9.1(@swc/core@1.3.86)(@types/node@18.19.8)(typescript@5.3.3) tsconfig-paths: 4.1.2 @@ -7984,10 +7959,10 @@ packages: - typescript dev: true - /@nx/linter@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4): - resolution: {integrity: sha512-QIySi1pkfR0shlwyPYaatECQ+a8Y1/dz4KI9Ktoy9+q2/XTZudp14dCbjawmisWJJ6GD/iqHo/GPbQVqt8B57w==} + /@nx/linter@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4): + resolution: {integrity: sha512-VbbnebIX+qKYbkLHZV6yQr8Nb5uOWUqvy02cLfIfU8I7DIMq9jLEPCYaSgYb6hm5tGSbFepXxNbobBdhNKT9jQ==} dependencies: - '@nx/eslint': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4) + '@nx/eslint': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7995,33 +7970,32 @@ packages: - '@swc/wasm' - '@types/node' - debug - - eslint - js-yaml - nx - supports-color - verdaccio dev: true - /@nx/next@17.3.0-rc.1(@babel/core@7.23.2)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(next@14.0.4)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0): - resolution: {integrity: sha512-kG3nE5MqyWLBHfz+smw8Ut1wIHGMjJ0s2WVZVLODEE+hgRVcjDMrImusXs5UHtoXMw88ZvHhzzdFTe+dI4vhUA==} + /@nx/next@18.0.2(@babel/core@7.23.2)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(next@14.0.4)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0): + resolution: {integrity: sha512-cfRAR/+i2yLTN0mES2zAHkY+k7WVtuPJ21szoYcVY1w4uMRWc5SWe3WLupl2oX798o5DBvIwOTnN6KvK7jLIxw==} peerDependencies: - next: '>=13.0.0' + next: '>=14.0.0' dependencies: - '@babel/plugin-proposal-decorators': 7.22.7(@babel/core@7.23.2) - '@nrwl/next': 17.3.0-rc.1(@babel/core@7.23.2)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(next@14.0.4)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/eslint': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/react': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0) - '@nx/web': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/workspace': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86) + '@babel/plugin-proposal-decorators': 7.23.9(@babel/core@7.23.2) + '@nrwl/next': 18.0.2(@babel/core@7.23.2)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(next@14.0.4)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/eslint': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/react': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/web': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/workspace': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86) '@svgr/webpack': 8.0.1(typescript@5.3.3) chalk: 4.1.2 copy-webpack-plugin: 10.2.4(webpack@5.88.0) - fs-extra: 11.1.1 - ignore: 5.2.4 + fs-extra: 11.2.0 + ignore: 5.3.1 next: 14.0.4(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0)(sass@1.55.0) - semver: 7.5.3 + semver: 7.5.4 tslib: 2.6.2 url-loader: 4.1.1(webpack@5.88.0) webpack-merge: 5.10.0 @@ -8033,7 +8007,6 @@ packages: - '@swc/wasm' - '@types/node' - debug - - eslint - file-loader - js-yaml - nx @@ -8052,8 +8025,8 @@ packages: dev: true optional: true - /@nx/nx-darwin-arm64@17.3.0-rc.1: - resolution: {integrity: sha512-Q6omLq0/4HwA1yygAZhDuXG4kbj3nYu8Txnjy2IlNqthqMGT/3tTNm0CPQEK2HwP/96+nTspRUdjs1fc8zcZTg==} + /@nx/nx-darwin-arm64@18.0.2: + resolution: {integrity: sha512-zFW5GDrH3GRdm5FePCYuCAEWvJ/G7iiB3jgP0zvLTRe06BQ4Z3bKCQu1v0B/mA7kR+cCY0ZtgHE+9UhK+lWarw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -8070,8 +8043,8 @@ packages: dev: true optional: true - /@nx/nx-darwin-x64@17.3.0-rc.1: - resolution: {integrity: sha512-8jiY+CCPeFpjYlXjUrDUscwbVzW2sUoaW4es7AQZIpxNkX5UvPnjBAihlQQmBPVsF8e8ONlTLaB8ySFrGL44DA==} + /@nx/nx-darwin-x64@18.0.2: + resolution: {integrity: sha512-Iihl8MK7NiDxn6pyhe/sctEv5J2MOK2bLJH3hBgJXbq8h278jAXqM5zLxVO49Kya65K7idAu1g5nvrRtafUIXg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -8088,8 +8061,8 @@ packages: dev: true optional: true - /@nx/nx-freebsd-x64@17.3.0-rc.1: - resolution: {integrity: sha512-nKFBvLcZbuwPEds9q++QlRCUKcXVekf0eYPBC6WtLL/lhqPfvdEuwx8jh/vkkhNh5v17XzxZfapVG4EjzB4Adg==} + /@nx/nx-freebsd-x64@18.0.2: + resolution: {integrity: sha512-D6pFFLRZs5f99oF3nHWMHhEYBVDB7x0kaDuR+96FfQlZXPU2SSQ+fzV1TREeQPhfHf9owgcduiE4utrOgJBTOQ==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] @@ -8106,8 +8079,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm-gnueabihf@17.3.0-rc.1: - resolution: {integrity: sha512-0DxkyMeGdpSJWA9IlIQZPZyujfWrAJ2ib1qFQrd1Jf039rz/jjRU0bi2p1ejCi1tLXmKyYdZT5cty7Cm2oTaCg==} + /@nx/nx-linux-arm-gnueabihf@18.0.2: + resolution: {integrity: sha512-TCEKHBByEqIjiMNGOWS3maPpqQq1syUKOfp4fLJyE9A+NEK0th/6s65RWtzQR/GBUsi5r5y5g/pt+XFup+DrMA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -8124,8 +8097,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm64-gnu@17.3.0-rc.1: - resolution: {integrity: sha512-ezFwdqIZIy0XG349+FYw4kovMh4Kniy1SsZrD8w4yHUKgVSBXA1pi1N7CrTgINlq8wFamhIDuKG3IIAI9ifv8A==} + /@nx/nx-linux-arm64-gnu@18.0.2: + resolution: {integrity: sha512-oYWeWtLmtM2LmsTStc6P4xUSJvpZxHZCoHIAFw1Rw7LQRbTyky19XR87F2mbEJbhSPMymeeLDR6SN0JSplODLg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -8142,8 +8115,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm64-musl@17.3.0-rc.1: - resolution: {integrity: sha512-Xf2tyzfIPEj7aFwoxnU1nIgUi9Z76MIn2aLXzJkzIj+QosIKhtiwhBCT6qPq+1sVkW9fHie/ivgzfpFlD/QHUQ==} + /@nx/nx-linux-arm64-musl@18.0.2: + resolution: {integrity: sha512-9I27P5IilvICsLJxmh79OG6Y21uFKaqDAKCDlc608cyAH48Rq9xVM24DEQD0cITbfOjMRBBO2rMl7XX3b81w9Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -8160,8 +8133,8 @@ packages: dev: true optional: true - /@nx/nx-linux-x64-gnu@17.3.0-rc.1: - resolution: {integrity: sha512-nmKECG2cu+YFJAYqTBfpYPnIs+TM3I4j2Vqq2Z7ii92ZHJW+B2Q+hzSvEK6WbLtqGF2i37Ebw21Ooeyp5Qd0Rg==} + /@nx/nx-linux-x64-gnu@18.0.2: + resolution: {integrity: sha512-4ZWmgrIJC+4kDkMn8xEEcraVlMkBSwMIaAdKkaewEFLGKiGbURDyfSZu2kmnV+Y8+niRt75TD7skOmgMmXIvcg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -8178,8 +8151,8 @@ packages: dev: true optional: true - /@nx/nx-linux-x64-musl@17.3.0-rc.1: - resolution: {integrity: sha512-GAkDXr7EBhhaosJexHlMBQ7VWKXAMXUhl4GweeTTQXgJsgLobxUGaq8hX+PYrhsSXn/KiBOqA+HFPw56I5BxpA==} + /@nx/nx-linux-x64-musl@18.0.2: + resolution: {integrity: sha512-zEaO53G3xOYEZ0loBdKCYcnXganzkbv8daWMxNCjBtstyTN3sfRH7KKM8Z6dp0xw4toxxuCC4OsYGmRKnps+Dg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -8196,8 +8169,8 @@ packages: dev: true optional: true - /@nx/nx-win32-arm64-msvc@17.3.0-rc.1: - resolution: {integrity: sha512-IZ36XdpyQdqiWp6y2fRODTmWNPGY+rI45BUq/NYqyvLAwfu3Aw34Br6kQdv4TrY8i7oiDyLysfSm1CaURt42xw==} + /@nx/nx-win32-arm64-msvc@18.0.2: + resolution: {integrity: sha512-pLc0SC/bEh8TC5H//pD+vHYUNCdYLWsMB9xAdey6V2qmKPrrDuWTs69qh0zCW4S1Jm8C9XK1av5mWIp2Fj8KnA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -8214,8 +8187,8 @@ packages: dev: true optional: true - /@nx/nx-win32-x64-msvc@17.3.0-rc.1: - resolution: {integrity: sha512-RJ8kDEV+gVTCewqs0dT/+c+hQFAqSIR5li8WsDuOoxPmCAPzUlIPdXKMYQPMth7Scn/WA3Pu6QetjBr1TSoObQ==} + /@nx/nx-win32-x64-msvc@18.0.2: + resolution: {integrity: sha512-alWijWoroV65IRLdAQhFpINS9SRYSncWVT7CYe1iWwjiT16Un2i4NDoselpADuAsYC+Rgd+4h5Y+XzwtsQ55gg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -8223,17 +8196,18 @@ packages: dev: true optional: true - /@nx/playwright@17.3.0-rc.1(@playwright/test@1.36.1)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-CFoiUiC0331js7d2+8JYoDwzcZP1QubnVV/ZLXYJAP7UZuzl30fb/5vqahK1raocnfvbyrLyyYLvHAD1e6GebA==} + /@nx/playwright@18.0.2(@playwright/test@1.36.1)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-k+3Gj6lerV4ieSa4jipyxRmnm4q1bTnm+17RGIBCALkklgbmjkMxfzkrcu/lSoUgBPDTOp2LaTq+4UVT94V5QA==} peerDependencies: '@playwright/test': ^1.36.0 peerDependenciesMeta: '@playwright/test': optional: true dependencies: - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/eslint': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/eslint': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.3.3) '@playwright/test': 1.36.1 minimatch: 9.0.3 tslib: 2.6.2 @@ -8244,7 +8218,6 @@ packages: - '@swc/wasm' - '@types/node' - debug - - eslint - js-yaml - nx - supports-color @@ -8252,18 +8225,17 @@ packages: - verdaccio dev: true - /@nx/react@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0): - resolution: {integrity: sha512-4VqHykArZEIcSDfC2J561kRhONZJFhuQ0n6uZn3w/7zL8+gGcdo8WszklUXwyaEw6H9TCT1nQI/D6kbEGwZ1Iw==} + /@nx/react@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-Qt9qvVnVWH7ZNRqlSQB2JbWT+aaW9N1h9VxHWoxt+Z5Era5rskCxNvQNKOdd3m0UZq8gSH4hRUA+tXsOPbOr6g==} dependencies: - '@nrwl/react': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(webpack@5.88.0) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/eslint': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/web': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nrwl/react': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/eslint': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/web': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.3.3) '@svgr/webpack': 8.0.1(typescript@5.3.3) chalk: 4.1.2 - file-loader: 6.2.0(webpack@5.88.0) minimatch: 9.0.3 tslib: 2.6.2 transitivePeerDependencies: @@ -8273,25 +8245,23 @@ packages: - '@swc/wasm' - '@types/node' - debug - - eslint - js-yaml - nx - supports-color - typescript - verdaccio - - webpack dev: true - /@nx/storybook@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-oXZ28f8OTiCXJ7SAFMDvaBIlLCh4tVvnyPCDMMow5jQLvsqDxtYelV4kTo7qjPGprBAI59RyDODrGboHpnPvjw==} + /@nx/storybook@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-xLzVvb0hUMRocEIM/mRVahsErmJ2YxXiH0V09pREmP2KEmg9zMrI3kRq+8N2ACsVL4OmaCwCHb0kVO39rF+pSw==} dependencies: - '@nrwl/storybook': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/cypress': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/eslint': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(eslint@8.48.0)(js-yaml@4.1.0)(nx@17.3.0-rc.1)(verdaccio@5.15.4) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nrwl/storybook': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/cypress': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(cypress@13.0.0)(js-yaml@4.1.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/eslint': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.0.2)(verdaccio@5.15.4) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.3.3) - semver: 7.5.3 + semver: 7.5.4 tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' @@ -8301,7 +8271,6 @@ packages: - '@types/node' - cypress - debug - - eslint - js-yaml - nx - supports-color @@ -8309,15 +8278,15 @@ packages: - verdaccio dev: true - /@nx/vite@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(vite@5.0.8)(vitest@1.0.4): - resolution: {integrity: sha512-pz1s2qthuVEPzt5uK2VvEa2IdVB9uk9HFEPbrJWjNmPgbNkGDNihNOzYCUow/PzeBSrpc/TA3A7pELNXEZuRQw==} + /@nx/vite@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4)(vite@5.0.8)(vitest@1.0.4): + resolution: {integrity: sha512-DxxcbOnRrdh/sVHbZgw9lTiUGv4SwmnXIBxqCqiO/AoLfJ7EXy/r+9l0vkZMNYVLWXuIQquG6EttR1dM74UXYg==} peerDependencies: vite: ^5.0.0 vitest: ^1.0.0 dependencies: - '@nrwl/vite': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4)(vite@5.0.8)(vitest@1.0.4) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nrwl/vite': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4)(vite@5.0.8)(vitest@1.0.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.3.3) '@swc/helpers': 0.5.3 enquirer: 2.3.6 @@ -8337,12 +8306,12 @@ packages: - verdaccio dev: true - /@nx/web@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-+UMEXrhW2l9+5+qu8OwVi7GMq0Dnvm0nSWV1kwPmv3Qz/+XJKE7zjKe5nbTTe9oqTIuT3dLPAMAEmvGx7tqJ5g==} + /@nx/web@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-xdhSa9unhelK0fIBGMNG/o8zvh961MGXaSVSrSkBuIcXd/bT8E3c0gMI/4GxeUtXOzPuycS2OZlFtGemv2uKHQ==} dependencies: - '@nrwl/web': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nrwl/web': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) chalk: 4.1.2 detect-port: 1.5.1 http-server: 14.1.0 @@ -8360,13 +8329,13 @@ packages: - verdaccio dev: true - /@nx/webpack@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4): - resolution: {integrity: sha512-nYBpxoV1fC4In4MCTg09e+wGbuXHigDm7KmJ3FgFFJD0ByDJcJ8Xq181qkewdkSPx+uiBtnhRLbk7A1PswLxqg==} + /@nx/webpack@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4): + resolution: {integrity: sha512-UXt87yFQr8GifCA5JJn0yBaQwOrw25jduPVZQ6ISEYmElCQdIOeQfWNP2o+8Q/4wta4SOKcR4vAFEwU+qHESMg==} dependencies: '@babel/core': 7.23.7 - '@nrwl/webpack': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) - '@nx/js': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@17.3.0-rc.1)(typescript@5.3.3)(verdaccio@5.15.4) + '@nrwl/webpack': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(esbuild@0.19.5)(html-webpack-plugin@5.5.0)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) + '@nx/devkit': 18.0.2(nx@18.0.2) + '@nx/js': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.0.2)(typescript@5.3.3)(verdaccio@5.15.4) autoprefixer: 10.4.13(postcss@8.4.19) babel-loader: 9.1.3(@babel/core@7.23.7)(webpack@5.88.0) browserslist: 4.22.2 @@ -8443,14 +8412,14 @@ packages: - debug dev: true - /@nx/workspace@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86): - resolution: {integrity: sha512-+mIenGDx5YaPyzWUAZCeOqjTTMGP6Irs0p/zUF6lcdSVQD0g2RNSVW4yC2n9E0zsEth1qjusVjAn6h0pqLIS/w==} + /@nx/workspace@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86): + resolution: {integrity: sha512-xG8Gr5gJVkByUZLOoSb1KmS2Ur9u+oSRHNhOLQ7B5wog80JIDIxHCLxiWbaFWDjfKU0q/sfqKqwY26MqYCIIWQ==} dependencies: - '@nrwl/workspace': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86) - '@nx/devkit': 17.3.0-rc.1(nx@17.3.0-rc.1) + '@nrwl/workspace': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86) + '@nx/devkit': 18.0.2(nx@18.0.2) chalk: 4.1.2 enquirer: 2.3.6 - nx: 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86) + nx: 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86) tslib: 2.6.2 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -16382,7 +16351,7 @@ packages: postcss-modules-scope: 3.0.0(postcss@8.4.33) postcss-modules-values: 4.0.0(postcss@8.4.33) postcss-value-parser: 4.2.0 - semver: 7.5.3 + semver: 7.5.4 webpack: 5.88.0(@swc/core@1.3.86)(esbuild@0.19.5) dev: true @@ -16399,7 +16368,7 @@ packages: postcss-modules-scope: 3.0.0(postcss@8.4.33) postcss-modules-values: 4.0.0(postcss@8.4.33) postcss-value-parser: 4.2.0 - semver: 7.5.3 + semver: 7.5.4 webpack: 5.89.0(@swc/core@1.3.86)(esbuild@0.19.11) dev: true @@ -18959,17 +18928,6 @@ packages: flat-cache: 3.0.4 dev: true - /file-loader@6.2.0(webpack@5.88.0): - resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.1.2 - webpack: 5.88.0(@swc/core@1.3.86)(esbuild@0.19.5) - dev: true - /file-system-cache@2.3.0: resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} dependencies: @@ -24981,7 +24939,7 @@ packages: fs-extra: 11.2.0 glob: 7.1.4 ignore: 5.3.1 - jest-diff: 29.5.0 + jest-diff: 29.7.0 js-yaml: 4.1.0 jsonc-parser: 3.2.0 lines-and-columns: 2.0.3 @@ -25014,8 +24972,8 @@ packages: - debug dev: true - /nx@17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86): - resolution: {integrity: sha512-GBhyo8PDzeK9Zv4JLYUkqOE0ulUGdPINfunZsKxp1oQNUlGlWpmZuLs1TFtK8vF6y7BwwtO1OObBNWF12d57LA==} + /nx@18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86): + resolution: {integrity: sha512-Ibnz493HnANU15Bg/oVi/X0BO35KkU0zkOmWYeaJEhpFdGNOKzH5pdPYuTuToQiViCNpXLsPo4rPIv2pdMAclA==} hasBin: true requiresBuild: true peerDependencies: @@ -25027,7 +24985,7 @@ packages: '@swc/core': optional: true dependencies: - '@nrwl/tao': 17.3.0-rc.1(@swc-node/register@1.6.8)(@swc/core@1.3.86) + '@nrwl/tao': 18.0.2(@swc-node/register@1.6.8)(@swc/core@1.3.86) '@swc-node/register': 1.6.8(@swc/core@1.3.86)(typescript@5.3.3) '@swc/core': 1.3.86(@swc/helpers@0.5.3) '@yarnpkg/lockfile': 1.1.0 @@ -25043,8 +25001,8 @@ packages: enquirer: 2.3.6 figures: 3.2.0 flat: 5.0.2 - fs-extra: 11.1.1 - ignore: 5.2.4 + fs-extra: 11.2.0 + ignore: 5.3.1 jest-diff: 29.7.0 js-yaml: 4.1.0 jsonc-parser: 3.2.0 @@ -25054,7 +25012,7 @@ packages: npm-run-path: 4.0.1 open: 8.4.2 ora: 5.3.0 - semver: 7.5.3 + semver: 7.5.4 string-width: 4.2.3 strong-log-transformer: 2.1.0 tar-stream: 2.2.0 @@ -25064,16 +25022,16 @@ packages: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 17.3.0-rc.1 - '@nx/nx-darwin-x64': 17.3.0-rc.1 - '@nx/nx-freebsd-x64': 17.3.0-rc.1 - '@nx/nx-linux-arm-gnueabihf': 17.3.0-rc.1 - '@nx/nx-linux-arm64-gnu': 17.3.0-rc.1 - '@nx/nx-linux-arm64-musl': 17.3.0-rc.1 - '@nx/nx-linux-x64-gnu': 17.3.0-rc.1 - '@nx/nx-linux-x64-musl': 17.3.0-rc.1 - '@nx/nx-win32-arm64-msvc': 17.3.0-rc.1 - '@nx/nx-win32-x64-msvc': 17.3.0-rc.1 + '@nx/nx-darwin-arm64': 18.0.2 + '@nx/nx-darwin-x64': 18.0.2 + '@nx/nx-freebsd-x64': 18.0.2 + '@nx/nx-linux-arm-gnueabihf': 18.0.2 + '@nx/nx-linux-arm64-gnu': 18.0.2 + '@nx/nx-linux-arm64-musl': 18.0.2 + '@nx/nx-linux-x64-gnu': 18.0.2 + '@nx/nx-linux-x64-musl': 18.0.2 + '@nx/nx-win32-arm64-msvc': 18.0.2 + '@nx/nx-win32-x64-msvc': 18.0.2 transitivePeerDependencies: - debug dev: true @@ -28718,8 +28676,8 @@ packages: - ts-node dev: true - /rollup-plugin-typescript2@0.34.1(rollup@2.79.0)(typescript@5.3.3): - resolution: {integrity: sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==} + /rollup-plugin-typescript2@0.36.0(rollup@2.79.0)(typescript@5.3.3): + resolution: {integrity: sha512-NB2CSQDxSe9+Oe2ahZbf+B4bh7pHwjV5L+RSYpCu7Q5ROuN94F9b6ioWwKfz3ueL3KTtmX4o2MUH2cgHDIEUsw==} peerDependencies: rollup: '>=1.26.3' typescript: '>=2.4.0' @@ -28728,8 +28686,8 @@ packages: find-cache-dir: 3.3.2 fs-extra: 10.1.0 rollup: 2.79.0 - semver: 7.5.3 - tslib: 2.5.0 + semver: 7.5.4 + tslib: 2.6.2 typescript: 5.3.3 dev: true @@ -33427,7 +33385,3 @@ packages: /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} dev: true - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false