mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-08 02:27:37 +00:00
feat: add hasura cloud
This commit is contained in:
@@ -14,6 +14,7 @@ import {
|
|||||||
INTEGRATION_GITHUB,
|
INTEGRATION_GITHUB,
|
||||||
INTEGRATION_GITLAB,
|
INTEGRATION_GITLAB,
|
||||||
INTEGRATION_HASHICORP_VAULT,
|
INTEGRATION_HASHICORP_VAULT,
|
||||||
|
INTEGRATION_HASURA_CLOUD,
|
||||||
INTEGRATION_HEROKU,
|
INTEGRATION_HEROKU,
|
||||||
INTEGRATION_LARAVELFORGE,
|
INTEGRATION_LARAVELFORGE,
|
||||||
INTEGRATION_NETLIFY,
|
INTEGRATION_NETLIFY,
|
||||||
@@ -76,7 +77,8 @@ export interface IIntegration {
|
|||||||
| "cloud-66"
|
| "cloud-66"
|
||||||
| "northflank"
|
| "northflank"
|
||||||
| "windmill"
|
| "windmill"
|
||||||
| "gcp-secret-manager";
|
| "gcp-secret-manager"
|
||||||
|
| "hasura-cloud";
|
||||||
integrationAuth: Types.ObjectId;
|
integrationAuth: Types.ObjectId;
|
||||||
metadata: Metadata;
|
metadata: Metadata;
|
||||||
}
|
}
|
||||||
@@ -86,67 +88,67 @@ const integrationSchema = new Schema<IIntegration>(
|
|||||||
workspace: {
|
workspace: {
|
||||||
type: Schema.Types.ObjectId,
|
type: Schema.Types.ObjectId,
|
||||||
ref: "Workspace",
|
ref: "Workspace",
|
||||||
required: true,
|
required: true
|
||||||
},
|
},
|
||||||
environment: {
|
environment: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true
|
||||||
},
|
},
|
||||||
isActive: {
|
isActive: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: true,
|
required: true
|
||||||
},
|
},
|
||||||
url: {
|
url: {
|
||||||
// for custom self-hosted integrations (e.g. self-hosted GitHub enterprise)
|
// for custom self-hosted integrations (e.g. self-hosted GitHub enterprise)
|
||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null
|
||||||
},
|
},
|
||||||
app: {
|
app: {
|
||||||
// name of app in provider
|
// name of app in provider
|
||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null
|
||||||
},
|
},
|
||||||
appId: {
|
appId: {
|
||||||
// id of app in provider
|
// id of app in provider
|
||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null
|
||||||
},
|
},
|
||||||
targetEnvironment: {
|
targetEnvironment: {
|
||||||
// target environment
|
// target environment
|
||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null
|
||||||
},
|
},
|
||||||
targetEnvironmentId: {
|
targetEnvironmentId: {
|
||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null
|
||||||
},
|
},
|
||||||
targetService: {
|
targetService: {
|
||||||
// railway-specific service
|
// railway-specific service
|
||||||
// qovery-specific project
|
// qovery-specific project
|
||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null
|
||||||
},
|
},
|
||||||
targetServiceId: {
|
targetServiceId: {
|
||||||
// railway-specific service
|
// railway-specific service
|
||||||
// qovery specific project
|
// qovery specific project
|
||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null
|
||||||
},
|
},
|
||||||
owner: {
|
owner: {
|
||||||
// github-specific repo owner-login
|
// github-specific repo owner-login
|
||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null
|
||||||
},
|
},
|
||||||
path: {
|
path: {
|
||||||
// aws-parameter-store-specific path
|
// aws-parameter-store-specific path
|
||||||
// (also) vercel preview-branch
|
// (also) vercel preview-branch
|
||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null
|
||||||
},
|
},
|
||||||
region: {
|
region: {
|
||||||
// aws-parameter-store-specific path
|
// aws-parameter-store-specific path
|
||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null
|
||||||
},
|
},
|
||||||
scope: {
|
scope: {
|
||||||
// qovery-specific scope
|
// qovery-specific scope
|
||||||
@@ -183,19 +185,20 @@ const integrationSchema = new Schema<IIntegration>(
|
|||||||
INTEGRATION_DIGITAL_OCEAN_APP_PLATFORM,
|
INTEGRATION_DIGITAL_OCEAN_APP_PLATFORM,
|
||||||
INTEGRATION_CLOUD_66,
|
INTEGRATION_CLOUD_66,
|
||||||
INTEGRATION_NORTHFLANK,
|
INTEGRATION_NORTHFLANK,
|
||||||
INTEGRATION_GCP_SECRET_MANAGER
|
INTEGRATION_GCP_SECRET_MANAGER,
|
||||||
|
INTEGRATION_HASURA_CLOUD
|
||||||
],
|
],
|
||||||
required: true,
|
required: true
|
||||||
},
|
},
|
||||||
integrationAuth: {
|
integrationAuth: {
|
||||||
type: Schema.Types.ObjectId,
|
type: Schema.Types.ObjectId,
|
||||||
ref: "IntegrationAuth",
|
ref: "IntegrationAuth",
|
||||||
required: true,
|
required: true
|
||||||
},
|
},
|
||||||
secretPath: {
|
secretPath: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true,
|
||||||
default: "/",
|
default: "/"
|
||||||
},
|
},
|
||||||
metadata: {
|
metadata: {
|
||||||
type: Schema.Types.Mixed,
|
type: Schema.Types.Mixed,
|
||||||
@@ -203,7 +206,7 @@ const integrationSchema = new Schema<IIntegration>(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
timestamps: true,
|
timestamps: true
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import {
|
|||||||
INTEGRATION_GITHUB,
|
INTEGRATION_GITHUB,
|
||||||
INTEGRATION_GITLAB,
|
INTEGRATION_GITLAB,
|
||||||
INTEGRATION_HASHICORP_VAULT,
|
INTEGRATION_HASHICORP_VAULT,
|
||||||
|
INTEGRATION_HASURA_CLOUD,
|
||||||
INTEGRATION_HEROKU,
|
INTEGRATION_HEROKU,
|
||||||
INTEGRATION_LARAVELFORGE,
|
INTEGRATION_LARAVELFORGE,
|
||||||
INTEGRATION_NETLIFY,
|
INTEGRATION_NETLIFY,
|
||||||
@@ -62,7 +63,8 @@ import {
|
|||||||
| "teamcity"
|
| "teamcity"
|
||||||
| "northflank"
|
| "northflank"
|
||||||
| "windmill"
|
| "windmill"
|
||||||
| "gcp-secret-manager";
|
| "gcp-secret-manager"
|
||||||
|
| "hasura-cloud";
|
||||||
teamId: string;
|
teamId: string;
|
||||||
accountId: string;
|
accountId: string;
|
||||||
url: string;
|
url: string;
|
||||||
@@ -87,7 +89,7 @@ import {
|
|||||||
workspace: {
|
workspace: {
|
||||||
type: Schema.Types.ObjectId,
|
type: Schema.Types.ObjectId,
|
||||||
ref: "Workspace",
|
ref: "Workspace",
|
||||||
required: true,
|
required: true
|
||||||
},
|
},
|
||||||
integration: {
|
integration: {
|
||||||
type: String,
|
type: String,
|
||||||
@@ -117,89 +119,85 @@ import {
|
|||||||
INTEGRATION_DIGITAL_OCEAN_APP_PLATFORM,
|
INTEGRATION_DIGITAL_OCEAN_APP_PLATFORM,
|
||||||
INTEGRATION_CLOUD_66,
|
INTEGRATION_CLOUD_66,
|
||||||
INTEGRATION_NORTHFLANK,
|
INTEGRATION_NORTHFLANK,
|
||||||
INTEGRATION_GCP_SECRET_MANAGER
|
INTEGRATION_GCP_SECRET_MANAGER,
|
||||||
|
INTEGRATION_HASURA_CLOUD
|
||||||
],
|
],
|
||||||
required: true,
|
required: true
|
||||||
},
|
},
|
||||||
teamId: {
|
teamId: {
|
||||||
// vercel-specific integration param
|
// vercel-specific integration param
|
||||||
type: String,
|
type: String
|
||||||
},
|
},
|
||||||
url: {
|
url: {
|
||||||
// for any self-hosted integrations (e.g. self-hosted hashicorp-vault)
|
// for any self-hosted integrations (e.g. self-hosted hashicorp-vault)
|
||||||
type: String,
|
type: String
|
||||||
},
|
},
|
||||||
namespace: {
|
namespace: {
|
||||||
// hashicorp-vault-specific integration param
|
// hashicorp-vault-specific integration param
|
||||||
type: String,
|
type: String
|
||||||
},
|
},
|
||||||
accountId: {
|
accountId: {
|
||||||
// netlify-specific integration param
|
// netlify-specific integration param
|
||||||
type: String,
|
type: String
|
||||||
},
|
},
|
||||||
refreshCiphertext: {
|
refreshCiphertext: {
|
||||||
type: String,
|
type: String,
|
||||||
select: false,
|
select: false
|
||||||
},
|
},
|
||||||
refreshIV: {
|
refreshIV: {
|
||||||
type: String,
|
type: String,
|
||||||
select: false,
|
select: false
|
||||||
},
|
},
|
||||||
refreshTag: {
|
refreshTag: {
|
||||||
type: String,
|
type: String,
|
||||||
select: false,
|
select: false
|
||||||
},
|
},
|
||||||
accessIdCiphertext: {
|
accessIdCiphertext: {
|
||||||
type: String,
|
type: String,
|
||||||
select: false,
|
select: false
|
||||||
},
|
},
|
||||||
accessIdIV: {
|
accessIdIV: {
|
||||||
type: String,
|
type: String,
|
||||||
select: false,
|
select: false
|
||||||
},
|
},
|
||||||
accessIdTag: {
|
accessIdTag: {
|
||||||
type: String,
|
type: String,
|
||||||
select: false,
|
select: false
|
||||||
},
|
},
|
||||||
accessCiphertext: {
|
accessCiphertext: {
|
||||||
type: String,
|
type: String,
|
||||||
select: false,
|
select: false
|
||||||
},
|
},
|
||||||
accessIV: {
|
accessIV: {
|
||||||
type: String,
|
type: String,
|
||||||
select: false,
|
select: false
|
||||||
},
|
},
|
||||||
accessTag: {
|
accessTag: {
|
||||||
type: String,
|
type: String,
|
||||||
select: false,
|
select: false
|
||||||
},
|
},
|
||||||
accessExpiresAt: {
|
accessExpiresAt: {
|
||||||
type: Date,
|
type: Date,
|
||||||
select: false,
|
select: false
|
||||||
},
|
},
|
||||||
algorithm: { // the encryption algorithm used
|
algorithm: {
|
||||||
|
// the encryption algorithm used
|
||||||
type: String,
|
type: String,
|
||||||
enum: [ALGORITHM_AES_256_GCM],
|
enum: [ALGORITHM_AES_256_GCM],
|
||||||
required: true,
|
required: true
|
||||||
},
|
},
|
||||||
keyEncoding: {
|
keyEncoding: {
|
||||||
type: String,
|
type: String,
|
||||||
enum: [
|
enum: [ENCODING_SCHEME_UTF8, ENCODING_SCHEME_BASE64],
|
||||||
ENCODING_SCHEME_UTF8,
|
required: true
|
||||||
ENCODING_SCHEME_BASE64,
|
|
||||||
],
|
|
||||||
required: true,
|
|
||||||
},
|
},
|
||||||
metadata: {
|
metadata: {
|
||||||
type: Schema.Types.Mixed
|
type: Schema.Types.Mixed
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
timestamps: true,
|
timestamps: true
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
export const IntegrationAuth = model<IIntegrationAuth>(
|
export const IntegrationAuth = model<IIntegrationAuth>("IntegrationAuth", integrationAuthSchema);
|
||||||
"IntegrationAuth",
|
|
||||||
integrationAuthSchema
|
|
||||||
);
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export const INTEGRATION_GITLAB = "gitlab";
|
|||||||
export const INTEGRATION_RENDER = "render";
|
export const INTEGRATION_RENDER = "render";
|
||||||
export const INTEGRATION_RAILWAY = "railway";
|
export const INTEGRATION_RAILWAY = "railway";
|
||||||
export const INTEGRATION_FLYIO = "flyio";
|
export const INTEGRATION_FLYIO = "flyio";
|
||||||
export const INTEGRATION_LARAVELFORGE = "laravel-forge"
|
export const INTEGRATION_LARAVELFORGE = "laravel-forge";
|
||||||
export const INTEGRATION_CIRCLECI = "circleci";
|
export const INTEGRATION_CIRCLECI = "circleci";
|
||||||
export const INTEGRATION_TRAVISCI = "travisci";
|
export const INTEGRATION_TRAVISCI = "travisci";
|
||||||
export const INTEGRATION_TEAMCITY = "teamcity";
|
export const INTEGRATION_TEAMCITY = "teamcity";
|
||||||
@@ -38,6 +38,7 @@ export const INTEGRATION_WINDMILL = "windmill";
|
|||||||
export const INTEGRATION_DIGITAL_OCEAN_APP_PLATFORM = "digital-ocean-app-platform";
|
export const INTEGRATION_DIGITAL_OCEAN_APP_PLATFORM = "digital-ocean-app-platform";
|
||||||
export const INTEGRATION_CLOUD_66 = "cloud-66";
|
export const INTEGRATION_CLOUD_66 = "cloud-66";
|
||||||
export const INTEGRATION_NORTHFLANK = "northflank";
|
export const INTEGRATION_NORTHFLANK = "northflank";
|
||||||
|
export const INTEGRATION_HASURA_CLOUD = "hasura-cloud";
|
||||||
export const INTEGRATION_SET = new Set([
|
export const INTEGRATION_SET = new Set([
|
||||||
INTEGRATION_GCP_SECRET_MANAGER,
|
INTEGRATION_GCP_SECRET_MANAGER,
|
||||||
INTEGRATION_AZURE_KEY_VAULT,
|
INTEGRATION_AZURE_KEY_VAULT,
|
||||||
@@ -63,7 +64,8 @@ export const INTEGRATION_SET = new Set([
|
|||||||
INTEGRATION_BITBUCKET,
|
INTEGRATION_BITBUCKET,
|
||||||
INTEGRATION_DIGITAL_OCEAN_APP_PLATFORM,
|
INTEGRATION_DIGITAL_OCEAN_APP_PLATFORM,
|
||||||
INTEGRATION_CLOUD_66,
|
INTEGRATION_CLOUD_66,
|
||||||
INTEGRATION_NORTHFLANK
|
INTEGRATION_NORTHFLANK,
|
||||||
|
INTEGRATION_HASURA_CLOUD
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// integration types
|
// integration types
|
||||||
@@ -71,15 +73,14 @@ export const INTEGRATION_OAUTH2 = "oauth2";
|
|||||||
|
|
||||||
// integration oauth endpoints
|
// integration oauth endpoints
|
||||||
export const INTEGRATION_GCP_TOKEN_URL = "https://oauth2.googleapis.com/token";
|
export const INTEGRATION_GCP_TOKEN_URL = "https://oauth2.googleapis.com/token";
|
||||||
export const INTEGRATION_AZURE_TOKEN_URL = "https://login.microsoftonline.com/common/oauth2/v2.0/token";
|
export const INTEGRATION_AZURE_TOKEN_URL =
|
||||||
|
"https://login.microsoftonline.com/common/oauth2/v2.0/token";
|
||||||
export const INTEGRATION_HEROKU_TOKEN_URL = "https://id.heroku.com/oauth/token";
|
export const INTEGRATION_HEROKU_TOKEN_URL = "https://id.heroku.com/oauth/token";
|
||||||
export const INTEGRATION_VERCEL_TOKEN_URL =
|
export const INTEGRATION_VERCEL_TOKEN_URL = "https://api.vercel.com/v2/oauth/access_token";
|
||||||
"https://api.vercel.com/v2/oauth/access_token";
|
|
||||||
export const INTEGRATION_NETLIFY_TOKEN_URL = "https://api.netlify.com/oauth/token";
|
export const INTEGRATION_NETLIFY_TOKEN_URL = "https://api.netlify.com/oauth/token";
|
||||||
export const INTEGRATION_GITHUB_TOKEN_URL =
|
export const INTEGRATION_GITHUB_TOKEN_URL = "https://github.com/login/oauth/access_token";
|
||||||
"https://github.com/login/oauth/access_token";
|
|
||||||
export const INTEGRATION_GITLAB_TOKEN_URL = "https://gitlab.com/oauth/token";
|
export const INTEGRATION_GITLAB_TOKEN_URL = "https://gitlab.com/oauth/token";
|
||||||
export const INTEGRATION_BITBUCKET_TOKEN_URL = "https://bitbucket.org/site/oauth2/access_token"
|
export const INTEGRATION_BITBUCKET_TOKEN_URL = "https://bitbucket.org/site/oauth2/access_token";
|
||||||
|
|
||||||
// integration apps endpoints
|
// integration apps endpoints
|
||||||
export const INTEGRATION_GCP_API_URL = "https://cloudresourcemanager.googleapis.com";
|
export const INTEGRATION_GCP_API_URL = "https://cloudresourcemanager.googleapis.com";
|
||||||
@@ -106,11 +107,13 @@ export const INTEGRATION_WINDMILL_API_URL = "https://app.windmill.dev/api";
|
|||||||
export const INTEGRATION_DIGITAL_OCEAN_API_URL = "https://api.digitalocean.com";
|
export const INTEGRATION_DIGITAL_OCEAN_API_URL = "https://api.digitalocean.com";
|
||||||
export const INTEGRATION_CLOUD_66_API_URL = "https://app.cloud66.com/api";
|
export const INTEGRATION_CLOUD_66_API_URL = "https://app.cloud66.com/api";
|
||||||
export const INTEGRATION_NORTHFLANK_API_URL = "https://api.northflank.com";
|
export const INTEGRATION_NORTHFLANK_API_URL = "https://api.northflank.com";
|
||||||
|
export const INTEGRATION_HASURA_CLOUD_API_URL = "https://data.pro.hasura.io/v1/graphql";
|
||||||
|
|
||||||
export const INTEGRATION_GCP_SECRET_MANAGER_SERVICE_NAME = "secretmanager.googleapis.com"
|
export const INTEGRATION_GCP_SECRET_MANAGER_SERVICE_NAME = "secretmanager.googleapis.com";
|
||||||
export const INTEGRATION_GCP_SECRET_MANAGER_URL = `https://${INTEGRATION_GCP_SECRET_MANAGER_SERVICE_NAME}`;
|
export const INTEGRATION_GCP_SECRET_MANAGER_URL = `https://${INTEGRATION_GCP_SECRET_MANAGER_SERVICE_NAME}`;
|
||||||
export const INTEGRATION_GCP_SERVICE_USAGE_URL = "https://serviceusage.googleapis.com";
|
export const INTEGRATION_GCP_SERVICE_USAGE_URL = "https://serviceusage.googleapis.com";
|
||||||
export const INTEGRATION_GCP_CLOUD_PLATFORM_SCOPE = "https://www.googleapis.com/auth/cloud-platform";
|
export const INTEGRATION_GCP_CLOUD_PLATFORM_SCOPE =
|
||||||
|
"https://www.googleapis.com/auth/cloud-platform";
|
||||||
|
|
||||||
export const getIntegrationOptions = async () => {
|
export const getIntegrationOptions = async () => {
|
||||||
const INTEGRATION_OPTIONS = [
|
const INTEGRATION_OPTIONS = [
|
||||||
@@ -121,7 +124,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "oauth",
|
type: "oauth",
|
||||||
clientId: await getClientIdHeroku(),
|
clientId: await getClientIdHeroku(),
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Vercel",
|
name: "Vercel",
|
||||||
@@ -131,7 +134,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
type: "oauth",
|
type: "oauth",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
clientSlug: await getClientSlugVercel(),
|
clientSlug: await getClientSlugVercel(),
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Netlify",
|
name: "Netlify",
|
||||||
@@ -140,7 +143,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "oauth",
|
type: "oauth",
|
||||||
clientId: await getClientIdNetlify(),
|
clientId: await getClientIdNetlify(),
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "GitHub",
|
name: "GitHub",
|
||||||
@@ -149,7 +152,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "oauth",
|
type: "oauth",
|
||||||
clientId: await getClientIdGitHub(),
|
clientId: await getClientIdGitHub(),
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Render",
|
name: "Render",
|
||||||
@@ -158,7 +161,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Railway",
|
name: "Railway",
|
||||||
@@ -167,7 +170,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Fly.io",
|
name: "Fly.io",
|
||||||
@@ -176,7 +179,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AWS Parameter Store",
|
name: "AWS Parameter Store",
|
||||||
@@ -185,7 +188,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "custom",
|
type: "custom",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Laravel Forge",
|
name: "Laravel Forge",
|
||||||
@@ -194,7 +197,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AWS Secrets Manager",
|
name: "AWS Secrets Manager",
|
||||||
@@ -203,7 +206,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "custom",
|
type: "custom",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Azure Key Vault",
|
name: "Azure Key Vault",
|
||||||
@@ -212,7 +215,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "oauth",
|
type: "oauth",
|
||||||
clientId: await getClientIdAzure(),
|
clientId: await getClientIdAzure(),
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Circle CI",
|
name: "Circle CI",
|
||||||
@@ -221,7 +224,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "GitLab",
|
name: "GitLab",
|
||||||
@@ -230,7 +233,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "custom",
|
type: "custom",
|
||||||
clientId: await getClientIdGitLab(),
|
clientId: await getClientIdGitLab(),
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Terraform Cloud",
|
name: "Terraform Cloud",
|
||||||
@@ -239,7 +242,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
cliendId: "",
|
cliendId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Travis CI",
|
name: "Travis CI",
|
||||||
@@ -248,7 +251,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "TeamCity",
|
name: "TeamCity",
|
||||||
@@ -257,7 +260,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Supabase",
|
name: "Supabase",
|
||||||
@@ -266,7 +269,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Checkly",
|
name: "Checkly",
|
||||||
@@ -275,7 +278,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Qovery",
|
name: "Qovery",
|
||||||
@@ -284,7 +287,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "HashiCorp Vault",
|
name: "HashiCorp Vault",
|
||||||
@@ -293,7 +296,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "GCP Secret Manager",
|
name: "GCP Secret Manager",
|
||||||
@@ -329,7 +332,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Windmill",
|
name: "Windmill",
|
||||||
@@ -338,7 +341,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Digital Ocean App Platform",
|
name: "Digital Ocean App Platform",
|
||||||
@@ -347,7 +350,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Cloud 66",
|
name: "Cloud 66",
|
||||||
@@ -356,7 +359,7 @@ export const getIntegrationOptions = async () => {
|
|||||||
isAvailable: true,
|
isAvailable: true,
|
||||||
type: "pat",
|
type: "pat",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: "",
|
docsLink: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Northflank",
|
name: "Northflank",
|
||||||
@@ -367,7 +370,16 @@ export const getIntegrationOptions = async () => {
|
|||||||
clientId: "",
|
clientId: "",
|
||||||
docsLink: ""
|
docsLink: ""
|
||||||
},
|
},
|
||||||
]
|
{
|
||||||
|
name: "Hasura Cloud",
|
||||||
|
slug: "hasura-cloud",
|
||||||
|
image: "Northflank.png",
|
||||||
|
isAvailable: true,
|
||||||
|
type: "pat",
|
||||||
|
clientId: "",
|
||||||
|
docsLink: ""
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
return INTEGRATION_OPTIONS;
|
return INTEGRATION_OPTIONS;
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -6,74 +6,75 @@ const integrationSlugNameMapping: Mapping = {
|
|||||||
"azure-key-vault": "Azure Key Vault",
|
"azure-key-vault": "Azure Key Vault",
|
||||||
"aws-parameter-store": "AWS Parameter Store",
|
"aws-parameter-store": "AWS Parameter Store",
|
||||||
"aws-secret-manager": "AWS Secrets Manager",
|
"aws-secret-manager": "AWS Secrets Manager",
|
||||||
"heroku": "Heroku",
|
heroku: "Heroku",
|
||||||
"vercel": "Vercel",
|
vercel: "Vercel",
|
||||||
"netlify": "Netlify",
|
netlify: "Netlify",
|
||||||
"github": "GitHub",
|
github: "GitHub",
|
||||||
"gitlab": "GitLab",
|
gitlab: "GitLab",
|
||||||
"render": "Render",
|
render: "Render",
|
||||||
"laravel-forge": "Laravel Forge",
|
"laravel-forge": "Laravel Forge",
|
||||||
"railway": "Railway",
|
railway: "Railway",
|
||||||
"flyio": "Fly.io",
|
flyio: "Fly.io",
|
||||||
"circleci": "CircleCI",
|
circleci: "CircleCI",
|
||||||
"travisci": "TravisCI",
|
travisci: "TravisCI",
|
||||||
"supabase": "Supabase",
|
supabase: "Supabase",
|
||||||
"checkly": "Checkly",
|
checkly: "Checkly",
|
||||||
"qovery": "Qovery",
|
qovery: "Qovery",
|
||||||
"terraform-cloud": "Terraform Cloud",
|
"terraform-cloud": "Terraform Cloud",
|
||||||
"teamcity": "TeamCity",
|
teamcity: "TeamCity",
|
||||||
"hashicorp-vault": "Vault",
|
"hashicorp-vault": "Vault",
|
||||||
"cloudflare-pages": "Cloudflare Pages",
|
"cloudflare-pages": "Cloudflare Pages",
|
||||||
"codefresh": "Codefresh",
|
codefresh: "Codefresh",
|
||||||
"digital-ocean-app-platform": "Digital Ocean App Platform",
|
"digital-ocean-app-platform": "Digital Ocean App Platform",
|
||||||
"bitbucket": "BitBucket",
|
bitbucket: "BitBucket",
|
||||||
"cloud-66": "Cloud 66",
|
"cloud-66": "Cloud 66",
|
||||||
"northflank": "Northflank",
|
northflank: "Northflank",
|
||||||
"windmill": "Windmill",
|
windmill: "Windmill",
|
||||||
"gcp-secret-manager": "GCP Secret Manager"
|
"gcp-secret-manager": "GCP Secret Manager",
|
||||||
}
|
"hasura-cloud": "Hasura Cloud"
|
||||||
|
};
|
||||||
|
|
||||||
const envMapping: Mapping = {
|
const envMapping: Mapping = {
|
||||||
Development: "dev",
|
Development: "dev",
|
||||||
Staging: "staging",
|
Staging: "staging",
|
||||||
Production: "prod",
|
Production: "prod",
|
||||||
Testing: "test",
|
Testing: "test"
|
||||||
};
|
};
|
||||||
|
|
||||||
const reverseEnvMapping: Mapping = {
|
const reverseEnvMapping: Mapping = {
|
||||||
dev: "Development",
|
dev: "Development",
|
||||||
staging: "Staging",
|
staging: "Staging",
|
||||||
prod: "Production",
|
prod: "Production",
|
||||||
test: "Testing",
|
test: "Testing"
|
||||||
};
|
};
|
||||||
|
|
||||||
const contextNetlifyMapping: Mapping = {
|
const contextNetlifyMapping: Mapping = {
|
||||||
"dev": "Local development",
|
dev: "Local development",
|
||||||
"branch-deploy": "Branch deploys",
|
"branch-deploy": "Branch deploys",
|
||||||
"deploy-preview": "Deploy Previews",
|
"deploy-preview": "Deploy Previews",
|
||||||
"production": "Production"
|
production: "Production"
|
||||||
}
|
};
|
||||||
|
|
||||||
const reverseContextNetlifyMapping: Mapping = {
|
const reverseContextNetlifyMapping: Mapping = {
|
||||||
"Local development": "dev",
|
"Local development": "dev",
|
||||||
"Branch deploys": "branch-deploy",
|
"Branch deploys": "branch-deploy",
|
||||||
"Deploy Previews": "deploy-preview",
|
"Deploy Previews": "deploy-preview",
|
||||||
"Production": "production"
|
Production: "production"
|
||||||
}
|
};
|
||||||
|
|
||||||
const plansDev: Mapping = {
|
const plansDev: Mapping = {
|
||||||
"starter": "prod_Mb4ATFT5QAHoPM",
|
starter: "prod_Mb4ATFT5QAHoPM",
|
||||||
"team": "prod_NEpD2WMXUS2eDn",
|
team: "prod_NEpD2WMXUS2eDn",
|
||||||
"professional": "prod_Mb4CetZ2jE7jdl",
|
professional: "prod_Mb4CetZ2jE7jdl",
|
||||||
"enterprise": "licence_key_required"
|
enterprise: "licence_key_required"
|
||||||
}
|
};
|
||||||
|
|
||||||
const plansProd: Mapping = {
|
const plansProd: Mapping = {
|
||||||
"starter": "prod_Mb8oR5XNwyFTul",
|
starter: "prod_Mb8oR5XNwyFTul",
|
||||||
"team": "prod_NEp7fAB3UJWK6A",
|
team: "prod_NEp7fAB3UJWK6A",
|
||||||
"professional": "prod_Mb8pUIpA0OUi5N",
|
professional: "prod_Mb8pUIpA0OUi5N",
|
||||||
"enterprise": "licence_key_required"
|
enterprise: "licence_key_required"
|
||||||
}
|
};
|
||||||
|
|
||||||
const plans = plansProd || plansDev;
|
const plans = plansProd || plansDev;
|
||||||
|
|
||||||
@@ -83,4 +84,5 @@ export {
|
|||||||
integrationSlugNameMapping,
|
integrationSlugNameMapping,
|
||||||
plans,
|
plans,
|
||||||
reverseContextNetlifyMapping,
|
reverseContextNetlifyMapping,
|
||||||
reverseEnvMapping}
|
reverseEnvMapping
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user