Skip to content

Commit e05b004

Browse files
shelby-mooreinsomnia-infra
authored andcommitted
feat: konnect sync integration (#9795)
(cherry picked from commit e12d662)
1 parent 312a7bd commit e05b004

27 files changed

Lines changed: 3095 additions & 93 deletions

packages/insomnia-api/src/organizations.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ export interface FeatureList {
8888
aiMockServers: FeatureStatus;
8989
aiCommitMessages: FeatureStatus;
9090
aiMcpClient: FeatureStatus;
91+
konnectSync: FeatureStatus;
9192
}
9293

9394
export interface Billing {

packages/insomnia-smoke-test/playwright/test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ export const test = baseTest.extend<{
157157

158158
await page.waitForLoadState();
159159

160+
// Seed a fake Konnect PAT so konnect-enabled UI renders in all tests
161+
await page.evaluate(() => (window as any).main.secretStorage.setSecret('konnectPat', 'kpat_test'));
162+
160163
await use(page);
161164
},
162165
dataPath: async ({}, use) => {

packages/insomnia-smoke-test/server/insomnia-api.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ let organizationFeatures = {
7575
bulkImport: {
7676
enabled: true,
7777
},
78+
konnectSync: {
79+
enabled: true,
80+
},
7881
},
7982
};
8083

packages/insomnia-smoke-test/tests/smoke/git-sync.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ test.describe('Git Sync', () => {
2020
gitSync: {
2121
enabled: false,
2222
},
23+
konnectSync: {
24+
enabled: true,
25+
},
2326
},
2427
},
2528
});
@@ -33,6 +36,9 @@ test.describe('Git Sync', () => {
3336
gitSync: {
3437
enabled: true,
3538
},
39+
konnectSync: {
40+
enabled: true,
41+
},
3642
},
3743
},
3844
});

packages/insomnia/src/common/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ export const getMockServiceBinURL = (mockServer: MockServer, path: string) => {
111111
};
112112

113113
export const getAIServiceURL = () => env.INSOMNIA_AI_URL || 'https://ai-helper.insomnia.rest';
114+
export const getKonnectApiBaseURL = () => env.KONNECT_API_URL || 'https://global.api.konghq.com';
114115

115116
// App website
116117
export const getAppWebsiteBaseURL = () => env.INSOMNIA_APP_WEBSITE_URL || 'https://app.insomnia.rest';

packages/insomnia/src/common/settings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ export interface Settings {
130130
fontSize: number;
131131
fontVariantLigatures: boolean;
132132
forceVerticalLayout: boolean;
133+
hasKonnectPat: boolean;
133134
hotKeyRegistry: HotKeyRegistry;
134135
httpProxy: string;
135136
httpsProxy: string;

packages/insomnia/src/insomnia-data/src/models/grpc-request.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ interface BaseGrpcRequest {
3434
apiKey: string;
3535
module: string;
3636
};
37+
konnectRouteKey?: string | null;
38+
konnectManagedHeaderNames?: string[] | null;
3739
}
3840

3941
export type GrpcRequest = BaseModel & BaseGrpcRequest;
@@ -42,11 +44,14 @@ export const isGrpcRequest = (model: Pick<BaseModel, 'type'>): model is GrpcRequ
4244

4345
export const isGrpcRequestId = (id?: string | null) => id?.startsWith(`${prefix}_`);
4446

47+
export const optionalKeys = ['konnectRouteKey', 'konnectManagedHeaderNames'];
48+
4549
export function rewriteReferences(request: GrpcRequest, idMapping: Map<string, string>): GrpcRequest {
4650
return {
4751
...request,
4852
protoFileId: request.protoFileId ? idMapping.get(request.protoFileId) : undefined,
4953
...replaceIdsInFields(request, ['url', 'body', 'metadata'], idMapping),
54+
konnectRouteKey: null,
5055
};
5156
}
5257

packages/insomnia/src/insomnia-data/src/models/project.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ export const projectHasSettings = (project: Pick<Project, '_id'>) => !isScratchp
3131
interface CommonProject {
3232
name: string;
3333
mcpStdioAccess?: boolean;
34+
konnectControlPlaneId?: string | null;
35+
konnectClusterType?: string | null;
3436
}
3537

3638
export interface RemoteProject extends BaseModel, CommonProject {
@@ -54,6 +56,8 @@ export const isProject = (model: Pick<BaseModel, 'type'>): model is Project => m
5456

5557
export const isProjectId = (id: string | null) => id?.startsWith(`${prefix}_`);
5658

59+
export const optionalKeys = ['konnectControlPlaneId', 'konnectClusterType'];
60+
5761
export function init(): Partial<Project> {
5862
return {
5963
name: 'My Project',

packages/insomnia/src/insomnia-data/src/models/request-group.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export const canDuplicate = true;
1414

1515
export const canSync = true;
1616
// for those keys do not need to add in model init method
17-
export const optionalKeys = ['kvPairData', 'environmentType'];
17+
export const optionalKeys = ['kvPairData', 'environmentType', 'konnectRouteId'];
1818
interface BaseRequestGroup {
1919
name: string;
2020
description: string;
@@ -27,6 +27,7 @@ interface BaseRequestGroup {
2727
afterResponseScript?: string;
2828
authentication?: RequestAuthentication | {};
2929
headers?: RequestHeader[];
30+
konnectRouteId?: string | null;
3031
}
3132

3233
export type RequestGroup = BaseModel & BaseRequestGroup;
@@ -56,5 +57,6 @@ export function rewriteReferences(group: RequestGroup, idMapping: Map<string, st
5657
['authentication', 'headers', 'preRequestScript', 'afterResponseScript', 'environment', 'kvPairData'],
5758
idMapping,
5859
),
60+
konnectRouteId: null,
5961
};
6062
}

packages/insomnia/src/insomnia-data/src/models/request.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,8 @@ export interface BaseRequest {
290290
settingEncodeUrl: boolean;
291291
settingRebuildPath: boolean;
292292
settingFollowRedirects: 'global' | 'on' | 'off';
293+
konnectRouteKey?: string | null;
294+
konnectManagedHeaderNames?: string[] | null;
293295
}
294296

295297
export type Request = BaseModel & BaseRequest;
@@ -303,6 +305,8 @@ export const isEventStreamRequest = (model: Pick<BaseModel, 'type'>) =>
303305
export const isGraphqlSubscriptionRequest = (model: Pick<BaseModel, 'type'>) =>
304306
isRequest(model) && getOperationType(model) === OperationTypeNode.SUBSCRIPTION;
305307

308+
export const optionalKeys = ['konnectRouteKey', 'konnectManagedHeaderNames'];
309+
306310
export function init(): BaseRequest {
307311
return {
308312
url: '',
@@ -345,5 +349,6 @@ export function rewriteReferences(request: Request, idMapping: Map<string, strin
345349
],
346350
idMapping,
347351
),
352+
konnectRouteKey: null,
348353
};
349354
}

0 commit comments

Comments
 (0)