Skip to content

Commit ad3cf37

Browse files
Send websocketUrl on Dev session create/update
1 parent b6967c9 commit ad3cf37

File tree

8 files changed

+26
-17
lines changed

8 files changed

+26
-17
lines changed

packages/app/src/cli/api/graphql/app-dev/generated/dev-session-create.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/co
77
export type DevSessionCreateMutationVariables = Types.Exact<{
88
appId: Types.Scalars['String']['input']
99
assetsUrl: Types.Scalars['String']['input']
10+
websocketUrl?: Types.InputMaybe<Types.Scalars['String']['input']>
1011
}>
1112

1213
export type DevSessionCreateMutation = {
@@ -33,6 +34,11 @@ export const DevSessionCreate = {
3334
variable: {kind: 'Variable', name: {kind: 'Name', value: 'assetsUrl'}},
3435
type: {kind: 'NonNullType', type: {kind: 'NamedType', name: {kind: 'Name', value: 'String'}}},
3536
},
37+
{
38+
kind: 'VariableDefinition',
39+
variable: {kind: 'Variable', name: {kind: 'Name', value: 'websocketUrl'}},
40+
type: {kind: 'NamedType', name: {kind: 'Name', value: 'String'}},
41+
},
3642
],
3743
selectionSet: {
3844
kind: 'SelectionSet',
@@ -51,6 +57,11 @@ export const DevSessionCreate = {
5157
name: {kind: 'Name', value: 'assetsUrl'},
5258
value: {kind: 'Variable', name: {kind: 'Name', value: 'assetsUrl'}},
5359
},
60+
{
61+
kind: 'Argument',
62+
name: {kind: 'Name', value: 'websocketUrl'},
63+
value: {kind: 'Variable', name: {kind: 'Name', value: 'websocketUrl'}},
64+
},
5465
],
5566
selectionSet: {
5667
kind: 'SelectionSet',

packages/app/src/cli/api/graphql/app-dev/queries/dev-session-create.graphql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
mutation DevSessionCreate($appId: String!, $assetsUrl: String!) {
2-
devSessionCreate(appId: $appId, assetsUrl: $assetsUrl) {
1+
mutation DevSessionCreate($appId: String!, $assetsUrl: String!, $websocketUrl: String) {
2+
devSessionCreate(appId: $appId, assetsUrl: $assetsUrl, websocketUrl: $websocketUrl) {
33
userErrors {
44
message
55
on

packages/app/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
/* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any */
2-
import {JsonMapType} from '@shopify/cli-kit/node/toml'
3-
42
export type Maybe<T> = T | null
53
export type InputMaybe<T> = Maybe<T>
64
export type Exact<T extends {[key: string]: unknown}> = {[K in keyof T]: T[K]}
@@ -42,8 +40,6 @@ export type Scalars = {
4240
ISO8601Date: {input: any; output: any}
4341
/** An ISO 8601-encoded datetime */
4442
ISO8601DateTime: {input: any; output: any}
45-
/** Represents untyped JSON */
46-
JSON: {input: JsonMapType | string; output: JsonMapType}
4743
/** The ID for a LegalEntity. */
4844
LegalEntityID: {input: any; output: any}
4945
/** The ID for a OrganizationDomain. */

packages/app/src/cli/services/dev/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ export async function devUIExtensions(options: ExtensionDevOptions): Promise<voi
183183
})
184184
}
185185

186-
function getWebSocketUrl(url: ExtensionDevOptions['url']) {
186+
export function getWebSocketUrl(url: string) {
187187
const websocketURL = new URL('/extensions', url)
188188
websocketURL.protocol = 'wss:'
189189

packages/app/src/cli/services/dev/extension/server/middlewares.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {getExtensionPointRedirectUrl, getExtensionUrl, getRedirectUrl, sendError
22
import {GetExtensionsMiddlewareOptions} from './models.js'
33
import {getUIExtensionPayload} from '../payload.js'
44
import {getHTML} from '../templates.js'
5+
import {getWebSocketUrl} from '../../extension.js'
56
import {fileExists, isDirectory, readFile, findPathUp} from '@shopify/cli-kit/node/fs'
67
import {IncomingMessage, ServerResponse, sendRedirect, send} from 'h3'
78
import {joinPath, extname, moduleDirectory} from '@shopify/cli-kit/node/path'
@@ -199,7 +200,7 @@ export function getExtensionPayloadMiddleware({devOptions, getExtensions}: GetEx
199200
url: new URL('/extensions', devOptions.url).toString(),
200201
},
201202
socket: {
202-
url: getWebsocketUrl(devOptions),
203+
url: getWebSocketUrl(devOptions.url),
203204
},
204205
devConsole: {
205206
url: new URL('/extensions/dev-console', devOptions.url).toString(),
@@ -245,10 +246,3 @@ export function getExtensionPointMiddleware({devOptions, getExtensions}: GetExte
245246
await sendRedirect(response.event, url, 307)
246247
}
247248
}
248-
249-
function getWebsocketUrl(devOptions: GetExtensionsMiddlewareOptions['devOptions']) {
250-
const socket = new URL('/extensions', devOptions.url)
251-
socket.protocol = 'wss:'
252-
253-
return socket.toString()
254-
}

packages/app/src/cli/services/dev/processes/dev-session/dev-session.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {AppEvent, AppEventWatcher, ExtensionEvent} from '../../app-events/app-ev
55
import {compressBundle, getUploadURL, uploadToGCS, writeManifestToBundle} from '../../../bundle.js'
66
import {DevSessionCreateOptions, DevSessionUpdateOptions} from '../../../../utilities/developer-platform-client.js'
77
import {AppManifest} from '../../../../models/app/app.js'
8+
import {getWebSocketUrl} from '../../extension.js'
89
import {endHRTimeInMs, startHRTime} from '@shopify/cli-kit/node/hrtime'
910
import {ClientError} from 'graphql-request'
1011
import {JsonMapType} from '@shopify/cli-kit/node/toml'
@@ -282,6 +283,7 @@ export class DevSession {
282283
assetsUrl: signedURL,
283284
manifest,
284285
inheritedModuleUids,
286+
websocketUrl: getWebSocketUrl(this.options.url),
285287
}
286288
if (this.statusManager.status.isReady) {
287289
return this.devSessionUpdateWithRetry(payload)

packages/app/src/cli/utilities/developer-platform-client.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ interface DevSessionSharedOptions {
164164
export interface DevSessionCreateOptions extends DevSessionSharedOptions {
165165
assetsUrl?: string
166166
manifest: AppManifest
167+
websocketUrl?: string
167168
}
168169

169170
export interface DevSessionUpdateOptions extends DevSessionSharedOptions {

packages/app/src/cli/utilities/developer-platform-client/app-management-client.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,12 +1013,17 @@ export class AppManagementClient implements DeveloperPlatformClient {
10131013
return appDeepLink({id, organizationId})
10141014
}
10151015

1016-
async devSessionCreate({appId, assetsUrl, shopFqdn}: DevSessionCreateOptions): Promise<DevSessionCreateMutation> {
1016+
async devSessionCreate({
1017+
appId,
1018+
assetsUrl,
1019+
shopFqdn,
1020+
websocketUrl,
1021+
}: DevSessionCreateOptions): Promise<DevSessionCreateMutation> {
10171022
const appIdNumber = String(numberFromGid(appId))
10181023
return this.appDevRequest({
10191024
query: DevSessionCreate,
10201025
shopFqdn,
1021-
variables: {appId: appIdNumber, assetsUrl: assetsUrl ?? ''},
1026+
variables: {appId: appIdNumber, assetsUrl: assetsUrl ?? '', websocketUrl},
10221027
requestOptions: {requestMode: 'slow-request'},
10231028
})
10241029
}

0 commit comments

Comments
 (0)