diff --git a/.github/workflows/cloud-deploy-preview.yml b/.github/workflows/cloud-deploy-preview_reusable.yml
similarity index 73%
rename from .github/workflows/cloud-deploy-preview.yml
rename to .github/workflows/cloud-deploy-preview_reusable.yml
index a24f9f00d5..e0cb024565 100644
--- a/.github/workflows/cloud-deploy-preview.yml
+++ b/.github/workflows/cloud-deploy-preview_reusable.yml
@@ -5,6 +5,10 @@ name: "[Cloud] Preview Deploy"
on:
workflow_call:
inputs:
+ project:
+ required: true
+ type: string
+ description: "The project to deploy"
baseRef:
required: true
type: string
@@ -12,7 +16,7 @@ on:
defaults:
run:
- working-directory: ./cloud/infrastructure
+ working-directory: ./infra
jobs:
build-and-preview:
@@ -24,10 +28,10 @@ jobs:
- name: ✋ Set up mutex
id: mutex-setup
run: |
- pushd ../../discrete/Signalco.Discrete.Api.Mutex/node-cli
+ pushd ../discrete/Signalco.Discrete.Api.Mutex/node-cli
npm install
npm install -g
- npx mutex wait signalcocloudpreview
+ npx mutex wait signalcoinfrapreview${{ inputs.project }}
popd
- name: ✨ Setup DotNet
@@ -45,7 +49,7 @@ jobs:
with:
node-version: "20.x"
cache: pnpm
- cache-dependency-path: ./cloud/infrastructure
+ cache-dependency-path: ./infra
- name: 📦️ Installing dependencies
run: pnpm i --frozen-lockfile
@@ -63,12 +67,15 @@ jobs:
env:
BASE_BRANCH: ${{ inputs.baseRef }}
+ - name: ⚒️ Build Infrastructure
+ run: pnpm build
+
- name: ⚡ Preview Deploy Infrastructure
uses: pulumi/actions@v4
with:
command: preview
- stack-name: signalco/cloud-primary/${{ steps.extract_branch.outputs.stack }}
- work-dir: ./cloud/infrastructure
+ stack-name: signalco/${{ inputs.project }}/${{ steps.extract_branch.outputs.stack }}
+ work-dir: ./infra/apps/${{ inputs.project }}
comment-on-pr: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -77,8 +84,8 @@ jobs:
- name: ✋ Release mutex
if: always() && steps.mutex-setup.outcome == 'success'
run: |
- pushd ../../discrete/Signalco.Discrete.Api.Mutex/node-cli
+ pushd ../discrete/Signalco.Discrete.Api.Mutex/node-cli
npm install
npm install -g
- npx mutex release signalcocloudpreview
+ npx mutex release signalcoinfrapreview${{ inputs.project }}
popd
diff --git a/.github/workflows/cloud-deploy.yml b/.github/workflows/cloud-deploy.yml
index ffbbb13aad..c9d2814dce 100644
--- a/.github/workflows/cloud-deploy.yml
+++ b/.github/workflows/cloud-deploy.yml
@@ -7,7 +7,7 @@ on:
branches: [main, next]
paths:
- "cloud/**"
- - "infrastructure/**"
+ - "infra/**"
- ".github/workflows/cloud-deploy.yml"
env:
@@ -15,7 +15,7 @@ env:
defaults:
run:
- working-directory: ./cloud/infrastructure
+ working-directory: ./infra
jobs:
build-and-deploy:
@@ -27,7 +27,7 @@ jobs:
- name: ✋ Set up mutex
id: mutex-setup
run: |
- pushd ../../discrete/Signalco.Discrete.Api.Mutex/node-cli
+ pushd ../discrete/Signalco.Discrete.Api.Mutex/node-cli
npm install
npm install -g
npx mutex wait signalcoclouddeploy
@@ -48,7 +48,7 @@ jobs:
with:
node-version: "20.x"
cache: pnpm
- cache-dependency-path: ./cloud/infrastructure
+ cache-dependency-path: ./infra
- name: 📦️ Installing dependencies
run: pnpm i --frozen-lockfile
@@ -61,12 +61,25 @@ jobs:
env:
BASE_BRANCH: ${{ github.base_ref }}
- - name: ⚡ Deploy Infrastructure
+ - name: ⚒️ Build Infrastructure
+ run: pnpm build
+
+ - name: ⚡ Deploy signalco Infrastructure
uses: pulumi/actions@v4
with:
command: up
stack-name: signalco/cloud-primary/${{ steps.extract_branch.outputs.branch }}
- work-dir: ./cloud/infrastructure
+ work-dir: ./infra/apps/cloud-primary
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
+
+ - name: ⚡ Deploy uier Infrastructure
+ uses: pulumi/actions@v4
+ with:
+ command: up
+ stack-name: signalco/uier/${{ steps.extract_branch.outputs.branch }}
+ work-dir: ./infra/apps/uier
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
@@ -74,7 +87,7 @@ jobs:
- name: ✋ Release mutex
if: always() && steps.mutex-setup.outcome == 'success'
run: |
- pushd ../../discrete/Signalco.Discrete.Api.Mutex/node-cli
+ pushd ../discrete/Signalco.Discrete.Api.Mutex/node-cli
npm install
npm install -g
npx mutex release signalcoclouddeploy
diff --git a/.github/workflows/web-nextjs_bundle_analysis.yml b/.github/workflows/web-nextjs_bundle_analysis.yml
index af01b4ffbb..c97b378842 100644
--- a/.github/workflows/web-nextjs_bundle_analysis.yml
+++ b/.github/workflows/web-nextjs_bundle_analysis.yml
@@ -5,11 +5,12 @@ name: '[Web] CI'
on:
pull_request:
paths:
- - 'web/**'
+ - 'web/**'
- 'cloud/**'
+ - 'infra/**'
- '.github/workflows/web-nextjs_bundle_analysis.yml'
- '.github/workflows/nextjs_bundle_analysis_reusable.yml'
- - '.github/workflows/cloud-deploy-preview.yml'
+ - '.github/workflows/cloud-deploy-preview_reusable.yml'
push:
branches:
- main
@@ -17,17 +18,28 @@ on:
paths:
- 'web/**'
- 'cloud/**'
+ - 'infra/**'
- '.github/workflows/web-nextjs_bundle_analysis.yml'
- '.github/workflows/nextjs_bundle_analysis_reusable.yml'
- - '.github/workflows/cloud-deploy-preview.yml'
+ - '.github/workflows/cloud-deploy-preview_reusable.yml'
workflow_dispatch:
jobs:
cloud_preview:
name: "Cloud (preview)"
- uses: ./.github/workflows/cloud-deploy-preview.yml
+ uses: ./.github/workflows/cloud-deploy-preview_reusable.yml
if: success() && github.event_name == 'pull_request'
with:
+ project: "cloud-primary"
+ baseRef: ${{ github.base_ref }}
+ secrets: inherit
+
+ uier_infra_preview:
+ name: "uier infrastructure (preview)"
+ uses: ./.github/workflows/cloud-deploy-preview_reusable.yml
+ if: success() && github.event_name == 'pull_request'
+ with:
+ project: "uier"
baseRef: ${{ github.base_ref }}
secrets: inherit
@@ -40,7 +52,7 @@ jobs:
path: 'web/apps/blog'
vercelProjectId: 'prj_VT7qOjkcEvkAsZH7MtSxWcVDWVpr'
secrets: inherit
-
+
analyze_app:
name: "App"
uses: ./.github/workflows/nextjs_bundle_analysis_reusable.yml
@@ -60,7 +72,7 @@ jobs:
path: 'web/apps/brandgrab'
vercelProjectId: 'prj_QHQO9V4WwYqlcpXNufZ4SU3Ryftx'
secrets: inherit
-
+
analyze_web:
name: "Web"
uses: ./.github/workflows/nextjs_bundle_analysis_reusable.yml
@@ -70,7 +82,7 @@ jobs:
path: 'web/apps/web'
vercelProjectId: 'prj_PYE8WwpynTfjD6rVMiCp7sZoCPYw'
secrets: inherit
-
+
analyze_slco:
name: "slco"
uses: ./.github/workflows/nextjs_bundle_analysis_reusable.yml
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000000..b58b603fea
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000000..03d9549ea8
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000..d4eacc644b
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/signalco.iml b/.idea/signalco.iml
new file mode 100644
index 0000000000..6f3fd12e3b
--- /dev/null
+++ b/.idea/signalco.iml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000..35eb1ddfbb
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/webResources.xml b/.idea/webResources.xml
new file mode 100644
index 0000000000..9cd99dfe71
--- /dev/null
+++ b/.idea/webResources.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index dd4d55b54c..66a1cda62e 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,44 @@
-
-
-
+
+
+
Automate your life.
- Getting Started •
- Key Features •
- Community •
- Contributing •
- Development
+ Getting Started •
+ Key Features •
+ Community •
+ Contributing •
+ Related •
+ License •
+ Sponsors
## Getting Started
-Visit [https://www.signalco.io/learn](https://www.signalco.io/learn) to get started with Signalco.
+Visit [www.signalco.io/learn](https://www.signalco.io/learn) to get started with Signalco.
## Key Features
-- Minimalistic and Beautiful UI
-- Smart home
-- Internet Of Things
-- Advanced automations
+- Minimalistic and Beautiful overview of all your services and devices
+- Advanced automations simplified
+- Integrated with many Internet Of Things (IoT) devices
+- Integrated with many online services
## Community
_We are setting up community channels for all users... stay tuned._
-The Signalco community of developers can be found on [GitHub Discussions](https://github.com/signalco-io/signalco/discussions), where you can ask questions, voice ideas, and share your projects.
+The Signalco community of developers can be found
+on [GitHub Discussions](https://github.com/signalco-io/signalco/discussions), where you can ask questions, voice ideas,
+and share your projects.
-Our [Code of Conduct](https://github.com/signalco-io/signalco/blob/main/CODE_OF_CONDUCT.md) applies to all Signalco community channels.
+Our [Code of Conduct](https://github.com/signalco-io/signalco/blob/main/CODE_OF_CONDUCT.md) applies to all Signalco
+community channels.
## Contributing
@@ -51,11 +56,24 @@ More info on development can be found in [Development](/DEVELOPMENT.md) document
## License
-[GNU General Public License v3.0](LICENSE)
+Project is licensed under [GNU General Public License v3.0](LICENSE). See [www.signalco.io/oss](https://www.signalco.io/oss) for more info.
+
+Some parts of this projects are licensed under (MIT license). These licenses are specified in project/package files and are not included in root license specified here [GNU General Public License v3.0](LICENSE).
+
+Other parts, that don't specify license, are licensed under [GNU General Public License v3.0](LICENSE).
+
+[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fsignalco-io%2Fsignalco.svg?type=shield&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fsignalco-io%2Fsignalco?ref=badge_shield&issueType=license)
## Sponsors ✨
Many thanks to our sponsors!
-![Microsoft for Startups](/docs/ms_startups.png)
-![JetBrains](/docs/jb_beam.png)
+### Current sponsors
+
+No current sponsors. [Become a sponsor](https://www.signalco.io/sponsor) and get your logo here with a link to your
+site.
+
+#### Previous sponsors that helped us get started
+
+![Microsoft for Startups](/docs/sponsors/ms_startups.png)
+![JetBrains](/docs/sponsors/jb_beam.png)
diff --git a/THIRD_PARTY.md b/THIRD_PARTY.md
new file mode 100644
index 0000000000..a76a23c8a6
--- /dev/null
+++ b/THIRD_PARTY.md
@@ -0,0 +1,7 @@
+- [FOSSA](https://fossa.com/) - FOSSA helps you manage your open source dependencies so you can ship more secure and robust code faster.
+- [Vercel](https://vercel.com/) - Vercel combines the best developer experience with an obsessive focus on end-user performance. Our platform enables frontend teams to do their best work.
+- [GitHub](https://github.com/) - GitHub is where over 65 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and features, power your CI/CD and DevOps workflows, and secure code before you commit it.
+- [Microsoft Azure](https://azure.microsoft.com/) - Build, run and manage applications across multiple clouds, on-premises and at the edge, with the tools and frameworks of your choice.
+- [PlanetScale](https://planetscale.com/) - PlanetScale is a database-as-a-service built on Vitess, the popular open source sharding system for MySQL. Our platform makes it easy to build, scale, and manage modern applications on MySQL.
+
+TODO: Populate list with all third party services used by Signalco.
diff --git a/cloud/infrastructure/.eslintrc.json b/cloud/infrastructure/.eslintrc.json
deleted file mode 100644
index d0c1090578..0000000000
--- a/cloud/infrastructure/.eslintrc.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "env": {
- "browser": true,
- "es2021": true
- },
- "extends": [
- "eslint:recommended",
- "plugin:import/recommended",
- "plugin:@typescript-eslint/recommended"
- ],
- "parser": "@typescript-eslint/parser",
- "parserOptions": {
- "ecmaVersion": "latest",
- "sourceType": "module"
- },
- "plugins": [
- "@typescript-eslint"
- ],
- "rules": {
- "indent": [
- "error",
- 4
- ],
- "quotes": [
- "error",
- "single"
- ],
- "comma-dangle": [
- "warn",
- {
- "arrays": "always-multiline",
- "objects": "always-multiline",
- "imports": "always-multiline",
- "exports": "always-multiline",
- "functions": "always-multiline"
- }
- ],
- "semi": [
- "error",
- "always"
- ],
- "import/no-unresolved": 0,
- "import/no-absolute-path": 0
- }
-}
\ No newline at end of file
diff --git a/cloud/infrastructure/.gitignore b/cloud/infrastructure/.gitignore
deleted file mode 100644
index c6958891dd..0000000000
--- a/cloud/infrastructure/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/bin/
-/node_modules/
diff --git a/cloud/infrastructure/.vscode/settings.json b/cloud/infrastructure/.vscode/settings.json
deleted file mode 100644
index 00ad71fba1..0000000000
--- a/cloud/infrastructure/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "typescript.tsdk": "node_modules\\typescript\\lib"
-}
\ No newline at end of file
diff --git a/cloud/infrastructure/grap_next.json b/cloud/infrastructure/grap_next.json
deleted file mode 100644
index baf95e87ce..0000000000
--- a/cloud/infrastructure/grap_next.json
+++ /dev/null
@@ -1,679 +0,0 @@
-strict digraph {
- Resource0 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-channelsamsung"];
- Resource0 -> Resource1 [color = "#246C60", label = "value"];
- Resource0 -> Resource2 [color = "#246C60", label = "name"];
- Resource0 -> Resource3 [color = "#246C60", label = "resourceUri"];
- Resource0 -> Resource4 [color = "#246C60", label = "properties"];
- Resource0 -> Resource5 [color = "#246C60", label = "value"];
- Resource0 -> Resource6 [color = "#246C60", label = "name"];
- Resource0 -> Resource7 [color = "#AA6639"];
- Resource8 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-channelslack"];
- Resource8 -> Resource9 [color = "#246C60", label = "serverFarmId"];
- Resource8 -> Resource7 [color = "#AA6639"];
- Resource8 -> Resource10 [color = "#246C60", label = "serverFarmId"];
- Resource11 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppHostNameBinding::func-hostnamebind-channelphilipshue"];
- Resource11 -> Resource7 [color = "#AA6639"];
- Resource12 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppHostNameBinding::func-hostnamebind-channelgithubapp"];
- Resource12 -> Resource7 [color = "#AA6639"];
- Resource13 [label="urn:pulumi:next::cloud-primary::azure-native:app:ManagedEnvironment::env-rb"];
- Resource13 -> Resource14 [color = "#246C60", label = "managedEnvironmentId"];
- Resource13 -> Resource7 [color = "#AA6639"];
- Resource15 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-channelirobot"];
- Resource15 -> Resource7 [color = "#AA6639"];
- Resource7 [label="urn:pulumi:next::cloud-primary::pulumi:pulumi:Stack::cloud-primary-next"];
- Resource16 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-cpub"];
- Resource16 -> Resource7 [color = "#AA6639"];
- Resource17 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-cname-channelslack"];
- Resource17 -> Resource18 [color = "#246C60", label = "request"];
- Resource17 -> Resource7 [color = "#AA6639"];
- Resource19 [label="urn:pulumi:next::cloud-primary::azure-native:resources:ResourceGroup::signalco-discrete-next-mutex"];
- Resource19 -> Resource20 [color = "#246C60", label = "resourceGroupName"];
- Resource19 -> Resource21 [color = "#246C60", label = "resourceGroupName"];
- Resource19 -> Resource22 [color = "#246C60", label = "resourceGroupName"];
- Resource19 -> Resource23 [color = "#246C60", label = "resourceGroupName"];
- Resource19 -> Resource24 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource19 -> Resource25 [color = "#246C60", label = "resourceGroupName"];
- Resource19 -> Resource7 [color = "#AA6639"];
- Resource19 -> Resource26 [color = "#246C60", label = "resourceGroupName"];
- Resource19 -> Resource27 [color = "#246C60", label = "resourceGroupName"];
- Resource26 [label="urn:pulumi:next::cloud-primary::azure-native:web:Certificate::func-cert-mutex"];
- Resource26 -> Resource7 [color = "#AA6639"];
- Resource28 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-pubcpub"];
- Resource28 -> Resource7 [color = "#AA6639"];
- Resource29 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppHostNameBinding::func-hostnamebind-cpub"];
- Resource29 -> Resource7 [color = "#AA6639"];
- Resource30 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-channelzigbee2mqtt"];
- Resource30 -> Resource7 [color = "#AA6639"];
- Resource31 [label="urn:pulumi:next::cloud-primary::pulumi:providers:command::default_0_8_0"];
- Resource32 [label="urn:pulumi:next::cloud-primary::azure-native:web:Certificate::func-cert-cpub"];
- Resource32 -> Resource7 [color = "#AA6639"];
- Resource33 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-cint-usageproc"];
- Resource33 -> Resource7 [color = "#AA6639"];
- Resource34 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-intcontactst"];
- Resource34 -> Resource7 [color = "#AA6639"];
- Resource35 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-cint-migration"];
- Resource35 -> Resource7 [color = "#AA6639"];
- Resource36 [label="urn:pulumi:next::cloud-primary::azure-native:web:Certificate::func-cert-channelirobot"];
- Resource36 -> Resource7 [color = "#AA6639"];
- Resource37 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-cname-rbpub"];
- Resource37 -> Resource38 [color = "#246C60", label = "request"];
- Resource37 -> Resource7 [color = "#AA6639"];
- Resource39 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-intcontactst"];
- Resource39 -> Resource40 [color = "#246C60", label = "serverFarmId"];
- Resource39 -> Resource7 [color = "#AA6639"];
- Resource41 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-channelsamsung"];
- Resource41 -> Resource42 [color = "#246C60", label = "serverFarmId"];
- Resource41 -> Resource0 [color = "#246C60", label = "serverFarmId"];
- Resource41 -> Resource7 [color = "#AA6639"];
- Resource43 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-channelirobot"];
- Resource43 -> Resource7 [color = "#AA6639"];
- Resource44 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-cname-cpub"];
- Resource44 -> Resource16 [color = "#246C60", label = "request"];
- Resource44 -> Resource7 [color = "#AA6639"];
- Resource10 [label="urn:pulumi:next::cloud-primary::azure-native:web:Certificate::func-cert-channelslack"];
- Resource10 -> Resource7 [color = "#AA6639"];
- Resource45 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-txt-domainverify-channelzigbee2mqtt"];
- Resource45 -> Resource7 [color = "#AA6639"];
- Resource27 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppHostNameBinding::func-hostnamebind-mutex"];
- Resource27 -> Resource7 [color = "#AA6639"];
- Resource46 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::ses-next-dkim2"];
- Resource46 -> Resource7 [color = "#AA6639"];
- Resource47 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-txt-domainverify-rbpub"];
- Resource47 -> Resource7 [color = "#AA6639"];
- Resource48 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-intusageproc"];
- Resource48 -> Resource7 [color = "#AA6639"];
- Resource49 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-intcontactst"];
- Resource49 -> Resource50 [color = "#246C60", label = "properties"];
- Resource49 -> Resource7 [color = "#AA6639"];
- Resource51 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-chsamsung"];
- Resource51 -> Resource2 [color = "#246C60", label = "properties"];
- Resource51 -> Resource7 [color = "#AA6639"];
- Resource52 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-channelgithubapp"];
- Resource52 -> Resource7 [color = "#AA6639"];
- Resource52 -> Resource53 [color = "#246C60", label = "serverFarmId"];
- Resource52 -> Resource54 [color = "#246C60", label = "serverFarmId"];
- Resource55 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-channelgithubapp"];
- Resource55 -> Resource7 [color = "#AA6639"];
- Resource56 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::ses-next-spf"];
- Resource56 -> Resource7 [color = "#AA6639"];
- Resource57 [label="urn:pulumi:next::cloud-primary::azure-native:resources:ResourceGroup::signalco-cloud-next"];
- Resource57 -> Resource58 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource59 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource60 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource61 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource2 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource62 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource63 [color = "#246C60", label = "resourceGroupName, properties"];
- Resource57 -> Resource64 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource65 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource66 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource67 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource68 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource69 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource70 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource71 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource72 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource73 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource74 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource75 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource4 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource76 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource42 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource9 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource77 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource78 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource79 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource80 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource50 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource81 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource82 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource83 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource14 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource84 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource85 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource6 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource86 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource87 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource88 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource89 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource90 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource91 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource92 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource93 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource94 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource95 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource96 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource97 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource98 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource99 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource40 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource100 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource0 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource8 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource11 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource12 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource13 [color = "#246C60", label = "appLogsConfiguration, resourceGroupName"];
- Resource57 -> Resource15 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource28 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource29 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource32 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource36 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource30 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource39 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource41 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource10 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource49 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource51 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource52 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource7 [color = "#AA6639"];
- Resource57 -> Resource101 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource102 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource53 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource103 [color = "#246C60", label = "properties, resourceGroupName"];
- Resource57 -> Resource104 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource105 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource106 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource107 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource108 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource109 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource54 [color = "#246C60", label = "resourceGroupName"];
- Resource57 -> Resource110 [color = "#246C60", label = "resourceGroupName"];
- Resource101 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-intmigration"];
- Resource101 -> Resource81 [color = "#246C60", label = "properties"];
- Resource101 -> Resource7 [color = "#AA6639"];
- Resource111 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-channelzigbee2mqtt"];
- Resource111 -> Resource7 [color = "#AA6639"];
- Resource102 [label="urn:pulumi:next::cloud-primary::azure-native:web:Certificate::func-cert-channelphilipshue"];
- Resource102 -> Resource7 [color = "#AA6639"];
- Resource53 [label="urn:pulumi:next::cloud-primary::azure-native:web:Certificate::func-cert-channelgithubapp"];
- Resource53 -> Resource7 [color = "#AA6639"];
- Resource103 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-intmaintenan"];
- Resource103 -> Resource7 [color = "#AA6639"];
- Resource104 [label="urn:pulumi:next::cloud-primary::azure-native:operationalinsights:Workspace::loganalytics-log"];
- Resource104 -> Resource112 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource3 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource113 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource114 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource115 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource116 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource117 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource118 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource119 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource120 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource13 [color = "#246C60", label = "appLogsConfiguration"];
- Resource104 -> Resource34 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource48 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource55 [color = "#246C60", label = "workspaceId"];
- Resource104 -> Resource7 [color = "#AA6639"];
- Resource104 -> Resource121 [color = "#246C60", label = "workspaceId"];
- Resource105 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-inttimeentit"];
- Resource105 -> Resource65 [color = "#246C60", label = "properties"];
- Resource105 -> Resource7 [color = "#AA6639"];
- Resource122 [label="urn:pulumi:next::cloud-primary::aws:ses/mailFrom:MailFrom::ses-next-ses-mail-from"];
- Resource122 -> Resource56 [color = "#246C60", label = "name"];
- Resource122 -> Resource7 [color = "#AA6639"];
- Resource123 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::vercel-ui-docs"];
- Resource123 -> Resource7 [color = "#AA6639"];
- Resource124 [label="urn:pulumi:next::cloud-primary::pulumi:providers:docker::default_4_3_1"];
- Resource125 [label="urn:pulumi:next::cloud-primary::pulumi:pulumi:StackReference::signalco/cloud-primary/next"];
- Resource125 -> Resource61 [color = "#246C60", label = "sslState, thumbprint"];
- Resource125 -> Resource70 [color = "#246C60", label = "sslState, thumbprint"];
- Resource125 -> Resource6 [color = "#246C60", label = "thumbprint, sslState"];
- Resource125 -> Resource86 [color = "#246C60", label = "sslState, thumbprint"];
- Resource125 -> Resource11 [color = "#246C60", label = "sslState, thumbprint"];
- Resource125 -> Resource12 [color = "#246C60", label = "sslState, thumbprint"];
- Resource125 -> Resource29 [color = "#246C60", label = "sslState, thumbprint"];
- Resource125 -> Resource27 [color = "#246C60", label = "sslState, thumbprint"];
- Resource125 -> Resource7 [color = "#AA6639"];
- Resource125 -> Resource109 [color = "#246C60", label = "sslState, thumbprint"];
- Resource106 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-rbpub"];
- Resource106 -> Resource69 [color = "#246C60", label = "serverFarmId"];
- Resource106 -> Resource84 [color = "#246C60", label = "serverFarmId"];
- Resource106 -> Resource7 [color = "#AA6639"];
- Resource107 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-intmaintenan"];
- Resource107 -> Resource126 [color = "#246C60", label = "request"];
- Resource107 -> Resource4 [color = "#246C60", label = "properties"];
- Resource107 -> Resource119 [color = "#246C60", label = "resourceUri"];
- Resource107 -> Resource103 [color = "#246C60", label = "name"];
- Resource107 -> Resource7 [color = "#AA6639"];
- Resource108 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-intmigration"];
- Resource108 -> Resource112 [color = "#246C60", label = "resourceUri"];
- Resource108 -> Resource4 [color = "#246C60", label = "properties"];
- Resource108 -> Resource81 [color = "#246C60", label = "name"];
- Resource108 -> Resource35 [color = "#246C60", label = "request"];
- Resource108 -> Resource7 [color = "#AA6639"];
- Resource109 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppHostNameBinding::func-hostnamebind-channelslack"];
- Resource109 -> Resource7 [color = "#AA6639"];
- Resource54 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-channelgithubapp"];
- Resource54 -> Resource127 [color = "#246C60", label = "value"];
- Resource54 -> Resource128 [color = "#246C60", label = "value"];
- Resource54 -> Resource4 [color = "#246C60", label = "properties"];
- Resource54 -> Resource99 [color = "#246C60", label = "name"];
- Resource54 -> Resource12 [color = "#246C60", label = "name"];
- Resource54 -> Resource55 [color = "#246C60", label = "resourceUri"];
- Resource54 -> Resource7 [color = "#AA6639"];
- Resource121 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-inttimeentit"];
- Resource121 -> Resource7 [color = "#AA6639"];
- Resource129 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-txt-domainverify-channelslack"];
- Resource129 -> Resource7 [color = "#AA6639"];
- Resource110 [label="urn:pulumi:next::cloud-primary::azure-native:web:Certificate::func-cert-channelzigbee2mqtt"];
- Resource110 -> Resource7 [color = "#AA6639"];
- Resource130 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::vercel-brandgrab"];
- Resource130 -> Resource7 [color = "#AA6639"];
- Resource131 [label="urn:pulumi:next::cloud-primary::aws:iam/accessKey:AccessKey::ses-next-ses-access-key"];
- Resource131 -> Resource63 [color = "#246C60", label = "properties"];
- Resource131 -> Resource65 [color = "#246C60", label = "properties"];
- Resource131 -> Resource78 [color = "#246C60", label = "properties"];
- Resource131 -> Resource50 [color = "#246C60", label = "properties"];
- Resource131 -> Resource81 [color = "#246C60", label = "properties"];
- Resource131 -> Resource28 [color = "#246C60", label = "properties"];
- Resource131 -> Resource103 [color = "#246C60", label = "properties"];
- Resource131 -> Resource7 [color = "#AA6639"];
- Resource127 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-cname-channelgithubapp"];
- Resource127 -> Resource7 [color = "#AA6639"];
- Resource127 -> Resource132 [color = "#246C60", label = "request"];
- Resource133 [label="urn:pulumi:next::cloud-primary::aws:ses/domainIdentity:DomainIdentity::ses-next-domainIdentity"];
- Resource133 -> Resource7 [color = "#AA6639"];
- Resource133 -> Resource63 [color = "#246C60", label = "properties"];
- Resource133 -> Resource65 [color = "#246C60", label = "properties"];
- Resource133 -> Resource78 [color = "#246C60", label = "properties"];
- Resource133 -> Resource50 [color = "#246C60", label = "properties"];
- Resource133 -> Resource81 [color = "#246C60", label = "properties"];
- Resource133 -> Resource134 [color = "#246C60", label = "domain"];
- Resource133 -> Resource28 [color = "#246C60", label = "properties"];
- Resource133 -> Resource103 [color = "#246C60", label = "properties"];
- Resource133 -> Resource122 [color = "#246C60", label = "domain, mailFromDomain"];
- Resource58 [label="urn:pulumi:next::cloud-primary::azure-native:keyvault:Secret::secret-kv-Slack--ClientId"];
- Resource58 -> Resource7 [color = "#AA6639"];
- Resource135 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::ses-next-dkim0"];
- Resource135 -> Resource7 [color = "#AA6639"];
- Resource1 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-txt-domainverify-channelsamsung"];
- Resource1 -> Resource7 [color = "#AA6639"];
- Resource136 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-channelphilipshue"];
- Resource136 -> Resource7 [color = "#AA6639"];
- Resource137 [label="urn:pulumi:next::cloud-primary::pulumi:providers:aws::default_5_42_0"];
- Resource59 [label="urn:pulumi:next::cloud-primary::azure-native:keyvault:Secret::secret-kv-Slack--ClientSecret"];
- Resource59 -> Resource7 [color = "#AA6639"];
- Resource112 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-intmigration"];
- Resource112 -> Resource7 [color = "#AA6639"];
- Resource60 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-channelzigbee2mqtt"];
- Resource60 -> Resource7 [color = "#AA6639"];
- Resource60 -> Resource75 [color = "#246C60", label = "serverFarmId"];
- Resource60 -> Resource110 [color = "#246C60", label = "serverFarmId"];
- Resource61 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppHostNameBinding::func-hostnamebind-channelzigbee2mqtt"];
- Resource61 -> Resource7 [color = "#AA6639"];
- Resource138 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-txt-domainverify-channelirobot"];
- Resource138 -> Resource7 [color = "#AA6639"];
- Resource20 [label="urn:pulumi:next::cloud-primary::azure-native:storage:BlobContainer::func-zips-mutexfuncs"];
- Resource20 -> Resource7 [color = "#AA6639"];
- Resource20 -> Resource24 [color = "#246C60", label = "properties"];
- Resource20 -> Resource25 [color = "#246C60", label = "containerName"];
- Resource139 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::ses-next-ses-dmarc"];
- Resource139 -> Resource7 [color = "#AA6639"];
- Resource2 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-channelsamsung"];
- Resource2 -> Resource7 [color = "#AA6639"];
- Resource128 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-txt-domainverify-channelgithubapp"];
- Resource128 -> Resource7 [color = "#AA6639"];
- Resource62 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-channelslack"];
- Resource62 -> Resource7 [color = "#AA6639"];
- Resource63 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-pubrbpub"];
- Resource63 -> Resource7 [color = "#AA6639"];
- Resource64 [label="urn:pulumi:next::cloud-primary::azure-native:storage:StorageAccount::safuncs"];
- Resource64 -> Resource2 [color = "#246C60", label = "properties"];
- Resource64 -> Resource62 [color = "#246C60", label = "properties"];
- Resource64 -> Resource63 [color = "#246C60", label = "properties"];
- Resource64 -> Resource7 [color = "#AA6639"];
- Resource64 -> Resource65 [color = "#246C60", label = "properties"];
- Resource64 -> Resource66 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource67 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource71 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource77 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource78 [color = "#246C60", label = "properties"];
- Resource64 -> Resource80 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource50 [color = "#246C60", label = "properties"];
- Resource64 -> Resource81 [color = "#246C60", label = "properties"];
- Resource64 -> Resource83 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource85 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource89 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource91 [color = "#246C60", label = "properties"];
- Resource64 -> Resource92 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource95 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource99 [color = "#246C60", label = "properties"];
- Resource64 -> Resource15 [color = "#246C60", label = "properties"];
- Resource64 -> Resource28 [color = "#246C60", label = "properties"];
- Resource64 -> Resource30 [color = "#246C60", label = "properties"];
- Resource64 -> Resource49 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource51 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource101 [color = "#246C60", label = "accountName"];
- Resource64 -> Resource103 [color = "#246C60", label = "properties"];
- Resource64 -> Resource105 [color = "#246C60", label = "accountName"];
- Resource126 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-cint-maintenan"];
- Resource126 -> Resource7 [color = "#AA6639"];
- Resource3 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-channelsamsung"];
- Resource3 -> Resource7 [color = "#AA6639"];
- Resource113 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-channelslack"];
- Resource113 -> Resource7 [color = "#AA6639"];
- Resource140 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::ses-next-ses-mail-from-mx-record"];
- Resource140 -> Resource7 [color = "#AA6639"];
- Resource65 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-inttimeentit"];
- Resource65 -> Resource7 [color = "#AA6639"];
- Resource66 [label="urn:pulumi:next::cloud-primary::azure-native:storage:BlobContainer::func-zips-funcs"];
- Resource66 -> Resource2 [color = "#246C60", label = "properties"];
- Resource66 -> Resource62 [color = "#246C60", label = "properties"];
- Resource66 -> Resource63 [color = "#246C60", label = "properties"];
- Resource66 -> Resource65 [color = "#246C60", label = "properties"];
- Resource66 -> Resource7 [color = "#AA6639"];
- Resource66 -> Resource67 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource71 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource77 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource78 [color = "#246C60", label = "properties"];
- Resource66 -> Resource80 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource50 [color = "#246C60", label = "properties"];
- Resource66 -> Resource81 [color = "#246C60", label = "properties"];
- Resource66 -> Resource83 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource85 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource89 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource91 [color = "#246C60", label = "properties"];
- Resource66 -> Resource92 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource95 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource99 [color = "#246C60", label = "properties"];
- Resource66 -> Resource15 [color = "#246C60", label = "properties"];
- Resource66 -> Resource28 [color = "#246C60", label = "properties"];
- Resource66 -> Resource30 [color = "#246C60", label = "properties"];
- Resource66 -> Resource49 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource51 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource101 [color = "#246C60", label = "containerName"];
- Resource66 -> Resource103 [color = "#246C60", label = "properties"];
- Resource66 -> Resource105 [color = "#246C60", label = "containerName"];
- Resource141 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-channelsamsung"];
- Resource141 -> Resource7 [color = "#AA6639"];
- Resource114 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-channelphilipshue"];
- Resource114 -> Resource7 [color = "#AA6639"];
- Resource142 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-cname-channelphilipshue"];
- Resource142 -> Resource136 [color = "#246C60", label = "request"];
- Resource142 -> Resource7 [color = "#AA6639"];
- Resource67 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-chzigbee2mqtt"];
- Resource67 -> Resource7 [color = "#AA6639"];
- Resource67 -> Resource30 [color = "#246C60", label = "properties"];
- Resource21 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-mutex"];
- Resource21 -> Resource7 [color = "#AA6639"];
- Resource21 -> Resource22 [color = "#246C60", label = "serverFarmId"];
- Resource21 -> Resource26 [color = "#246C60", label = "serverFarmId"];
- Resource73 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-channelphilipshue"];
- Resource73 -> Resource114 [color = "#246C60", label = "resourceUri"];
- Resource73 -> Resource142 [color = "#246C60", label = "value"];
- Resource73 -> Resource7 [color = "#AA6639"];
- Resource73 -> Resource4 [color = "#246C60", label = "properties"];
- Resource73 -> Resource143 [color = "#246C60", label = "value"];
- Resource73 -> Resource91 [color = "#246C60", label = "name"];
- Resource73 -> Resource11 [color = "#246C60", label = "name"];
- Resource115 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-channelirobot"];
- Resource115 -> Resource7 [color = "#AA6639"];
- Resource68 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-cpub"];
- Resource68 -> Resource7 [color = "#AA6639"];
- Resource68 -> Resource74 [color = "#246C60", label = "serverFarmId"];
- Resource68 -> Resource32 [color = "#246C60", label = "serverFarmId"];
- Resource69 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-rbpub"];
- Resource69 -> Resource63 [color = "#246C60", label = "name"];
- Resource69 -> Resource7 [color = "#AA6639"];
- Resource69 -> Resource70 [color = "#246C60", label = "name"];
- Resource69 -> Resource4 [color = "#246C60", label = "properties"];
- Resource69 -> Resource120 [color = "#246C60", label = "resourceUri"];
- Resource69 -> Resource37 [color = "#246C60", label = "value"];
- Resource69 -> Resource47 [color = "#246C60", label = "value"];
- Resource70 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppHostNameBinding::func-hostnamebind-rbpub"];
- Resource70 -> Resource7 [color = "#AA6639"];
- Resource71 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-cpub"];
- Resource71 -> Resource7 [color = "#AA6639"];
- Resource71 -> Resource28 [color = "#246C60", label = "properties"];
- Resource144 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-cint-timeentit"];
- Resource144 -> Resource7 [color = "#AA6639"];
- Resource72 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-intmaintenan"];
- Resource72 -> Resource7 [color = "#AA6639"];
- Resource72 -> Resource107 [color = "#246C60", label = "serverFarmId"];
- Resource145 [label="urn:pulumi:next::cloud-primary::pulumi:providers:pulumi::default"];
- Resource74 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-cpub"];
- Resource74 -> Resource7 [color = "#AA6639"];
- Resource74 -> Resource4 [color = "#246C60", label = "properties"];
- Resource74 -> Resource117 [color = "#246C60", label = "resourceUri"];
- Resource74 -> Resource146 [color = "#246C60", label = "value"];
- Resource74 -> Resource28 [color = "#246C60", label = "name"];
- Resource74 -> Resource29 [color = "#246C60", label = "name"];
- Resource74 -> Resource44 [color = "#246C60", label = "value"];
- Resource75 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-channelzigbee2mqtt"];
- Resource75 -> Resource61 [color = "#246C60", label = "name"];
- Resource75 -> Resource7 [color = "#AA6639"];
- Resource75 -> Resource4 [color = "#246C60", label = "properties"];
- Resource75 -> Resource118 [color = "#246C60", label = "resourceUri"];
- Resource75 -> Resource147 [color = "#246C60", label = "value"];
- Resource75 -> Resource30 [color = "#246C60", label = "name"];
- Resource75 -> Resource45 [color = "#246C60", label = "value"];
- Resource132 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-channelgithubapp"];
- Resource132 -> Resource7 [color = "#AA6639"];
- Resource116 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-mutex"];
- Resource116 -> Resource7 [color = "#AA6639"];
- Resource4 [label="urn:pulumi:next::cloud-primary::azure-native:keyvault:Vault::vault-kv"];
- Resource4 -> Resource58 [color = "#246C60", label = "vaultName"];
- Resource4 -> Resource59 [color = "#246C60", label = "vaultName"];
- Resource4 -> Resource2 [color = "#246C60", label = "properties"];
- Resource4 -> Resource62 [color = "#246C60", label = "properties"];
- Resource4 -> Resource63 [color = "#246C60", label = "properties"];
- Resource4 -> Resource65 [color = "#246C60", label = "properties"];
- Resource4 -> Resource7 [color = "#AA6639"];
- Resource4 -> Resource78 [color = "#246C60", label = "properties"];
- Resource4 -> Resource50 [color = "#246C60", label = "properties"];
- Resource4 -> Resource81 [color = "#246C60", label = "properties"];
- Resource4 -> Resource90 [color = "#246C60", label = "vaultName"];
- Resource4 -> Resource91 [color = "#246C60", label = "properties"];
- Resource4 -> Resource98 [color = "#246C60", label = "vaultName"];
- Resource4 -> Resource99 [color = "#246C60", label = "properties"];
- Resource4 -> Resource15 [color = "#246C60", label = "properties"];
- Resource4 -> Resource28 [color = "#246C60", label = "properties"];
- Resource4 -> Resource30 [color = "#246C60", label = "properties"];
- Resource4 -> Resource103 [color = "#246C60", label = "properties"];
- Resource78 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-intusageproc"];
- Resource78 -> Resource7 [color = "#AA6639"];
- Resource117 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-cpub"];
- Resource117 -> Resource7 [color = "#AA6639"];
- Resource76 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-intmigration"];
- Resource76 -> Resource7 [color = "#AA6639"];
- Resource76 -> Resource108 [color = "#246C60", label = "serverFarmId"];
- Resource42 [label="urn:pulumi:next::cloud-primary::azure-native:web:Certificate::func-cert-channelsamsung"];
- Resource42 -> Resource7 [color = "#AA6639"];
- Resource9 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-channelslack"];
- Resource9 -> Resource62 [color = "#246C60", label = "name"];
- Resource9 -> Resource113 [color = "#246C60", label = "resourceUri"];
- Resource9 -> Resource4 [color = "#246C60", label = "properties"];
- Resource9 -> Resource7 [color = "#AA6639"];
- Resource9 -> Resource17 [color = "#246C60", label = "value"];
- Resource9 -> Resource109 [color = "#246C60", label = "name"];
- Resource9 -> Resource129 [color = "#246C60", label = "value"];
- Resource77 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-chphilipshue"];
- Resource77 -> Resource7 [color = "#AA6639"];
- Resource77 -> Resource91 [color = "#246C60", label = "properties"];
- Resource148 [label="urn:pulumi:next::cloud-primary::aws:iam/user:User::ses-next-usr"];
- Resource148 -> Resource7 [color = "#AA6639"];
- Resource148 -> Resource149 [color = "#246C60", label = "user"];
- Resource148 -> Resource131 [color = "#246C60", label = "user"];
- Resource79 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-intusageproc"];
- Resource79 -> Resource4 [color = "#246C60", label = "properties"];
- Resource79 -> Resource78 [color = "#246C60", label = "name"];
- Resource79 -> Resource7 [color = "#AA6639"];
- Resource79 -> Resource33 [color = "#246C60", label = "request"];
- Resource79 -> Resource48 [color = "#246C60", label = "resourceUri"];
- Resource5 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-cname-channelsamsung"];
- Resource5 -> Resource141 [color = "#246C60", label = "request"];
- Resource5 -> Resource7 [color = "#AA6639"];
- Resource150 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::vercel-web"];
- Resource150 -> Resource7 [color = "#AA6639"];
- Resource151 [label="urn:pulumi:next::cloud-primary::pulumi:providers:azure-native::default_2_1_1"];
- Resource80 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-intmaintenan"];
- Resource80 -> Resource7 [color = "#AA6639"];
- Resource80 -> Resource103 [color = "#246C60", label = "properties"];
- Resource22 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-mutex"];
- Resource22 -> Resource116 [color = "#246C60", label = "resourceUri"];
- Resource22 -> Resource7 [color = "#AA6639"];
- Resource22 -> Resource152 [color = "#246C60", label = "value"];
- Resource22 -> Resource24 [color = "#246C60", label = "name"];
- Resource22 -> Resource153 [color = "#246C60", label = "value"];
- Resource22 -> Resource27 [color = "#246C60", label = "name"];
- Resource154 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::vercel-slco"];
- Resource154 -> Resource7 [color = "#AA6639"];
- Resource50 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-intcontactst"];
- Resource50 -> Resource7 [color = "#AA6639"];
- Resource81 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-intmigration"];
- Resource81 -> Resource7 [color = "#AA6639"];
- Resource14 [label="urn:pulumi:next::cloud-primary::azure-native:app:ContainerApp::docker-app-rb"];
- Resource14 -> Resource7 [color = "#AA6639"];
- Resource14 -> Resource90 [color = "#246C60", label = "properties"];
- Resource82 [label="urn:pulumi:next::cloud-primary::azure-native:signalrservice:SignalR::signalr-sr"];
- Resource82 -> Resource2 [color = "#246C60", label = "properties"];
- Resource82 -> Resource62 [color = "#246C60", label = "properties"];
- Resource82 -> Resource63 [color = "#246C60", label = "properties"];
- Resource82 -> Resource65 [color = "#246C60", label = "properties"];
- Resource82 -> Resource78 [color = "#246C60", label = "properties"];
- Resource82 -> Resource50 [color = "#246C60", label = "properties"];
- Resource82 -> Resource81 [color = "#246C60", label = "properties"];
- Resource82 -> Resource7 [color = "#AA6639"];
- Resource82 -> Resource155 [color = "#246C60", label = "request"];
- Resource82 -> Resource91 [color = "#246C60", label = "properties"];
- Resource82 -> Resource99 [color = "#246C60", label = "properties"];
- Resource82 -> Resource15 [color = "#246C60", label = "properties"];
- Resource82 -> Resource28 [color = "#246C60", label = "properties"];
- Resource82 -> Resource30 [color = "#246C60", label = "properties"];
- Resource82 -> Resource103 [color = "#246C60", label = "properties"];
- Resource156 [label="urn:pulumi:next::cloud-primary::pulumi:providers:checkly::default_1_1_4_github_/api.github.com/checkly"];
- Resource155 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-sr"];
- Resource155 -> Resource7 [color = "#AA6639"];
- Resource83 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-chslack"];
- Resource83 -> Resource62 [color = "#246C60", label = "properties"];
- Resource83 -> Resource7 [color = "#AA6639"];
- Resource143 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-txt-domainverify-channelphilipshue"];
- Resource143 -> Resource7 [color = "#AA6639"];
- Resource23 [label="urn:pulumi:next::cloud-primary::azure-native:storage:StorageAccount::samutexfuncs"];
- Resource23 -> Resource20 [color = "#246C60", label = "accountName"];
- Resource23 -> Resource7 [color = "#AA6639"];
- Resource23 -> Resource24 [color = "#246C60", label = "properties"];
- Resource23 -> Resource25 [color = "#246C60", label = "accountName"];
- Resource157 [label="urn:pulumi:next::cloud-primary::pulumi:providers:cloudflare::default_5_7_0"];
- Resource84 [label="urn:pulumi:next::cloud-primary::azure-native:web:Certificate::func-cert-rbpub"];
- Resource84 -> Resource7 [color = "#AA6639"];
- Resource152 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-cname-mutex"];
- Resource152 -> Resource7 [color = "#AA6639"];
- Resource158 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::vercel-app"];
- Resource158 -> Resource7 [color = "#AA6639"];
- Resource159 [label="urn:pulumi:next::cloud-primary::docker:index/image:Image::docker-image-rb"];
- Resource159 -> Resource14 [color = "#246C60", label = "template"];
- Resource159 -> Resource7 [color = "#AA6639"];
- Resource85 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-intusageproc"];
- Resource85 -> Resource78 [color = "#246C60", label = "properties"];
- Resource85 -> Resource7 [color = "#AA6639"];
- Resource160 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-cint-contactst"];
- Resource160 -> Resource7 [color = "#AA6639"];
- Resource6 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppHostNameBinding::func-hostnamebind-channelsamsung"];
- Resource6 -> Resource7 [color = "#AA6639"];
- Resource18 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-channelslack"];
- Resource18 -> Resource7 [color = "#AA6639"];
- Resource38 [label="urn:pulumi:next::cloud-primary::checkly:index/check:Check::apicheck-rbpub"];
- Resource38 -> Resource7 [color = "#AA6639"];
- Resource118 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-channelzigbee2mqtt"];
- Resource118 -> Resource7 [color = "#AA6639"];
- Resource147 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-cname-channelzigbee2mqtt"];
- Resource147 -> Resource7 [color = "#AA6639"];
- Resource147 -> Resource111 [color = "#246C60", label = "request"];
- Resource86 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppHostNameBinding::func-hostnamebind-channelirobot"];
- Resource86 -> Resource7 [color = "#AA6639"];
- Resource149 [label="urn:pulumi:next::cloud-primary::aws:iam/userPolicy:UserPolicy::ses-next-ses-policy"];
- Resource149 -> Resource7 [color = "#AA6639"];
- Resource161 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::ses-next-dkim1"];
- Resource161 -> Resource7 [color = "#AA6639"];
- Resource87 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-intusageproc"];
- Resource87 -> Resource79 [color = "#246C60", label = "serverFarmId"];
- Resource87 -> Resource7 [color = "#AA6639"];
- Resource88 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-channelphilipshue"];
- Resource88 -> Resource73 [color = "#246C60", label = "serverFarmId"];
- Resource88 -> Resource7 [color = "#AA6639"];
- Resource88 -> Resource102 [color = "#246C60", label = "serverFarmId"];
- Resource89 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-chgithubapp"];
- Resource89 -> Resource7 [color = "#AA6639"];
- Resource89 -> Resource99 [color = "#246C60", label = "properties"];
- Resource90 [label="urn:pulumi:next::cloud-primary::azure-native:keyvault:Secret::secret-kv-SignalcoAppRemoteBrowserUrl"];
- Resource90 -> Resource7 [color = "#AA6639"];
- Resource91 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-channelphilipshue"];
- Resource91 -> Resource7 [color = "#AA6639"];
- Resource24 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-discretemutex"];
- Resource24 -> Resource7 [color = "#AA6639"];
- Resource92 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-rbpub"];
- Resource92 -> Resource63 [color = "#246C60", label = "properties"];
- Resource92 -> Resource7 [color = "#AA6639"];
- Resource119 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-intmaintenan"];
- Resource119 -> Resource7 [color = "#AA6639"];
- Resource93 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-channelirobot"];
- Resource93 -> Resource7 [color = "#AA6639"];
- Resource93 -> Resource97 [color = "#246C60", label = "serverFarmId"];
- Resource93 -> Resource36 [color = "#246C60", label = "serverFarmId"];
- Resource25 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-mutex"];
- Resource25 -> Resource24 [color = "#246C60", label = "properties"];
- Resource25 -> Resource7 [color = "#AA6639"];
- Resource94 [label="urn:pulumi:next::cloud-primary::azure-native:web:AppServicePlan::func-appplan-inttimeentit"];
- Resource94 -> Resource7 [color = "#AA6639"];
- Resource94 -> Resource100 [color = "#246C60", label = "serverFarmId"];
- Resource162 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-cname-channelirobot"];
- Resource162 -> Resource7 [color = "#AA6639"];
- Resource162 -> Resource43 [color = "#246C60", label = "request"];
- Resource95 [label="urn:pulumi:next::cloud-primary::azure-native:storage:Blob::zip-chirobot"];
- Resource95 -> Resource7 [color = "#AA6639"];
- Resource95 -> Resource15 [color = "#246C60", label = "properties"];
- Resource96 [label="urn:pulumi:next::cloud-primary::azure-native:storage:StorageAccount::sastore"];
- Resource96 -> Resource2 [color = "#246C60", label = "properties"];
- Resource96 -> Resource62 [color = "#246C60", label = "properties"];
- Resource96 -> Resource63 [color = "#246C60", label = "properties"];
- Resource96 -> Resource65 [color = "#246C60", label = "properties"];
- Resource96 -> Resource78 [color = "#246C60", label = "properties"];
- Resource96 -> Resource50 [color = "#246C60", label = "properties"];
- Resource96 -> Resource81 [color = "#246C60", label = "properties"];
- Resource96 -> Resource91 [color = "#246C60", label = "properties"];
- Resource96 -> Resource7 [color = "#AA6639"];
- Resource96 -> Resource99 [color = "#246C60", label = "properties"];
- Resource96 -> Resource15 [color = "#246C60", label = "properties"];
- Resource96 -> Resource28 [color = "#246C60", label = "properties"];
- Resource96 -> Resource30 [color = "#246C60", label = "properties"];
- Resource96 -> Resource103 [color = "#246C60", label = "properties"];
- Resource163 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::vercel-blog"];
- Resource163 -> Resource7 [color = "#AA6639"];
- Resource146 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-txt-domainverify-cpub"];
- Resource146 -> Resource7 [color = "#AA6639"];
- Resource97 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-channelirobot"];
- Resource97 -> Resource138 [color = "#246C60", label = "value"];
- Resource97 -> Resource115 [color = "#246C60", label = "resourceUri"];
- Resource97 -> Resource4 [color = "#246C60", label = "properties"];
- Resource97 -> Resource86 [color = "#246C60", label = "name"];
- Resource97 -> Resource162 [color = "#246C60", label = "value"];
- Resource97 -> Resource7 [color = "#AA6639"];
- Resource97 -> Resource15 [color = "#246C60", label = "name"];
- Resource98 [label="urn:pulumi:next::cloud-primary::azure-native:keyvault:Secret::secret-kv-Slack--SigningSecret"];
- Resource98 -> Resource7 [color = "#AA6639"];
- Resource99 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebAppApplicationSettings::func-appsettings-channelgithubapp"];
- Resource99 -> Resource7 [color = "#AA6639"];
- Resource40 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-intcontactst"];
- Resource40 -> Resource4 [color = "#246C60", label = "properties"];
- Resource40 -> Resource50 [color = "#246C60", label = "name"];
- Resource40 -> Resource160 [color = "#246C60", label = "request"];
- Resource40 -> Resource7 [color = "#AA6639"];
- Resource40 -> Resource34 [color = "#246C60", label = "resourceUri"];
- Resource153 [label="urn:pulumi:next::cloud-primary::cloudflare:index/record:Record::func-dns-txt-domainverify-mutex"];
- Resource153 -> Resource7 [color = "#AA6639"];
- Resource120 [label="urn:pulumi:next::cloud-primary::azure-native:insights:DiagnosticSetting::logs-diagnosticSetting-rbpub"];
- Resource120 -> Resource7 [color = "#AA6639"];
- Resource100 [label="urn:pulumi:next::cloud-primary::azure-native:web:WebApp::func-inttimeentit"];
- Resource100 -> Resource65 [color = "#246C60", label = "name"];
- Resource100 -> Resource144 [color = "#246C60", label = "request"];
- Resource100 -> Resource4 [color = "#246C60", label = "properties"];
- Resource100 -> Resource7 [color = "#AA6639"];
- Resource100 -> Resource121 [color = "#246C60", label = "resourceUri"];
- Resource134 [label="urn:pulumi:next::cloud-primary::aws:ses/domainDkim:DomainDkim::ses-next-sesDomainDkim"];
- Resource134 -> Resource135 [color = "#246C60", label = "name, value"];
- Resource134 -> Resource161 [color = "#246C60", label = "name, value"];
- Resource134 -> Resource7 [color = "#AA6639"];
- Resource134 -> Resource46 [color = "#246C60", label = "name, value"];
-}
diff --git a/cloud/infrastructure/src/Azure/createInternalFunctionAsync.ts b/cloud/infrastructure/src/Azure/createInternalFunctionAsync.ts
deleted file mode 100644
index c66a0a0d66..0000000000
--- a/cloud/infrastructure/src/Azure/createInternalFunctionAsync.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { createFunction } from './createFunction';
-import { type ResourceGroup } from '@pulumi/azure-native/resources';
-import publishProjectAsync from '../dotnet/publishProjectAsync';
-import { assignFunctionCodeAsync } from './assignFunctionCodeAsync';
-import apiStatusCheck from '../Checkly/apiStatusCheck';
-import { ConfInternalApiCheckInterval } from '../config';
-import { type BlobContainer, type StorageAccount } from '@pulumi/azure-native/storage';
-
-const internalFunctionPrefix = 'cint';
-
-export default async function createInternalFunctionAsync (
- resourceGroup: ResourceGroup,
- name: string,
- storageAccount: StorageAccount,
- zipsContainer: BlobContainer,
- shouldProtect: boolean) {
- const shortName = name.substring(0, 9).toLocaleLowerCase();
- const func = createFunction(
- resourceGroup,
- `int${shortName}`,
- shouldProtect,
- false);
-
- const codePath = `../src/Signalco.Func.Internal.${name}`;
- const publishResult = await publishProjectAsync(codePath);
-
- const code = await assignFunctionCodeAsync(
- resourceGroup,
- storageAccount,
- zipsContainer,
- `int${shortName}`,
- publishResult.releaseDir);
- apiStatusCheck(`${internalFunctionPrefix}-${shortName}`, `Internal - ${name}`, func.webApp.hostNames[0], ConfInternalApiCheckInterval);
- return {
- name,
- shortName,
- ...func,
- ...code,
- };
-}
diff --git a/cloud/infrastructure/src/apps/createRemoteBrowser.ts b/cloud/infrastructure/src/apps/createRemoteBrowser.ts
deleted file mode 100644
index b377c29a6a..0000000000
--- a/cloud/infrastructure/src/apps/createRemoteBrowser.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { type ResourceGroup } from '@pulumi/azure-native/resources';
-import { type ContainerRegistryResult } from '../Azure/containerRegistry';
-import createContainerApp from '../Azure/createContainerApp';
-import createManagedEnvironment from '../Azure/createManagedEnvironment';
-import createContainerImage from '../Azure/createContainerImage';
-import type createLogWorkspace from '../Azure/createLogWorkspace';
-
-export default function createRemoteBrowser(
- resourceGroup: ResourceGroup,
- namePrefix: string,
- registry: ContainerRegistryResult,
- logWorkspace: ReturnType,
- shouldProtect: boolean) {
- const environment = createManagedEnvironment(resourceGroup, namePrefix, logWorkspace, shouldProtect);
- const image = createContainerImage(registry, namePrefix, 'signalco-remote-browser', 'Signalco.Api.RemoteBrowser');
- const app = createContainerApp(resourceGroup, namePrefix, environment.managedEnvironment, registry, image.image, shouldProtect);
-
- return {
- app,
- };
-}
\ No newline at end of file
diff --git a/cloud/infrastructure/tools/restart-functions.js b/cloud/infrastructure/tools/restart-functions.js
deleted file mode 100644
index 155e80bc94..0000000000
--- a/cloud/infrastructure/tools/restart-functions.js
+++ /dev/null
@@ -1,22 +0,0 @@
-const { exec } = require('node:child_process');
-
-exec('pulumi stack output --json', (err, stdout, stderr) => {
- if (err) {
- console.error(err, stderr);
- return;
- }
-
- const output = JSON.parse(stdout);
- const functionAppNames = output.functionApps;
- const resourceGroupName = output.resourceGroupName;
- for (const functionName of functionAppNames) {
- console.log(`Restarting function: ${functionName}`);
- exec(`az functionapp restart --name ${functionName} --resource-group ${resourceGroupName}`, (err, stdout, stderr) => {
- if (err) {
- console.error('Restarting function failed: ' + functionName, err, stderr);
- return;
- }
- console.log('Restarted function: ' + functionName);
- });
- }
-});
diff --git a/cloud/infrastructure/tsconfig.json b/cloud/infrastructure/tsconfig.json
deleted file mode 100644
index 08ce44ab63..0000000000
--- a/cloud/infrastructure/tsconfig.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "compilerOptions": {
- "strict": true,
- "outDir": "bin",
- "target": "ESNext",
- "module": "commonjs",
- "moduleResolution": "node",
- "sourceMap": true,
- "experimentalDecorators": true,
- "pretty": true,
- "noFallthroughCasesInSwitch": true,
- "noImplicitReturns": true,
- "forceConsistentCasingInFileNames": true
- },
- "include": [
- "src/**/*.ts"
- ],
- "exclude": [
- "node_modules"
- ]
-}
\ No newline at end of file
diff --git a/docs/jb_beam.png b/docs/sponsors/jb_beam.png
similarity index 100%
rename from docs/jb_beam.png
rename to docs/sponsors/jb_beam.png
diff --git a/docs/ms_startups.png b/docs/sponsors/ms_startups.png
similarity index 100%
rename from docs/ms_startups.png
rename to docs/sponsors/ms_startups.png
diff --git a/infra/.eslintrc.js b/infra/.eslintrc.js
new file mode 100644
index 0000000000..bf41d752d4
--- /dev/null
+++ b/infra/.eslintrc.js
@@ -0,0 +1,10 @@
+// This configuration only applies to the package manager root.
+/** @type {import("eslint").Linter.Config} */
+module.exports = {
+ ignorePatterns: ["apps/**", "packages/**"],
+ extends: ["@infra/eslint-config/library.js"],
+ parser: "@typescript-eslint/parser",
+ parserOptions: {
+ project: true,
+ },
+};
diff --git a/infra/.gitignore b/infra/.gitignore
new file mode 100644
index 0000000000..96fab4fed3
--- /dev/null
+++ b/infra/.gitignore
@@ -0,0 +1,38 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# Dependencies
+node_modules
+.pnp
+.pnp.js
+
+# Local env files
+.env
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+# Testing
+coverage
+
+# Turbo
+.turbo
+
+# Vercel
+.vercel
+
+# Build Outputs
+.next/
+out/
+build
+dist
+
+
+# Debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Misc
+.DS_Store
+*.pem
diff --git a/infra/.idea/infra.iml b/infra/.idea/infra.iml
new file mode 100644
index 0000000000..24643cc374
--- /dev/null
+++ b/infra/.idea/infra.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/infra/.idea/modules.xml b/infra/.idea/modules.xml
new file mode 100644
index 0000000000..a785a5366c
--- /dev/null
+++ b/infra/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/infra/.npmrc b/infra/.npmrc
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/infra/.vscode/settings.json b/infra/.vscode/settings.json
new file mode 100644
index 0000000000..44a73ec3a9
--- /dev/null
+++ b/infra/.vscode/settings.json
@@ -0,0 +1,7 @@
+{
+ "eslint.workingDirectories": [
+ {
+ "mode": "auto"
+ }
+ ]
+}
diff --git a/infra/README.md b/infra/README.md
new file mode 100644
index 0000000000..7a4658aa87
--- /dev/null
+++ b/infra/README.md
@@ -0,0 +1,81 @@
+# Turborepo starter
+
+This is an official starter Turborepo.
+
+## Using this example
+
+Run the following command:
+
+```sh
+npx create-turbo@latest
+```
+
+## What's inside?
+
+This Turborepo includes the following packages/apps:
+
+### Apps and Packages
+
+- `docs`: a [Next.js](https://nextjs.org/) app
+- `web`: another [Next.js](https://nextjs.org/) app
+- `@repo/ui`: a stub React component library shared by both `web` and `docs` applications
+- `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`)
+- `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo
+
+Each package/app is 100% [TypeScript](https://www.typescriptlang.org/).
+
+### Utilities
+
+This Turborepo has some additional tools already setup for you:
+
+- [TypeScript](https://www.typescriptlang.org/) for static type checking
+- [ESLint](https://eslint.org/) for code linting
+- [Prettier](https://prettier.io) for code formatting
+
+### Build
+
+To build all apps and packages, run the following command:
+
+```
+cd my-turborepo
+pnpm build
+```
+
+### Develop
+
+To develop all apps and packages, run the following command:
+
+```
+cd my-turborepo
+pnpm dev
+```
+
+### Remote Caching
+
+Turborepo can use a technique known as [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.
+
+By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can [create one](https://vercel.com/signup), then enter the following commands:
+
+```
+cd my-turborepo
+npx turbo login
+```
+
+This will authenticate the Turborepo CLI with your [Vercel account](https://vercel.com/docs/concepts/personal-accounts/overview).
+
+Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo:
+
+```
+npx turbo link
+```
+
+## Useful Links
+
+Learn more about the power of Turborepo:
+
+- [Tasks](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks)
+- [Caching](https://turbo.build/repo/docs/core-concepts/caching)
+- [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching)
+- [Filtering](https://turbo.build/repo/docs/core-concepts/monorepos/filtering)
+- [Configuration Options](https://turbo.build/repo/docs/reference/configuration)
+- [CLI Usage](https://turbo.build/repo/docs/reference/command-line-reference)
diff --git a/infra/apps/cloud-primary/.eslintrc.cjs b/infra/apps/cloud-primary/.eslintrc.cjs
new file mode 100644
index 0000000000..ac8a0bf66f
--- /dev/null
+++ b/infra/apps/cloud-primary/.eslintrc.cjs
@@ -0,0 +1,9 @@
+/** @type {import("eslint").Linter.Config} */
+module.exports = {
+ root: true,
+ extends: ["@infra/eslint-config/library.js"],
+ parser: "@typescript-eslint/parser",
+ parserOptions: {
+ project: "./tsconfig.json",
+ },
+};
\ No newline at end of file
diff --git a/cloud/infrastructure/Pulumi.next.yaml b/infra/apps/cloud-primary/Pulumi.next.yaml
similarity index 100%
rename from cloud/infrastructure/Pulumi.next.yaml
rename to infra/apps/cloud-primary/Pulumi.next.yaml
diff --git a/cloud/infrastructure/Pulumi.production.yaml b/infra/apps/cloud-primary/Pulumi.production.yaml
similarity index 100%
rename from cloud/infrastructure/Pulumi.production.yaml
rename to infra/apps/cloud-primary/Pulumi.production.yaml
diff --git a/cloud/infrastructure/Pulumi.shared.yaml b/infra/apps/cloud-primary/Pulumi.shared.yaml
similarity index 100%
rename from cloud/infrastructure/Pulumi.shared.yaml
rename to infra/apps/cloud-primary/Pulumi.shared.yaml
diff --git a/cloud/infrastructure/Pulumi.yaml b/infra/apps/cloud-primary/Pulumi.yaml
similarity index 100%
rename from cloud/infrastructure/Pulumi.yaml
rename to infra/apps/cloud-primary/Pulumi.yaml
diff --git a/cloud/infrastructure/package.json b/infra/apps/cloud-primary/package.json
similarity index 80%
rename from cloud/infrastructure/package.json
rename to infra/apps/cloud-primary/package.json
index e049b82c78..42363c212c 100644
--- a/cloud/infrastructure/package.json
+++ b/infra/apps/cloud-primary/package.json
@@ -1,11 +1,14 @@
{
- "name": "cloud-primary",
+ "name": "@infra/signalco",
"private": true,
"license": "../LICENSE",
- "main": "src/index.ts",
+ "main": "dist/index.js",
+ "typings": "dist/index.d.ts",
+ "type": "module",
"scripts": {
+ "build": "tsc",
"lint": "eslint ./src/**/*.ts",
- "restart-functions": "node tools/restart-functions.js"
+ "preview": "pulumi preview"
},
"devDependencies": {
"@types/node": "20.10.5",
@@ -20,6 +23,7 @@
"typescript": "5.3.3"
},
"dependencies": {
+ "@infra/pulumi": "workspace:*",
"@checkly/pulumi": "1.1.4",
"@pulumi/aws": "6.14.0",
"@pulumi/azure-native": "2.22.0",
@@ -29,4 +33,4 @@
"@pulumi/pulumi": "3.97.0",
"@pulumiverse/vercel": "1.0.1"
}
-}
+}
\ No newline at end of file
diff --git a/cloud/infrastructure/src/config.ts b/infra/apps/cloud-primary/src/config.ts
similarity index 82%
rename from cloud/infrastructure/src/config.ts
rename to infra/apps/cloud-primary/src/config.ts
index ec7e760b03..928b3b9fd7 100644
--- a/cloud/infrastructure/src/config.ts
+++ b/infra/apps/cloud-primary/src/config.ts
@@ -1,4 +1,4 @@
-import { CheckFrequency } from './Checkly/apiStatusCheck';
+import { CheckFrequency } from '@infra/pulumi/checkly';
// Monitoring intervals
export const ConfChannelApiCheckInterval: CheckFrequency = 120;
diff --git a/cloud/infrastructure/src/Azure/createChannelFunction.ts b/infra/apps/cloud-primary/src/createChannelFunction.ts
similarity index 66%
rename from cloud/infrastructure/src/Azure/createChannelFunction.ts
rename to infra/apps/cloud-primary/src/createChannelFunction.ts
index 4a582f03dc..c2e6567579 100644
--- a/cloud/infrastructure/src/Azure/createChannelFunction.ts
+++ b/infra/apps/cloud-primary/src/createChannelFunction.ts
@@ -1,19 +1,21 @@
import { type StackReference } from '@pulumi/pulumi';
-import { type ResourceGroup } from '@pulumi/azure-native/resources';
-import createPublicFunction from './createPublicFunction';
-import { assignFunctionCodeAsync } from './assignFunctionCodeAsync';
-import apiStatusCheck from '../Checkly/apiStatusCheck';
-import publishProjectAsync from '../dotnet/publishProjectAsync';
-import { ConfChannelApiCheckInterval } from '../config';
-import { type BlobContainer, type StorageAccount } from '@pulumi/azure-native/storage';
+import { type ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { createPublicFunction, assignFunctionCodeAsync } from '@infra/pulumi/azure';
+import { apiStatusCheck } from '@infra/pulumi/checkly';
+import { publishProjectAsync } from '@infra/pulumi/dotnet';
+import { ConfChannelApiCheckInterval } from './config.js';
+import { type BlobContainer, type StorageAccount } from '@pulumi/azure-native/storage/index.js';
-export default async function createChannelFunctionAsync (
- channelName: string,
- resourceGroup: ResourceGroup,
+export async function createChannelFunction(
+ channelName: string,
+ resourceGroup: ResourceGroup,
storageAccount: StorageAccount,
zipsContainer: BlobContainer,
currentStack: StackReference,
- protect: boolean) {
+ protect: boolean): Promise<{
+ nameLower: string,
+ name: string,
+ } & ReturnType & Awaited>> {
const channelNameLower = channelName.toLocaleLowerCase();
const publicFunctionPrefix = 'channel' + channelNameLower;
const publicFunctionStoragePrefix = 'ch' + channelNameLower;
@@ -29,7 +31,7 @@ export default async function createChannelFunctionAsync (
protect,
);
- const codePath = `../src/Signalco.Channel.${channelName}`;
+ const codePath = `../../../cloud/src/Signalco.Channel.${channelName}`;
const publishResult = await publishProjectAsync(codePath);
const channelFuncCode = await assignFunctionCodeAsync(
diff --git a/infra/apps/cloud-primary/src/createInternalFunctionAsync.ts b/infra/apps/cloud-primary/src/createInternalFunctionAsync.ts
new file mode 100644
index 0000000000..8a27e66280
--- /dev/null
+++ b/infra/apps/cloud-primary/src/createInternalFunctionAsync.ts
@@ -0,0 +1,42 @@
+import { createFunction, assignFunctionCodeAsync } from '@infra/pulumi/azure';
+import { type ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { publishProjectAsync } from '@infra/pulumi/dotnet';
+import { apiStatusCheck } from '@infra/pulumi/checkly';
+import { ConfInternalApiCheckInterval } from './config.js';
+import { type BlobContainer, type StorageAccount } from '@pulumi/azure-native/storage/index.js';
+
+const internalFunctionPrefix = 'cint';
+
+export async function createInternalFunctionAsync(
+ resourceGroup: ResourceGroup,
+ name: string,
+ storageAccount: StorageAccount,
+ zipsContainer: BlobContainer,
+ shouldProtect: boolean): Promise<{
+ name: string,
+ shortName: string,
+ } & ReturnType & Awaited>> {
+ const shortName = name.substring(0, 9).toLocaleLowerCase();
+ const func = createFunction(
+ resourceGroup,
+ `int${shortName}`,
+ shouldProtect,
+ false);
+
+ const codePath = `../../../cloud/src/Signalco.Func.Internal.${name}`;
+ const publishResult = await publishProjectAsync(codePath);
+
+ const code = await assignFunctionCodeAsync(
+ resourceGroup,
+ storageAccount,
+ zipsContainer,
+ `int${shortName}`,
+ publishResult.releaseDir);
+ apiStatusCheck(`${internalFunctionPrefix}-${shortName}`, `Internal - ${name}`, func.webApp.hostNames[0]!, ConfInternalApiCheckInterval);
+ return {
+ name,
+ shortName,
+ ...func,
+ ...code,
+ };
+}
diff --git a/infra/apps/cloud-primary/src/createRemoteBrowser.ts b/infra/apps/cloud-primary/src/createRemoteBrowser.ts
new file mode 100644
index 0000000000..82db73fbb1
--- /dev/null
+++ b/infra/apps/cloud-primary/src/createRemoteBrowser.ts
@@ -0,0 +1,18 @@
+import { type ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { type ContainerRegistryResult, type createLogWorkspace } from '@infra/pulumi/azure';
+import { createContainerApp, createManagedEnvironment, createContainerImage } from '@infra/pulumi/azure';
+
+export function createRemoteBrowser(
+ resourceGroup: ResourceGroup,
+ namePrefix: string,
+ registry: ContainerRegistryResult,
+ logWorkspace: ReturnType,
+ shouldProtect: boolean): { app: ReturnType } {
+ const environment = createManagedEnvironment(resourceGroup, namePrefix, logWorkspace, shouldProtect);
+ const image = createContainerImage(registry, namePrefix, 'signalco-remote-browser', 'Signalco.Api.RemoteBrowser');
+ const app = createContainerApp(resourceGroup, namePrefix, environment.managedEnvironment, registry, image.image, shouldProtect);
+
+ return {
+ app,
+ };
+}
\ No newline at end of file
diff --git a/cloud/infrastructure/src/index.ts b/infra/apps/cloud-primary/src/index.ts
similarity index 82%
rename from cloud/infrastructure/src/index.ts
rename to infra/apps/cloud-primary/src/index.ts
index efe87b828b..bd69358ce2 100644
--- a/cloud/infrastructure/src/index.ts
+++ b/infra/apps/cloud-primary/src/index.ts
@@ -1,28 +1,30 @@
import { Config, getStack, interpolate, StackReference, getProject } from '@pulumi/pulumi';
-import { ResourceGroup } from '@pulumi/azure-native/resources';
-import { createSignalR } from './Azure/createSignalR';
-import { createStorageAccount } from './Azure/createStorageAccount';
-import { createKeyVault } from './Azure/createKeyVault';
-import createPublicFunction from './Azure/createPublicFunction';
-import { webAppIdentity } from './Azure/webAppIdentity';
-import vaultSecret from './Azure/vaultSecret';
-import { assignFunctionCodeAsync } from './Azure/assignFunctionCodeAsync';
-import { assignFunctionSettings } from './Azure/assignFunctionSettings';
-import createSes from './AWS/createSes';
-import createInternalFunctionAsync from './Azure/createInternalFunctionAsync';
-import createChannelFunction from './Azure/createChannelFunction';
-import apiStatusCheck from './Checkly/apiStatusCheck';
-import dnsRecord from './CloudFlare/dnsRecord';
-import publishProjectAsync from './dotnet/publishProjectAsync';
-import { ConfCloudApiCheckInterval, ConfPublicSignalRCheckInterval } from './config';
-import createRemoteBrowser from './apps/createRemoteBrowser';
-import { createContainerRegistry, getContainerRegistry } from './Azure/containerRegistry';
-import createFunctionsStorage from './Azure/createFunctionsStorage';
-import { Dashboard } from '@checkly/pulumi/dashboard';
-import createLogWorkspace from './Azure/createLogWorkspace';
-import createAppInsights from './Azure/createAppInsights';
-import { nextJsApp } from './Vercel/nextJsApp';
-import { vercelApp } from './Vercel/vercelApp';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import {
+ createSignalR,
+ createStorageAccount,
+ createKeyVault,
+ createPublicFunction,
+ webAppIdentity,
+ vaultSecret,
+ assignFunctionCodeAsync,
+ assignFunctionSettings,
+ createContainerRegistry,
+ getContainerRegistry,
+ createFunctionsStorage,
+ createLogWorkspace,
+ createAppInsights,
+} from '@infra/pulumi/azure';
+import { createSes } from '@infra/pulumi/aws';
+import { apiStatusCheck } from '@infra/pulumi/checkly';
+import { dnsRecord } from '@infra/pulumi/cloudflare';
+import { publishProjectAsync } from '@infra/pulumi/dotnet';
+import { ConfCloudApiCheckInterval, ConfPublicSignalRCheckInterval } from './config.js';
+import { createRemoteBrowser } from './createRemoteBrowser.js';
+import { Dashboard } from '@checkly/pulumi';
+import { nextJsApp, vercelApp } from '@infra/pulumi/vercel';
+import { createChannelFunction } from './createChannelFunction.js';
+import { createInternalFunctionAsync } from './createInternalFunctionAsync.js';
/*
* NOTE: `parent` configuration is currently disabled for all resources because
@@ -32,7 +34,7 @@ import { vercelApp } from './Vercel/vercelApp';
* - this doesn't work in CI because az is not installed and authenticated
*/
-export = async () => {
+const up = async () => {
const resourceGroupSharedName = 'signalco-shared';
const containerRegistryName = 'signalco';
@@ -46,7 +48,7 @@ export = async () => {
createContainerRegistry(resourceGroupShared, containerRegistryName, true);
- return { };
+ return {};
} else {
const shouldProtect = stack === 'production';
const domainName = `${config.require('domain')}`;
@@ -84,7 +86,7 @@ export = async () => {
api.cors,
currentStack,
false);
- const apiFuncPublish = await publishProjectAsync(['../src/Signalco.Api.Public', api.name].filter(i => i.length).join('.'));
+ const apiFuncPublish = await publishProjectAsync(['../../../cloud/src/Signalco.Api.Public', api.name].filter(i => i.length).join('.'));
const apiFuncCode = await assignFunctionCodeAsync(
resourceGroup,
funcStorage.storageAccount.storageAccount,
@@ -113,14 +115,14 @@ export = async () => {
const channelNames = stack === 'production'
? productionChannelNames
: [...productionChannelNames, ...nextChannelNames];
- const channelsFuncs = [];
+ const channelsFunctions = [];
for (const channelName of channelNames) {
- channelsFuncs.push(await createChannelFunction(channelName, resourceGroup, funcStorage.storageAccount.storageAccount, funcStorage.zipsContainer, currentStack, false));
+ channelsFunctions.push(await createChannelFunction(channelName, resourceGroup, funcStorage.storageAccount.storageAccount, funcStorage.zipsContainer, currentStack, false));
}
// Generate discrete functions
const discreteNames = ['Mutex'];
- const discreteFuncs = [];
+ const discreteFunctions = [];
for (const funcName of discreteNames) {
const discreteResourceGroup = new ResourceGroup(`signalco-discrete-${stack}-${funcName.toLowerCase()}`);
const discreteStorage = createFunctionsStorage(discreteResourceGroup, `${funcName.toLowerCase().substring(0, 5)}funcs`, false);
@@ -131,14 +133,14 @@ export = async () => {
undefined,
currentStack,
false);
- const funcPublish = await publishProjectAsync(`../../discrete/Signalco.Discrete.Api.${funcName}/cloud`, 7);
+ const funcPublish = await publishProjectAsync(`../../../discrete/Signalco.Discrete.Api.${funcName}/cloud`, 7);
const funcCode = await assignFunctionCodeAsync(
discreteResourceGroup,
discreteStorage.storageAccount.storageAccount,
discreteStorage.zipsContainer,
funcName.toLowerCase().substring(0, 5),
funcPublish.releaseDir);
- discreteFuncs.push({
+ discreteFunctions.push({
name: funcName,
shortName: funcName.toLowerCase().substring(0, 5),
resourceGroup: discreteResourceGroup,
@@ -165,7 +167,7 @@ export = async () => {
const vault = createKeyVault(resourceGroup, keyvaultPrefix, shouldProtect, [
...publicFuncs.map(c => webAppIdentity(c.webApp)),
...internalFuncs.map(c => webAppIdentity(c.webApp)),
- ...channelsFuncs.map(c => webAppIdentity(c.webApp)),
+ ...channelsFunctions.map(c => webAppIdentity(c.webApp)),
]);
vaultSecret(resourceGroup, vault.keyVault, keyvaultPrefix, 'Slack--SigningSecret', config.requireSecret('secret-slackSigningSecret'));
@@ -226,7 +228,7 @@ export = async () => {
});
// Populate channel function settings
- channelsFuncs.forEach(channel => {
+ channelsFunctions.forEach(channel => {
assignFunctionSettings(
resourceGroup,
channel.webApp,
@@ -241,7 +243,7 @@ export = async () => {
});
// Populate discrete function settings
- discreteFuncs.forEach(func => {
+ discreteFunctions.forEach(func => {
assignFunctionSettings(
func.resourceGroup,
func.webApp,
@@ -269,7 +271,7 @@ export = async () => {
dnsRecord('checkly-public-dashboard', 'status', 'checkly-dashboards.com', 'CNAME', false);
dnsRecord('checkly-public-dashboard-txt', '_vercel', 'vc-domain-verify=status.signalco.io,563d86cd3501b049a1ad', 'TXT', false);
}
-
+
// Vercel apps
nextJsApp('signalco-blog', 'blog');
nextJsApp('signalco-app', 'app');
@@ -295,23 +297,25 @@ export = async () => {
signalrUrl: signalr.signalr.hostName,
internalFunctionUrls: internalFuncs.map(f => f.webApp.hostNames[0]),
publicUrls: publicFuncs.map(c => c.dnsCname.hostname),
- channelsUrls: channelsFuncs.map(c => c.dnsCname.hostname),
+ channelsUrls: channelsFunctions.map(c => c.dnsCname.hostname),
appUrls: [
appRb.app.url,
],
- discreteUrls: discreteFuncs.map(f => f.webApp.hostNames[0]),
+ discreteUrls: discreteFunctions.map(f => f.webApp.hostNames[0]),
resourceGroupName: resourceGroup.name,
functionApps: [
...internalFuncs.map(c => c.webApp.name),
...publicFuncs.map(c => c.webApp.name),
- ...channelsFuncs.map(c => c.webApp.name),
- ...discreteFuncs.map(c => c.webApp.name),
+ ...channelsFunctions.map(c => c.webApp.name),
+ ...discreteFunctions.map(c => c.webApp.name),
],
certs: [
- ...publicFuncs.map(f => ({ fullDomainName: f.fullDomainName, thumbprint: f.cert.thumbprint})),
- ...channelsFuncs.map(f => ({ fullDomainName: f.fullDomainName, thumbprint: f.cert.thumbprint})),
- ...discreteFuncs.map(f => ({ fullDomainName: f.fullDomainName, thumbprint: f.cert.thumbprint})),
+ ...publicFuncs.map(f => ({ fullDomainName: f.fullDomainName, thumbprint: f.cert.thumbprint })),
+ ...channelsFunctions.map(f => ({ fullDomainName: f.fullDomainName, thumbprint: f.cert.thumbprint })),
+ ...discreteFunctions.map(f => ({ fullDomainName: f.fullDomainName, thumbprint: f.cert.thumbprint })),
],
};
}
};
+
+export default up;
diff --git a/infra/apps/cloud-primary/tsconfig.json b/infra/apps/cloud-primary/tsconfig.json
new file mode 100644
index 0000000000..c238fdf402
--- /dev/null
+++ b/infra/apps/cloud-primary/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "@infra/typescript-config/base.json",
+ "parserOptions": {
+ "project": "./tsconfig.json"
+ },
+ "compilerOptions": {
+ "outDir": "dist",
+ },
+ "include": [
+ "./src/**/*.ts",
+ "./.eslintrc.cjs"
+ ],
+ "exclude": [
+ "node_modules",
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/infra/apps/remote-browser/.eslintrc.js b/infra/apps/remote-browser/.eslintrc.js
new file mode 100644
index 0000000000..ac8a0bf66f
--- /dev/null
+++ b/infra/apps/remote-browser/.eslintrc.js
@@ -0,0 +1,9 @@
+/** @type {import("eslint").Linter.Config} */
+module.exports = {
+ root: true,
+ extends: ["@infra/eslint-config/library.js"],
+ parser: "@typescript-eslint/parser",
+ parserOptions: {
+ project: "./tsconfig.json",
+ },
+};
\ No newline at end of file
diff --git a/infra/apps/remote-browser/package.json b/infra/apps/remote-browser/package.json
new file mode 100644
index 0000000000..0b15339bb3
--- /dev/null
+++ b/infra/apps/remote-browser/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "@infra/remote-browser",
+ "private": true,
+ "license": "../LICENSE",
+ "main": "src/index.ts",
+ "scripts": {
+ "lint": "eslint ./src/**/*.ts"
+ },
+ "devDependencies": {
+ "@infra/pulumi": "workspace:*",
+ "@types/node": "20.10.5",
+ "@typescript-eslint/eslint-plugin": "6.14.0",
+ "@typescript-eslint/parser": "6.14.0",
+ "eslint": "8.56.0",
+ "eslint-config-standard": "17.1.0",
+ "eslint-plugin-import": "2.29.1",
+ "eslint-plugin-n": "16.4.0",
+ "eslint-plugin-node": "11.1.0",
+ "eslint-plugin-promise": "6.1.1",
+ "typescript": "5.3.3"
+ },
+ "dependencies": {
+ "@checkly/pulumi": "1.1.4",
+ "@pulumi/aws": "6.14.0",
+ "@pulumi/azure-native": "2.22.0",
+ "@pulumi/cloudflare": "5.16.0",
+ "@pulumi/command": "0.9.2",
+ "@pulumi/docker": "4.5.0",
+ "@pulumi/pulumi": "3.97.0",
+ "@pulumiverse/vercel": "1.0.1"
+ }
+}
\ No newline at end of file
diff --git a/infra/apps/remote-browser/tsconfig.json b/infra/apps/remote-browser/tsconfig.json
new file mode 100644
index 0000000000..be630c2b2c
--- /dev/null
+++ b/infra/apps/remote-browser/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "extends": "@infra/typescript-config/base.json",
+ "include": [
+ "**/*.ts",
+ "**/*.tsx",
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}
\ No newline at end of file
diff --git a/infra/apps/uier/.eslintrc.js b/infra/apps/uier/.eslintrc.js
new file mode 100644
index 0000000000..ac8a0bf66f
--- /dev/null
+++ b/infra/apps/uier/.eslintrc.js
@@ -0,0 +1,9 @@
+/** @type {import("eslint").Linter.Config} */
+module.exports = {
+ root: true,
+ extends: ["@infra/eslint-config/library.js"],
+ parser: "@typescript-eslint/parser",
+ parserOptions: {
+ project: "./tsconfig.json",
+ },
+};
\ No newline at end of file
diff --git a/infra/apps/uier/Pulumi.next.yaml b/infra/apps/uier/Pulumi.next.yaml
new file mode 100644
index 0000000000..7e76d365fd
--- /dev/null
+++ b/infra/apps/uier/Pulumi.next.yaml
@@ -0,0 +1,4 @@
+config:
+ vercel:apiToken:
+ secure: AAABAA4uxruLwvuYUDigNjy8yKK8Q3fYt/nM8JmX+RWMNsAMCiDNTbw8uFgFetLzaM4ZkQyLh/8=
+ vercel:team: team_Ade0MlfC3211ml3wYJZ4c9hn
diff --git a/infra/apps/uier/Pulumi.production.yaml b/infra/apps/uier/Pulumi.production.yaml
new file mode 100644
index 0000000000..7ec3d3c9b5
--- /dev/null
+++ b/infra/apps/uier/Pulumi.production.yaml
@@ -0,0 +1,4 @@
+config:
+ vercel:apiToken:
+ secure: AAABAIqY6swLmFBuXsBC1nImEqM4nxOHyxnJn61fsVuM5MrM/gif2yN6U8ZkY5f/lIEQB9H/kSM=
+ vercel:team: team_Ade0MlfC3211ml3wYJZ4c9hn
diff --git a/infra/apps/uier/Pulumi.yaml b/infra/apps/uier/Pulumi.yaml
new file mode 100644
index 0000000000..47d6c808b0
--- /dev/null
+++ b/infra/apps/uier/Pulumi.yaml
@@ -0,0 +1,3 @@
+name: uier
+runtime: nodejs
+description: uier.io infrastructure
diff --git a/infra/apps/uier/package.json b/infra/apps/uier/package.json
new file mode 100644
index 0000000000..f76c6ce384
--- /dev/null
+++ b/infra/apps/uier/package.json
@@ -0,0 +1,36 @@
+{
+ "name": "@infra/uier",
+ "private": true,
+ "license": "../LICENSE",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "type": "module",
+ "scripts": {
+ "build": "tsc",
+ "lint": "eslint ./src/**/*.ts",
+ "preview": "pulumi preview"
+ },
+ "devDependencies": {
+ "@infra/pulumi": "workspace:*",
+ "@types/node": "20.10.5",
+ "@typescript-eslint/eslint-plugin": "6.14.0",
+ "@typescript-eslint/parser": "6.14.0",
+ "eslint": "8.56.0",
+ "eslint-config-standard": "17.1.0",
+ "eslint-plugin-import": "2.29.1",
+ "eslint-plugin-n": "16.4.0",
+ "eslint-plugin-node": "11.1.0",
+ "eslint-plugin-promise": "6.1.1",
+ "typescript": "5.3.3"
+ },
+ "dependencies": {
+ "@checkly/pulumi": "1.1.4",
+ "@pulumi/aws": "6.14.0",
+ "@pulumi/azure-native": "2.22.0",
+ "@pulumi/cloudflare": "5.16.0",
+ "@pulumi/command": "0.9.2",
+ "@pulumi/docker": "4.5.0",
+ "@pulumi/pulumi": "3.97.0",
+ "@pulumiverse/vercel": "1.0.1"
+ }
+}
\ No newline at end of file
diff --git a/infra/apps/uier/src/index.ts b/infra/apps/uier/src/index.ts
new file mode 100644
index 0000000000..a085a0639a
--- /dev/null
+++ b/infra/apps/uier/src/index.ts
@@ -0,0 +1,7 @@
+import { nextJsApp } from '@infra/pulumi/vercel';
+
+const up = async () => {
+ nextJsApp('uier', 'uier');
+};
+
+export default up;
\ No newline at end of file
diff --git a/infra/apps/uier/tsconfig.json b/infra/apps/uier/tsconfig.json
new file mode 100644
index 0000000000..c238fdf402
--- /dev/null
+++ b/infra/apps/uier/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "@infra/typescript-config/base.json",
+ "parserOptions": {
+ "project": "./tsconfig.json"
+ },
+ "compilerOptions": {
+ "outDir": "dist",
+ },
+ "include": [
+ "./src/**/*.ts",
+ "./.eslintrc.cjs"
+ ],
+ "exclude": [
+ "node_modules",
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/infra/package.json b/infra/package.json
new file mode 100644
index 0000000000..78332fe9f5
--- /dev/null
+++ b/infra/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "infra",
+ "private": true,
+ "scripts": {
+ "build": "turbo build",
+ "preview": "turbo preview",
+ "lint": "turbo lint",
+ "format": "prettier --write \"**/*.{ts,tsx,md}\""
+ },
+ "devDependencies": {
+ "@infra/eslint-config": "workspace:*",
+ "@infra/typescript-config": "workspace:*",
+ "prettier": "^3.1.0",
+ "turbo": "latest"
+ },
+ "packageManager": "pnpm@8.9.0",
+ "engines": {
+ "node": ">=18"
+ }
+}
diff --git a/infra/packages/eslint-config/README.md b/infra/packages/eslint-config/README.md
new file mode 100644
index 0000000000..8b42d901b0
--- /dev/null
+++ b/infra/packages/eslint-config/README.md
@@ -0,0 +1,3 @@
+# `@turbo/eslint-config`
+
+Collection of internal eslint configurations.
diff --git a/infra/packages/eslint-config/library.js b/infra/packages/eslint-config/library.js
new file mode 100644
index 0000000000..6eeae10b3f
--- /dev/null
+++ b/infra/packages/eslint-config/library.js
@@ -0,0 +1,61 @@
+const { resolve } = require("node:path");
+
+const project = resolve(process.cwd(), "tsconfig.json");
+
+/** @type {import("eslint").Linter.Config} */
+module.exports = {
+ extends: [
+ "eslint:recommended",
+ "eslint-config-turbo",
+ "plugin:import/recommended",
+ "plugin:@typescript-eslint/recommended"
+ ],
+ plugins: ["only-warn", "@typescript-eslint"],
+ env: {
+ node: true,
+ },
+ settings: {
+ "import/resolver": {
+ typescript: {
+ project
+ },
+ }
+ },
+ ignorePatterns: [
+ // Ignore dotfiles
+ ".*.js",
+ "node_modules/",
+ "dist/",
+ ],
+ overrides: [
+ {
+ files: ["*.js?(x)", "*.ts?(x)"],
+ },
+ ],
+ rules: {
+ "indent": [
+ "error",
+ 4
+ ],
+ "quotes": [
+ "error",
+ "single"
+ ],
+ "comma-dangle": [
+ "warn",
+ {
+ "arrays": "always-multiline",
+ "objects": "always-multiline",
+ "imports": "always-multiline",
+ "exports": "always-multiline",
+ "functions": "always-multiline"
+ }
+ ],
+ "semi": [
+ "error",
+ "always"
+ ],
+ "import/no-unresolved": 0,
+ "import/no-absolute-path": 0
+ }
+};
diff --git a/infra/packages/eslint-config/package.json b/infra/packages/eslint-config/package.json
new file mode 100644
index 0000000000..9b82b6089b
--- /dev/null
+++ b/infra/packages/eslint-config/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "@infra/eslint-config",
+ "version": "0.0.0",
+ "private": true,
+ "files": [
+ "library.js"
+ ],
+ "devDependencies": {
+ "eslint-config-turbo": "^1.10.12",
+ "eslint-config-prettier": "^9.0.0",
+ "eslint-plugin-only-warn": "^1.1.0",
+ "eslint-plugin-import": "2.29.1",
+ "eslint-import-resolver-typescript": "3.6.1",
+ "@typescript-eslint/parser": "^6.11.0",
+ "@typescript-eslint/eslint-plugin": "^6.11.0",
+ "typescript": "^5.2.2"
+ }
+}
diff --git a/infra/packages/pulumi/.eslintrc.cjs b/infra/packages/pulumi/.eslintrc.cjs
new file mode 100644
index 0000000000..ac8a0bf66f
--- /dev/null
+++ b/infra/packages/pulumi/.eslintrc.cjs
@@ -0,0 +1,9 @@
+/** @type {import("eslint").Linter.Config} */
+module.exports = {
+ root: true,
+ extends: ["@infra/eslint-config/library.js"],
+ parser: "@typescript-eslint/parser",
+ parserOptions: {
+ project: "./tsconfig.json",
+ },
+};
\ No newline at end of file
diff --git a/infra/packages/pulumi/package.json b/infra/packages/pulumi/package.json
new file mode 100644
index 0000000000..f48012dbb6
--- /dev/null
+++ b/infra/packages/pulumi/package.json
@@ -0,0 +1,60 @@
+{
+ "name": "@infra/pulumi",
+ "private": true,
+ "license": "../LICENSE",
+ "type": "module",
+ "scripts": {
+ "build": "tsc",
+ "lint": "eslint ./src/**/*.ts"
+ },
+ "exports": {
+ "./azure": {
+ "import": "./dist/azure/index.js",
+ "types": "./dist/azure/index.d.ts"
+ },
+ "./aws": {
+ "import": "./dist/aws/index.js",
+ "types": "./dist/aws/index.d.ts"
+ },
+ "./cloudflare": {
+ "import": "./dist/cloudflare/index.js",
+ "types": "./dist/cloudflare/index.d.ts"
+ },
+ "./checkly": {
+ "import": "./dist/checkly/index.js",
+ "types": "./dist/checkly/index.d.ts"
+ },
+ "./vercel": {
+ "import": "./dist/vercel/index.js",
+ "types": "./dist/vercel/index.d.ts"
+ },
+ "./dotnet": {
+ "import": "./dist/dotnet/index.js",
+ "types": "./dist/dotnet/index.d.ts"
+ }
+ },
+ "devDependencies": {
+ "@infra/typescript-config": "workspace:*",
+ "@infra/eslint-config": "workspace:*",
+ "@types/node": "20.10.5",
+ "@typescript-eslint/eslint-plugin": "6.14.0",
+ "@typescript-eslint/parser": "6.14.0",
+ "eslint": "8.56.0",
+ "eslint-config-standard": "17.1.0",
+ "eslint-plugin-import": "2.29.1",
+ "eslint-plugin-n": "16.4.0",
+ "eslint-plugin-node": "11.1.0",
+ "eslint-plugin-promise": "6.1.1",
+ "typescript": "5.3.3"
+ },
+ "dependencies": {
+ "@checkly/pulumi": "1.1.4",
+ "@pulumi/aws": "6.14.0",
+ "@pulumi/azure-native": "2.22.0",
+ "@pulumi/cloudflare": "5.16.0",
+ "@pulumi/command": "0.9.2",
+ "@pulumi/docker": "4.5.0",
+ "@pulumi/pulumi": "3.97.0",
+ "@pulumiverse/vercel": "1.0.1"
+ }
+}
\ No newline at end of file
diff --git a/cloud/infrastructure/src/AWS/createSes.ts b/infra/packages/pulumi/src/aws/createSes.ts
similarity index 93%
rename from cloud/infrastructure/src/AWS/createSes.ts
rename to infra/packages/pulumi/src/aws/createSes.ts
index 2031746189..ba09e31e7e 100644
--- a/cloud/infrastructure/src/AWS/createSes.ts
+++ b/infra/packages/pulumi/src/aws/createSes.ts
@@ -1,9 +1,9 @@
import { Config, interpolate } from '@pulumi/pulumi';
-import { User, AccessKey, UserPolicy } from '@pulumi/aws/iam';
-import { DomainIdentity, MailFrom, DomainDkim } from '@pulumi/aws/ses';
-import dnsRecord from '../CloudFlare/dnsRecord';
+import { User, AccessKey, UserPolicy } from '@pulumi/aws/iam/index.js';
+import { DomainIdentity, MailFrom, DomainDkim } from '@pulumi/aws/ses/index.js';
+import { dnsRecord } from '../cloudflare/dnsRecord.js';
-export default function createSes (prefix: string, subdomain: string) {
+export function createSes(prefix: string, subdomain: string) {
const config = new Config();
const baseDomain = config.require('domain');
const sesRegion = config.require('ses-region');
diff --git a/infra/packages/pulumi/src/aws/index.ts b/infra/packages/pulumi/src/aws/index.ts
new file mode 100644
index 0000000000..1e4bbf290b
--- /dev/null
+++ b/infra/packages/pulumi/src/aws/index.ts
@@ -0,0 +1 @@
+export * from './createSes.js';
\ No newline at end of file
diff --git a/cloud/infrastructure/src/Azure/assignCustomDomain.ts b/infra/packages/pulumi/src/azure/assignCustomDomain.ts
similarity index 83%
rename from cloud/infrastructure/src/Azure/assignCustomDomain.ts
rename to infra/packages/pulumi/src/azure/assignCustomDomain.ts
index 754a7c6ea0..bd91df12fc 100644
--- a/cloud/infrastructure/src/Azure/assignCustomDomain.ts
+++ b/infra/packages/pulumi/src/azure/assignCustomDomain.ts
@@ -1,14 +1,14 @@
import { Config, interpolate, type StackReference, Output } from '@pulumi/pulumi';
-import { WebApp, AppServicePlan, WebAppHostNameBinding, Certificate, HostNameType, SslState, CustomHostNameDnsRecordType } from '@pulumi/azure-native/web';
-import { ResourceGroup } from '@pulumi/azure-native/resources';
-import dnsRecord from '../CloudFlare/dnsRecord';
+import { WebApp, AppServicePlan, WebAppHostNameBinding, Certificate, HostNameType, SslState, CustomHostNameDnsRecordType } from '@pulumi/azure-native/web/index.js';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { dnsRecord } from '../cloudflare/dnsRecord.js';
-export function assignCustomDomain (
- resourceGroup: ResourceGroup,
- webApp: WebApp,
- servicePlan: AppServicePlan,
- namePrefix: string,
- subDomainName: string,
+export function assignCustomDomain(
+ resourceGroup: ResourceGroup,
+ webApp: WebApp,
+ servicePlan: AppServicePlan,
+ namePrefix: string,
+ subDomainName: string,
currentStack: StackReference,
protect: boolean) {
const config = new Config();
@@ -19,15 +19,13 @@ export function assignCustomDomain (
`asuid.${fullDomainName}`,
interpolate`${webApp.customDomainVerificationId}`,
'TXT',
- protect,
- webApp);
+ protect);
const cname = dnsRecord(
`func-dns-cname-${namePrefix}`,
fullDomainName,
webApp.defaultHostName,
'CNAME',
protect,
- webApp,
);
const certsOutput = currentStack.getOutput('certs') as Output<{ fullDomainName: string, thumbprint: string }[]>;
diff --git a/cloud/infrastructure/src/Azure/assignFunctionCodeAsync.ts b/infra/packages/pulumi/src/azure/assignFunctionCodeAsync.ts
similarity index 85%
rename from cloud/infrastructure/src/Azure/assignFunctionCodeAsync.ts
rename to infra/packages/pulumi/src/azure/assignFunctionCodeAsync.ts
index 1d6412bc50..44196852c8 100644
--- a/cloud/infrastructure/src/Azure/assignFunctionCodeAsync.ts
+++ b/infra/packages/pulumi/src/azure/assignFunctionCodeAsync.ts
@@ -1,8 +1,8 @@
import { type Input, type Resource } from '@pulumi/pulumi';
-import { FileArchive } from '@pulumi/pulumi/asset';
-import { type ResourceGroup } from '@pulumi/azure-native/resources';
-import { Blob, type BlobContainer, type StorageAccount } from '@pulumi/azure-native/storage';
-import { signedBlobReadUrl } from './signedBlobReadUrl';
+import { FileArchive } from '@pulumi/pulumi/asset/index.js';
+import { type ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { Blob, type BlobContainer, type StorageAccount } from '@pulumi/azure-native/storage/index.js';
+import { signedBlobReadUrl } from './signedBlobReadUrl.js';
export async function assignFunctionCodeAsync(
resourceGroup: ResourceGroup,
diff --git a/cloud/infrastructure/src/Azure/assignFunctionSettings.ts b/infra/packages/pulumi/src/azure/assignFunctionSettings.ts
similarity index 74%
rename from cloud/infrastructure/src/Azure/assignFunctionSettings.ts
rename to infra/packages/pulumi/src/azure/assignFunctionSettings.ts
index 46de32f7c3..31bde41b51 100644
--- a/cloud/infrastructure/src/Azure/assignFunctionSettings.ts
+++ b/infra/packages/pulumi/src/azure/assignFunctionSettings.ts
@@ -1,8 +1,8 @@
import { Input } from '@pulumi/pulumi';
-import { type WebApp, WebAppApplicationSettings } from '@pulumi/azure-native/web';
-import { type ResourceGroup } from '@pulumi/azure-native/resources';
+import { type WebApp, WebAppApplicationSettings } from '@pulumi/azure-native/web/index.js';
+import { type ResourceGroup } from '@pulumi/azure-native/resources/index.js';
-export function assignFunctionSettings (resourceGroup: ResourceGroup, app: WebApp, namePrefix: string, storageConnectionString: Input, codeUrl: Input, appSettings: Input<{ [key: string]: Input; }>, protect: boolean) {
+export function assignFunctionSettings(resourceGroup: ResourceGroup, app: WebApp, namePrefix: string, storageConnectionString: Input, codeUrl: Input, appSettings: Input<{ [key: string]: Input; }>, protect: boolean) {
const settings = new WebAppApplicationSettings(`func-appsettings-${namePrefix}`, {
name: app.name,
resourceGroupName: resourceGroup.name,
diff --git a/cloud/infrastructure/src/Azure/containerRegistry.ts b/infra/packages/pulumi/src/azure/containerRegistry.ts
similarity index 92%
rename from cloud/infrastructure/src/Azure/containerRegistry.ts
rename to infra/packages/pulumi/src/azure/containerRegistry.ts
index c40086acb3..3765761740 100644
--- a/cloud/infrastructure/src/Azure/containerRegistry.ts
+++ b/infra/packages/pulumi/src/azure/containerRegistry.ts
@@ -1,10 +1,10 @@
-import { Registry, listRegistryCredentialsOutput, getRegistryOutput } from '@pulumi/azure-native/containerregistry';
-import { type ResourceGroup } from '@pulumi/azure-native/resources';
+import { Registry, listRegistryCredentialsOutput, getRegistryOutput } from '@pulumi/azure-native/containerregistry/index.js';
+import { type ResourceGroup } from '@pulumi/azure-native/resources/index.js';
import { interpolate, type Output } from '@pulumi/pulumi';
export type ContainerRegistryResult = {
registry: {
- name: Output,
+ name: Output,
loginServer: Output
},
credentials: {
@@ -28,7 +28,7 @@ export function getContainerRegistry(resourceGroupName: string, name: string): C
registry,
credentials: {
adminUserName: interpolate`${credentials.username}`,
- adminPassword: credentials.apply(c => c.passwords![0].value!),
+ adminPassword: credentials.apply(c => c.passwords![0]!.value!),
},
};
}
@@ -54,7 +54,7 @@ export function createContainerRegistry(resourceGroup: ResourceGroup, name: stri
registry,
credentials: {
adminUserName: interpolate`${credentials.username}`,
- adminPassword: credentials.apply(c => c.passwords![0].value!),
+ adminPassword: credentials.apply(c => c.passwords![0]!.value!),
},
};
}
\ No newline at end of file
diff --git a/cloud/infrastructure/src/Azure/createAppInsights.ts b/infra/packages/pulumi/src/azure/createAppInsights.ts
similarity index 83%
rename from cloud/infrastructure/src/Azure/createAppInsights.ts
rename to infra/packages/pulumi/src/azure/createAppInsights.ts
index a02c9575d1..b73a9ca820 100644
--- a/cloud/infrastructure/src/Azure/createAppInsights.ts
+++ b/infra/packages/pulumi/src/azure/createAppInsights.ts
@@ -1,8 +1,8 @@
-import { type ResourceGroup } from '@pulumi/azure-native/resources';
-import { ComponentCurrentBillingFeature, Component, ApplicationType, type ComponentArgs } from '@pulumi/azure-native/insights';
-import type createLogWorkspace from './createLogWorkspace';
+import { type ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { ComponentCurrentBillingFeature, Component, ApplicationType, type ComponentArgs } from '@pulumi/azure-native/insights/index.js';
+import { createLogWorkspace } from './createLogWorkspace.js';
-export default function createAppInsights(
+export function createAppInsights(
resourceGroup: ResourceGroup,
namePrefix: string,
logWorkspace: ReturnType,
diff --git a/cloud/infrastructure/src/Azure/createContainerApp.ts b/infra/packages/pulumi/src/azure/createContainerApp.ts
similarity index 81%
rename from cloud/infrastructure/src/Azure/createContainerApp.ts
rename to infra/packages/pulumi/src/azure/createContainerApp.ts
index be6509ad96..009d83a3ec 100644
--- a/cloud/infrastructure/src/Azure/createContainerApp.ts
+++ b/infra/packages/pulumi/src/azure/createContainerApp.ts
@@ -1,10 +1,10 @@
-import { ContainerApp, ManagedEnvironment } from '@pulumi/azure-native/app';
-import { ResourceGroup } from '@pulumi/azure-native/resources';
+import { ContainerApp, ManagedEnvironment } from '@pulumi/azure-native/app/index.js';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
import { Image } from '@pulumi/docker';
import { interpolate } from '@pulumi/pulumi';
-import { type ContainerRegistryResult } from './containerRegistry';
+import { type ContainerRegistryResult } from './containerRegistry.js';
-export default function createContainerApp(resourceGroup: ResourceGroup, namePrefix: string, environment: ManagedEnvironment, registry: ContainerRegistryResult, image: Image, shouldProtect: boolean) {
+export function createContainerApp(resourceGroup: ResourceGroup, namePrefix: string, environment: ManagedEnvironment, registry: ContainerRegistryResult, image: Image, shouldProtect: boolean) {
const containerApp = new ContainerApp(`docker-app-${namePrefix}`, {
resourceGroupName: resourceGroup.name,
managedEnvironmentId: environment.id,
diff --git a/cloud/infrastructure/src/Azure/createContainerImage.ts b/infra/packages/pulumi/src/azure/createContainerImage.ts
similarity index 80%
rename from cloud/infrastructure/src/Azure/createContainerImage.ts
rename to infra/packages/pulumi/src/azure/createContainerImage.ts
index 0dcfb00124..2858aef4df 100644
--- a/cloud/infrastructure/src/Azure/createContainerImage.ts
+++ b/infra/packages/pulumi/src/azure/createContainerImage.ts
@@ -1,19 +1,19 @@
import { Image } from '@pulumi/docker';
import { getStack, interpolate } from '@pulumi/pulumi';
-import { type ContainerRegistryResult } from './containerRegistry';
-import path = require('node:path');
+import { type ContainerRegistryResult } from './containerRegistry.js';
+import path from 'node:path';
-export default function createContainerImage(
+export function createContainerImage(
registry: ContainerRegistryResult,
namePrefix: string,
imageName: string,
projectName: string,
) {
const stack = getStack();
- const workingDirectory = path.join(process.cwd(), '..', 'src', projectName);
+ const workingDirectory = path.join(process.cwd(), '..', '..', '..', 'cloud', 'src', projectName);
const image = new Image(`docker-image-${namePrefix}`, {
imageName: interpolate`${registry.registry.loginServer}/${imageName}:${stack}`,
- build: {
+ build: {
context: workingDirectory,
platform: 'linux/amd64',
},
diff --git a/cloud/infrastructure/src/Azure/createFunction.ts b/infra/packages/pulumi/src/azure/createFunction.ts
similarity index 92%
rename from cloud/infrastructure/src/Azure/createFunction.ts
rename to infra/packages/pulumi/src/azure/createFunction.ts
index 892d0c7ccf..fb5fa6d71b 100644
--- a/cloud/infrastructure/src/Azure/createFunction.ts
+++ b/infra/packages/pulumi/src/azure/createFunction.ts
@@ -1,8 +1,8 @@
-import { WebApp, AppServicePlan, SupportedTlsVersions } from '@pulumi/azure-native/web';
-import { ResourceGroup } from '@pulumi/azure-native/resources';
+import { WebApp, AppServicePlan, SupportedTlsVersions } from '@pulumi/azure-native/web/index.js';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
import { Input, interpolate } from '@pulumi/pulumi';
-export function createFunction (
+export function createFunction(
resourceGroup: ResourceGroup,
namePrefix: string,
protect: boolean,
diff --git a/cloud/infrastructure/src/Azure/createFunctionsStorage.ts b/infra/packages/pulumi/src/azure/createFunctionsStorage.ts
similarity index 74%
rename from cloud/infrastructure/src/Azure/createFunctionsStorage.ts
rename to infra/packages/pulumi/src/azure/createFunctionsStorage.ts
index b262fcbd1b..11803cd138 100644
--- a/cloud/infrastructure/src/Azure/createFunctionsStorage.ts
+++ b/infra/packages/pulumi/src/azure/createFunctionsStorage.ts
@@ -1,14 +1,14 @@
-import { type ResourceGroup } from '@pulumi/azure-native/resources';
-import { createStorageAccount } from './createStorageAccount';
-import { BlobContainer } from '@pulumi/azure-native/storage';
+import { type ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { createStorageAccount } from './createStorageAccount.js';
+import { BlobContainer } from '@pulumi/azure-native/storage/index.js';
-export default function createFunctionsStorage(
+export function createFunctionsStorage(
resourceGroup: ResourceGroup,
namePrefix: string,
protect: boolean,
-
+
) {
- const account = createStorageAccount(resourceGroup, namePrefix, protect, resourceGroup);
+ const account = createStorageAccount(resourceGroup, namePrefix, protect);
// Function code archives will be stored in this container.
const codeContainer = new BlobContainer(`func-zips-${namePrefix}`, {
diff --git a/cloud/infrastructure/src/Azure/createKeyVault.ts b/infra/packages/pulumi/src/azure/createKeyVault.ts
similarity index 92%
rename from cloud/infrastructure/src/Azure/createKeyVault.ts
rename to infra/packages/pulumi/src/azure/createKeyVault.ts
index 1b3c0a12fc..286674b552 100644
--- a/cloud/infrastructure/src/Azure/createKeyVault.ts
+++ b/infra/packages/pulumi/src/azure/createKeyVault.ts
@@ -1,9 +1,9 @@
import { Output } from '@pulumi/pulumi';
-import { ResourceGroup } from '@pulumi/azure-native/resources';
-import { Vault, SkuFamily, SkuName, KeyPermissions, SecretPermissions } from '@pulumi/azure-native/keyvault';
-import { getClientConfig } from '@pulumi/azure-native/authorization';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { Vault, SkuFamily, SkuName, KeyPermissions, SecretPermissions } from '@pulumi/azure-native/keyvault/index.js';
+import { getClientConfig } from '@pulumi/azure-native/authorization/index.js';
-export function createKeyVault (
+export function createKeyVault(
resourceGroup: ResourceGroup,
namePrefix: string,
protect: boolean,
diff --git a/cloud/infrastructure/src/Azure/createLogWorkspace.ts b/infra/packages/pulumi/src/azure/createLogWorkspace.ts
similarity index 73%
rename from cloud/infrastructure/src/Azure/createLogWorkspace.ts
rename to infra/packages/pulumi/src/azure/createLogWorkspace.ts
index eb97293625..bffcf64819 100644
--- a/cloud/infrastructure/src/Azure/createLogWorkspace.ts
+++ b/infra/packages/pulumi/src/azure/createLogWorkspace.ts
@@ -1,7 +1,7 @@
-import { Workspace, getSharedKeysOutput, WorkspaceSkuNameEnum } from '@pulumi/azure-native/operationalinsights';
-import { ResourceGroup } from '@pulumi/azure-native/resources';
+import { Workspace, getSharedKeysOutput, WorkspaceSkuNameEnum } from '@pulumi/azure-native/operationalinsights/index.js';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
-export default function createLogWorkspace(resourceGroup: ResourceGroup, namePrefix: string) {
+export function createLogWorkspace(resourceGroup: ResourceGroup, namePrefix: string) {
const workspace = new Workspace(`loganalytics-${namePrefix}`, {
resourceGroupName: resourceGroup.name,
sku: {
diff --git a/cloud/infrastructure/src/Azure/createManagedEnvironment.ts b/infra/packages/pulumi/src/azure/createManagedEnvironment.ts
similarity index 73%
rename from cloud/infrastructure/src/Azure/createManagedEnvironment.ts
rename to infra/packages/pulumi/src/azure/createManagedEnvironment.ts
index b38f0f1d72..67745bc24d 100644
--- a/cloud/infrastructure/src/Azure/createManagedEnvironment.ts
+++ b/infra/packages/pulumi/src/azure/createManagedEnvironment.ts
@@ -1,11 +1,11 @@
-import { ManagedEnvironment } from '@pulumi/azure-native/app';
-import { GetSharedKeysResult } from '@pulumi/azure-native/operationalinsights';
-import { type ResourceGroup } from '@pulumi/azure-native/resources';
-import type createLogWorkspace from './createLogWorkspace';
+import { ManagedEnvironment } from '@pulumi/azure-native/app/index.js';
+import { GetSharedKeysResult } from '@pulumi/azure-native/operationalinsights/index.js';
+import { type ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { createLogWorkspace } from './createLogWorkspace.js';
-export default function createManagedEnvironments(
- resourceGroup: ResourceGroup,
- namePrefix: string,
+export function createManagedEnvironment(
+ resourceGroup: ResourceGroup,
+ namePrefix: string,
logWorkspace: ReturnType,
shouldProtect: boolean) {
const managedEnvironment = new ManagedEnvironment(`env-${namePrefix}`, {
diff --git a/cloud/infrastructure/src/Azure/createPublicFunction.ts b/infra/packages/pulumi/src/azure/createPublicFunction.ts
similarity index 52%
rename from cloud/infrastructure/src/Azure/createPublicFunction.ts
rename to infra/packages/pulumi/src/azure/createPublicFunction.ts
index 26acee4f4a..184b5633ab 100644
--- a/cloud/infrastructure/src/Azure/createPublicFunction.ts
+++ b/infra/packages/pulumi/src/azure/createPublicFunction.ts
@@ -1,18 +1,18 @@
-import { ResourceGroup } from '@pulumi/azure-native/resources';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
import { type Input, type StackReference } from '@pulumi/pulumi';
-import { assignCustomDomain } from './assignCustomDomain';
-import { createFunction } from './createFunction';
+import { assignCustomDomain } from './assignCustomDomain.js';
+import { createFunction } from './createFunction.js';
-export default function createPublicFunction (
- resourceGroup: ResourceGroup,
- namePrefix: string,
- subDomainName: string,
- corsDomains: Input[] | undefined,
+export function createPublicFunction(
+ resourceGroup: ResourceGroup,
+ namePrefix: string,
+ subDomainName: string,
+ corsDomains: Input[] | undefined,
currentStack: StackReference,
protect: boolean) {
const pubFunc = createFunction(resourceGroup, namePrefix, protect, true, corsDomains);
const domain = assignCustomDomain(
- resourceGroup, pubFunc.webApp, pubFunc.servicePlan, namePrefix, subDomainName,
+ resourceGroup, pubFunc.webApp, pubFunc.servicePlan, namePrefix, subDomainName,
currentStack, protect);
return {
diff --git a/cloud/infrastructure/src/Azure/createSignalR.ts b/infra/packages/pulumi/src/azure/createSignalR.ts
similarity index 94%
rename from cloud/infrastructure/src/Azure/createSignalR.ts
rename to infra/packages/pulumi/src/azure/createSignalR.ts
index 8a9d82be50..d715272a99 100644
--- a/cloud/infrastructure/src/Azure/createSignalR.ts
+++ b/infra/packages/pulumi/src/azure/createSignalR.ts
@@ -1,6 +1,6 @@
import { Input, interpolate } from '@pulumi/pulumi';
-import { ResourceGroup } from '@pulumi/azure-native/resources';
-import { SignalR, listSignalRKeysOutput } from '@pulumi/azure-native/signalrservice';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { SignalR, listSignalRKeysOutput } from '@pulumi/azure-native/signalrservice/index.js';
export function createSignalR(resourceGroup: ResourceGroup, namePrefix: string, cors: Input[], sku: 'free' | 'standard1', protect: boolean) {
const signalr = new SignalR('signalr-' + namePrefix, {
diff --git a/cloud/infrastructure/src/Azure/createStorageAccount.ts b/infra/packages/pulumi/src/azure/createStorageAccount.ts
similarity index 59%
rename from cloud/infrastructure/src/Azure/createStorageAccount.ts
rename to infra/packages/pulumi/src/azure/createStorageAccount.ts
index 797b810264..69d11f8ded 100644
--- a/cloud/infrastructure/src/Azure/createStorageAccount.ts
+++ b/infra/packages/pulumi/src/azure/createStorageAccount.ts
@@ -1,10 +1,8 @@
-import { Resource } from '@pulumi/pulumi';
-import { StorageAccount, SkuName, Kind, MinimumTlsVersion } from '@pulumi/azure-native/storage';
-import { ResourceGroup } from '@pulumi/azure-native/resources';
+import { StorageAccount, SkuName, Kind, MinimumTlsVersion } from '@pulumi/azure-native/storage/index.js';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { getConnectionString } from './getConnectionString.js';
-import { getConnectionString } from './getConnectionString';
-
-export function createStorageAccount (resourceGroup: ResourceGroup, namePrefix: string, protect: boolean, parent?: Resource) {
+export function createStorageAccount(resourceGroup: ResourceGroup, namePrefix: string, protect: boolean) {
const storageAccount = new StorageAccount(`sa${namePrefix}`, {
resourceGroupName: resourceGroup.name,
enableHttpsTrafficOnly: true,
@@ -15,7 +13,6 @@ export function createStorageAccount (resourceGroup: ResourceGroup, namePrefix:
kind: Kind.StorageV2,
}, {
protect,
- // parent: parent ?? resourceGroup
});
const connectionString = getConnectionString(resourceGroup, storageAccount);
diff --git a/cloud/infrastructure/src/Azure/getConnectionString.ts b/infra/packages/pulumi/src/azure/getConnectionString.ts
similarity index 62%
rename from cloud/infrastructure/src/Azure/getConnectionString.ts
rename to infra/packages/pulumi/src/azure/getConnectionString.ts
index 1130f7c240..7b40733d10 100644
--- a/cloud/infrastructure/src/Azure/getConnectionString.ts
+++ b/infra/packages/pulumi/src/azure/getConnectionString.ts
@@ -1,11 +1,11 @@
import { Output, interpolate } from '@pulumi/pulumi';
-import { listStorageAccountKeysOutput, StorageAccount } from '@pulumi/azure-native/storage';
-import { ResourceGroup } from '@pulumi/azure-native/resources';
+import { listStorageAccountKeysOutput, StorageAccount } from '@pulumi/azure-native/storage/index.js';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
-export function getConnectionString (resourceGroup: ResourceGroup, account: StorageAccount): Output {
+export function getConnectionString(resourceGroup: ResourceGroup, account: StorageAccount): Output {
// Retrieve the primary storage account key.
const storageAccountKeys = listStorageAccountKeysOutput({ resourceGroupName: resourceGroup.name, accountName: account.name });
- const primaryStorageKey = storageAccountKeys.keys[0].value;
+ const primaryStorageKey = storageAccountKeys.keys[0]!.value;
// Build the connection string to the storage account.
return interpolate`DefaultEndpointsProtocol=https;AccountName=${account.name};AccountKey=${primaryStorageKey}`;
diff --git a/infra/packages/pulumi/src/azure/index.ts b/infra/packages/pulumi/src/azure/index.ts
new file mode 100644
index 0000000000..2e5e039a43
--- /dev/null
+++ b/infra/packages/pulumi/src/azure/index.ts
@@ -0,0 +1,20 @@
+export * from './assignCustomDomain.js';
+export * from './containerRegistry.js';
+export * from './assignFunctionSettings.js';
+export * from './createAppInsights.js';
+export * from './createStorageAccount.js';
+export * from './assignFunctionCodeAsync.js';
+export * from './createKeyVault.js';
+export * from './createSignalR.js';
+export * from './createContainerApp.js';
+export * from './createContainerImage.js';
+export * from './createFunction.js';
+export * from './createFunctionsStorage.js';
+export * from './createKeyVault.js';
+export * from './createLogWorkspace.js';
+export * from './createManagedEnvironment.js';
+export * from './createPublicFunction.js';
+export * from './getConnectionString.js';
+export * from './signedBlobReadUrl.js';
+export * from './vaultSecret.js';
+export * from './webAppIdentity.js';
diff --git a/cloud/infrastructure/src/Azure/signedBlobReadUrl.ts b/infra/packages/pulumi/src/azure/signedBlobReadUrl.ts
similarity index 92%
rename from cloud/infrastructure/src/Azure/signedBlobReadUrl.ts
rename to infra/packages/pulumi/src/azure/signedBlobReadUrl.ts
index 9e76c79f96..92cb029718 100644
--- a/cloud/infrastructure/src/Azure/signedBlobReadUrl.ts
+++ b/infra/packages/pulumi/src/azure/signedBlobReadUrl.ts
@@ -1,10 +1,10 @@
-import { type ResourceGroup } from '@pulumi/azure-native/resources';
-import { type Blob, type BlobContainer, type StorageAccount, SignedResource, Permissions, HttpProtocol, listStorageAccountServiceSASOutput } from '@pulumi/azure-native/storage';
+import { type ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { type Blob, type BlobContainer, type StorageAccount, SignedResource, Permissions, HttpProtocol, listStorageAccountServiceSASOutput } from '@pulumi/azure-native/storage/index.js';
import { interpolate, Output } from '@pulumi/pulumi';
const accessYearsValid = 3;
-export function signedBlobReadUrl (
+export function signedBlobReadUrl(
blob: Blob,
container: BlobContainer,
account: StorageAccount,
diff --git a/cloud/infrastructure/src/Azure/vaultSecret.ts b/infra/packages/pulumi/src/azure/vaultSecret.ts
similarity index 51%
rename from cloud/infrastructure/src/Azure/vaultSecret.ts
rename to infra/packages/pulumi/src/azure/vaultSecret.ts
index 284e32cadc..49250cf43d 100644
--- a/cloud/infrastructure/src/Azure/vaultSecret.ts
+++ b/infra/packages/pulumi/src/azure/vaultSecret.ts
@@ -1,8 +1,8 @@
-import { ResourceGroup } from '@pulumi/azure-native/resources';
-import { Vault, Secret } from '@pulumi/azure-native/keyvault';
+import { ResourceGroup } from '@pulumi/azure-native/resources/index.js';
+import { Vault, Secret } from '@pulumi/azure-native/keyvault/index.js';
import { Input, Resource } from '@pulumi/pulumi';
-export default function vaultSecret (resourceGroup: ResourceGroup, vault: Vault, namePrefix: string, name: string, value: Input, waitFor?: Input | Input[]>) {
+export function vaultSecret(resourceGroup: ResourceGroup, vault: Vault, namePrefix: string, name: string, value: Input, waitFor?: Input | Input[]>) {
const secret = new Secret(`secret-${namePrefix}-${name}`, {
resourceGroupName: resourceGroup.name,
vaultName: vault.name,
diff --git a/cloud/infrastructure/src/Azure/webAppIdentity.ts b/infra/packages/pulumi/src/azure/webAppIdentity.ts
similarity index 69%
rename from cloud/infrastructure/src/Azure/webAppIdentity.ts
rename to infra/packages/pulumi/src/azure/webAppIdentity.ts
index 7d557aae82..9e16d97956 100644
--- a/cloud/infrastructure/src/Azure/webAppIdentity.ts
+++ b/infra/packages/pulumi/src/azure/webAppIdentity.ts
@@ -1,7 +1,7 @@
import { interpolate } from '@pulumi/pulumi';
-import { WebApp } from '@pulumi/azure-native/web';
+import { WebApp } from '@pulumi/azure-native/web/index.js';
-export function webAppIdentity (webApp: WebApp) {
+export function webAppIdentity(webApp: WebApp) {
return webApp.identity.apply(identity => {
return {
tenantId: interpolate`${identity?.tenantId}`,
diff --git a/cloud/infrastructure/src/Checkly/apiStatusCheck.ts b/infra/packages/pulumi/src/checkly/apiStatusCheck.ts
similarity index 80%
rename from cloud/infrastructure/src/Checkly/apiStatusCheck.ts
rename to infra/packages/pulumi/src/checkly/apiStatusCheck.ts
index 158cae87d7..54cd106b56 100644
--- a/cloud/infrastructure/src/Checkly/apiStatusCheck.ts
+++ b/infra/packages/pulumi/src/checkly/apiStatusCheck.ts
@@ -3,7 +3,7 @@ import { Check } from '@checkly/pulumi';
export type CheckFrequency = 15 | 30 | 60 | 120 | 180 | 360 | 720 | 1440;
-export default function apiStatusCheck(prefix: string, name: string, domain: Input, frequency: CheckFrequency, route?: string) {
+export function apiStatusCheck(prefix: string, name: string, domain: Input, frequency: CheckFrequency, route?: string) {
const stack = getStack();
new Check(`apicheck-${prefix}`, {
name: `${name}`,
diff --git a/infra/packages/pulumi/src/checkly/index.ts b/infra/packages/pulumi/src/checkly/index.ts
new file mode 100644
index 0000000000..dbd0a7afe6
--- /dev/null
+++ b/infra/packages/pulumi/src/checkly/index.ts
@@ -0,0 +1 @@
+export * from './apiStatusCheck.js';
diff --git a/cloud/infrastructure/src/CloudFlare/dnsRecord.ts b/infra/packages/pulumi/src/cloudflare/dnsRecord.ts
similarity index 55%
rename from cloud/infrastructure/src/CloudFlare/dnsRecord.ts
rename to infra/packages/pulumi/src/cloudflare/dnsRecord.ts
index cf20dae596..6d477804fb 100644
--- a/cloud/infrastructure/src/CloudFlare/dnsRecord.ts
+++ b/infra/packages/pulumi/src/cloudflare/dnsRecord.ts
@@ -1,7 +1,7 @@
-import { Config, Input, Resource } from '@pulumi/pulumi';
+import { Config, Input } from '@pulumi/pulumi';
import { Record } from '@pulumi/cloudflare';
-export default function dnsRecord (name: string, dnsName: Input, value: Input, type: 'CNAME' | 'TXT' | 'MX', protect: boolean, parent?: Resource) {
+export function dnsRecord(name: string, dnsName: Input, value: Input, type: 'CNAME' | 'TXT' | 'MX', protect: boolean) {
const config = new Config();
const zoneId = config.requireSecret('zoneid');
return new Record(name, {
@@ -12,6 +12,5 @@ export default function dnsRecord (name: string, dnsName: Input, value:
priority: type === 'MX' ? 10 : undefined,
}, {
protect,
- // parent: parent
});
}
diff --git a/infra/packages/pulumi/src/cloudflare/index.ts b/infra/packages/pulumi/src/cloudflare/index.ts
new file mode 100644
index 0000000000..dcb5d09692
--- /dev/null
+++ b/infra/packages/pulumi/src/cloudflare/index.ts
@@ -0,0 +1 @@
+export * from './dnsRecord.js';
diff --git a/infra/packages/pulumi/src/dotnet/index.ts b/infra/packages/pulumi/src/dotnet/index.ts
new file mode 100644
index 0000000000..76a992766a
--- /dev/null
+++ b/infra/packages/pulumi/src/dotnet/index.ts
@@ -0,0 +1 @@
+export * from './publishProjectAsync.js';
diff --git a/cloud/infrastructure/src/dotnet/publishProjectAsync.ts b/infra/packages/pulumi/src/dotnet/publishProjectAsync.ts
similarity index 72%
rename from cloud/infrastructure/src/dotnet/publishProjectAsync.ts
rename to infra/packages/pulumi/src/dotnet/publishProjectAsync.ts
index 809f5af6c4..e435a7e868 100644
--- a/cloud/infrastructure/src/dotnet/publishProjectAsync.ts
+++ b/infra/packages/pulumi/src/dotnet/publishProjectAsync.ts
@@ -1,6 +1,6 @@
-import { run } from '@pulumi/command/local';
+import { run } from '@pulumi/command/local/index.js';
-export default async function publishProjectAsync (codePath: string, dotnet: 7 = 7) {
+export async function publishProjectAsync(codePath: string, dotnet: 7 = 7) {
await run({
command: 'dotnet clean',
dir: codePath,
diff --git a/infra/packages/pulumi/src/vercel/index.ts b/infra/packages/pulumi/src/vercel/index.ts
new file mode 100644
index 0000000000..80a560eee2
--- /dev/null
+++ b/infra/packages/pulumi/src/vercel/index.ts
@@ -0,0 +1,2 @@
+export * from './nextJsApp.js';
+export * from './vercelApp.js';
diff --git a/cloud/infrastructure/src/Vercel/nextJsApp.ts b/infra/packages/pulumi/src/vercel/nextJsApp.ts
similarity index 74%
rename from cloud/infrastructure/src/Vercel/nextJsApp.ts
rename to infra/packages/pulumi/src/vercel/nextJsApp.ts
index f3f0805add..2da8fb0e3b 100644
--- a/cloud/infrastructure/src/Vercel/nextJsApp.ts
+++ b/infra/packages/pulumi/src/vercel/nextJsApp.ts
@@ -1,4 +1,4 @@
-import { vercelApp } from './vercelApp';
+import { vercelApp } from './vercelApp.js';
export function nextJsApp(prefix: string, name: string) {
vercelApp(prefix, name, {
diff --git a/cloud/infrastructure/src/Vercel/vercelApp.ts b/infra/packages/pulumi/src/vercel/vercelApp.ts
similarity index 100%
rename from cloud/infrastructure/src/Vercel/vercelApp.ts
rename to infra/packages/pulumi/src/vercel/vercelApp.ts
diff --git a/infra/packages/pulumi/tsconfig.json b/infra/packages/pulumi/tsconfig.json
new file mode 100644
index 0000000000..f9914f1a15
--- /dev/null
+++ b/infra/packages/pulumi/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "extends": "@infra/typescript-config/base.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ },
+ "include": [
+ "./src/**/*.ts",
+ "./.eslintrc.cjs"
+ ],
+ "exclude": [
+ "node_modules",
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/infra/packages/typescript-config/base.json b/infra/packages/typescript-config/base.json
new file mode 100644
index 0000000000..04e471d0e3
--- /dev/null
+++ b/infra/packages/typescript-config/base.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "display": "Default",
+ "compilerOptions": {
+ "declaration": true,
+ "declarationMap": true,
+ "esModuleInterop": true,
+ "incremental": true,
+ "isolatedModules": true,
+ "lib": [
+ "ESNext"
+ ],
+ "module": "NodeNext",
+ "moduleDetection": "force",
+ "moduleResolution": "NodeNext",
+ "noUncheckedIndexedAccess": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "target": "ESNext"
+ }
+}
\ No newline at end of file
diff --git a/infra/packages/typescript-config/package.json b/infra/packages/typescript-config/package.json
new file mode 100644
index 0000000000..7a07828b0d
--- /dev/null
+++ b/infra/packages/typescript-config/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "@infra/typescript-config",
+ "version": "0.0.0",
+ "private": true,
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ }
+}
diff --git a/cloud/infrastructure/pnpm-lock.yaml b/infra/pnpm-lock.yaml
similarity index 71%
rename from cloud/infrastructure/pnpm-lock.yaml
rename to infra/pnpm-lock.yaml
index b7e1762773..1bad48dc2d 100644
--- a/cloud/infrastructure/pnpm-lock.yaml
+++ b/infra/pnpm-lock.yaml
@@ -4,63 +4,298 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
-dependencies:
- '@checkly/pulumi':
- specifier: 1.1.4
- version: 1.1.4
- '@pulumi/aws':
- specifier: 6.14.0
- version: 6.14.0
- '@pulumi/azure-native':
- specifier: 2.22.0
- version: 2.22.0
- '@pulumi/cloudflare':
- specifier: 5.16.0
- version: 5.16.0
- '@pulumi/command':
- specifier: 0.9.2
- version: 0.9.2
- '@pulumi/docker':
- specifier: 4.5.0
- version: 4.5.0
- '@pulumi/pulumi':
- specifier: 3.97.0
- version: 3.97.0
- '@pulumiverse/vercel':
- specifier: 1.0.1
- version: 1.0.1
-
-devDependencies:
- '@types/node':
- specifier: 20.10.5
- version: 20.10.5
- '@typescript-eslint/eslint-plugin':
- specifier: 6.15.0
- version: 6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/parser':
- specifier: 6.15.0
- version: 6.15.0(eslint@8.56.0)(typescript@5.3.3)
- eslint:
- specifier: 8.56.0
- version: 8.56.0
- eslint-config-standard:
- specifier: 17.1.0
- version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)
- eslint-plugin-import:
- specifier: 2.29.1
- version: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)
- eslint-plugin-n:
- specifier: 16.4.0
- version: 16.4.0(eslint@8.56.0)
- eslint-plugin-node:
- specifier: 11.1.0
- version: 11.1.0(eslint@8.56.0)
- eslint-plugin-promise:
- specifier: 6.1.1
- version: 6.1.1(eslint@8.56.0)
- typescript:
- specifier: 5.3.3
- version: 5.3.3
+importers:
+
+ .:
+ devDependencies:
+ '@infra/eslint-config':
+ specifier: workspace:*
+ version: link:packages/eslint-config
+ '@infra/typescript-config':
+ specifier: workspace:*
+ version: link:packages/typescript-config
+ prettier:
+ specifier: ^3.1.0
+ version: 3.1.0
+ turbo:
+ specifier: latest
+ version: 1.11.2
+
+ apps/cloud-primary:
+ dependencies:
+ '@checkly/pulumi':
+ specifier: 1.1.4
+ version: 1.1.4
+ '@infra/pulumi':
+ specifier: workspace:*
+ version: link:../../packages/pulumi
+ '@pulumi/aws':
+ specifier: 6.14.0
+ version: 6.14.0
+ '@pulumi/azure-native':
+ specifier: 2.22.0
+ version: 2.22.0
+ '@pulumi/cloudflare':
+ specifier: 5.16.0
+ version: 5.16.0
+ '@pulumi/command':
+ specifier: 0.9.2
+ version: 0.9.2
+ '@pulumi/docker':
+ specifier: 4.5.0
+ version: 4.5.0
+ '@pulumi/pulumi':
+ specifier: 3.97.0
+ version: 3.97.0
+ '@pulumiverse/vercel':
+ specifier: 1.0.1
+ version: 1.0.1
+ devDependencies:
+ '@types/node':
+ specifier: 20.10.5
+ version: 20.10.5
+ '@typescript-eslint/eslint-plugin':
+ specifier: 6.15.0
+ version: 6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/parser':
+ specifier: 6.15.0
+ version: 6.15.0(eslint@8.56.0)(typescript@5.3.3)
+ eslint:
+ specifier: 8.56.0
+ version: 8.56.0
+ eslint-config-standard:
+ specifier: 17.1.0
+ version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)
+ eslint-plugin-import:
+ specifier: 2.29.1
+ version: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)
+ eslint-plugin-n:
+ specifier: 16.4.0
+ version: 16.4.0(eslint@8.56.0)
+ eslint-plugin-node:
+ specifier: 11.1.0
+ version: 11.1.0(eslint@8.56.0)
+ eslint-plugin-promise:
+ specifier: 6.1.1
+ version: 6.1.1(eslint@8.56.0)
+ typescript:
+ specifier: 5.3.3
+ version: 5.3.3
+
+ apps/remote-browser:
+ dependencies:
+ '@checkly/pulumi':
+ specifier: 1.1.4
+ version: 1.1.4
+ '@pulumi/aws':
+ specifier: 6.14.0
+ version: 6.14.0
+ '@pulumi/azure-native':
+ specifier: 2.22.0
+ version: 2.22.0
+ '@pulumi/cloudflare':
+ specifier: 5.16.0
+ version: 5.16.0
+ '@pulumi/command':
+ specifier: 0.9.2
+ version: 0.9.2
+ '@pulumi/docker':
+ specifier: 4.5.0
+ version: 4.5.0
+ '@pulumi/pulumi':
+ specifier: 3.97.0
+ version: 3.97.0
+ '@pulumiverse/vercel':
+ specifier: 1.0.1
+ version: 1.0.1
+ devDependencies:
+ '@infra/pulumi':
+ specifier: workspace:*
+ version: link:../../packages/pulumi
+ '@types/node':
+ specifier: 20.10.5
+ version: 20.10.5
+ '@typescript-eslint/eslint-plugin':
+ specifier: 6.14.0
+ version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/parser':
+ specifier: 6.14.0
+ version: 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ eslint:
+ specifier: 8.56.0
+ version: 8.56.0
+ eslint-config-standard:
+ specifier: 17.1.0
+ version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)
+ eslint-plugin-import:
+ specifier: 2.29.1
+ version: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)
+ eslint-plugin-n:
+ specifier: 16.4.0
+ version: 16.4.0(eslint@8.56.0)
+ eslint-plugin-node:
+ specifier: 11.1.0
+ version: 11.1.0(eslint@8.56.0)
+ eslint-plugin-promise:
+ specifier: 6.1.1
+ version: 6.1.1(eslint@8.56.0)
+ typescript:
+ specifier: 5.3.3
+ version: 5.3.3
+
+ apps/uier:
+ dependencies:
+ '@checkly/pulumi':
+ specifier: 1.1.4
+ version: 1.1.4
+ '@pulumi/aws':
+ specifier: 6.14.0
+ version: 6.14.0
+ '@pulumi/azure-native':
+ specifier: 2.22.0
+ version: 2.22.0
+ '@pulumi/cloudflare':
+ specifier: 5.16.0
+ version: 5.16.0
+ '@pulumi/command':
+ specifier: 0.9.2
+ version: 0.9.2
+ '@pulumi/docker':
+ specifier: 4.5.0
+ version: 4.5.0
+ '@pulumi/pulumi':
+ specifier: 3.97.0
+ version: 3.97.0
+ '@pulumiverse/vercel':
+ specifier: 1.0.1
+ version: 1.0.1
+ devDependencies:
+ '@infra/pulumi':
+ specifier: workspace:*
+ version: link:../../packages/pulumi
+ '@types/node':
+ specifier: 20.10.5
+ version: 20.10.5
+ '@typescript-eslint/eslint-plugin':
+ specifier: 6.14.0
+ version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/parser':
+ specifier: 6.14.0
+ version: 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ eslint:
+ specifier: 8.56.0
+ version: 8.56.0
+ eslint-config-standard:
+ specifier: 17.1.0
+ version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)
+ eslint-plugin-import:
+ specifier: 2.29.1
+ version: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)
+ eslint-plugin-n:
+ specifier: 16.4.0
+ version: 16.4.0(eslint@8.56.0)
+ eslint-plugin-node:
+ specifier: 11.1.0
+ version: 11.1.0(eslint@8.56.0)
+ eslint-plugin-promise:
+ specifier: 6.1.1
+ version: 6.1.1(eslint@8.56.0)
+ typescript:
+ specifier: 5.3.3
+ version: 5.3.3
+
+ packages/eslint-config:
+ devDependencies:
+ '@typescript-eslint/eslint-plugin':
+ specifier: ^6.11.0
+ version: 6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/parser':
+ specifier: ^6.11.0
+ version: 6.15.0(eslint@8.56.0)(typescript@5.3.3)
+ eslint-config-prettier:
+ specifier: ^9.0.0
+ version: 9.0.0(eslint@8.56.0)
+ eslint-config-turbo:
+ specifier: ^1.10.12
+ version: 1.10.12(eslint@8.56.0)
+ eslint-import-resolver-typescript:
+ specifier: 3.6.1
+ version: 3.6.1(@typescript-eslint/parser@6.15.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0)
+ eslint-plugin-import:
+ specifier: 2.29.1
+ version: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
+ eslint-plugin-only-warn:
+ specifier: ^1.1.0
+ version: 1.1.0
+ typescript:
+ specifier: ^5.2.2
+ version: 5.3.3
+
+ packages/pulumi:
+ dependencies:
+ '@checkly/pulumi':
+ specifier: 1.1.4
+ version: 1.1.4
+ '@pulumi/aws':
+ specifier: 6.14.0
+ version: 6.14.0
+ '@pulumi/azure-native':
+ specifier: 2.22.0
+ version: 2.22.0
+ '@pulumi/cloudflare':
+ specifier: 5.16.0
+ version: 5.16.0
+ '@pulumi/command':
+ specifier: 0.9.2
+ version: 0.9.2
+ '@pulumi/docker':
+ specifier: 4.5.0
+ version: 4.5.0
+ '@pulumi/pulumi':
+ specifier: 3.97.0
+ version: 3.97.0
+ '@pulumiverse/vercel':
+ specifier: 1.0.1
+ version: 1.0.1
+ devDependencies:
+ '@infra/eslint-config':
+ specifier: workspace:*
+ version: link:../eslint-config
+ '@infra/typescript-config':
+ specifier: workspace:*
+ version: link:../typescript-config
+ '@types/node':
+ specifier: 20.10.5
+ version: 20.10.5
+ '@typescript-eslint/eslint-plugin':
+ specifier: 6.14.0
+ version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/parser':
+ specifier: 6.14.0
+ version: 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ eslint:
+ specifier: 8.56.0
+ version: 8.56.0
+ eslint-config-standard:
+ specifier: 17.1.0
+ version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)
+ eslint-plugin-import:
+ specifier: 2.29.1
+ version: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)
+ eslint-plugin-n:
+ specifier: 16.4.0
+ version: 16.4.0(eslint@8.56.0)
+ eslint-plugin-node:
+ specifier: 11.1.0
+ version: 11.1.0(eslint@8.56.0)
+ eslint-plugin-promise:
+ specifier: 6.1.1
+ version: 6.1.1(eslint@8.56.0)
+ typescript:
+ specifier: 5.3.3
+ version: 5.3.3
+
+ packages/typescript-config: {}
packages:
@@ -88,8 +323,8 @@ packages:
eslint-visitor-keys: 3.4.3
dev: true
- /@eslint-community/regexpp@4.6.2:
- resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==}
+ /@eslint-community/regexpp@4.10.0:
+ resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: true
@@ -100,8 +335,8 @@ packages:
ajv: 6.12.6
debug: 4.3.4
espree: 9.6.1
- globals: 13.20.0
- ignore: 5.2.4
+ globals: 13.23.0
+ ignore: 5.3.0
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
@@ -130,7 +365,7 @@ packages:
dependencies:
lodash.camelcase: 4.3.0
long: 5.2.3
- protobufjs: 7.2.4
+ protobufjs: 7.2.5
yargs: 17.7.2
dev: false
@@ -185,67 +420,67 @@ packages:
engines: {node: '>=14'}
deprecated: Please use @opentelemetry/api >= 1.3.0
dependencies:
- '@opentelemetry/api': 1.4.1
+ '@opentelemetry/api': 1.7.0
dev: false
- /@opentelemetry/api@1.4.1:
- resolution: {integrity: sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==}
+ /@opentelemetry/api@1.7.0:
+ resolution: {integrity: sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==}
engines: {node: '>=8.0.0'}
dev: false
- /@opentelemetry/context-async-hooks@1.12.0(@opentelemetry/api@1.4.1):
- resolution: {integrity: sha512-PmwAanPNWCyS9JYFzhzVzHgviLhc0UHjOwdth+hp3HgQQ9XZZNE635P8JhAUHZmbghW9/qQFafRWOS4VN9VVnQ==}
+ /@opentelemetry/context-async-hooks@1.19.0(@opentelemetry/api@1.7.0):
+ resolution: {integrity: sha512-0i1ECOc9daKK3rjUgDDXf0GDD5XfCou5lXnt2DALIc2qKoruPPcesobNKE54laSVUWnC3jX26RzuOa31g0V32A==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.5.0'
+ '@opentelemetry/api': '>=1.0.0 <1.8.0'
dependencies:
- '@opentelemetry/api': 1.4.1
+ '@opentelemetry/api': 1.7.0
dev: false
- /@opentelemetry/core@1.12.0(@opentelemetry/api@1.4.1):
- resolution: {integrity: sha512-4DWYNb3dLs2mSCGl65jY3aEgbvPWSHVQV/dmDWiYeWUrMakZQFcymqZOSUNZO0uDrEJoxMu8O5tZktX6UKFwag==}
+ /@opentelemetry/core@1.19.0(@opentelemetry/api@1.7.0):
+ resolution: {integrity: sha512-w42AukJh3TP8R0IZZOVJVM/kMWu8g+lm4LzT70WtuKqhwq7KVhcDzZZuZinWZa6TtQCl7Smt2wolEYzpHabOgw==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.5.0'
+ '@opentelemetry/api': '>=1.0.0 <1.8.0'
dependencies:
- '@opentelemetry/api': 1.4.1
- '@opentelemetry/semantic-conventions': 1.12.0
+ '@opentelemetry/api': 1.7.0
+ '@opentelemetry/semantic-conventions': 1.19.0
dev: false
- /@opentelemetry/exporter-zipkin@1.12.0(@opentelemetry/api@1.4.1):
- resolution: {integrity: sha512-HJ4ww7OjVIV4x5ZGgY+h+D1JS0GsCtnHuqZUVHl7EFFQxMGpbQcf5eISRtwqgQwlQKh2iqrEbiHdDyzbgA/7XQ==}
+ /@opentelemetry/exporter-zipkin@1.19.0(@opentelemetry/api@1.7.0):
+ resolution: {integrity: sha512-TY1fy4JiOBN5a8T9fknqTMcz0DXIeFBr6sklaLCgwtj+G699a5R4CekNwpeM7DHSwC44UMX7gljO2I6dYsTS3A==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.4.1
- '@opentelemetry/core': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/resources': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/sdk-trace-base': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/semantic-conventions': 1.12.0
+ '@opentelemetry/api': 1.7.0
+ '@opentelemetry/core': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/resources': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/sdk-trace-base': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/semantic-conventions': 1.19.0
dev: false
- /@opentelemetry/instrumentation-grpc@0.32.0(@opentelemetry/api@1.4.1):
+ /@opentelemetry/instrumentation-grpc@0.32.0(@opentelemetry/api@1.7.0):
resolution: {integrity: sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.4.1
+ '@opentelemetry/api': 1.7.0
'@opentelemetry/api-metrics': 0.32.0
- '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.4.1)
+ '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.7.0)
'@opentelemetry/semantic-conventions': 1.6.0
transitivePeerDependencies:
- supports-color
dev: false
- /@opentelemetry/instrumentation@0.32.0(@opentelemetry/api@1.4.1):
+ /@opentelemetry/instrumentation@0.32.0(@opentelemetry/api@1.7.0):
resolution: {integrity: sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.4.1
+ '@opentelemetry/api': 1.7.0
'@opentelemetry/api-metrics': 0.32.0
require-in-the-middle: 5.2.0
semver: 7.5.4
@@ -254,66 +489,66 @@ packages:
- supports-color
dev: false
- /@opentelemetry/propagator-b3@1.12.0(@opentelemetry/api@1.4.1):
- resolution: {integrity: sha512-WFcn98075QPc2zE1obhKydJHUehI5/HuLoelPEVwATj+487hjCwjHj9r2fgmQkWpvuNSB7CJaA0ys6qqq1N6lg==}
+ /@opentelemetry/propagator-b3@1.19.0(@opentelemetry/api@1.7.0):
+ resolution: {integrity: sha512-v7y5IBOKBm0vP3yf0DHzlw4L2gL6tZ0KeeMTaxfO5IuomMffDbrGWcvYFp0Dt4LdZctTSK523rVLBB9FBHBciQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.5.0'
+ '@opentelemetry/api': '>=1.0.0 <1.8.0'
dependencies:
- '@opentelemetry/api': 1.4.1
- '@opentelemetry/core': 1.12.0(@opentelemetry/api@1.4.1)
+ '@opentelemetry/api': 1.7.0
+ '@opentelemetry/core': 1.19.0(@opentelemetry/api@1.7.0)
dev: false
- /@opentelemetry/propagator-jaeger@1.12.0(@opentelemetry/api@1.4.1):
- resolution: {integrity: sha512-ugtWF7GC6X5RIJ0+iMwW2iVAGNs206CAeq8XQ8OkJRg+v0lp4H0/i+gJ4hubTT8NIL5a3IxtIrAENPLIGdLucQ==}
+ /@opentelemetry/propagator-jaeger@1.19.0(@opentelemetry/api@1.7.0):
+ resolution: {integrity: sha512-dedkOoTzKg+nYoLWCMp0Im+wo+XkTRW6aXhi8VQRtMW/9SNJGOllCJSu8llToLxMDF0+6zu7OCrKkevAof2tew==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.5.0'
+ '@opentelemetry/api': '>=1.0.0 <1.8.0'
dependencies:
- '@opentelemetry/api': 1.4.1
- '@opentelemetry/core': 1.12.0(@opentelemetry/api@1.4.1)
+ '@opentelemetry/api': 1.7.0
+ '@opentelemetry/core': 1.19.0(@opentelemetry/api@1.7.0)
dev: false
- /@opentelemetry/resources@1.12.0(@opentelemetry/api@1.4.1):
- resolution: {integrity: sha512-gunMKXG0hJrR0LXrqh7BVbziA/+iJBL3ZbXCXO64uY+SrExkwoyJkpiq9l5ismkGF/A20mDEV7tGwh+KyPw00Q==}
+ /@opentelemetry/resources@1.19.0(@opentelemetry/api@1.7.0):
+ resolution: {integrity: sha512-RgxvKuuMOf7nctOeOvpDjt2BpZvZGr9Y0vf7eGtY5XYZPkh2p7e2qub1S2IArdBMf9kEbz0SfycqCviOu9isqg==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.5.0'
+ '@opentelemetry/api': '>=1.0.0 <1.8.0'
dependencies:
- '@opentelemetry/api': 1.4.1
- '@opentelemetry/core': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/semantic-conventions': 1.12.0
+ '@opentelemetry/api': 1.7.0
+ '@opentelemetry/core': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/semantic-conventions': 1.19.0
dev: false
- /@opentelemetry/sdk-trace-base@1.12.0(@opentelemetry/api@1.4.1):
- resolution: {integrity: sha512-pfCOB3tNDlYVoWuz4D7Ji+Jmy9MHnATWHVpkERdCEiwUGEZ+4IvNPXUcPc37wJVmMpjGLeaWgPPrie0KIpWf1A==}
+ /@opentelemetry/sdk-trace-base@1.19.0(@opentelemetry/api@1.7.0):
+ resolution: {integrity: sha512-+IRvUm+huJn2KqfFW3yW/cjvRwJ8Q7FzYHoUNx5Fr0Lws0LxjMJG1uVB8HDpLwm7mg5XXH2M5MF+0jj5cM8BpQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.5.0'
+ '@opentelemetry/api': '>=1.0.0 <1.8.0'
dependencies:
- '@opentelemetry/api': 1.4.1
- '@opentelemetry/core': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/resources': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/semantic-conventions': 1.12.0
+ '@opentelemetry/api': 1.7.0
+ '@opentelemetry/core': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/resources': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/semantic-conventions': 1.19.0
dev: false
- /@opentelemetry/sdk-trace-node@1.12.0(@opentelemetry/api@1.4.1):
- resolution: {integrity: sha512-PxpDemnNZLLeFNLAu95/K3QubjlaScXVjVQPlwPui65VRxIvxGVysnN7DFfsref+qoh1hI6nlrYSij43vxdm2w==}
+ /@opentelemetry/sdk-trace-node@1.19.0(@opentelemetry/api@1.7.0):
+ resolution: {integrity: sha512-TCiEq/cUjM15RFqBRwWomTVbOqzndWL4ILa7ZCu0zbjU1/XY6AgHkgrgAc7vGP6TjRqH4Xryuglol8tcIfbBUQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.5.0'
- dependencies:
- '@opentelemetry/api': 1.4.1
- '@opentelemetry/context-async-hooks': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/core': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/propagator-b3': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/propagator-jaeger': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/sdk-trace-base': 1.12.0(@opentelemetry/api@1.4.1)
+ '@opentelemetry/api': '>=1.0.0 <1.8.0'
+ dependencies:
+ '@opentelemetry/api': 1.7.0
+ '@opentelemetry/context-async-hooks': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/core': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/propagator-b3': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/propagator-jaeger': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/sdk-trace-base': 1.19.0(@opentelemetry/api@1.7.0)
semver: 7.5.4
dev: false
- /@opentelemetry/semantic-conventions@1.12.0:
- resolution: {integrity: sha512-hO+bdeGOlJwqowUBoZF5LyP3ORUFOP1G0GRv8N45W/cztXbT2ZEXaAzfokRS9Xc9FWmYrDj32mF6SzH6wuoIyA==}
+ /@opentelemetry/semantic-conventions@1.19.0:
+ resolution: {integrity: sha512-14jRpC8f5c0gPSwoZ7SbEJni1PqI+AhAE8m1bMz6v+RPM4OlP1PT2UHBJj5Qh/ALLPjhVU/aZUK3YyjTUqqQVg==}
engines: {node: '>=14'}
dev: false
@@ -417,14 +652,14 @@ packages:
dependencies:
'@grpc/grpc-js': 1.9.6
'@logdna/tail-file': 2.2.0
- '@opentelemetry/api': 1.4.1
- '@opentelemetry/exporter-zipkin': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/instrumentation-grpc': 0.32.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/resources': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/sdk-trace-base': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/sdk-trace-node': 1.12.0(@opentelemetry/api@1.4.1)
- '@opentelemetry/semantic-conventions': 1.12.0
+ '@opentelemetry/api': 1.7.0
+ '@opentelemetry/exporter-zipkin': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/instrumentation-grpc': 0.32.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/resources': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/sdk-trace-base': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/sdk-trace-node': 1.19.0(@opentelemetry/api@1.7.0)
+ '@opentelemetry/semantic-conventions': 1.19.0
'@pulumi/query': 0.3.0
'@types/google-protobuf': 3.15.12
execa: 5.1.1
@@ -478,6 +713,35 @@ packages:
resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
dev: true
+ /@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@eslint-community/regexpp': 4.10.0
+ '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/scope-manager': 6.14.0
+ '@typescript-eslint/type-utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/visitor-keys': 6.14.0
+ debug: 4.3.4
+ eslint: 8.56.0
+ graphemer: 1.4.0
+ ignore: 5.3.0
+ natural-compare: 1.4.0
+ semver: 7.5.4
+ ts-api-utils: 1.0.2(typescript@5.3.3)
+ typescript: 5.3.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@typescript-eslint/eslint-plugin@6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -489,7 +753,7 @@ packages:
typescript:
optional: true
dependencies:
- '@eslint-community/regexpp': 4.6.2
+ '@eslint-community/regexpp': 4.10.0
'@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/scope-manager': 6.15.0
'@typescript-eslint/type-utils': 6.15.0(eslint@8.56.0)(typescript@5.3.3)
@@ -498,10 +762,31 @@ packages:
debug: 4.3.4
eslint: 8.56.0
graphemer: 1.4.0
- ignore: 5.2.4
+ ignore: 5.3.0
natural-compare: 1.4.0
semver: 7.5.4
- ts-api-utils: 1.0.1(typescript@5.3.3)
+ ts-api-utils: 1.0.2(typescript@5.3.3)
+ typescript: 5.3.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/parser@6.14.0(eslint@8.56.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 6.14.0
+ '@typescript-eslint/types': 6.14.0
+ '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3)
+ '@typescript-eslint/visitor-keys': 6.14.0
+ debug: 4.3.4
+ eslint: 8.56.0
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -528,6 +813,14 @@ packages:
- supports-color
dev: true
+ /@typescript-eslint/scope-manager@6.14.0:
+ resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ dependencies:
+ '@typescript-eslint/types': 6.14.0
+ '@typescript-eslint/visitor-keys': 6.14.0
+ dev: true
+
/@typescript-eslint/scope-manager@6.15.0:
resolution: {integrity: sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -536,6 +829,26 @@ packages:
'@typescript-eslint/visitor-keys': 6.15.0
dev: true
+ /@typescript-eslint/type-utils@6.14.0(eslint@8.56.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3)
+ '@typescript-eslint/utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ debug: 4.3.4
+ eslint: 8.56.0
+ ts-api-utils: 1.0.2(typescript@5.3.3)
+ typescript: 5.3.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@typescript-eslint/type-utils@6.15.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -550,17 +863,43 @@ packages:
'@typescript-eslint/utils': 6.15.0(eslint@8.56.0)(typescript@5.3.3)
debug: 4.3.4
eslint: 8.56.0
- ts-api-utils: 1.0.1(typescript@5.3.3)
+ ts-api-utils: 1.0.2(typescript@5.3.3)
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
dev: true
+ /@typescript-eslint/types@6.14.0:
+ resolution: {integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ dev: true
+
/@typescript-eslint/types@6.15.0:
resolution: {integrity: sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
+ /@typescript-eslint/typescript-estree@6.14.0(typescript@5.3.3):
+ resolution: {integrity: sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 6.14.0
+ '@typescript-eslint/visitor-keys': 6.14.0
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.5.4
+ ts-api-utils: 1.0.2(typescript@5.3.3)
+ typescript: 5.3.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@typescript-eslint/typescript-estree@6.15.0(typescript@5.3.3):
resolution: {integrity: sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -576,12 +915,31 @@ packages:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.4
- ts-api-utils: 1.0.1(typescript@5.3.3)
+ ts-api-utils: 1.0.2(typescript@5.3.3)
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
dev: true
+ /@typescript-eslint/utils@6.14.0(eslint@8.56.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
+ '@types/json-schema': 7.0.12
+ '@types/semver': 7.5.0
+ '@typescript-eslint/scope-manager': 6.14.0
+ '@typescript-eslint/types': 6.14.0
+ '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3)
+ eslint: 8.56.0
+ semver: 7.5.4
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
/@typescript-eslint/utils@6.15.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -601,6 +959,14 @@ packages:
- typescript
dev: true
+ /@typescript-eslint/visitor-keys@6.14.0:
+ resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ dependencies:
+ '@typescript-eslint/types': 6.14.0
+ eslint-visitor-keys: 3.4.3
+ dev: true
+
/@typescript-eslint/visitor-keys@6.15.0:
resolution: {integrity: sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -613,16 +979,16 @@ packages:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true
- /acorn-jsx@5.3.2(acorn@8.9.0):
+ /acorn-jsx@5.3.2(acorn@8.10.0):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- acorn: 8.9.0
+ acorn: 8.10.0
dev: true
- /acorn@8.9.0:
- resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==}
+ /acorn@8.10.0:
+ resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
@@ -667,7 +1033,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
get-intrinsic: 1.2.2
is-string: 1.0.7
@@ -683,9 +1049,9 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
- es-shim-unscopables: 1.0.0
+ es-shim-unscopables: 1.0.2
get-intrinsic: 1.2.2
dev: true
@@ -694,9 +1060,9 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
- es-shim-unscopables: 1.0.0
+ es-shim-unscopables: 1.0.2
dev: true
/array.prototype.flatmap@1.3.2:
@@ -704,17 +1070,17 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
- es-shim-unscopables: 1.0.0
+ es-shim-unscopables: 1.0.2
dev: true
- /array.prototype.reduce@1.0.5:
- resolution: {integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==}
+ /array.prototype.reduce@1.0.6:
+ resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
es-array-method-boxes-properly: 1.0.0
is-string: 1.0.7
@@ -726,7 +1092,7 @@ packages:
dependencies:
array-buffer-byte-length: 1.0.0
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
get-intrinsic: 1.2.2
is-array-buffer: 3.0.2
@@ -838,7 +1204,7 @@ packages:
supports-color:
optional: true
dependencies:
- ms: 2.1.3
+ ms: 2.1.2
dev: true
/debug@4.3.4:
@@ -867,13 +1233,14 @@ packages:
dependencies:
get-intrinsic: 1.2.2
gopd: 1.0.1
- has-property-descriptors: 1.0.0
+ has-property-descriptors: 1.0.1
- /define-properties@1.2.0:
- resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
+ /define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
dependencies:
- has-property-descriptors: 1.0.0
+ define-data-property: 1.1.1
+ has-property-descriptors: 1.0.1
object-keys: 1.1.1
/dezalgo@1.0.4:
@@ -909,10 +1276,23 @@ packages:
esutils: 2.0.3
dev: true
+ /dotenv@16.0.3:
+ resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==}
+ engines: {node: '>=12'}
+ dev: true
+
/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
dev: false
+ /enhanced-resolve@5.15.0:
+ resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+ dev: true
+
/es-abstract@1.22.3:
resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
engines: {node: '>= 0.4'}
@@ -921,18 +1301,18 @@ packages:
arraybuffer.prototype.slice: 1.0.2
available-typed-arrays: 1.0.5
call-bind: 1.0.5
- es-set-tostringtag: 2.0.1
+ es-set-tostringtag: 2.0.2
es-to-primitive: 1.2.1
function.prototype.name: 1.1.6
get-intrinsic: 1.2.2
get-symbol-description: 1.0.0
globalthis: 1.0.3
gopd: 1.0.1
- has-property-descriptors: 1.0.0
+ has-property-descriptors: 1.0.1
has-proto: 1.0.1
has-symbols: 1.0.3
hasown: 2.0.0
- internal-slot: 1.0.5
+ internal-slot: 1.0.6
is-array-buffer: 3.0.2
is-callable: 1.2.7
is-negative-zero: 2.0.2
@@ -961,18 +1341,18 @@ packages:
resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==}
dev: false
- /es-set-tostringtag@2.0.1:
- resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
+ /es-set-tostringtag@2.0.2:
+ resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
engines: {node: '>= 0.4'}
dependencies:
get-intrinsic: 1.2.2
- has: 1.0.3
has-tostringtag: 1.0.0
+ hasown: 2.0.0
- /es-shim-unscopables@1.0.0:
- resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
+ /es-shim-unscopables@1.0.2:
+ resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
dependencies:
- has: 1.0.3
+ hasown: 2.0.0
dev: true
/es-to-primitive@1.2.1:
@@ -1002,6 +1382,15 @@ packages:
eslint: 8.56.0
dev: true
+ /eslint-config-prettier@9.0.0(eslint@8.56.0):
+ resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+ dependencies:
+ eslint: 8.56.0
+ dev: true
+
/eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0):
resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==}
engines: {node: '>=12.0.0'}
@@ -1017,6 +1406,15 @@ packages:
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
dev: true
+ /eslint-config-turbo@1.10.12(eslint@8.56.0):
+ resolution: {integrity: sha512-z3jfh+D7UGYlzMWGh+Kqz++hf8LOE96q3o5R8X4HTjmxaBWlLAWG+0Ounr38h+JLR2TJno0hU9zfzoPNkR9BdA==}
+ peerDependencies:
+ eslint: '>6.6.0'
+ dependencies:
+ eslint: 8.56.0
+ eslint-plugin-turbo: 1.10.12(eslint@8.56.0)
+ dev: true
+
/eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
dependencies:
@@ -1027,6 +1425,88 @@ packages:
- supports-color
dev: true
+ /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.15.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0):
+ resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ eslint-plugin-import: '*'
+ dependencies:
+ debug: 4.3.4
+ enhanced-resolve: 5.15.0
+ eslint: 8.56.0
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
+ fast-glob: 3.3.1
+ get-tsconfig: 4.7.2
+ is-core-module: 2.13.1
+ is-glob: 4.0.3
+ transitivePeerDependencies:
+ - '@typescript-eslint/parser'
+ - eslint-import-resolver-node
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: true
+
+ /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0):
+ resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ debug: 3.2.7
+ eslint: 8.56.0
+ eslint-import-resolver-node: 0.3.9
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
+ resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.3)
+ debug: 3.2.7
+ eslint: 8.56.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.15.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
@@ -1056,6 +1536,35 @@ packages:
- supports-color
dev: true
+ /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
+ resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.3)
+ debug: 3.2.7
+ eslint: 8.56.0
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.15.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/eslint-plugin-es-x@7.5.0(eslint@8.56.0):
resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -1063,7 +1572,7 @@ packages:
eslint: '>=8'
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
- '@eslint-community/regexpp': 4.6.2
+ '@eslint-community/regexpp': 4.10.0
eslint: 8.56.0
eslint-compat-utils: 0.1.2(eslint@8.56.0)
dev: true
@@ -1079,6 +1588,76 @@ packages:
regexpp: 3.2.0
dev: true
+ /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.14.0)(eslint@8.56.0):
+ resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ array-includes: 3.1.7
+ array.prototype.findlastindex: 1.2.3
+ array.prototype.flat: 1.3.2
+ array.prototype.flatmap: 1.3.2
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 8.56.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0)
+ hasown: 2.0.0
+ is-core-module: 2.13.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.7
+ object.groupby: 1.0.1
+ object.values: 1.1.7
+ semver: 6.3.1
+ tsconfig-paths: 3.15.0
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: true
+
+ /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
+ resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.3)
+ array-includes: 3.1.7
+ array.prototype.findlastindex: 1.2.3
+ array.prototype.flat: 1.3.2
+ array.prototype.flatmap: 1.3.2
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 8.56.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
+ hasown: 2.0.0
+ is-core-module: 2.13.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.7
+ object.groupby: 1.0.1
+ object.values: 1.1.7
+ semver: 6.3.1
+ tsconfig-paths: 3.15.0
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: true
+
/eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.15.0)(eslint@8.56.0):
resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
engines: {node: '>=4'}
@@ -1124,8 +1703,8 @@ packages:
builtins: 5.0.1
eslint: 8.56.0
eslint-plugin-es-x: 7.5.0(eslint@8.56.0)
- get-tsconfig: 4.7.0
- ignore: 5.2.4
+ get-tsconfig: 4.7.2
+ ignore: 5.3.0
is-builtin-module: 3.2.1
is-core-module: 2.13.1
minimatch: 3.1.2
@@ -1142,12 +1721,17 @@ packages:
eslint: 8.56.0
eslint-plugin-es: 3.0.1(eslint@8.56.0)
eslint-utils: 2.1.0
- ignore: 5.2.4
+ ignore: 5.3.0
minimatch: 3.1.2
- resolve: 1.22.2
+ resolve: 1.22.8
semver: 6.3.1
dev: true
+ /eslint-plugin-only-warn@1.1.0:
+ resolution: {integrity: sha512-2tktqUAT+Q3hCAU0iSf4xAN1k9zOpjK5WO8104mB0rT/dGhOa09582HN5HlbxNbPRZ0THV7nLGvzugcNOSjzfA==}
+ engines: {node: '>=6'}
+ dev: true
+
/eslint-plugin-promise@6.1.1(eslint@8.56.0):
resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1157,6 +1741,15 @@ packages:
eslint: 8.56.0
dev: true
+ /eslint-plugin-turbo@1.10.12(eslint@8.56.0):
+ resolution: {integrity: sha512-uNbdj+ohZaYo4tFJ6dStRXu2FZigwulR1b3URPXe0Q8YaE7thuekKNP+54CHtZPH9Zey9dmDx5btAQl9mfzGOw==}
+ peerDependencies:
+ eslint: '>6.6.0'
+ dependencies:
+ dotenv: 16.0.3
+ eslint: 8.56.0
+ dev: true
+
/eslint-scope@7.2.2:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1188,7 +1781,7 @@ packages:
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
- '@eslint-community/regexpp': 4.6.2
+ '@eslint-community/regexpp': 4.10.0
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.56.0
'@humanwhocodes/config-array': 0.11.13
@@ -1210,9 +1803,9 @@ packages:
file-entry-cache: 6.0.1
find-up: 5.0.0
glob-parent: 6.0.2
- globals: 13.20.0
+ globals: 13.23.0
graphemer: 1.4.0
- ignore: 5.2.4
+ ignore: 5.3.0
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
@@ -1233,8 +1826,8 @@ packages:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
- acorn: 8.9.0
- acorn-jsx: 5.3.2(acorn@8.9.0)
+ acorn: 8.10.0
+ acorn-jsx: 5.3.2(acorn@8.10.0)
eslint-visitor-keys: 3.4.3
dev: true
@@ -1287,8 +1880,8 @@ packages:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
- /fast-glob@3.2.12:
- resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
+ /fast-glob@3.3.1:
+ resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
engines: {node: '>=8.6.0'}
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -1370,7 +1963,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
functions-have-names: 1.2.3
@@ -1402,8 +1995,8 @@ packages:
call-bind: 1.0.5
get-intrinsic: 1.2.2
- /get-tsconfig@4.7.0:
- resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==}
+ /get-tsconfig@4.7.2:
+ resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==}
dependencies:
resolve-pkg-maps: 1.0.0
dev: true
@@ -1432,8 +2025,8 @@ packages:
once: 1.4.0
path-is-absolute: 1.0.1
- /globals@13.20.0:
- resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
+ /globals@13.23.0:
+ resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==}
engines: {node: '>=8'}
dependencies:
type-fest: 0.20.2
@@ -1443,7 +2036,7 @@ packages:
resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
engines: {node: '>= 0.4'}
dependencies:
- define-properties: 1.2.0
+ define-properties: 1.2.1
/globby@11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
@@ -1451,8 +2044,8 @@ packages:
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
- fast-glob: 3.2.12
- ignore: 5.2.4
+ fast-glob: 3.3.1
+ ignore: 5.3.0
merge2: 1.4.1
slash: 3.0.0
dev: true
@@ -1468,7 +2061,6 @@ packages:
/graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- dev: false
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
@@ -1482,8 +2074,8 @@ packages:
engines: {node: '>=8'}
dev: true
- /has-property-descriptors@1.0.0:
- resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
+ /has-property-descriptors@1.0.1:
+ resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
dependencies:
get-intrinsic: 1.2.2
@@ -1501,12 +2093,6 @@ packages:
dependencies:
has-symbols: 1.0.3
- /has@1.0.3:
- resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
- engines: {node: '>= 0.4.0'}
- dependencies:
- function-bind: 1.1.2
-
/hasown@2.0.0:
resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
engines: {node: '>= 0.4'}
@@ -1529,8 +2115,8 @@ packages:
engines: {node: '>=10.17.0'}
dev: false
- /ignore@5.2.4:
- resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
+ /ignore@5.3.0:
+ resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
engines: {node: '>= 4'}
dev: true
@@ -1561,12 +2147,12 @@ packages:
engines: {node: '>=10'}
dev: false
- /internal-slot@1.0.5:
- resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
+ /internal-slot@1.0.6:
+ resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
engines: {node: '>= 0.4'}
dependencies:
get-intrinsic: 1.2.2
- has: 1.0.3
+ hasown: 2.0.0
side-channel: 1.0.4
/is-array-buffer@3.0.2:
@@ -1821,10 +2407,6 @@ packages:
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
- /ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- dev: true
-
/natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
@@ -1871,7 +2453,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
has-symbols: 1.0.3
object-keys: 1.1.1
@@ -1880,17 +2462,17 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
- /object.getownpropertydescriptors@2.1.6:
- resolution: {integrity: sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==}
+ /object.getownpropertydescriptors@2.1.7:
+ resolution: {integrity: sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==}
engines: {node: '>= 0.8'}
dependencies:
- array.prototype.reduce: 1.0.5
+ array.prototype.reduce: 1.0.6
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
safe-array-concat: 1.0.1
dev: false
@@ -1899,7 +2481,7 @@ packages:
resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
get-intrinsic: 1.2.2
dev: true
@@ -1909,7 +2491,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
@@ -2015,8 +2597,14 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
- /protobufjs@7.2.4:
- resolution: {integrity: sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==}
+ /prettier@3.1.0:
+ resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==}
+ engines: {node: '>=14'}
+ hasBin: true
+ dev: true
+
+ /protobufjs@7.2.5:
+ resolution: {integrity: sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==}
engines: {node: '>=12.0.0'}
requiresBuild: true
dependencies:
@@ -2076,7 +2664,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
set-function-name: 2.0.1
/regexpp@3.2.0:
@@ -2114,15 +2702,6 @@ packages:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
dev: true
- /resolve@1.22.2:
- resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
- hasBin: true
- dependencies:
- is-core-module: 2.13.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
- dev: true
-
/resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
@@ -2189,7 +2768,7 @@ packages:
define-data-property: 1.1.1
get-intrinsic: 1.2.2
gopd: 1.0.1
- has-property-descriptors: 1.0.0
+ has-property-descriptors: 1.0.1
/set-function-name@2.0.1:
resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
@@ -2197,7 +2776,7 @@ packages:
dependencies:
define-data-property: 1.1.1
functions-have-names: 1.2.3
- has-property-descriptors: 1.0.0
+ has-property-descriptors: 1.0.1
/shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
@@ -2245,7 +2824,7 @@ packages:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.13
+ spdx-license-ids: 3.0.16
dev: false
/spdx-exceptions@2.3.0:
@@ -2256,11 +2835,11 @@ packages:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
dependencies:
spdx-exceptions: 2.3.0
- spdx-license-ids: 3.0.13
+ spdx-license-ids: 3.0.16
dev: false
- /spdx-license-ids@3.0.13:
- resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==}
+ /spdx-license-ids@3.0.16:
+ resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==}
dev: false
/sprintf-js@1.0.3:
@@ -2281,21 +2860,21 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
/string.prototype.trimend@1.0.7:
resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
/string.prototype.trimstart@1.0.7:
resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
dependencies:
call-bind: 1.0.5
- define-properties: 1.2.0
+ define-properties: 1.2.1
es-abstract: 1.22.3
/strip-ansi@6.0.1:
@@ -2330,6 +2909,11 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ /tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+ dev: true
+
/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
@@ -2341,8 +2925,8 @@ packages:
is-number: 7.0.0
dev: true
- /ts-api-utils@1.0.1(typescript@5.3.3):
- resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==}
+ /ts-api-utils@1.0.2(typescript@5.3.3):
+ resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==}
engines: {node: '>=16.13.0'}
peerDependencies:
typescript: '>=4.2.0'
@@ -2374,6 +2958,66 @@ packages:
strip-bom: 3.0.0
dev: true
+ /turbo-darwin-64@1.11.2:
+ resolution: {integrity: sha512-toFmRG/adriZY3hOps7nYCfqHAS+Ci6xqgX3fbo82kkLpC6OBzcXnleSwuPqjHVAaRNhVoB83L5njcE9Qwi2og==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo-darwin-arm64@1.11.2:
+ resolution: {integrity: sha512-FCsEDZ8BUSFYEOSC3rrARQrj7x2VOrmVcfrMUIhexTxproRh4QyMxLfr6LALk4ymx6jbDCxWa6Szal8ckldFbA==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo-linux-64@1.11.2:
+ resolution: {integrity: sha512-Vzda/o/QyEske5CxLf0wcu7UUS+7zB90GgHZV4tyN+WZtoouTvbwuvZ3V6b5Wgd3OJ/JwWR0CXDK7Sf4VEMr7A==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo-linux-arm64@1.11.2:
+ resolution: {integrity: sha512-bRLwovQRz0yxDZrM4tQEAYV0fBHEaTzUF0JZ8RG1UmZt/CqtpnUrJpYb1VK8hj1z46z9YehARpYCwQ2K0qU4yw==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo-windows-64@1.11.2:
+ resolution: {integrity: sha512-LgTWqkHAKgyVuLYcEPxZVGPInTjjeCnN5KQMdJ4uQZ+xMDROvMFS2rM93iQl4ieDJgidwHCxxCxaU9u8c3d/Kg==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo-windows-arm64@1.11.2:
+ resolution: {integrity: sha512-829aVBU7IX0c/B4G7g1VI8KniAGutHhIupkYMgF6xPkYVev2G3MYe6DMS/vsLt9GGM9ulDtdWxWrH5P2ngK8IQ==}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo@1.11.2:
+ resolution: {integrity: sha512-jPC7LVQJzebs5gWf8FmEvsvXGNyKbN+O9qpvv98xpNaM59aS0/Irhd0H0KbcqnXfsz7ETlzOC3R+xFWthC4Z8A==}
+ hasBin: true
+ optionalDependencies:
+ turbo-darwin-64: 1.11.2
+ turbo-darwin-arm64: 1.11.2
+ turbo-linux-64: 1.11.2
+ turbo-linux-arm64: 1.11.2
+ turbo-windows-64: 1.11.2
+ turbo-windows-arm64: 1.11.2
+ dev: true
+
/type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@@ -2457,7 +3101,7 @@ packages:
/util-promisify@2.1.0:
resolution: {integrity: sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==}
dependencies:
- object.getownpropertydescriptors: 2.1.6
+ object.getownpropertydescriptors: 2.1.7
dev: false
/validate-npm-package-license@3.0.4:
diff --git a/infra/pnpm-workspace.yaml b/infra/pnpm-workspace.yaml
new file mode 100644
index 0000000000..3ff5faaaf5
--- /dev/null
+++ b/infra/pnpm-workspace.yaml
@@ -0,0 +1,3 @@
+packages:
+ - "apps/*"
+ - "packages/*"
diff --git a/infra/tsconfig.json b/infra/tsconfig.json
new file mode 100644
index 0000000000..5d19674cd3
--- /dev/null
+++ b/infra/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "@infra/typescript-config/base.json"
+}
diff --git a/infra/turbo.json b/infra/turbo.json
new file mode 100644
index 0000000000..2961406b66
--- /dev/null
+++ b/infra/turbo.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "https://turbo.build/schema.json",
+ "globalDependencies": [
+ "**/.env.*local"
+ ],
+ "pipeline": {
+ "build": {
+ "dependsOn": [
+ "^build"
+ ]
+ },
+ "lint": {
+ "dependsOn": [
+ "^lint"
+ ]
+ },
+ "preview": {
+ "dependsOn": [
+ "build"
+ ]
+ },
+ "deploy": {
+ "dependsOn": [
+ "build"
+ ]
+ }
+ }
+}
diff --git a/web/.idea/modules.xml b/web/.idea/modules.xml
new file mode 100644
index 0000000000..f589ca37d2
--- /dev/null
+++ b/web/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/.idea/web.iml b/web/.idea/web.iml
new file mode 100644
index 0000000000..24643cc374
--- /dev/null
+++ b/web/.idea/web.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/apps/development/package.json b/web/apps/development/package.json
deleted file mode 100644
index 0d4b81b472..0000000000
--- a/web/apps/development/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "development",
- "private": true,
- "homepage": "https://www.signalco.dev/",
- "version": "0.0.0",
- "type": "module",
- "scripts": {
- "dev": "vite --open"
- },
- "dependencies": {
- "@signalco/ui": "workspace:*",
- "@signalco/ui-primitives": "workspace:*",
- "@signalco/tailwindcss-config-signalco": "workspace:*",
- "react": "18.2.0",
- "react-dom": "18.2.0",
- "tailwindcss": "3.3.7",
- "tailwindcss-animate": "1.0.7"
- },
- "devDependencies": {
- "@types/react": "18.2.45",
- "@types/react-dom": "18.2.18",
- "@vitejs/plugin-react-swc": "3.5.0",
- "typescript": "5.3.3",
- "vite": "5.0.10"
- }
-}
\ No newline at end of file