Skip to content

Commit 084d120

Browse files
jeffcharlesisaacroldan
authored andcommitted
Use Shopify Functions Javy plugin instead of default Javy plugin
1 parent 43059d7 commit 084d120

File tree

13 files changed

+115
-6
lines changed

13 files changed

+115
-6
lines changed

.changeset/good-plums-fail.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@shopify/theme': patch
3+
'@shopify/app': patch
4+
---
5+
6+
Bump Shopify/theme-tools packages

.changeset/nervous-terms-invite.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@shopify/theme': minor
3+
'@shopify/cli': minor
4+
---
5+
6+
Developers can now use the `shopify theme metafields pull` command to download metafields, which can then be used for more refined code completion.

.changeset/quick-eggs-end.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/cli-kit': patch
3+
---
4+
5+
Introduce method to fetch metafield definitions by ownerType from Admin API

.changeset/seven-seahorses-bake.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/app': minor
3+
---
4+
5+
Use Shopify Functions Javy plugin instead of default Javy plugin for building JS Shopify Functions
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/cli': patch
3+
---
4+
5+
Bump cli-hydrogen package to 9.0.3

.changeset/silver-mice-thank.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@shopify/cli-kit': patch
3+
'@shopify/app': patch
4+
---
5+
6+
Remove all template lockfiles, except the one used to install dependencies

packages/app/src/cli/constants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ export const configurationFileNames = {
1111
web: 'shopify.web.toml',
1212
appEnvironments: 'shopify.environments.toml',
1313
lockFile: '.shopify.lock',
14+
hiddenConfig: 'project.json',
15+
hiddenFolder: '.shopify',
1416
} as const
1517

1618
export const dotEnvFileNames = {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ export function testApp(app: Partial<AppInterface> = {}, schemaType: 'current' |
119119
specifications: app.specifications ?? [],
120120
configSchema: (app.configSchema ?? AppConfigurationSchema) as any,
121121
remoteFlags: app.remoteFlags ?? [],
122+
hiddenConfig: app.hiddenConfig ?? {},
122123
})
123124

124125
if (app.updateDependencies) {

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

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ import {UIExtensionSchema} from '../extensions/specifications/ui_extension.js'
1111
import {Flag} from '../../utilities/developer-platform-client.js'
1212
import {AppAccessSpecIdentifier} from '../extensions/specifications/app_config_app_access.js'
1313
import {WebhookSubscriptionSchema} from '../extensions/specifications/app_config_webhook_schemas/webhook_subscription_schema.js'
14+
import {configurationFileNames} from '../../constants.js'
1415
import {ZodObjectOf, zod} from '@shopify/cli-kit/node/schema'
1516
import {DotEnvFile} from '@shopify/cli-kit/node/dot-env'
1617
import {getDependencies, PackageManager, readAndParsePackageJson} from '@shopify/cli-kit/node/node-package-manager'
17-
import {fileRealPath, findPathUp} from '@shopify/cli-kit/node/fs'
18+
import {fileRealPath, findPathUp, writeFile} from '@shopify/cli-kit/node/fs'
1819
import {joinPath} from '@shopify/cli-kit/node/path'
1920
import {AbortError} from '@shopify/cli-kit/node/error'
2021
import {normalizeDelimitedString} from '@shopify/cli-kit/common/string'
@@ -80,6 +81,15 @@ export const AppSchema = zod.object({
8081
web_directories: zod.array(zod.string()).optional(),
8182
})
8283

84+
/**
85+
* Hidden configuration for an app. Stored inside ./shopify/project.json
86+
* This is a set of values that are needed by the CLI that are not part of the app configuration.
87+
* These are not meant to be git tracked and the user doesn't need to know about their existence.
88+
*/
89+
export interface AppHiddenConfig {
90+
dev_store_url?: string
91+
}
92+
8393
/**
8494
* Utility schema that matches freshly minted or normal, linked, apps.
8595
*/
@@ -179,6 +189,10 @@ export function usesLegacyScopesBehavior(config: AppConfiguration) {
179189
return false
180190
}
181191

192+
export function appHiddenConfigPath(appDirectory: string) {
193+
return joinPath(appDirectory, configurationFileNames.hiddenFolder, configurationFileNames.hiddenConfig)
194+
}
195+
182196
/**
183197
* Get the field names from the configuration that aren't found in the basic built-in app configuration schema.
184198
*/
@@ -256,6 +270,7 @@ export interface AppInterface<
256270
realExtensions: ExtensionInstance[]
257271
draftableExtensions: ExtensionInstance[]
258272
errors?: AppErrors
273+
hiddenConfig: AppHiddenConfig
259274
includeConfigOnDeploy: boolean | undefined
260275
updateDependencies: () => Promise<void>
261276
extensionsForType: (spec: {identifier: string; externalIdentifier: string}) => ExtensionInstance[]
@@ -274,6 +289,7 @@ export interface AppInterface<
274289
creationDefaultOptions(): AppCreationDefaultOptions
275290
manifest: () => Promise<JsonMapType>
276291
removeExtension: (extensionUid: string) => void
292+
updateHiddenConfig: (values: Partial<AppHiddenConfig>) => Promise<void>
277293
}
278294

