@shopify/shop-minis-cli 0.0.120 → 0.0.122
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/commands/codemod/releases/index.js +2 -0
- package/build/commands/codemod/releases/index.js.map +1 -1
- package/build/commands/codemod/releases/v0-0-121.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-121.js +74 -0
- package/build/commands/codemod/releases/v0-0-121.js.map +1 -0
- package/package.json +1 -1
- package/shipit.snapshot.yml +9 -0
- package/templates/__template_blank/src/App.tsx +12 -1
- package/templates/__template_shoppable_posts/src/App.tsx +17 -32
- package/templates/__template_shoppable_videos/src/App.tsx +15 -28
|
@@ -30,6 +30,7 @@ import v0x0x105Upgrade from './v0-0-105.js';
|
|
|
30
30
|
import v0x0x106Upgrade from './v0-0-106.js';
|
|
31
31
|
import v0x0x114Upgrade from './v0-0-114.js';
|
|
32
32
|
import v0x0x115Upgrade from './v0-0-115.js';
|
|
33
|
+
import v0x0x121Upgrade from './v0-0-121.js';
|
|
33
34
|
const upgrades = [
|
|
34
35
|
v0x0x42Upgrade,
|
|
35
36
|
v0x0x43Upgrade,
|
|
@@ -60,6 +61,7 @@ const upgrades = [
|
|
|
60
61
|
v0x0x106Upgrade,
|
|
61
62
|
v0x0x114Upgrade,
|
|
62
63
|
v0x0x115Upgrade,
|
|
64
|
+
v0x0x121Upgrade,
|
|
63
65
|
];
|
|
64
66
|
// the list of upgrades must be sorted by version. just making sure of it
|
|
65
67
|
upgrades.sort(({ version: upgradeVersion1 }, { version: upgradeVersion2 }) => semverGreaterThan(upgradeVersion1, upgradeVersion2) ? 1 : -1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/codemod/releases/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/codemod/releases/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { SemVer } from 'semver';
|
|
4
|
+
/**
|
|
5
|
+
* Diff: https://github.com/Shopify/shop-minis-cli/compare/v0.0.120...v0.0.121
|
|
6
|
+
*/
|
|
7
|
+
async function applyUpgrade() {
|
|
8
|
+
if (process.env.INTERNAL_CODEMODS) {
|
|
9
|
+
const existingAppTsxPath = path.join(process.cwd(), 'src', 'App.tsx');
|
|
10
|
+
let existingAppTsxContent = null;
|
|
11
|
+
try {
|
|
12
|
+
existingAppTsxContent = fs.readFileSync(existingAppTsxPath, {
|
|
13
|
+
encoding: 'utf-8',
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
// If the App.tsx file doesn't exist or is unreadable for some reason, we don't need to do anything
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Only apply the upgrade if the App.tsx file is still the old blank template
|
|
21
|
+
if (existingAppTsxContent === oldBlankTemplateAppContent) {
|
|
22
|
+
fs.writeFileSync(existingAppTsxPath, newBlankTemplateAppContent, {
|
|
23
|
+
encoding: 'utf-8',
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const oldBlankTemplateAppContent = `import {StatusBar} from 'react-native'
|
|
29
|
+
import {Box, Text, SafeAreaView} from '@shopify/shop-minis-platform-sdk'
|
|
30
|
+
|
|
31
|
+
export function App() {
|
|
32
|
+
return (
|
|
33
|
+
<Box flex={1} backgroundColor="backgrounds-regular">
|
|
34
|
+
<StatusBar barStyle="dark-content" />
|
|
35
|
+
<SafeAreaView style={{flex: 1, justifyContent: 'center'}}>
|
|
36
|
+
<Text textAlign="center">Fill in the blank</Text>
|
|
37
|
+
</SafeAreaView>
|
|
38
|
+
</Box>
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
const newBlankTemplateAppContent = `import {StatusBar} from 'react-native'
|
|
43
|
+
import {
|
|
44
|
+
Box,
|
|
45
|
+
Text,
|
|
46
|
+
SafeAreaView,
|
|
47
|
+
useMinisParams,
|
|
48
|
+
} from '@shopify/shop-minis-platform-sdk'
|
|
49
|
+
|
|
50
|
+
export function App() {
|
|
51
|
+
const {extensionData} = useMinisParams()
|
|
52
|
+
return (
|
|
53
|
+
<Box flex={1} backgroundColor="backgrounds-regular">
|
|
54
|
+
<StatusBar barStyle="dark-content" />
|
|
55
|
+
<SafeAreaView style={{flex: 1, justifyContent: 'center'}}>
|
|
56
|
+
<Text textAlign="center">Fill in the blank</Text>
|
|
57
|
+
{extensionData ? (
|
|
58
|
+
<Text textAlign="center">
|
|
59
|
+
Data from the extension: {JSON.stringify(extensionData)}
|
|
60
|
+
</Text>
|
|
61
|
+
) : null}
|
|
62
|
+
</SafeAreaView>
|
|
63
|
+
</Box>
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
`;
|
|
67
|
+
const releaseNotes = ['Add extensionData usage to the blank template'];
|
|
68
|
+
const exports = {
|
|
69
|
+
releaseNotes,
|
|
70
|
+
applyUpgrade,
|
|
71
|
+
version: new SemVer('0.0.121'),
|
|
72
|
+
};
|
|
73
|
+
export default exports;
|
|
74
|
+
//# sourceMappingURL=v0-0-121.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v0-0-121.js","sourceRoot":"","sources":["../../../../src/commands/codemod/releases/v0-0-121.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAA;AAI7B;;GAEG;AACH,KAAK,UAAU,YAAY;IACzB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;QACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QACrE,IAAI,qBAAqB,GAAG,IAAI,CAAA;QAEhC,IAAI;YACF,qBAAqB,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE;gBAC1D,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAA;SACH;QAAC,OAAO,KAAK,EAAE;YACd,mGAAmG;YACnG,OAAM;SACP;QAED,6EAA6E;QAC7E,IAAI,qBAAqB,KAAK,0BAA0B,EAAE;YACxD,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,0BAA0B,EAAE;gBAC/D,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAA;SACH;KACF;AACH,CAAC;AAED,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;CAalC,CAAA;AAED,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBlC,CAAA;AAED,MAAM,YAAY,GAAa,CAAC,+CAA+C,CAAC,CAAA;AAEhF,MAAM,OAAO,GAA8B;IACzC,YAAY;IACZ,YAAY;IACZ,OAAO,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC;CAC/B,CAAA;AAED,eAAe,OAAO,CAAA"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
dependencies:
|
|
2
|
+
override:
|
|
3
|
+
- yarn install --no-progress --ignore-engines --frozen-lockfile
|
|
4
|
+
|
|
5
|
+
deploy:
|
|
6
|
+
override:
|
|
7
|
+
- yarn build
|
|
8
|
+
- generate-local-npmrc "@shopify:registry=https://registry.npmjs.org/"
|
|
9
|
+
- npm publish --tag snapshot --new-version 0.0.0-snapshot.$(date +%Y%m%d%H%M%S) --no-git-tag-version --access public --verbose
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
import {StatusBar} from 'react-native'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Box,
|
|
4
|
+
Text,
|
|
5
|
+
SafeAreaView,
|
|
6
|
+
useMinisParams,
|
|
7
|
+
} from '@shopify/shop-minis-platform-sdk'
|
|
3
8
|
|
|
4
9
|
export function App() {
|
|
10
|
+
const {extensionData} = useMinisParams()
|
|
5
11
|
return (
|
|
6
12
|
<Box flex={1} backgroundColor="backgrounds-regular">
|
|
7
13
|
<StatusBar barStyle="dark-content" />
|
|
8
14
|
<SafeAreaView style={{flex: 1, justifyContent: 'center'}}>
|
|
9
15
|
<Text textAlign="center">Fill in the blank</Text>
|
|
16
|
+
{extensionData ? (
|
|
17
|
+
<Text textAlign="center">
|
|
18
|
+
Data from the extension: {JSON.stringify(extensionData)}
|
|
19
|
+
</Text>
|
|
20
|
+
) : null}
|
|
10
21
|
</SafeAreaView>
|
|
11
22
|
</Box>
|
|
12
23
|
)
|
|
@@ -1,52 +1,37 @@
|
|
|
1
1
|
import {useMemo} from 'react'
|
|
2
2
|
import {StatusBar} from 'react-native'
|
|
3
3
|
import {
|
|
4
|
-
ImageCollectionV2EntryPointItem,
|
|
5
4
|
ShoppablePosts,
|
|
6
5
|
useMinisParams,
|
|
7
|
-
imageCollectionV2EntrypointFixture,
|
|
8
6
|
MINIS_SANDBOX_SHOP_GID,
|
|
9
7
|
SafeAreaView,
|
|
10
8
|
Box,
|
|
9
|
+
shoppablePostsFixture,
|
|
11
10
|
} from '@shopify/shop-minis-platform-sdk'
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
/**
|
|
13
|
+
* A stub type to get you started. Remove this in favor of the type of your extension input query data moving forward.
|
|
14
|
+
*/
|
|
15
|
+
interface MyExtensionDataType {
|
|
16
|
+
shopId: string
|
|
17
|
+
}
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
const shopGID = entryPointParams?.shopGID || MINIS_SANDBOX_SHOP_GID
|
|
19
|
+
export function App() {
|
|
20
|
+
const {extensionData} = useMinisParams<MyExtensionDataType>()
|
|
21
|
+
const shopId = extensionData?.shopId || MINIS_SANDBOX_SHOP_GID
|
|
20
22
|
|
|
21
23
|
const shoppablePosts = useMemo(() => {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return mapEntryPointCollectionItemsToShoppablePosts(collectionItems)
|
|
27
|
-
}, [entryPoint])
|
|
24
|
+
// Format your data in to the shape expected by `<ShoppablePosts />`
|
|
25
|
+
// return getShoppablePostsFromExtensionData(extensionData)
|
|
26
|
+
return shoppablePostsFixture
|
|
27
|
+
}, [])
|
|
28
28
|
|
|
29
29
|
return (
|
|
30
|
-
<Box backgroundColor="
|
|
31
|
-
<StatusBar barStyle="
|
|
30
|
+
<Box backgroundColor="foregrounds-contrasting-inverted" flex={1}>
|
|
31
|
+
<StatusBar barStyle="light-content" />
|
|
32
32
|
<SafeAreaView style={{flex: 1}}>
|
|
33
|
-
<ShoppablePosts initialItems={shoppablePosts} shopId={
|
|
33
|
+
<ShoppablePosts initialItems={shoppablePosts} shopId={shopId} />
|
|
34
34
|
</SafeAreaView>
|
|
35
35
|
</Box>
|
|
36
36
|
)
|
|
37
37
|
}
|
|
38
|
-
|
|
39
|
-
function mapEntryPointCollectionItemsToShoppablePosts(
|
|
40
|
-
collectionItems: ImageCollectionV2EntryPointItem[]
|
|
41
|
-
) {
|
|
42
|
-
return collectionItems.map(item => {
|
|
43
|
-
const {relatedProducts: _relatedProducts, ...rest} = item
|
|
44
|
-
return {
|
|
45
|
-
...rest,
|
|
46
|
-
image: {url: item.image.url},
|
|
47
|
-
relatedProductsIds: item.relatedProducts.map(
|
|
48
|
-
relatedProduct => relatedProduct.productId
|
|
49
|
-
),
|
|
50
|
-
}
|
|
51
|
-
})
|
|
52
|
-
}
|
|
@@ -2,46 +2,33 @@ import {useMemo} from 'react'
|
|
|
2
2
|
import {StatusBar} from 'react-native'
|
|
3
3
|
import {
|
|
4
4
|
ShoppableVideos,
|
|
5
|
-
VideoCollectionV2EntryPointItem,
|
|
6
5
|
useMinisParams,
|
|
7
|
-
videoCollectionV2EntrypointFixture,
|
|
8
6
|
MINIS_SANDBOX_SHOP_GID,
|
|
9
7
|
Box,
|
|
8
|
+
shoppableVideosFixture,
|
|
10
9
|
} from '@shopify/shop-minis-platform-sdk'
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
/**
|
|
12
|
+
* A stub type to get you started. Remove this in favor of the type of your extension input query data moving forward.
|
|
13
|
+
*/
|
|
14
|
+
interface MyExtensionDataType {
|
|
15
|
+
shopId: string
|
|
16
|
+
}
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
const shopGID = entryPointParams?.shopGID || MINIS_SANDBOX_SHOP_GID
|
|
18
|
+
export function App() {
|
|
19
|
+
const {extensionData} = useMinisParams<MyExtensionDataType>()
|
|
20
|
+
const shopId = extensionData?.shopId || MINIS_SANDBOX_SHOP_GID
|
|
19
21
|
|
|
20
22
|
const shoppableVideos = useMemo(() => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return mapEntryPointCollectionItemsToShoppableVideos(collectionItems)
|
|
26
|
-
}, [entryPoint])
|
|
23
|
+
// Format your data in to the shape expected by `<ShoppableVideos />`
|
|
24
|
+
// return getShoppableVideosFromExtensionData(extensionData)
|
|
25
|
+
return shoppableVideosFixture
|
|
26
|
+
}, [])
|
|
27
27
|
|
|
28
28
|
return (
|
|
29
29
|
<Box backgroundColor="foregrounds-contrasting-inverted" flex={1}>
|
|
30
30
|
<StatusBar barStyle="light-content" />
|
|
31
|
-
<ShoppableVideos items={shoppableVideos} shopId={
|
|
31
|
+
<ShoppableVideos items={shoppableVideos} shopId={shopId} />
|
|
32
32
|
</Box>
|
|
33
33
|
)
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
function mapEntryPointCollectionItemsToShoppableVideos(
|
|
37
|
-
collectionItems: VideoCollectionV2EntryPointItem[]
|
|
38
|
-
) {
|
|
39
|
-
return collectionItems.map(item => ({
|
|
40
|
-
externalId: item.externalId,
|
|
41
|
-
videoUrl: item.video.embeddedUrl,
|
|
42
|
-
fallbackImageUrl: item.fallbackImage.url,
|
|
43
|
-
relatedProductsIds: item.relatedProducts.map(
|
|
44
|
-
relatedProduct => relatedProduct.productId
|
|
45
|
-
),
|
|
46
|
-
}))
|
|
47
|
-
}
|