@shopify/shop-minis-cli 0.0.38 β†’ 0.0.39

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.
Files changed (161) hide show
  1. package/.eslintrc.cjs +84 -0
  2. package/.vscode/extensions.json +3 -0
  3. package/.vscode/settings.json +8 -0
  4. package/.vscode/shop-minis-cli.code-workspace +8 -0
  5. package/build/commands/cancel-submission/index.d.ts +2 -0
  6. package/build/commands/cancel-submission/index.js +22 -0
  7. package/build/commands/cancel-submission/index.js.map +1 -0
  8. package/build/commands/cancel-submission/types.d.ts +3 -0
  9. package/build/commands/cancel-submission/types.js +2 -0
  10. package/build/commands/cancel-submission/types.js.map +1 -0
  11. package/build/commands/check-submission/index.d.ts +2 -0
  12. package/build/commands/check-submission/index.js +22 -0
  13. package/build/commands/check-submission/index.js.map +1 -0
  14. package/build/commands/check-submission/types.d.ts +3 -0
  15. package/build/commands/check-submission/types.js +2 -0
  16. package/build/commands/check-submission/types.js.map +1 -0
  17. package/build/commands/config.d.ts +10 -0
  18. package/build/commands/config.js +34 -0
  19. package/build/commands/config.js.map +1 -0
  20. package/build/commands/create-mini/index.js +38 -40
  21. package/build/commands/create-mini/index.js.map +1 -1
  22. package/build/commands/create-mini/utils/template-app.js +20 -25
  23. package/build/commands/create-mini/utils/template-app.js.map +1 -1
  24. package/build/commands/dev/index.js +13 -20
  25. package/build/commands/dev/index.js.map +1 -1
  26. package/build/commands/dev/utils/android.js +34 -48
  27. package/build/commands/dev/utils/android.js.map +1 -1
  28. package/build/commands/dev/utils/binaries.d.ts +1 -22
  29. package/build/commands/dev/utils/binaries.js +19 -98
  30. package/build/commands/dev/utils/binaries.js.map +1 -1
  31. package/build/commands/dev/utils/deeplink.d.ts +1 -1
  32. package/build/commands/dev/utils/deeplink.js +2 -7
  33. package/build/commands/dev/utils/deeplink.js.map +1 -1
  34. package/build/commands/dev/utils/interactive-terminal.d.ts +1 -1
  35. package/build/commands/dev/utils/interactive-terminal.js +46 -52
  36. package/build/commands/dev/utils/interactive-terminal.js.map +1 -1
  37. package/build/commands/dev/utils/metro/metro-config.js +19 -20
  38. package/build/commands/dev/utils/metro/metro-config.js.map +1 -1
  39. package/build/commands/dev/utils/metro/metro-reporter.d.ts +2 -3
  40. package/build/commands/dev/utils/metro/metro-reporter.js +7 -12
  41. package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -1
  42. package/build/commands/dev/utils/metro/metro-server-middleware.js +5 -12
  43. package/build/commands/dev/utils/metro/metro-server-middleware.js.map +1 -1
  44. package/build/commands/dev/utils/metro/metro-server.d.ts +1 -1
  45. package/build/commands/dev/utils/metro/metro-server.js +6 -13
  46. package/build/commands/dev/utils/metro/metro-server.js.map +1 -1
  47. package/build/commands/dev/utils/network.d.ts +20 -0
  48. package/build/commands/dev/utils/network.js +62 -0
  49. package/build/commands/dev/utils/network.js.map +1 -0
  50. package/build/commands/dev/utils/qr-code.js +3 -10
  51. package/build/commands/dev/utils/qr-code.js.map +1 -1
  52. package/build/commands/dev/utils/simulator.js +25 -35
  53. package/build/commands/dev/utils/simulator.js.map +1 -1
  54. package/build/commands/dev/utils/types.d.ts +1 -0
  55. package/build/commands/dev/utils/types.js +2 -0
  56. package/build/commands/dev/utils/types.js.map +1 -0
  57. package/build/commands/dev/utils/with-retries.js +1 -5
  58. package/build/commands/dev/utils/with-retries.js.map +1 -1
  59. package/build/commands/generate-graphql-types/index.js +25 -26
  60. package/build/commands/generate-graphql-types/index.js.map +1 -1
  61. package/build/commands/schemas/contextual-image.schema.d.ts +22 -0
  62. package/build/commands/schemas/contextual-image.schema.js +23 -0
  63. package/build/commands/schemas/contextual-image.schema.js.map +1 -0
  64. package/build/commands/schemas/contextual-object.schema.d.ts +18 -0
  65. package/build/commands/schemas/contextual-object.schema.js +19 -0
  66. package/build/commands/schemas/contextual-object.schema.js.map +1 -0
  67. package/build/commands/schemas/manifest.schema.d.ts +181 -0
  68. package/build/commands/schemas/manifest.schema.js +230 -0
  69. package/build/commands/schemas/manifest.schema.js.map +1 -0
  70. package/build/commands/schemas/visibility.schema.d.ts +18 -0
  71. package/build/commands/schemas/visibility.schema.js +19 -0
  72. package/build/commands/schemas/visibility.schema.js.map +1 -0
  73. package/build/commands/submit/config.d.ts +9 -0
  74. package/build/commands/submit/config.js +18 -0
  75. package/build/commands/submit/config.js.map +1 -0
  76. package/build/commands/submit/errors.d.ts +19 -0
  77. package/build/commands/submit/errors.js +87 -0
  78. package/build/commands/submit/errors.js.map +1 -0
  79. package/build/commands/submit/gcs.d.ts +6 -0
  80. package/build/commands/submit/gcs.js +10 -0
  81. package/build/commands/submit/gcs.js.map +1 -0
  82. package/build/commands/submit/graphql.d.ts +73 -0
  83. package/build/commands/submit/graphql.js +100 -0
  84. package/build/commands/submit/graphql.js.map +1 -0
  85. package/build/commands/submit/index.d.ts +2 -0
  86. package/build/commands/submit/index.js +21 -0
  87. package/build/commands/submit/index.js.map +1 -0
  88. package/build/commands/submit/submit.d.ts +4 -0
  89. package/build/commands/submit/submit.js +171 -0
  90. package/build/commands/submit/submit.js.map +1 -0
  91. package/build/commands/submit/tasks.d.ts +39 -0
  92. package/build/commands/submit/tasks.js +167 -0
  93. package/build/commands/submit/tasks.js.map +1 -0
  94. package/build/commands/submit/types.d.ts +14 -0
  95. package/build/commands/submit/types.js +2 -0
  96. package/build/commands/submit/types.js.map +1 -0
  97. package/build/commands/submit/validation.d.ts +2 -0
  98. package/build/commands/submit/validation.js +14 -0
  99. package/build/commands/submit/validation.js.map +1 -0
  100. package/build/commands/types/autogenerated/shop-minis-admin-api/fragment-masking.d.ts +13 -0
  101. package/build/commands/types/autogenerated/shop-minis-admin-api/fragment-masking.js +7 -0
  102. package/build/commands/types/autogenerated/shop-minis-admin-api/fragment-masking.js.map +1 -0
  103. package/build/commands/types/autogenerated/shop-minis-admin-api/gql.d.ts +54 -0
  104. package/build/commands/types/autogenerated/shop-minis-admin-api/gql.js +21 -0
  105. package/build/commands/types/autogenerated/shop-minis-admin-api/gql.js.map +1 -0
  106. package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.d.ts +613 -0
  107. package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.js +427 -0
  108. package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -0
  109. package/build/commands/types/autogenerated/shop-minis-admin-api/index.d.ts +2 -0
  110. package/build/commands/types/autogenerated/shop-minis-admin-api/index.js +3 -0
  111. package/build/commands/types/autogenerated/shop-minis-admin-api/index.js.map +1 -0
  112. package/build/commands/types/helpers.d.ts +1 -0
  113. package/build/commands/types/helpers.js +2 -0
  114. package/build/commands/types/helpers.js.map +1 -0
  115. package/build/commands/utils/archive.d.ts +30 -0
  116. package/build/commands/utils/archive.js +38 -0
  117. package/build/commands/utils/archive.js.map +1 -0
  118. package/build/commands/utils/exec-async-child-process.d.ts +1 -1
  119. package/build/commands/utils/exec-async-child-process.js +6 -13
  120. package/build/commands/utils/exec-async-child-process.js.map +1 -1
  121. package/build/commands/utils/file.d.ts +1 -0
  122. package/build/commands/utils/file.js +7 -0
  123. package/build/commands/utils/file.js.map +1 -0
  124. package/build/commands/{check/utils/manifest.d.ts β†’ utils/minis-manifest.d.ts} +1 -0
  125. package/build/commands/utils/minis-manifest.js +42 -0
  126. package/build/commands/utils/minis-manifest.js.map +1 -0
  127. package/build/commands/utils/wrap-with-loading-indicator.js +3 -10
  128. package/build/commands/utils/wrap-with-loading-indicator.js.map +1 -1
  129. package/build/dev-panel/middleware.js +5 -10
  130. package/build/dev-panel/middleware.js.map +1 -1
  131. package/build/index.js +15 -13
  132. package/build/index.js.map +1 -1
  133. package/jest.config.ts +11 -0
  134. package/package.json +4 -7
  135. package/scripts/graphql-codegen.ts +23 -0
  136. package/templates/__template_common/.eslintrc.json +2 -119
  137. package/templates/__template_common/gitignore +1 -0
  138. package/templates/__template_common/package.json +8 -7
  139. package/templates/__template_common/src/manifest.json +1 -0
  140. package/templates/__template_hello_world/src/screens/BottomSheetScreen.tsx +6 -5
  141. package/templates/__template_hello_world/src/screens/QuizScreen.tsx +2 -2
  142. package/templates/__template_hello_world/src/screens/QuizSlideScreen.tsx +2 -2
  143. package/build/commands/check/index.d.ts +0 -6
  144. package/build/commands/check/index.js +0 -87
  145. package/build/commands/check/index.js.map +0 -1
  146. package/build/commands/check/utils/manifest.js +0 -26
  147. package/build/commands/check/utils/manifest.js.map +0 -1
  148. package/build/commands/check/utils/schemas/contextual-image.schema.json +0 -21
  149. package/build/commands/check/utils/schemas/contextual-object.schema.json +0 -17
  150. package/build/commands/check/utils/schemas/manifest.schema.json +0 -226
  151. package/build/commands/check/utils/schemas/visibility.schema.json +0 -17
  152. package/build/commands/check/utils/versions.d.ts +0 -1
  153. package/build/commands/check/utils/versions.js +0 -14
  154. package/build/commands/check/utils/versions.js.map +0 -1
  155. package/build/commands/dev/utils/binaries.test.d.ts +0 -1
  156. package/build/commands/dev/utils/binaries.test.js +0 -275
  157. package/build/commands/dev/utils/binaries.test.js.map +0 -1
  158. package/build/commands/dev/utils/minis-manifest.d.ts +0 -1
  159. package/build/commands/dev/utils/minis-manifest.js +0 -24
  160. package/build/commands/dev/utils/minis-manifest.js.map +0 -1
  161. package/templates/__template_hello_world/src/utils/getFlagEmoji.spec.tsx +0 -19