279295
type AppConstructor<
@@ -290,6 +306,7 @@ type AppConstructor<
290306
errors?: AppErrors
291307
specifications: ExtensionSpecification[]
292308
remoteFlags?: Flag[]
309+
hiddenConfig: AppHiddenConfig
293310
}
294311

295312
export class App<
@@ -311,6 +328,7 @@ export class App<
311328
configSchema: ZodObjectOf<Omit<TConfig, 'path'>>
312329
remoteFlags: Flag[]
313330
realExtensions: ExtensionInstance[]
331+
hiddenConfig: AppHiddenConfig
314332

315333
constructor({
316334
name,
@@ -326,6 +344,7 @@ export class App<
326344
specifications,
327345
configSchema,
328346
remoteFlags,
347+
hiddenConfig,
329348
}: AppConstructor<TConfig, TModuleSpec>) {
330349
this.name = name
331350
this.directory = directory
@@ -340,6 +359,7 @@ export class App<
340359
this.specifications = specifications
341360
this.configSchema = configSchema ?? AppSchema
342361
this.remoteFlags = remoteFlags ?? []
362+
this.hiddenConfig = hiddenConfig
343363
}
344364

345365
get allExtensions() {
@@ -388,6 +408,11 @@ export class App<
388408
this.nodeDependencies = nodeDependencies
389409
}
390410

411+
async updateHiddenConfig(values: Partial<AppHiddenConfig>) {
412+
this.hiddenConfig = {...this.hiddenConfig, ...values}
413+
await writeFile(appHiddenConfigPath(this.directory), JSON.stringify(this.hiddenConfig, null, 2))
414+
}
415+
391416
async preDeployValidation() {
392417
const functionExtensionsWithUiHandle = this.allExtensions.filter(
393418
(ext) => ext.isFunctionExtension && (ext.configuration as unknown as FunctionConfigType).ui?.handle,

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import {
1717
SchemaForConfig,
1818
AppCreationDefaultOptions,
1919
AppLinkedInterface,
20+
appHiddenConfigPath,
21+
AppHiddenConfig,
2022
} from './app.js'
2123
import {showMultipleCLIWarningIfNeeded} from './validation/multi-cli-warning.js'
2224
import {configurationFileNames, dotEnvFileNames} from '../../constants.js'
@@ -33,7 +35,7 @@ import {WebhooksSchema} from '../extensions/specifications/app_config_webhook_sc
3335
import {loadLocalExtensionsSpecifications} from '../extensions/load-specifications.js'
3436
import {UIExtensionSchemaType} from '../extensions/specifications/ui_extension.js'
3537
import {deepStrict, zod} from '@shopify/cli-kit/node/schema'
36-
import {fileExists, readFile, glob, findPathUp, fileExistsSync} from '@shopify/cli-kit/node/fs'
38+
import {fileExists, readFile, glob, findPathUp, fileExistsSync, writeFile, mkdir} from '@shopify/cli-kit/node/fs'
3739
import {readAndParseDotEnv, DotEnvFile} from '@shopify/cli-kit/node/dot-env'
3840
import {
3941
getDependencies,
@@ -342,6 +344,8 @@ class AppLoader<TConfig extends AppConfiguration, TModuleSpec extends ExtensionS
342344
const packageManager = this.previousApp?.packageManager ?? (await getPackageManager(directory))
343345
const usesWorkspaces = this.previousApp?.usesWorkspaces ?? (await appUsesWorkspaces(directory))
344346

347+
const hiddenConfig = await loadHiddenConfig(directory)
348+
345349
if (!this.previousApp) {
346350
await showMultipleCLIWarningIfNeeded(directory, nodeDependencies)
347351
}
@@ -364,6 +368,7 @@ class AppLoader<TConfig extends AppConfiguration, TModuleSpec extends ExtensionS
364368
specifications: this.specifications,
365369
configSchema,
366370
remoteFlags: this.remoteFlags,
371+
hiddenConfig,
367372
})
368373

369374
// Show CLI notifications that are targetted for when your app has specific extension types
@@ -1063,6 +1068,18 @@ async function getAllLinkedConfigClientIds(
10631068
return Object.fromEntries(entries)
10641069
}
10651070

1071+
async function loadHiddenConfig(appDirectory: string): Promise<AppHiddenConfig> {
1072+
const hiddenConfigPath = appHiddenConfigPath(appDirectory)
1073+
if (fileExistsSync(hiddenConfigPath)) {
1074+
return JSON.parse(await readFile(hiddenConfigPath, {encoding: 'utf8'}))
1075+
} else {
1076+
// If the hidden config file doesn't exist, create an empty one.
1077+
await mkdir(dirname(hiddenConfigPath))
1078+
await writeFile(hiddenConfigPath, '{}')
1079+
return {}
1080+
}
1081+
}
1082+
10661083
export async function loadAppName(appDirectory: string): Promise<string> {
10671084
const packageJSONPath = joinPath(appDirectory, 'package.json')
10681085
return (await getPackageName(packageJSONPath)) ?? basename(appDirectory)

0 commit comments

Comments
 (0)