Skip to content

Commit 861716b

Browse files
committed
Added support for supported features in toml
1 parent d7d7840 commit 861716b

File tree

11 files changed

+53
-10
lines changed

11 files changed

+53
-10
lines changed

.changeset/short-cooks-wonder.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@shopify/cli-kit': minor
3+
'@shopify/app': minor
4+
---
5+
6+
Added CLI support for extensions.supported_features in toml

packages/app/src/cli/models/app/app.test-data.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,9 @@ export async function testUIExtension(
234234
sources: [],
235235
},
236236
},
237+
supported_features: {
238+
offline_mode: false,
239+
},
237240
extension_points: [
238241
{
239242
target: 'target1',

packages/app/src/cli/models/app/loader.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1483,6 +1483,9 @@ redirect_urls = [ "https://example.com/api/auth" ]
14831483
[extensions.capabilities.iframe]
14841484
sources = ["https://my-iframe.com"]
14851485
1486+
[extensions.supported_features]
1487+
offline_mode = true
1488+
14861489
[extensions.settings]
14871490
[[extensions.settings.fields]]
14881491
key = "field_key"
@@ -1560,6 +1563,9 @@ redirect_urls = [ "https://example.com/api/auth" ]
15601563
sources: ['https://my-iframe.com'],
15611564
},
15621565
},
1566+
supported_features: {
1567+
offline_mode: true,
1568+
},
15631569
settings: {
15641570
fields: [
15651571
{

packages/app/src/cli/models/extensions/schemas.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ const CapabilitiesSchema = zod.object({
2828
iframe: IframeCapabilitySchema.optional(),
2929
})
3030

31+
const SupportedFeaturesSchema = zod.object({
32+
offline_mode: zod.boolean().optional(),
33+
})
34+
3135
export const ExtensionsArraySchema = zod.object({
3236
type: zod.string().optional(),
3337
extensions: zod.array(zod.any()).optional(),
@@ -108,6 +112,7 @@ export const BaseSchema = zod.object({
108112
api_version: ApiVersionSchema.optional(),
109113
extension_points: zod.any().optional(),
110114
capabilities: CapabilitiesSchema.optional(),
115+
supported_features: SupportedFeaturesSchema.optional(),
111116
settings: SettingsSchema.optional(),
112117
})
113118

packages/app/src/cli/models/extensions/specifications/checkout_ui_extension.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const checkoutSpec = createExtensionSpecification({
2626
return {
2727
extension_points: config.extension_points,
2828
capabilities: config.capabilities,
29+
supported_features: config.supported_features,
2930
metafields: config.metafields ?? [],
3031
name: config.name,
3132
settings: config.settings,

packages/app/src/cli/models/extensions/specifications/ui_extension.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,7 @@ Please check the configuration in ${joinPath(tmpDir, 'shopify.extension.toml')}`
978978
...uiExtension.configuration.capabilities.iframe,
979979
},
980980
},
981+
supported_features: undefined,
981982
name: uiExtension.configuration.name,
982983
description: uiExtension.configuration.description,
983984
api_version: uiExtension.configuration.api_version,

packages/app/src/cli/models/extensions/specifications/ui_extension.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ const uiExtensionSpec = createExtensionSpecification({
125125
api_version: config.api_version,
126126
extension_points: transformedExtensionPoints,
127127
capabilities: config.capabilities,
128+
supported_features: config.supported_features,
128129
name: config.name,
129130
description: config.description,
130131
settings: config.settings,

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ describe('getUIExtensionPayload', () => {
4040
sources: ['https://my-iframe.com'],
4141
},
4242
},
43+
supported_features: {
44+
offline_mode: true,
45+
},
4346
extension_points: ['CUSTOM_EXTENSION_POINT'],
4447
},
4548
devUUID: 'devUUID',
@@ -84,6 +87,9 @@ describe('getUIExtensionPayload', () => {
8487
url: 'http://tunnel-url.com/extensions/devUUID/assets/test-ui-extension.js',
8588
},
8689
},
90+
supportedFeatures: {
91+
offlineMode: true,
92+
},
8793
capabilities: {
8894
blockProgress: false,
8995
networkAccess: true,
@@ -164,6 +170,9 @@ describe('getUIExtensionPayload', () => {
164170
sources: ['https://my-iframe.com'],
165171
},
166172
},
173+
supported_features: {
174+
offline_mode: true,
175+
},
167176
extension_points: [
168177
{
169178
target: 'CUSTOM_EXTENSION_POINT',
@@ -213,6 +222,9 @@ describe('getUIExtensionPayload', () => {
213222
url: 'http://tunnel-url.com/extensions/devUUID/assets/test-ui-extension.js',
214223
},
215224
},
225+
supportedFeatures: {
226+
offlineMode: true,
227+
},
216228
capabilities: {
217229
blockProgress: false,
218230
networkAccess: true,
@@ -299,6 +311,9 @@ describe('getUIExtensionPayload', () => {
299311
sources: ['https://my-iframe.com'],
300312
},
301313
},
314+
supported_features: {
315+
offline_mode: true,
316+
},
302317
extension_points: [
303318
{
304319
target: 'CUSTOM_EXTENSION_POINT',
@@ -347,6 +362,9 @@ describe('getUIExtensionPayload', () => {
347362
url: 'http://tunnel-url.com/extensions/devUUID/assets/test-post-purchase-extension.js',
348363
},
349364
},
365+
supportedFeatures: {
366+
offlineMode: true,
367+
},
350368
capabilities: {
351369
blockProgress: false,
352370
networkAccess: true,
@@ -406,6 +424,9 @@ describe('getUIExtensionPayload', () => {
406424
development: {
407425
hidden: false,
408426
},
427+
supportedFeatures: {
428+
offlineMode: false,
429+
},
409430
capabilities: {
410431
blockProgress: false,
411432
networkAccess: false,

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ export async function getUIExtensionPayload(
4444
lastUpdated: (await fileLastUpdatedTimestamp(extensionOutputPath)) ?? 0,
4545
},
4646
},
47+
supportedFeatures: {
48+
offlineMode: extension.configuration.supported_features?.offline_mode ?? false,
49+
},
4750
capabilities: {
4851
blockProgress: extension.configuration.capabilities?.block_progress ?? false,
4952
networkAccess: extension.configuration.capabilities?.network_access ?? false,

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,15 @@ export interface DevNewExtensionPointSchema extends NewExtensionPointSchemaType
4545
}
4646
}
4747

48+
interface SupportedFeatures {
49+
offlineMode: boolean
50+
}
51+
4852
export interface UIExtensionPayload {
4953
assets: {
5054
main: Asset
5155
}
56+
supportedFeatures?: SupportedFeatures
5257
capabilities?: Capabilities
5358
development: {
5459
resource: {

0 commit comments

Comments
 (0)