@@ -1,17 +0,0 @@
1
- {
2
- "$id": "/contextual-object.schema.json",
3
- "$schema": "http://json-schema.org/draft-07/schema",
4
- "type": "object",
5
- "title": "Contextual entry-point",
6
- "properties": {
7
- "namespace": {
8
- "type": "string"
9
- },
10
- "key": {
11
- "type": "string"
12
- },
13
- "default_value": {
14
- "type": "string"
15
- }
16
- }
17
- }
@@ -1,226 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema",
3
- "type": "object",
4
- "title": "Shop Mini Manifest",
5
- "additionalProperties": false,
6
- "properties": {
7
- "name": {
8
- "type": "string",
9
- "description": "The name of the Mini",
10
- "maxLength": 20
11
- },
12
- "handle": {
13
- "type": "string",
14
- "description": "A unique identifier for the Mini",
15
- "pattern": "^(?:@[a-z0-9-*~][a-z0-9-*._~]*/)?[a-z0-9-~][a-z0-9-._~]*$"
16
- },
17
- "description": {
18
- "type": "string",
19
- "description": "The description of the Mini",
20
- "maxLength": 100
21
- },
22
- "icon_url": {
23
- "type": "string",
24
- "title": "The icon of the Mini",
25
- "description": "An absolute path to the image (e.g. https://example.com/icon.png)"
26
- },
27
- "partner_name": {
28
- "type": "string",
29
- "description": "The name of the Shopify partner who built the Mini",
30
- "maxLength": 20
31
- },
32
- "contact_email": {
33
- "type": "string",
34
- "description": "An email address for receiving notifications.",
35
- "format": "email"
36
- },
37
- "shopify_app_ids": {
38
- "type": "array",
39
- "description": "The list of Shopify app IDs associated with the Mini",
40
- "items": {
41
- "type": "integer"
42
- }
43
- },
44
- "notification_topics": {
45
- "type": "array",
46
- "description": "Specifies the reason for communication and the scope for messages. An example of a topic could be live streaming related notifications related to a merchant",
47
- "items": {
48
- "type": "object",
49
- "required": ["handle", "description", "scope"],
50
- "properties": {
51
- "handle": {
52
- "type": "string",
53
- "description": "Text identifier of the topic"
54
- },
55
- "description": {
56
- "type": "string",
57
- "description": "Reason for the communication using the topic"
58
- },
59
- "scope": {
60
- "type": "string",
61
- "description": "The scope in which messages are processed for the topic. SHOP means each message will be processed in the scope of a specific merchant, PRODUCT means each message will be processed in the scope of a specific product",
62
- "enum": ["SHOP", "PRODUCT"]
63
- }
64
- }
65
- }
66
- },
67
- "notification_templates": {
68
- "type": "array",
69
- "description": "Specify the message which will be sent to subscribers when notification is triggered by the mutation",
70
- "items": {
71
- "type": "object",
72
- "required": [
73
- "handle",
74
- "topic_handle",
75
- "title",
76
- "body",
77
- "cooldown_minutes"
78
- ],
79
- "properties": {
80
- "handle": {
81
- "type": "string",
82
- "description": "Text identifier of the template"
83
- },
84
- "topic_handle": {
85
- "type": "string",
86
- "description": "Reference to a notification topic"
87
- },
88
- "title": {
89
- "type": "string",
90
- "description": "Template of notification title, supports interpolation using the Liquid template language"
91
- },
92
- "body": {
93
- "type": "string",
94
- "description": "Template of notification body, supports interpolation using the Liquid template language"
95
- },
96
- "cooldown_minutes": {
97
- "type": "number",
98
- "description": "How often the template allowes to send the exact same message to the same user, in minutes"
99
- }
100
- }
101
- }
102
- },
103
- "entry_points": {
104
- "type": "array",
105
- "description": "A list of entry points that the Mini supports",
106
- "items": {
107
- "type": "object",
108
- "properties": {
109
- "location": {
110
- "type": "string",
111
- "enum": ["PRODUCT_PAGE", "STORE_PAGE"]
112
- },
113
- "type": {
114
- "type": "string",
115
- "enum": ["CONTENT_CARD", "ACTION_BUTTON", "EVENT_CARD"]
116
- },
117
- "primary_text": {
118
- "$ref": "/contextual-object.schema.json"
119
- },
120
- "call_to_action_text": {
121
- "$ref": "/contextual-object.schema.json"
122
- },
123
- "images": {
124
- "$ref": "/contextual-image.schema.json"
125
- },
126
- "visibility": {
127
- "$ref": "/visibility.schema.json"
128
- },
129
- "visibility_rule": {
130
- "$ref": "/visibility.schema.json"
131
- },
132
- "pre_active_images": {
133
- "$ref": "/contextual-image.schema.json",
134
- "description": "The images list used to render entry point in PRE_ACTIVE state"
135
- },
136
- "post_active_images": {
137
- "$ref": "/contextual-image.schema.json",
138
- "description": "(Optional) The images list used to render entry point in POST_ACTIVE state"
139
- },
140
- "notification_topic": {
141
- "type": "string",
142
- "description": "The notification topic handle which Shop users could subscribe to, must match one from the notification_topics manifest section"
143
- },
144
- "event_status": {
145
- "type": "object",
146
- "description": "The status of related event, affects how the user can interact with entry point",
147
- "required": ["default_value"],
148
- "properties": {
149
- "namespace": {
150
- "type": "string"
151
- },
152
- "key": {
153
- "type": "string"
154
- },
155
- "default_value": {
156
- "type": "string",
157
- "enum": ["PRE_ACTIVE", "ACTIVE", "POST_ACTIVE"]
158
- }
159
- }
160
- }
161
- },
162
- "allOf": [
163
- {
164
- "if": {
165
- "properties": {
166
- "type": {
167
- "const": "CONTENT_CARD"
168
- }
169
- }
170
- },
171
- "then": {
172
- "required": ["location", "type", "primary_text", "images"]
173
- }
174
- },
175
- {
176
- "if": {
177
- "properties": {
178
- "type": {
179
- "const": "ACTION_BUTTON"
180
- }
181
- }
182
- },
183
- "then": {
184
- "required": ["location", "type", "call_to_action_text"]
185
- }
186
- },
187
- {
188
- "if": {
189
- "properties": {
190
- "type": {
191
- "const": "EVENT_CARD"
192
- }
193
- }
194
- },
195
- "then": {
196
- "required": [
197
- "location",
198
- "type",
199
- "primary_text",
200
- "images",
201
- "notification_topic",
202
- "pre_active_images"
203
- ]
204
- }
205
- }
206
- ]
207
- }
208
- },
209
- "ios_app_store_url": {
210
- "type": "string",
211
- "description": "The URL to the Mini's publisher's app on the iOS App Store"
212
- },
213
- "android_play_store_url": {
214
- "type": "string",
215
- "description": "The URL to the Mini's publisher's app on the Android Play Store"
216
- }
217
- },
218
- "required": [
219
- "name",
220
- "handle",
221
- "icon_url",
222
- "partner_name",
223
- "shopify_app_ids",
224
- "entry_points"
225
- ]
226
- }
@@ -1,17 +0,0 @@
1
- {
2
- "$id": "/visibility.schema.json",
3
- "$schema": "http://json-schema.org/draft-07/schema",
4
- "type": "object",
5
- "title": "Entry-point visibility schema",
6
- "properties": {
7
- "owner_type": {
8
- "type": "string"
9
- },
10
- "namespace": {
11
- "type": "string"
12
- },
13
- "key": {
14
- "type": "string"
15
- }
16
- }
17
- }
@@ -1 +0,0 @@
1
- export declare function getInstalledPackageVersion(packageName: string): string | null;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getInstalledPackageVersion = void 0;
4
- function getInstalledPackageVersion(packageName) {
5
- // eslint-disable-next-line @typescript-eslint/no-var-requires
6
- const packageJson = require(`${process.cwd()}/package.json`);
7
- const version = packageJson.dependencies[packageName];
8
- if (!version) {
9
- return null;
10
- }
11
- return version;
12
- }
13
- exports.getInstalledPackageVersion = getInstalledPackageVersion;
14
- //# sourceMappingURL=versions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../src/commands/check/utils/versions.ts"],"names":[],"mappings":";;;AAAA,SAAgB,0BAA0B,CAAC,WAAmB;IAC5D,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;IAC5D,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;IAErD,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAVD,gEAUC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,275 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const http_1 = __importDefault(require("http"));
7
- // @ts-expect-error
8
- const storage_1 = require("@google-cloud/storage");
9
- const fs_extra_1 = require("fs-extra");
10
- const prompts_1 = __importDefault(require("prompts"));
11
- const binaries_1 = require("./binaries");
12
- const mockedGetRemoteFiles = storage_1.getRemoteFiles;
13
- const mockedReaddir = fs_extra_1.readdir;
14
- const mockedCreateWriteStream = fs_extra_1.createWriteStream;
15
- const mockedPrompts = prompts_1.default;
16
- const mockedHttp = http_1.default;
17
- jest.mock('@google-cloud/storage', () => {
18
- const _mockedGetRemoteFiles = jest.fn();
19
- return {
20
- getRemoteFiles: _mockedGetRemoteFiles,
21
- Storage: class MockStorage {
22
- bucket() {
23
- return {
24
- getFiles: _mockedGetRemoteFiles,
25
- };
26
- }
27
- },
28
- };
29
- });
30
- jest.mock('fs-extra', () => ({
31
- ...jest.requireActual('fs-extra'),
32
- readdir: jest.fn(),
33
- createWriteStream: jest.fn(),
34
- }));
35
- jest.mock('prompts', () => jest.fn());
36
- jest.mock('http', () => ({ get: jest.fn() }));
37
- describe('binaries', () => {
38
- describe('#getBinaryFileExtensionForPlatform', () => {
39
- it('returns the file extension for android', () => {
40
- expect((0, binaries_1.getBinaryFileExtensionForPlatform)('android')).toBe('.apk');
41
- });
42
- it('returns the file extension for ios', () => {
43
- expect((0, binaries_1.getBinaryFileExtensionForPlatform)('ios')).toBe('.zip');
44
- });
45
- });
46
- describe('#versionToBinaryFileName', () => {
47
- it('converts version to android binary file name', () => {
48
- expect((0, binaries_1.versionToBinaryFileName)('1.2.3', 'android')).toBe('1-2-3.apk');
49
- });
50
- it('converts version to ios binary file name', () => {
51
- expect((0, binaries_1.versionToBinaryFileName)('3.2.1', 'ios')).toBe('3-2-1.zip');
52
- });
53
- it('handles versions with build numbers', () => {
54
- expect((0, binaries_1.versionToBinaryFileName)('1.1.1+5', 'ios')).toBe('1-1-1+5.zip');
55
- expect((0, binaries_1.versionToBinaryFileName)('0.0.1+23', 'android')).toBe('0-0-1+23.apk');
56
- });
57
- });
58
- describe('#binaryFileNameToVersion', () => {
59
- it('converts android binary file name to semver version', () => {
60
- expect((0, binaries_1.binaryFileNameToVersion)('2-76-0.apk')).toBe('2.76.0');
61
- });
62
- it('converts ios binary file name to semver version', () => {
63
- expect((0, binaries_1.binaryFileNameToVersion)('1-7-1.zip')).toBe('1.7.1');
64
- });
65
- it('handles build number in binary file name', () => {
66
- expect((0, binaries_1.binaryFileNameToVersion)('1-2-3+9.apk')).toBe('1.2.3+9');
67
- expect((0, binaries_1.binaryFileNameToVersion)('0-6-5+11.zip')).toBe('0.6.5+11');
68
- });
69
- });
70
- describe('#getLatestVersionFromFilesList', () => {
71
- it('gets the bigger version from a versions list', () => {
72
- expect((0, binaries_1.getLatestVersionFromFilesList)([
73
- '2-1-0.apk',
74
- '2-1-0.zip',
75
- '1-6-4.zip',
76
- '2-1-11.apk',
77
- '1-6-5.zip',
78
- '0-1-0.apk',
79
- '2-6-4.zip',
80
- '0-1-1.apk',
81
- '2-3-0.apk',
82
- '0-6-4.zip',
83
- ])).toBe('2.6.4');
84
- });
85
- it('handles versions with build number', () => {
86
- expect((0, binaries_1.getLatestVersionFromFilesList)([
87
- '2-1-0.apk',
88
- '0-6-4.zip',
89
- '0-6-4.zip',
90
- '2-1-0.zip',
91
- '2-1-0+2.zip',
92
- '2-1-0+4.apk',
93
- '2-0-0+3.apk',
94
- '2-0-0+7.zip',
95
- ])).toBe('2.1.0+4');
96
- });
97
- });
98
- describe('#getLatestRemoteVersion', () => {
99
- it('returns the biggest version from storage for android', async () => {
100
- mockedGetRemoteFiles.mockResolvedValue([
101
- [
102
- { name: '1-3-3.zip' },
103
- { name: '1-2-2.apk' },
104
- { name: '1-2-3.apk' },
105
- { name: '0-2-3.apk' },
106
- { name: '1-0-3.zip' },
107
- { name: '1-0-5.apk' },
108
- { name: '2-0-5.zip' },
109
- ],
110
- ]);
111
- expect(await (0, binaries_1.getLatestRemoteVersion)('android')).toBe('1.2.3');
112
- });
113
- it('returns the biggest version from storage for ios', async () => {
114
- mockedGetRemoteFiles.mockResolvedValue([
115
- [
116
- { name: '1-3-3.zip' },
117
- { name: '1-2-2.apk' },
118
- { name: '1-2-3.apk' },
119
- { name: '0-2-3.apk' },
120
- { name: '2-0-5.zip' },
121
- { name: '1-0-3.zip' },
122
- { name: '1-0-5.apk' },
123
- ],
124
- ]);
125
- expect(await (0, binaries_1.getLatestRemoteVersion)('ios')).toBe('2.0.5');
126
- });
127
- it('handles versions with build number', async () => {
128
- mockedGetRemoteFiles.mockResolvedValue([
129
- [
130
- { name: '1-3-3+11.zip' },
131
- { name: '1-2-2+4.apk' },
132
- { name: '1-2-2+3.apk' },
133
- { name: '0-2-3.apk' },
134
- { name: '2-0-5+5.zip' },
135
- { name: '2-0-5+2.zip' },
136
- { name: '2-0-4+2.zip' },
137
- { name: '1-0-3.zip' },
138
- { name: '1-0-5.apk' },
139
- ],
140
- ]);
141
- expect(await (0, binaries_1.getLatestRemoteVersion)('ios')).toBe('2.0.5+5');
142
- expect(await (0, binaries_1.getLatestRemoteVersion)('android')).toBe('1.2.2+4');
143
- });
144
- });
145
- describe('#isVersionAvailableLocally', () => {
146
- it('returns true when a version is available in the file system', async () => {
147
- mockedReaddir.mockResolvedValue([
148
- '1-2-3.apk',
149
- '1-2-3.zip',
150
- '2-3-4+5.zip',
151
- '2-5-4.apk',
152
- '2-2-4+1.apk',
153
- ]);
154
- expect(await (0, binaries_1.isVersionAvailableLocally)('android', '1.2.3')).toBe(true);
155
- expect(await (0, binaries_1.isVersionAvailableLocally)('ios', '1.2.3')).toBe(true);
156
- expect(await (0, binaries_1.isVersionAvailableLocally)('ios', '2.3.4+5')).toBe(true);
157
- expect(await (0, binaries_1.isVersionAvailableLocally)('android', '2.2.4+1')).toBe(true);
158
- });
159
- it('returns false when a version is not available in the file system', async () => {
160
- mockedReaddir.mockResolvedValue([
161
- '1-2-3.apk',
162
- '1-2-3.zip',
163
- '2-3-4+5.zip',
164
- '2-5-4.apk',
165
- '2-2-4+1.apk',
166
- ]);
167
- expect(await (0, binaries_1.isVersionAvailableLocally)('android', '1.2.1')).toBe(false);
168
- expect(await (0, binaries_1.isVersionAvailableLocally)('ios', '1.5.3')).toBe(false);
169
- expect(await (0, binaries_1.isVersionAvailableLocally)('ios', '2.3.4+15')).toBe(false);
170
- expect(await (0, binaries_1.isVersionAvailableLocally)('android', '2.2.4+2')).toBe(false);
171
- });
172
- });
173
- describe('#maybePromptBinaryUpgrade', () => {
174
- it('returns early if specified version is already the latest', async () => {
175
- const onDownloadStart = jest.fn();
176
- // mock remote files to set the latest available versions
177
- mockedGetRemoteFiles.mockResolvedValue([
178
- [{ name: '1-2-3.apk' }, { name: '1-2-3+1.apk' }, { name: '1-4-5.zip' }],
179
- ]);
180
- expect(await (0, binaries_1.maybePromptBinaryUpgrade)('android', {
181
- onDownloadStart,
182
- currentVersion: '1.2.3+1',
183
- })).toBeNull();
184
- expect(mockedPrompts).not.toHaveBeenCalled();
185
- expect(onDownloadStart).not.toHaveBeenCalled();
186
- });
187
- it('returns early if downloaded versions already include the latest', async () => {
188
- const onDownloadStart = jest.fn();
189
- // mock remote files to set the latest available versions
190
- mockedGetRemoteFiles.mockResolvedValue([
191
- [{ name: '1-2-3.apk' }, { name: '1-2-3+1.apk' }, { name: '1-4-5.zip' }],
192
- ]);
193
- // mock the content of the downloads folder
194
- mockedReaddir.mockResolvedValue(['1-2-3+1.apk']);
195
- expect(await (0, binaries_1.maybePromptBinaryUpgrade)('android', {
196
- onDownloadStart,
197
- })).toBeNull();
198
- expect(mockedPrompts).not.toHaveBeenCalled();
199
- expect(onDownloadStart).not.toHaveBeenCalled();
200
- });
201
- it('does not trigger download if user deny the upgrade prompt', async () => {
202
- const onDownloadStart = jest.fn();
203
- // user denies the upgrade prompt
204
- mockedPrompts.mockReturnValue({ shouldUpdate: false });
205
- // mock remote files to set the latest available versions
206
- mockedGetRemoteFiles.mockResolvedValue([
207
- [{ name: '1-2-3.apk' }, { name: '1-2-3+1.apk' }, { name: '1-4-5.zip' }],
208
- ]);
209
- expect(
210
- // 1.2.3+1 is available. should trigger the upgrade prompt if current version is 1.2.3
211
- await (0, binaries_1.maybePromptBinaryUpgrade)('android', {
212
- onDownloadStart,
213
- currentVersion: '1.2.3',
214
- })).toBeNull();
215
- expect(mockedPrompts).toHaveBeenCalled();
216
- expect(onDownloadStart).not.toHaveBeenCalled();
217
- });
218
- it('triggers download if user accepts the upgrade prompt', async () => {
219
- const onDownloadStart = jest.fn();
220
- // user accepts the upgrade prompt
221
- mockedPrompts.mockReturnValue({ shouldUpdate: true });
222
- // mock remote files to set the latest available versions
223
- mockedGetRemoteFiles.mockResolvedValue([
224
- [{ name: '1-2-3.apk' }, { name: '1-2-3+1.apk' }, { name: '1-4-5.zip' }],
225
- ]);
226
- expect(
227
- // 1.2.3+1 is available. should trigger the upgrade prompt if current version is 1.2.3
228
- await (0, binaries_1.maybePromptBinaryUpgrade)('android', {
229
- onDownloadStart,
230
- currentVersion: '1.2.3',
231
- })).toBe('1.2.3+1');
232
- expect(mockedPrompts).toHaveBeenCalled();
233
- expect(onDownloadStart).toHaveBeenCalledWith('1.2.3+1');
234
- });
235
- });
236
- describe('#downloadBinary', () => {
237
- // expect get files to be called
238
- // expect fetch latest if no version provided
239
- // expect create read stream called to start download
240
- it('does not download from remote storage if version is already downloaded', async () => {
241
- mockedReaddir.mockResolvedValue(['1-2-3.zip']);
242
- expect(await (0, binaries_1.downloadBinary)('ios', { version: '1.2.3' })).toBe('1.2.3');
243
- expect(mockedGetRemoteFiles).not.toHaveBeenCalled();
244
- });
245
- it('triggers download if version is not available locally', async () => {
246
- mockedReaddir.mockResolvedValue([]);
247
- mockedGetRemoteFiles.mockResolvedValue([
248
- [
249
- {
250
- name: '1-2-3.zip',
251
- metadata: { size: 1000 },
252
- },
253
- ],
254
- ]);
255
- const mockedGet = (_url, cb) => {
256
- setTimeout(() => cb({ pipe: () => { } }));
257
- };
258
- mockedHttp.get.mockImplementation(mockedGet);
259
- const closeStream = jest.fn();
260
- mockedCreateWriteStream.mockImplementation(() => ({
261
- on: (ev, cb) => {
262
- if (ev === 'finish') {
263
- cb();
264
- }
265
- },
266
- close: closeStream,
267
- }));
268
- await (0, binaries_1.downloadBinary)('ios', { version: '1.2.3' });
269
- expect(mockedGetRemoteFiles).toHaveBeenCalledWith({ prefix: '1-2-3.zip' });
270
- expect(http_1.default.get).toHaveBeenCalled();
271
- expect(closeStream).toHaveBeenCalled();
272
- });
273
- });
274
- });
275
- //# sourceMappingURL=binaries.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"binaries.test.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/binaries.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function getMiniManifest(): any;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMiniManifest = void 0;
4
- function getMiniManifest() {
5
- const manifestPath = `${process.cwd()}/src/manifest.json`;
6
- let manifest;
7
- try {
8
- manifest = require(manifestPath);
9
- }
10
- catch {
11
- if (process.env.MOCK_MANIFEST) {
12
- manifest = {
13
- handle: 'mocked',
14
- name: 'mocked',
15
- };
16
- }
17
- else {
18
- throw new Error(`Failed to load manifest file from ${manifestPath}`);
19
- }
20
- }
21
- return manifest;
22
- }
23
- exports.getMiniManifest = getMiniManifest;
24
- //# sourceMappingURL=minis-manifest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"minis-manifest.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/minis-manifest.ts"],"names":[],"mappings":";;;AAAA,SAAgB,eAAe;IAC7B,MAAM,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAA;IACzD,IAAI,QAAa,CAAA;IACjB,IAAI;QACF,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;KACjC;IAAC,MAAM;QACN,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE;YAC7B,QAAQ,GAAG;gBACT,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,QAAQ;aACf,CAAA;SACF;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAA;SACrE;KACF;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAhBD,0CAgBC"}
@@ -1,19 +0,0 @@
1
- import {getFlagEmoji} from './getFlagEmoji'
2
-
3
- describe('getFlagEmoji', () => {
4
- it('returns a single flag', () => {
5
- expect(getFlagEmoji('US')).toBe('πŸ‡ΊπŸ‡Έ')
6
- })
7
-
8
- it('returns chars when there is no flag with given code', () => {
9
- expect(getFlagEmoji('zz')).toBe('πŸ‡ΏπŸ‡Ώ')
10
- })
11
-
12
- it('returns multiple flags', () => {
13
- expect(getFlagEmoji('denl')).toBe('πŸ‡©πŸ‡ͺπŸ‡³πŸ‡±')
14
- })
15
-
16
- it('does not return non flag emojis', () => {
17
- expect(getFlagEmoji('top')).toBe('πŸ‡ΉπŸ‡΄πŸ‡΅')
18
- })
19
- })