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..0b82b05ceb 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=large&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fsignalco-io%2Fsignalco?ref=badge_large&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/infra/apps/cloud-primary/package.json b/infra/apps/cloud-primary/package.json
new file mode 100644
index 0000000000..7dd9cd57e8
--- /dev/null
+++ b/infra/apps/cloud-primary/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@infra/signalco",
+ "private": true,
+ "license": "../LICENSE",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "type": "module",
+ "scripts": {
+ "build": "tsc && tsup src/index.ts --format esm --clean",
+ "lint": "eslint ./src/**/*.ts",
+ "preview": "pulumi preview"
+ },
+ "devDependencies": {
+ "@infra/pulumi": "workspace:*",
+ "@types/node": "20.10.5",
+ "@typescript-eslint/eslint-plugin": "6.15.0",
+ "@typescript-eslint/parser": "6.15.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",
+ "tsup": "8.0.1",
+ "typescript": "5.3.3"
+ },
+ "dependencies": {
+ "@checkly/pulumi": "1.1.4",
+ "@pulumi/aws": "6.15.0",
+ "@pulumi/azure-native": "2.22.1",
+ "@pulumi/cloudflare": "5.16.0",
+ "@pulumi/command": "0.9.2",
+ "@pulumi/docker": "4.5.0",
+ "@pulumi/pulumi": "3.98.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..b2cb577cf5
--- /dev/null
+++ b/infra/apps/cloud-primary/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "extends": "@infra/typescript-config/app.json",
+ "parserOptions": {
+ "project": "./tsconfig.json"
+ },
+ "include": [
+ "./src/**/*.ts",
+ "./.eslintrc.cjs"
+ ],
+ "exclude": [
+ "node_modules",
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/infra/apps/remote-browser/.eslintrc.cjs b/infra/apps/remote-browser/.eslintrc.cjs
new file mode 100644
index 0000000000..ac8a0bf66f
--- /dev/null
+++ b/infra/apps/remote-browser/.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/package.json b/infra/apps/remote-browser/package.json
similarity index 61%
rename from cloud/infrastructure/package.json
rename to infra/apps/remote-browser/package.json
index 6975b0d228..5528a3062e 100644
--- a/cloud/infrastructure/package.json
+++ b/infra/apps/remote-browser/package.json
@@ -1,32 +1,33 @@
{
- "name": "cloud-primary",
+ "name": "@infra/remote-browser",
"private": true,
"license": "../LICENSE",
"main": "src/index.ts",
"scripts": {
- "lint": "eslint ./src/**/*.ts",
- "restart-functions": "node tools/restart-functions.js"
+ "lint": "eslint ./src/**/*.ts"
},
"devDependencies": {
- "@types/node": "20.10.4",
- "@typescript-eslint/eslint-plugin": "6.14.0",
- "@typescript-eslint/parser": "6.14.0",
+ "@infra/pulumi": "workspace:*",
+ "@types/node": "20.10.5",
+ "@typescript-eslint/eslint-plugin": "6.15.0",
+ "@typescript-eslint/parser": "6.15.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",
+ "tsup": "8.0.1",
"typescript": "5.3.3"
},
"dependencies": {
"@checkly/pulumi": "1.1.4",
- "@pulumi/aws": "6.14.0",
- "@pulumi/azure-native": "2.22.0",
+ "@pulumi/aws": "6.15.0",
+ "@pulumi/azure-native": "2.22.1",
"@pulumi/cloudflare": "5.16.0",
"@pulumi/command": "0.9.2",
"@pulumi/docker": "4.5.0",
- "@pulumi/pulumi": "3.97.0",
+ "@pulumi/pulumi": "3.98.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..b2cb577cf5
--- /dev/null
+++ b/infra/apps/remote-browser/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "extends": "@infra/typescript-config/app.json",
+ "parserOptions": {
+ "project": "./tsconfig.json"
+ },
+ "include": [
+ "./src/**/*.ts",
+ "./.eslintrc.cjs"
+ ],
+ "exclude": [
+ "node_modules",
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/infra/apps/uier/.eslintrc.cjs b/infra/apps/uier/.eslintrc.cjs
new file mode 100644
index 0000000000..ac8a0bf66f
--- /dev/null
+++ b/infra/apps/uier/.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/apps/uier/Pulumi.next.yaml b/infra/apps/uier/Pulumi.next.yaml
new file mode 100644
index 0000000000..e91c66e7e2
--- /dev/null
+++ b/infra/apps/uier/Pulumi.next.yaml
@@ -0,0 +1,6 @@
+config:
+ cloudflare:apiToken:
+ secure: AAABAAqPzyAV9mvmavpxCxB+Ws+snM4JK8mNiAxa+WqmzniW5gNmJpHXGgXZI69SkL251Lhhrp43BUrvHnTEbAFf3lG8/Wsl
+ 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..0a4c471fd5
--- /dev/null
+++ b/infra/apps/uier/Pulumi.production.yaml
@@ -0,0 +1,6 @@
+config:
+ cloudflare:apiToken:
+ secure: AAABACGEfMwr2aNFBpAz+WdsfG/AgG31Ktvpe0KVGFCpoiCN8wjhe7NJYY4NJT3o/M+q8x85EOwn3Q9CfljxdPEUq4SPuXxo
+ 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..f94021a1f3
--- /dev/null
+++ b/infra/apps/uier/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@infra/uier",
+ "private": true,
+ "license": "../LICENSE",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "type": "module",
+ "scripts": {
+ "build": "tsc && tsup src/index.ts --format esm --clean",
+ "lint": "eslint ./src/**/*.ts",
+ "preview": "pulumi preview"
+ },
+ "devDependencies": {
+ "@infra/pulumi": "workspace:*",
+ "@types/node": "20.10.5",
+ "@typescript-eslint/eslint-plugin": "6.15.0",
+ "@typescript-eslint/parser": "6.15.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",
+ "tsup": "8.0.1",
+ "typescript": "5.3.3"
+ },
+ "dependencies": {
+ "@checkly/pulumi": "1.1.4",
+ "@pulumi/aws": "6.15.0",
+ "@pulumi/azure-native": "2.22.1",
+ "@pulumi/cloudflare": "5.16.0",
+ "@pulumi/command": "0.9.2",
+ "@pulumi/docker": "4.5.0",
+ "@pulumi/pulumi": "3.98.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..951846e95f
--- /dev/null
+++ b/infra/apps/uier/src/index.ts
@@ -0,0 +1,29 @@
+import { nextJsApp } from '@infra/pulumi/vercel';
+import { dnsRecord } from '@infra/pulumi/cloudflare';
+import { ProjectDomain } from '@pulumiverse/vercel';
+import { getStack } from '@pulumi/pulumi';
+
+const up = async () => {
+ const stack = getStack();
+
+ const app = nextJsApp('uier', 'uier');
+
+ // Configure domain name
+ let domainName = undefined;
+ if (stack === 'next') domainName = 'next.uier.io';
+ else if (stack === 'production') domainName = 'uier.io';
+ if (domainName) {
+ new ProjectDomain('vercel-uier-domain', {
+ projectId: app.projectId,
+ domain: domainName,
+ });
+
+ if (stack === 'next') {
+ dnsRecord('vercel-uier', 'uier', 'cname.vercel-dns.com', 'CNAME', false);
+ } else if (stack === 'production') {
+ // TODO: Handle A record for production
+ }
+ }
+};
+
+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..b2cb577cf5
--- /dev/null
+++ b/infra/apps/uier/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "extends": "@infra/typescript-config/app.json",
+ "parserOptions": {
+ "project": "./tsconfig.json"
+ },
+ "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..f1718d27bf
--- /dev/null
+++ b/infra/package.json
@@ -0,0 +1,19 @@
+{
+ "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:*",
+ "turbo": "latest"
+ },
+ "packageManager": "pnpm@8.12.1",
+ "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..290d7a5fd0
--- /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.11.2",
+ "eslint-config-prettier": "9.1.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.15.0",
+ "@typescript-eslint/eslint-plugin": "6.15.0",
+ "typescript": "5.3.3"
+ }
+}
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..db62e4ee37
--- /dev/null
+++ b/infra/packages/pulumi/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "@infra/pulumi",
+ "private": true,
+ "license": "../LICENSE",
+ "type": "module",
+ "scripts": {
+ "lint": "eslint ./src/**/*.ts"
+ },
+ "exports": {
+ "./azure": {
+ "import": "./src/azure/index.ts"
+ },
+ "./aws": {
+ "import": "./src/aws/index.ts"
+ },
+ "./cloudflare": {
+ "import": "./src/cloudflare/index.ts"
+ },
+ "./checkly": {
+ "import": "./src/checkly/index.ts"
+ },
+ "./vercel": {
+ "import": "./src/vercel/index.ts"
+ },
+ "./dotnet": {
+ "import": "./src/dotnet/index.ts"
+ }
+ },
+ "devDependencies": {
+ "@infra/typescript-config": "workspace:*",
+ "@infra/eslint-config": "workspace:*",
+ "@types/node": "20.10.5",
+ "@typescript-eslint/eslint-plugin": "6.15.0",
+ "@typescript-eslint/parser": "6.15.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.15.0",
+ "@pulumi/azure-native": "2.22.1",
+ "@pulumi/cloudflare": "5.16.0",
+ "@pulumi/command": "0.9.2",
+ "@pulumi/docker": "4.5.0",
+ "@pulumi/pulumi": "3.98.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 74%
rename from cloud/infrastructure/src/Azure/assignCustomDomain.ts
rename to infra/packages/pulumi/src/azure/assignCustomDomain.ts
index 754a7c6ea0..5c0b061b16 100644
--- a/cloud/infrastructure/src/Azure/assignCustomDomain.ts
+++ b/infra/packages/pulumi/src/azure/assignCustomDomain.ts
@@ -1,14 +1,24 @@
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,
+ getCertificate,
+ getWebAppPublicCertificate
+} 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 +29,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 }[]>;
@@ -47,6 +55,7 @@ export function assignCustomDomain (
const cert = new Certificate(`func-cert-${namePrefix}`, {
resourceGroupName: resourceGroup.name,
+ name: `cert-${namePrefix}`,
canonicalName: fullDomainName,
serverFarmId: servicePlan.id,
}, {
diff --git a/cloud/infrastructure/src/Azure/assignFunctionCodeAsync.ts b/infra/packages/pulumi/src/azure/assignFunctionCodeAsync.ts
similarity index 72%
rename from cloud/infrastructure/src/Azure/assignFunctionCodeAsync.ts
rename to infra/packages/pulumi/src/azure/assignFunctionCodeAsync.ts
index 1d6412bc50..fb3e04437b 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,
@@ -12,14 +12,15 @@ export async function assignFunctionCodeAsync(
codePath: string,
dependsOn?: Input | Input[]> | undefined) {
// Upload Azure Function's code as a zip archive to the storage account.
- const codeBlob = new Blob(`zip-${namePrefix}`, {
- blobName: `zip-${namePrefix}`,
+ const codeBlob = new Blob(`zip-${namePrefix}-${new Date().getTime()}`, {
+ blobName: `zip-${namePrefix}-${new Date().getTime()}.zip`,
resourceGroupName: resourceGroup.name,
accountName: storageAccount.name,
containerName: zipsContainer.name,
source: new FileArchive(codePath),
}, {
dependsOn,
+ retainOnDelete: true,
});
const codeBlobUrl = signedBlobReadUrl(codeBlob, zipsContainer, storageAccount, 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 54%
rename from cloud/infrastructure/src/Vercel/nextJsApp.ts
rename to infra/packages/pulumi/src/vercel/nextJsApp.ts
index f3f0805add..fd1670054f 100644
--- a/cloud/infrastructure/src/Vercel/nextJsApp.ts
+++ b/infra/packages/pulumi/src/vercel/nextJsApp.ts
@@ -1,7 +1,7 @@
-import { vercelApp } from './vercelApp';
+import { vercelApp } from './vercelApp.js';
export function nextJsApp(prefix: string, name: string) {
- vercelApp(prefix, name, {
+ return vercelApp(prefix, name, {
framework: 'nextjs',
});
}
\ No newline at end of file
diff --git a/cloud/infrastructure/src/Vercel/vercelApp.ts b/infra/packages/pulumi/src/vercel/vercelApp.ts
similarity index 87%
rename from cloud/infrastructure/src/Vercel/vercelApp.ts
rename to infra/packages/pulumi/src/vercel/vercelApp.ts
index 279e82562c..2550a8827e 100644
--- a/cloud/infrastructure/src/Vercel/vercelApp.ts
+++ b/infra/packages/pulumi/src/vercel/vercelApp.ts
@@ -9,7 +9,7 @@ export function vercelApp(prefix: string, name: string, {
ignoreCommand?: string;
outputDirectory?: string;
}) {
- new Project(`vercel-${prefix}`, {
+ const project = new Project(`vercel-${prefix}`, {
framework,
gitRepository: {
productionBranch: 'main',
@@ -24,4 +24,8 @@ export function vercelApp(prefix: string, name: string, {
rootDirectory: `web/apps/${name}`,
serverlessFunctionRegion: 'dub1',
});
+
+ return {
+ projectId: project.id,
+ };
}
\ No newline at end of file
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/app.json b/infra/packages/typescript-config/app.json
new file mode 100644
index 0000000000..c2edc2f77c
--- /dev/null
+++ b/infra/packages/typescript-config/app.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "display": "App",
+ "extends": "./base.json",
+ "compilerOptions": {
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "noEmit": true
+ }
+}
\ 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 62%
rename from cloud/infrastructure/pnpm-lock.yaml
rename to infra/pnpm-lock.yaml
index b407561410..db94cb7b79 100644
--- a/cloud/infrastructure/pnpm-lock.yaml
+++ b/infra/pnpm-lock.yaml
@@ -4,63 +4,304 @@ 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.4
- version: 20.10.4
- '@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
+importers:
+
+ .:
+ devDependencies:
+ '@infra/eslint-config':
+ specifier: workspace:*
+ version: link:packages/eslint-config
+ '@infra/typescript-config':
+ specifier: workspace:*
+ version: link:packages/typescript-config
+ turbo:
+ specifier: latest
+ version: 1.11.2
+
+ apps/cloud-primary:
+ dependencies:
+ '@checkly/pulumi':
+ specifier: 1.1.4
+ version: 1.1.4
+ '@pulumi/aws':
+ specifier: 6.15.0
+ version: 6.15.0
+ '@pulumi/azure-native':
+ specifier: 2.22.1
+ version: 2.22.1
+ '@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.98.0
+ version: 3.98.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.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-import-resolver-typescript@3.6.1)(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)
+ tsup:
+ specifier: 8.0.1
+ version: 8.0.1(typescript@5.3.3)
+ 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.15.0
+ version: 6.15.0
+ '@pulumi/azure-native':
+ specifier: 2.22.1
+ version: 2.22.1
+ '@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.98.0
+ version: 3.98.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.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-import-resolver-typescript@3.6.1)(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)
+ tsup:
+ specifier: 8.0.1
+ version: 8.0.1(typescript@5.3.3)
+ 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.15.0
+ version: 6.15.0
+ '@pulumi/azure-native':
+ specifier: 2.22.1
+ version: 2.22.1
+ '@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.98.0
+ version: 3.98.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.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-import-resolver-typescript@3.6.1)(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)
+ tsup:
+ specifier: 8.0.1
+ version: 8.0.1(typescript@5.3.3)
+ typescript:
+ specifier: 5.3.3
+ version: 5.3.3
+
+ packages/eslint-config:
+ devDependencies:
+ '@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-config-prettier:
+ specifier: 9.1.0
+ version: 9.1.0(eslint@8.56.0)
+ eslint-config-turbo:
+ specifier: 1.11.2
+ version: 1.11.2(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.3.3
+ version: 5.3.3
+
+ packages/pulumi:
+ dependencies:
+ '@checkly/pulumi':
+ specifier: 1.1.4
+ version: 1.1.4
+ '@pulumi/aws':
+ specifier: 6.15.0
+ version: 6.15.0
+ '@pulumi/azure-native':
+ specifier: 2.22.1
+ version: 2.22.1
+ '@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.98.0
+ version: 3.98.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.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-import-resolver-typescript@3.6.1)(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:
@@ -73,11 +314,218 @@ packages:
resolution: {integrity: sha512-YPNYtwEnKu23VDHNFu91xd/Ueu5zYONHcYwKDA5qTvtgZZ1nzrvPJgrO15KF0fLRVlGo7yckirDS26GpvBTe6w==}
requiresBuild: true
dependencies:
- '@pulumi/pulumi': 3.97.0
+ '@pulumi/pulumi': 3.98.0
transitivePeerDependencies:
- supports-color
dev: false
+ /@esbuild/aix-ppc64@0.19.10:
+ resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm64@0.19.10:
+ resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm@0.19.10:
+ resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-x64@0.19.10:
+ resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-arm64@0.19.10:
+ resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-x64@0.19.10:
+ resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-arm64@0.19.10:
+ resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-x64@0.19.10:
+ resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm64@0.19.10:
+ resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm@0.19.10:
+ resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ia32@0.19.10:
+ resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64@0.19.10:
+ resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-mips64el@0.19.10:
+ resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ppc64@0.19.10:
+ resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-riscv64@0.19.10:
+ resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-s390x@0.19.10:
+ resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-x64@0.19.10:
+ resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/netbsd-x64@0.19.10:
+ resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-x64@0.19.10:
+ resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/sunos-x64@0.19.10:
+ resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-arm64@0.19.10:
+ resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-ia32@0.19.10:
+ resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-x64@0.19.10:
+ resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@eslint-community/eslint-utils@4.4.0(eslint@8.56.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -88,8 +536,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 +548,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
@@ -120,7 +568,7 @@ packages:
engines: {node: ^8.13.0 || >=10.10.0}
dependencies:
'@grpc/proto-loader': 0.7.10
- '@types/node': 20.10.4
+ '@types/node': 20.10.5
dev: false
/@grpc/proto-loader@0.7.10:
@@ -130,7 +578,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
@@ -154,6 +602,36 @@ packages:
resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==}
dev: true
+ /@jridgewell/gen-mapping@0.3.3:
+ resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.20
+ dev: true
+
+ /@jridgewell/resolve-uri@3.1.1:
+ resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/set-array@1.1.2:
+ resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/sourcemap-codec@1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ dev: true
+
+ /@jridgewell/trace-mapping@0.3.20:
+ resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
/@logdna/tail-file@2.2.0:
resolution: {integrity: sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng==}
engines: {node: '>=10.3.0'}
@@ -185,67 +663,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 +732,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
@@ -365,10 +843,10 @@ packages:
resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
dev: false
- /@pulumi/aws@6.14.0:
- resolution: {integrity: sha512-dOTdUkRdV0IU7HCHpMDRMF2co4d4iBWeGmuxq/mLYt0PdVMsUsVsMJ87xAIP2S3g0kTVLNOzL1l8EP24OS1vlg==}
+ /@pulumi/aws@6.15.0:
+ resolution: {integrity: sha512-ZAk1VJDM1Hn5Kr+8elPvH4yuRP0Gmpv9YUdqoYHcEIsjg4BtUXaS0Db7KmSKoUf1SmQRkBCdOqRBcit7RorpUA==}
dependencies:
- '@pulumi/pulumi': 3.97.0
+ '@pulumi/pulumi': 3.98.0
builtin-modules: 3.0.0
mime: 2.6.0
read-package-tree: 5.3.1
@@ -377,10 +855,10 @@ packages:
- supports-color
dev: false
- /@pulumi/azure-native@2.22.0:
- resolution: {integrity: sha512-HutD/G2iCOh/CfYlVf1KTDLi9wn8ilwAzpdwYsndpkWRVihooK20ZxcjUOr/8VOC3wZvo56OCNsE+YCrb8oqJQ==}
+ /@pulumi/azure-native@2.22.1:
+ resolution: {integrity: sha512-X/apQqagDZt+2uR9p4tQGb3dm9SYLzCabSG3j5rQ8XJk3/qrDRs8wi+k62hJfMoUJv1QihEFZsLBntph2HIRLw==}
dependencies:
- '@pulumi/pulumi': 3.97.0
+ '@pulumi/pulumi': 3.98.0
transitivePeerDependencies:
- supports-color
dev: false
@@ -388,7 +866,7 @@ packages:
/@pulumi/cloudflare@5.16.0:
resolution: {integrity: sha512-7FjJIpsGz9lv+o+nNnbV8UOUXAF248LHCILmExxIfVTblwbp0Mb8Ri68rLOK9qpVPOIwkj2QBorLiZ6Y4anHSg==}
dependencies:
- '@pulumi/pulumi': 3.97.0
+ '@pulumi/pulumi': 3.98.0
transitivePeerDependencies:
- supports-color
dev: false
@@ -397,7 +875,7 @@ packages:
resolution: {integrity: sha512-9RaGDiy8jFCiaarj4EOrMW/fVCM/AgBigzwM6CKzlR49x8UFiRDmKrXfEVHb8r2P9IpC4IaAZf5VbNNAHwN/rA==}
requiresBuild: true
dependencies:
- '@pulumi/pulumi': 3.97.0
+ '@pulumi/pulumi': 3.98.0
transitivePeerDependencies:
- supports-color
dev: false
@@ -405,26 +883,26 @@ packages:
/@pulumi/docker@4.5.0:
resolution: {integrity: sha512-DOiczZK1cF4NGlEWzacPLjGcoPKXHXISoqq4KqCO97YW28rZSu6LOdveQ8tLaUHGeyWQ+CS3PT45caSxHAbzbw==}
dependencies:
- '@pulumi/pulumi': 3.97.0
+ '@pulumi/pulumi': 3.98.0
semver: 5.7.2
transitivePeerDependencies:
- supports-color
dev: false
- /@pulumi/pulumi@3.97.0:
- resolution: {integrity: sha512-yPtC/RUHHV8FgcRmq/l05ZyVwcIjLIA+7F+sCceKSNga0NOno6D/VD3PRU/TkApTseKRce4NQgdshXDumh+mdA==}
+ /@pulumi/pulumi@3.98.0:
+ resolution: {integrity: sha512-G5LpwM7CvR5hLvyscgWp5TVVJYTOJqeLSL0uTUtHSBz/Tpiqv1lgygW8oUIUD4gPm33UfcK1cVejCASdQk+74Q==}
engines: {node: '>=8.13.0 || >=10.10.0'}
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
@@ -452,11 +930,115 @@ packages:
/@pulumiverse/vercel@1.0.1:
resolution: {integrity: sha512-AOiOe2pzZOQVv9Z+C/iWmZeKpeZb+0qmqcfRBnYiU4DiVr9VhqE9ToJVPq7ElyxgYSoETA+4qfd1Kj01zxhd5A==}
dependencies:
- '@pulumi/pulumi': 3.97.0
+ '@pulumi/pulumi': 3.98.0
transitivePeerDependencies:
- supports-color
dev: false
+ /@rollup/rollup-android-arm-eabi@4.9.1:
+ resolution: {integrity: sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-android-arm64@4.9.1:
+ resolution: {integrity: sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-darwin-arm64@4.9.1:
+ resolution: {integrity: sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-darwin-x64@4.9.1:
+ resolution: {integrity: sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm-gnueabihf@4.9.1:
+ resolution: {integrity: sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm64-gnu@4.9.1:
+ resolution: {integrity: sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm64-musl@4.9.1:
+ resolution: {integrity: sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-riscv64-gnu@4.9.1:
+ resolution: {integrity: sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.9.1:
+ resolution: {integrity: sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-musl@4.9.1:
+ resolution: {integrity: sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-arm64-msvc@4.9.1:
+ resolution: {integrity: sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-ia32-msvc@4.9.1:
+ resolution: {integrity: sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-x64-msvc@4.9.1:
+ resolution: {integrity: sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@types/google-protobuf@3.15.12:
resolution: {integrity: sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==}
dev: false
@@ -469,8 +1051,8 @@ packages:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: true
- /@types/node@20.10.4:
- resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==}
+ /@types/node@20.10.5:
+ resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==}
dependencies:
undici-types: 5.26.5
@@ -478,8 +1060,8 @@ 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==}
+ /@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}
peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
@@ -489,26 +1071,26 @@ packages:
typescript:
optional: true
dependencies:
- '@eslint-community/regexpp': 4.6.2
- '@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
+ '@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)
+ '@typescript-eslint/utils': 6.15.0(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/visitor-keys': 6.15.0
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==}
+ /@typescript-eslint/parser@6.15.0(eslint@8.56.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@@ -517,10 +1099,10 @@ packages:
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
+ '@typescript-eslint/scope-manager': 6.15.0
+ '@typescript-eslint/types': 6.15.0
+ '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.3)
+ '@typescript-eslint/visitor-keys': 6.15.0
debug: 4.3.4
eslint: 8.56.0
typescript: 5.3.3
@@ -528,16 +1110,16 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/scope-manager@6.14.0:
- resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==}
+ /@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}
dependencies:
- '@typescript-eslint/types': 6.14.0
- '@typescript-eslint/visitor-keys': 6.14.0
+ '@typescript-eslint/types': 6.15.0
+ '@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==}
+ /@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}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@@ -546,23 +1128,23 @@ packages:
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)
+ '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.3)
+ '@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==}
+ /@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==}
+ /@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}
peerDependencies:
typescript: '*'
@@ -570,20 +1152,20 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/types': 6.14.0
- '@typescript-eslint/visitor-keys': 6.14.0
+ '@typescript-eslint/types': 6.15.0
+ '@typescript-eslint/visitor-keys': 6.15.0
debug: 4.3.4
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==}
+ /@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}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@@ -591,9 +1173,9 @@ packages:
'@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)
+ '@typescript-eslint/scope-manager': 6.15.0
+ '@typescript-eslint/types': 6.15.0
+ '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.3)
eslint: 8.56.0
semver: 7.5.4
transitivePeerDependencies:
@@ -601,11 +1183,11 @@ packages:
- typescript
dev: true
- /@typescript-eslint/visitor-keys@6.14.0:
- resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==}
+ /@typescript-eslint/visitor-keys@6.15.0:
+ resolution: {integrity: sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
- '@typescript-eslint/types': 6.14.0
+ '@typescript-eslint/types': 6.15.0
eslint-visitor-keys: 3.4.3
dev: true
@@ -613,16 +1195,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
@@ -646,6 +1228,18 @@ packages:
dependencies:
color-convert: 2.0.1
+ /any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+ dev: true
+
+ /anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: true
+
/argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
dependencies:
@@ -667,7 +1261,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 +1277,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 +1288,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 +1298,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 +1320,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
@@ -748,6 +1342,11 @@ packages:
/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ /binary-extensions@2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: true
+
/brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies:
@@ -781,6 +1380,21 @@ packages:
semver: 7.5.4
dev: true
+ /bundle-require@4.0.2(esbuild@0.19.10):
+ resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ peerDependencies:
+ esbuild: '>=0.17'
+ dependencies:
+ esbuild: 0.19.10
+ load-tsconfig: 0.2.5
+ dev: true
+
+ /cac@6.7.14:
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
+ dev: true
+
/call-bind@1.0.5:
resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
dependencies:
@@ -801,6 +1415,21 @@ packages:
supports-color: 7.2.0
dev: true
+ /chokidar@3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
/cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
@@ -819,6 +1448,11 @@ packages:
/color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ /commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+ dev: true
+
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
@@ -838,7 +1472,7 @@ packages:
supports-color:
optional: true
dependencies:
- ms: 2.1.3
+ ms: 2.1.2
dev: true
/debug@4.3.4:
@@ -867,13 +1501,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 +1544,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 +1569,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 +1609,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:
@@ -983,6 +1631,37 @@ packages:
is-date-object: 1.0.5
is-symbol: 1.0.4
+ /esbuild@0.19.10:
+ resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.19.10
+ '@esbuild/android-arm': 0.19.10
+ '@esbuild/android-arm64': 0.19.10
+ '@esbuild/android-x64': 0.19.10
+ '@esbuild/darwin-arm64': 0.19.10
+ '@esbuild/darwin-x64': 0.19.10
+ '@esbuild/freebsd-arm64': 0.19.10
+ '@esbuild/freebsd-x64': 0.19.10
+ '@esbuild/linux-arm': 0.19.10
+ '@esbuild/linux-arm64': 0.19.10
+ '@esbuild/linux-ia32': 0.19.10
+ '@esbuild/linux-loong64': 0.19.10
+ '@esbuild/linux-mips64el': 0.19.10
+ '@esbuild/linux-ppc64': 0.19.10
+ '@esbuild/linux-riscv64': 0.19.10
+ '@esbuild/linux-s390x': 0.19.10
+ '@esbuild/linux-x64': 0.19.10
+ '@esbuild/netbsd-x64': 0.19.10
+ '@esbuild/openbsd-x64': 0.19.10
+ '@esbuild/sunos-x64': 0.19.10
+ '@esbuild/win32-arm64': 0.19.10
+ '@esbuild/win32-ia32': 0.19.10
+ '@esbuild/win32-x64': 0.19.10
+ dev: true
+
/escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
@@ -1002,6 +1681,15 @@ packages:
eslint: 8.56.0
dev: true
+ /eslint-config-prettier@9.1.0(eslint@8.56.0):
+ resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
+ 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'}
@@ -1012,11 +1700,20 @@ packages:
eslint-plugin-promise: ^6.0.0
dependencies:
eslint: 8.56.0
- eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(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)
eslint-plugin-n: 16.4.0(eslint@8.56.0)
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
dev: true
+ /eslint-config-turbo@1.11.2(eslint@8.56.0):
+ resolution: {integrity: sha512-vqbyCH6kCHFoIAWUmGL61c0BfUQNz0XAl2RzAnEkSQ+PLXvEvuV2HsvL51UOzyyElfJlzZuh9T4BvUqb5KR9Eg==}
+ peerDependencies:
+ eslint: '>6.6.0'
+ dependencies:
+ eslint: 8.56.0
+ eslint-plugin-turbo: 1.11.2(eslint@8.56.0)
+ dev: true
+
/eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
dependencies:
@@ -1027,7 +1724,30 @@ packages:
- 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):
+ /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-node@0.3.9)(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.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:
@@ -1048,10 +1768,11 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
- '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ '@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
@@ -1063,7 +1784,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,7 +1800,7 @@ packages:
regexpp: 3.2.0
dev: true
- /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.14.0)(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):
resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
engines: {node: '>=4'}
peerDependencies:
@@ -1089,7 +1810,7 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
- '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
+ '@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
@@ -1098,7 +1819,7 @@ packages:
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)
+ 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
@@ -1124,8 +1845,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 +1863,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 +1883,15 @@ packages:
eslint: 8.56.0
dev: true
+ /eslint-plugin-turbo@1.11.2(eslint@8.56.0):
+ resolution: {integrity: sha512-U6DX+WvgGFiwEAqtOjm4Ejd9O4jsw8jlFNkQi0ywxbMnbiTie+exF4Z0F/B1ajtjjeZkBkgRnlU+UkoraBN+bw==}
+ 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 +1923,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 +1945,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 +1968,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
@@ -1281,14 +2016,13 @@ packages:
onetime: 5.1.2
signal-exit: 3.0.7
strip-final-newline: 2.0.0
- dev: false
/fast-deep-equal@3.1.3:
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
@@ -1362,6 +2096,14 @@ packages:
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
@@ -1370,7 +2112,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
@@ -1393,7 +2135,6 @@ packages:
/get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
- dev: false
/get-symbol-description@1.0.0:
resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
@@ -1402,8 +2143,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
@@ -1422,6 +2163,17 @@ packages:
is-glob: 4.0.3
dev: true
+ /glob@7.1.6:
+ resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
dependencies:
@@ -1432,8 +2184,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 +2195,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 +2203,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 +2220,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 +2233,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 +2252,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'}
@@ -1527,10 +2272,9 @@ packages:
/human-signals@2.1.0:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
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 +2305,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:
@@ -1581,6 +2325,13 @@ packages:
dependencies:
has-bigints: 1.0.2
+ /is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: true
+
/is-boolean-object@1.1.2:
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
engines: {node: '>= 0.4'}
@@ -1662,7 +2413,6 @@ packages:
/is-stream@2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
- dev: false
/is-string@1.0.7:
resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
@@ -1693,6 +2443,11 @@ packages:
/isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ /joycon@3.1.1:
+ resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
+ engines: {node: '>=10'}
+ dev: true
+
/js-yaml@3.14.1:
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
hasBin: true
@@ -1735,6 +2490,20 @@ packages:
type-check: 0.4.0
dev: true
+ /lilconfig@3.0.0:
+ resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==}
+ engines: {node: '>=14'}
+ dev: true
+
+ /lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ dev: true
+
+ /load-tsconfig@0.2.5:
+ resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: true
+
/locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@@ -1757,6 +2526,10 @@ packages:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
dev: true
+ /lodash.sortby@4.7.0:
+ resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
+ dev: true
+
/long@5.2.3:
resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==}
dev: false
@@ -1773,7 +2546,6 @@ packages:
/merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
- dev: false
/merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
@@ -1797,7 +2569,6 @@ packages:
/mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
- dev: false
/minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -1821,8 +2592,12 @@ 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==}
+ /mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
dev: true
/natural-compare@1.4.0:
@@ -1848,6 +2623,11 @@ packages:
validate-npm-package-license: 3.0.4
dev: false
+ /normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/npm-normalize-package-bin@1.0.1:
resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==}
dev: false
@@ -1857,7 +2637,11 @@ packages:
engines: {node: '>=8'}
dependencies:
path-key: 3.1.1
- dev: false
+
+ /object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
/object-inspect@1.13.1:
resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
@@ -1871,7 +2655,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 +2664,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 +2683,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 +2693,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
@@ -1923,7 +2707,6 @@ packages:
engines: {node: '>=6'}
dependencies:
mimic-fn: 2.1.0
- dev: false
/optionator@0.9.3:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
@@ -2003,6 +2786,11 @@ packages:
engines: {node: '>=8.6'}
dev: true
+ /pirates@4.0.6:
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ engines: {node: '>= 6'}
+ dev: true
+
/pkg-dir@7.0.0:
resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==}
engines: {node: '>=14.16'}
@@ -2010,13 +2798,29 @@ packages:
find-up: 6.3.0
dev: false
+ /postcss-load-config@4.0.2:
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ lilconfig: 3.0.0
+ yaml: 2.3.4
+ dev: true
+
/prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
dev: true
- /protobufjs@7.2.4:
- resolution: {integrity: sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==}
+ /protobufjs@7.2.5:
+ resolution: {integrity: sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==}
engines: {node: '>=12.0.0'}
requiresBuild: true
dependencies:
@@ -2030,7 +2834,7 @@ packages:
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.0
- '@types/node': 20.10.4
+ '@types/node': 20.10.5
long: 5.2.3
dev: false
@@ -2071,12 +2875,19 @@ packages:
once: 1.4.0
dev: false
+ /readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: true
+
/regexp.prototype.flags@1.5.1:
resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
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:
@@ -2110,17 +2921,13 @@ packages:
engines: {node: '>=4'}
dev: true
- /resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+ /resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
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
+ /resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
dev: true
/resolve@1.22.8:
@@ -2143,6 +2950,27 @@ packages:
glob: 7.2.3
dev: true
+ /rollup@4.9.1:
+ resolution: {integrity: sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.9.1
+ '@rollup/rollup-android-arm64': 4.9.1
+ '@rollup/rollup-darwin-arm64': 4.9.1
+ '@rollup/rollup-darwin-x64': 4.9.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.9.1
+ '@rollup/rollup-linux-arm64-gnu': 4.9.1
+ '@rollup/rollup-linux-arm64-musl': 4.9.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.9.1
+ '@rollup/rollup-linux-x64-gnu': 4.9.1
+ '@rollup/rollup-linux-x64-musl': 4.9.1
+ '@rollup/rollup-win32-arm64-msvc': 4.9.1
+ '@rollup/rollup-win32-ia32-msvc': 4.9.1
+ '@rollup/rollup-win32-x64-msvc': 4.9.1
+ fsevents: 2.3.3
+ dev: true
+
/run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
@@ -2189,7 +3017,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 +3025,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==}
@@ -2222,7 +3050,6 @@ packages:
/signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
- dev: false
/slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
@@ -2241,11 +3068,18 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
+ /source-map@0.8.0-beta.0:
+ resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
+ engines: {node: '>= 8'}
+ dependencies:
+ whatwg-url: 7.1.0
+ dev: true
+
/spdx-correct@3.2.0:
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 +3090,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 +3115,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:
@@ -2312,13 +3146,26 @@ packages:
/strip-final-newline@2.0.0:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
- dev: false
/strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
dev: true
+ /sucrase@3.34.0:
+ resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.3
+ commander: 4.1.1
+ glob: 7.1.6
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.6
+ ts-interface-checker: 0.1.13
+ dev: true
+
/supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -2330,10 +3177,28 @@ 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
+ /thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ thenify: 3.3.1
+ dev: true
+
+ /thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ dependencies:
+ any-promise: 1.3.0
+ dev: true
+
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -2341,8 +3206,19 @@ 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==}
+ /tr46@1.0.1:
+ resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
+ dependencies:
+ punycode: 2.3.0
+ dev: true
+
+ /tree-kill@1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+ dev: true
+
+ /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'
@@ -2350,6 +3226,10 @@ packages:
typescript: 5.3.3
dev: true
+ /ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ dev: true
+
/ts-node@7.0.1:
resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==}
engines: {node: '>=4.2.0'}
@@ -2374,6 +3254,105 @@ packages:
strip-bom: 3.0.0
dev: true
+ /tsup@8.0.1(typescript@5.3.3):
+ resolution: {integrity: sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==}
+ engines: {node: '>=18'}
+ hasBin: true
+ peerDependencies:
+ '@microsoft/api-extractor': ^7.36.0
+ '@swc/core': ^1
+ postcss: ^8.4.12
+ typescript: '>=4.5.0'
+ peerDependenciesMeta:
+ '@microsoft/api-extractor':
+ optional: true
+ '@swc/core':
+ optional: true
+ postcss:
+ optional: true
+ typescript:
+ optional: true
+ dependencies:
+ bundle-require: 4.0.2(esbuild@0.19.10)
+ cac: 6.7.14
+ chokidar: 3.5.3
+ debug: 4.3.4
+ esbuild: 0.19.10
+ execa: 5.1.1
+ globby: 11.1.0
+ joycon: 3.1.1
+ postcss-load-config: 4.0.2
+ resolve-from: 5.0.0
+ rollup: 4.9.1
+ source-map: 0.8.0-beta.0
+ sucrase: 3.34.0
+ tree-kill: 1.2.2
+ typescript: 5.3.3
+ transitivePeerDependencies:
+ - supports-color
+ - ts-node
+ 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 +3436,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:
@@ -2467,6 +3446,18 @@ packages:
spdx-expression-parse: 3.0.1
dev: false
+ /webidl-conversions@4.0.2:
+ resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
+ dev: true
+
+ /whatwg-url@7.1.0:
+ resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
+ dependencies:
+ lodash.sortby: 4.7.0
+ tr46: 1.0.1
+ webidl-conversions: 4.0.2
+ dev: true
+
/which-boxed-primitive@1.0.2:
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
dependencies:
@@ -2513,6 +3504,11 @@ packages:
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ /yaml@2.3.4:
+ resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
+ engines: {node: '>= 14'}
+ dev: true
+
/yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
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/renovate.json b/renovate.json
index 00fa6ebf58..68fcd9986b 100644
--- a/renovate.json
+++ b/renovate.json
@@ -93,6 +93,7 @@
],
"dependencyDashboard": true,
"assigneesFromCodeOwners": true,
+ "reviewersFromCodeOwners": true,
"baseBranches": [
"next"
],
diff --git a/station/Signal.Beacon.Voice/Signal.Beacon.Voice.csproj b/station/Signal.Beacon.Voice/Signal.Beacon.Voice.csproj
index a69740b9f6..8f0cb8ae3f 100644
--- a/station/Signal.Beacon.Voice/Signal.Beacon.Voice.csproj
+++ b/station/Signal.Beacon.Voice/Signal.Beacon.Voice.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/station/Signal.Beacon.Voice/VoiceService.cs b/station/Signal.Beacon.Voice/VoiceService.cs
index 904a4cc67e..6843796fa4 100644
--- a/station/Signal.Beacon.Voice/VoiceService.cs
+++ b/station/Signal.Beacon.Voice/VoiceService.cs
@@ -476,7 +476,8 @@ private bool GetNextFrameByte(int frameLength, ref byte[] buffer)
throw new NullReferenceException("Capture device not initialized.");
if (frameLength <= 0) throw new ArgumentOutOfRangeException(nameof(frameLength));
- if (ALC.GetAvailableSamples(this.captureDevice.Value) < frameLength)
+ var samples = ALC.GetInteger(this.captureDevice.Value, AlcGetInteger.CaptureSamples);
+ if (samples < frameLength)
return false;
if (buffer == null) throw new ArgumentNullException(nameof(buffer));
@@ -494,7 +495,8 @@ private bool GetNextFrame(int frameLength, ref short[] buffer)
throw new NullReferenceException("Capture device not initialized.");
if (frameLength <= 0) throw new ArgumentOutOfRangeException(nameof(frameLength));
- if (ALC.GetAvailableSamples(this.captureDevice.Value) < frameLength)
+ var samples = ALC.GetInteger(this.captureDevice.Value, AlcGetInteger.CaptureSamples);
+ if (samples < frameLength)
return false;
if (buffer == null) throw new ArgumentNullException(nameof(buffer));
@@ -765,7 +767,7 @@ private async Task PlaySoundAsync(string name)
ALC.MakeContextCurrent(this.alContext.Value);
this.AlHasError();
- AL.BindBufferToSource(this.alSource.Value, sound.Buffer);
+ AL.Source(this.alSource.Value, ALSourcei.Buffer, sound.Buffer);
this.AlHasError();
AL.SourcePlay(this.alSource.Value);
@@ -787,15 +789,17 @@ private Task WaitSourceToStop()
return Task.CompletedTask;
}
- return Task.Run(() =>
+ return Task.Run(async () =>
{
ALSourceState state;
do
{
- state = AL.GetSourceState(this.alSource.Value);
+ AL.GetSource(this.alSource.Value, ALGetSourcei.SourceState, out var rawState);
if (this.AlHasError()) break;
- Thread.Yield();
+ state = (ALSourceState) rawState;
+
+ await Task.Delay(10);
} while (state == ALSourceState.Playing);
});
}
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/app/app/layout.tsx b/web/apps/app/app/layout.tsx
index 5788dc65ea..f559c25af0 100644
--- a/web/apps/app/app/layout.tsx
+++ b/web/apps/app/app/layout.tsx
@@ -2,6 +2,7 @@ import './global.css';
import { PropsWithChildren } from 'react';
import { Inter } from 'next/font/google';
import { Viewport, type Metadata } from 'next';
+import { SpeedInsights } from '@vercel/speed-insights/next';
import { Analytics } from '@vercel/analytics/react';
import { AppLayout } from '../components/layouts/AppLayout';
import { LayoutClientWrapper } from './LayoutClientWrapper';
@@ -21,6 +22,7 @@ export default function RootLayout({ children }: PropsWithChildren) {
+