@redocly/cli 1.34.4 → 2.0.0-next.0

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 (321) hide show
  1. package/README.md +34 -3
  2. package/bin/cli.js +1 -1
  3. package/lib/auth/device-flow.d.ts +1 -0
  4. package/lib/auth/device-flow.d.ts.map +1 -0
  5. package/lib/auth/device-flow.js +15 -17
  6. package/lib/auth/device-flow.js.map +1 -0
  7. package/lib/auth/oauth-client.d.ts +1 -0
  8. package/lib/auth/oauth-client.d.ts.map +1 -0
  9. package/lib/auth/oauth-client.js +21 -23
  10. package/lib/auth/oauth-client.js.map +1 -0
  11. package/lib/commands/auth.d.ts +3 -5
  12. package/lib/commands/auth.d.ts.map +1 -0
  13. package/lib/commands/auth.js +19 -44
  14. package/lib/commands/auth.js.map +1 -0
  15. package/lib/commands/build-docs/index.d.ts +4 -3
  16. package/lib/commands/build-docs/index.d.ts.map +1 -0
  17. package/lib/commands/build-docs/index.js +23 -24
  18. package/lib/commands/build-docs/index.js.map +1 -0
  19. package/lib/commands/build-docs/types.d.ts +2 -1
  20. package/lib/commands/build-docs/types.d.ts.map +1 -0
  21. package/lib/commands/build-docs/types.js +2 -2
  22. package/lib/commands/build-docs/types.js.map +1 -0
  23. package/lib/commands/build-docs/utils.d.ts +3 -2
  24. package/lib/commands/build-docs/utils.d.ts.map +1 -0
  25. package/lib/commands/build-docs/utils.js +35 -37
  26. package/lib/commands/build-docs/utils.js.map +1 -0
  27. package/lib/commands/bundle.d.ts +6 -3
  28. package/lib/commands/bundle.d.ts.map +1 -0
  29. package/lib/commands/bundle.js +34 -38
  30. package/lib/commands/bundle.js.map +1 -0
  31. package/lib/commands/eject.d.ts +3 -2
  32. package/lib/commands/eject.d.ts.map +1 -0
  33. package/lib/commands/eject.js +11 -13
  34. package/lib/commands/eject.js.map +1 -0
  35. package/lib/commands/join.d.ts +4 -3
  36. package/lib/commands/join.d.ts.map +1 -0
  37. package/lib/commands/join.js +79 -81
  38. package/lib/commands/join.js.map +1 -0
  39. package/lib/commands/lint.d.ts +8 -6
  40. package/lib/commands/lint.d.ts.map +1 -0
  41. package/lib/commands/lint.js +53 -62
  42. package/lib/commands/lint.js.map +1 -0
  43. package/lib/commands/preview-project/constants.d.ts +2 -1
  44. package/lib/commands/preview-project/constants.d.ts.map +1 -0
  45. package/lib/commands/preview-project/constants.js +4 -6
  46. package/lib/commands/preview-project/constants.js.map +1 -0
  47. package/lib/commands/preview-project/index.d.ts +3 -2
  48. package/lib/commands/preview-project/index.d.ts.map +1 -0
  49. package/lib/commands/preview-project/index.js +21 -23
  50. package/lib/commands/preview-project/index.js.map +1 -0
  51. package/lib/commands/preview-project/types.d.ts +3 -2
  52. package/lib/commands/preview-project/types.d.ts.map +1 -0
  53. package/lib/commands/preview-project/types.js +2 -2
  54. package/lib/commands/preview-project/types.js.map +1 -0
  55. package/lib/commands/split/index.d.ts +4 -3
  56. package/lib/commands/split/index.d.ts.map +1 -0
  57. package/lib/commands/split/index.js +53 -57
  58. package/lib/commands/split/index.js.map +1 -0
  59. package/lib/commands/split/types.d.ts +2 -2
  60. package/lib/commands/split/types.d.ts.map +1 -0
  61. package/lib/commands/split/types.js +11 -13
  62. package/lib/commands/split/types.js.map +1 -0
  63. package/lib/commands/stats.d.ts +3 -2
  64. package/lib/commands/stats.d.ts.map +1 -0
  65. package/lib/commands/stats.js +21 -24
  66. package/lib/commands/stats.js.map +1 -0
  67. package/lib/commands/translations.d.ts +3 -2
  68. package/lib/commands/translations.d.ts.map +1 -0
  69. package/lib/commands/translations.js +11 -13
  70. package/lib/commands/translations.js.map +1 -0
  71. package/lib/index.d.ts +2 -1
  72. package/lib/index.d.ts.map +1 -0
  73. package/lib/index.js +109 -239
  74. package/lib/index.js.map +1 -0
  75. package/lib/otel.d.ts +2 -1
  76. package/lib/otel.d.ts.map +1 -0
  77. package/lib/otel.js +22 -23
  78. package/lib/otel.js.map +1 -0
  79. package/lib/reunite/api/api-client.d.ts +4 -3
  80. package/lib/reunite/api/api-client.d.ts.map +1 -0
  81. package/lib/reunite/api/api-client.js +14 -20
  82. package/lib/reunite/api/api-client.js.map +1 -0
  83. package/lib/reunite/api/api-keys.d.ts +2 -1
  84. package/lib/reunite/api/api-keys.d.ts.map +1 -0
  85. package/lib/reunite/api/api-keys.js +4 -20
  86. package/lib/reunite/api/api-keys.js.map +1 -0
  87. package/lib/reunite/api/domains.d.ts +5 -2
  88. package/lib/reunite/api/domains.d.ts.map +1 -0
  89. package/lib/reunite/api/domains.js +6 -15
  90. package/lib/reunite/api/domains.js.map +1 -0
  91. package/lib/reunite/api/index.d.ts +4 -3
  92. package/lib/reunite/api/index.d.ts.map +1 -0
  93. package/lib/reunite/api/index.js +4 -19
  94. package/lib/reunite/api/index.js.map +1 -0
  95. package/lib/reunite/api/types.d.ts +1 -0
  96. package/lib/reunite/api/types.d.ts.map +1 -0
  97. package/lib/reunite/api/types.js +2 -2
  98. package/lib/reunite/api/types.js.map +1 -0
  99. package/lib/reunite/commands/push-status.d.ts +6 -5
  100. package/lib/reunite/commands/push-status.d.ts.map +1 -0
  101. package/lib/reunite/commands/push-status.js +31 -37
  102. package/lib/reunite/commands/push-status.js.map +1 -0
  103. package/lib/reunite/commands/push.d.ts +6 -6
  104. package/lib/reunite/commands/push.d.ts.map +1 -0
  105. package/lib/reunite/commands/push.js +31 -40
  106. package/lib/reunite/commands/push.js.map +1 -0
  107. package/lib/reunite/commands/utils.d.ts +4 -3
  108. package/lib/reunite/commands/utils.d.ts.map +1 -0
  109. package/lib/reunite/commands/utils.js +9 -12
  110. package/lib/reunite/commands/utils.js.map +1 -0
  111. package/lib/reunite/utils.d.ts +1 -0
  112. package/lib/reunite/utils.d.ts.map +1 -0
  113. package/lib/reunite/utils.js +2 -5
  114. package/lib/reunite/utils.js.map +1 -0
  115. package/lib/types.d.ts +15 -27
  116. package/lib/types.d.ts.map +1 -0
  117. package/lib/types.js +2 -5
  118. package/lib/types.js.map +1 -0
  119. package/lib/utils/assert-node-version.d.ts +1 -0
  120. package/lib/utils/assert-node-version.d.ts.map +1 -0
  121. package/lib/utils/assert-node-version.js +8 -10
  122. package/lib/utils/assert-node-version.js.map +1 -0
  123. package/lib/utils/error.d.ts +4 -0
  124. package/lib/utils/error.d.ts.map +1 -0
  125. package/lib/utils/error.js +8 -0
  126. package/lib/utils/error.js.map +1 -0
  127. package/lib/utils/fetch-with-timeout.d.ts +1 -0
  128. package/lib/utils/fetch-with-timeout.d.ts.map +1 -0
  129. package/lib/utils/fetch-with-timeout.js +6 -8
  130. package/lib/utils/fetch-with-timeout.js.map +1 -0
  131. package/lib/utils/{getCommandNameFromArgs.d.ts → get-command-name-from-args.d.ts} +1 -0
  132. package/lib/utils/get-command-name-from-args.d.ts.map +1 -0
  133. package/lib/utils/get-command-name-from-args.js +4 -0
  134. package/lib/utils/get-command-name-from-args.js.map +1 -0
  135. package/lib/utils/js-utils.d.ts +1 -0
  136. package/lib/utils/js-utils.d.ts.map +1 -0
  137. package/lib/utils/js-utils.js +8 -12
  138. package/lib/utils/js-utils.js.map +1 -0
  139. package/lib/utils/miscellaneous.d.ts +9 -48
  140. package/lib/utils/miscellaneous.d.ts.map +1 -0
  141. package/lib/utils/miscellaneous.js +131 -269
  142. package/lib/utils/miscellaneous.js.map +1 -0
  143. package/lib/utils/package.d.ts +2 -0
  144. package/lib/utils/package.d.ts.map +1 -0
  145. package/lib/utils/package.js +4 -0
  146. package/lib/utils/package.js.map +1 -0
  147. package/lib/utils/platform.d.ts +1 -0
  148. package/lib/utils/platform.d.ts.map +1 -0
  149. package/lib/utils/platform.js +5 -9
  150. package/lib/utils/platform.js.map +1 -0
  151. package/lib/utils/proxy-agent.d.ts +3 -0
  152. package/lib/utils/proxy-agent.d.ts.map +1 -0
  153. package/lib/utils/proxy-agent.js +6 -0
  154. package/lib/utils/proxy-agent.js.map +1 -0
  155. package/lib/utils/spinner.d.ts +1 -0
  156. package/lib/utils/spinner.d.ts.map +1 -0
  157. package/lib/utils/spinner.js +8 -10
  158. package/lib/utils/spinner.js.map +1 -0
  159. package/lib/utils/telemetry.d.ts +40 -0
  160. package/lib/utils/telemetry.d.ts.map +1 -0
  161. package/lib/utils/telemetry.js +138 -0
  162. package/lib/utils/telemetry.js.map +1 -0
  163. package/lib/utils/update-version-notifier.d.ts +1 -1
  164. package/lib/utils/update-version-notifier.d.ts.map +1 -0
  165. package/lib/utils/update-version-notifier.js +35 -38
  166. package/lib/utils/update-version-notifier.js.map +1 -0
  167. package/lib/utils/validate-positive-number.d.ts +2 -0
  168. package/lib/utils/validate-positive-number.d.ts.map +1 -0
  169. package/lib/utils/validate-positive-number.js +13 -0
  170. package/lib/utils/validate-positive-number.js.map +1 -0
  171. package/lib/wrapper.d.ts +3 -3
  172. package/lib/wrapper.d.ts.map +1 -0
  173. package/lib/wrapper.js +39 -26
  174. package/lib/wrapper.js.map +1 -0
  175. package/package.json +16 -17
  176. package/CHANGELOG.md +0 -777
  177. package/lib/__mocks__/@redocly/openapi-core.d.ts +0 -99
  178. package/lib/__mocks__/@redocly/openapi-core.js +0 -84
  179. package/lib/__mocks__/documents.d.ts +0 -150
  180. package/lib/__mocks__/documents.js +0 -123
  181. package/lib/__mocks__/fs.d.ts +0 -8
  182. package/lib/__mocks__/fs.js +0 -9
  183. package/lib/__mocks__/perf_hooks.d.ts +0 -3
  184. package/lib/__mocks__/perf_hooks.js +0 -6
  185. package/lib/__mocks__/redoc.d.ts +0 -6
  186. package/lib/__mocks__/redoc.js +0 -5
  187. package/lib/__tests__/commands/build-docs.test.d.ts +0 -1
  188. package/lib/__tests__/commands/build-docs.test.js +0 -54
  189. package/lib/__tests__/commands/bundle.test.d.ts +0 -1
  190. package/lib/__tests__/commands/bundle.test.js +0 -235
  191. package/lib/__tests__/commands/join.test.d.ts +0 -1
  192. package/lib/__tests__/commands/join.test.js +0 -274
  193. package/lib/__tests__/commands/lint.test.d.ts +0 -1
  194. package/lib/__tests__/commands/lint.test.js +0 -149
  195. package/lib/__tests__/commands/push-region.test.d.ts +0 -1
  196. package/lib/__tests__/commands/push-region.test.js +0 -90
  197. package/lib/__tests__/commands/push.test.d.ts +0 -1
  198. package/lib/__tests__/commands/push.test.js +0 -496
  199. package/lib/__tests__/fetch-with-timeout.test.d.ts +0 -1
  200. package/lib/__tests__/fetch-with-timeout.test.js +0 -64
  201. package/lib/__tests__/fixtures/config.d.ts +0 -21
  202. package/lib/__tests__/fixtures/config.js +0 -24
  203. package/lib/__tests__/spinner.test.d.ts +0 -1
  204. package/lib/__tests__/spinner.test.js +0 -43
  205. package/lib/__tests__/utils.test.d.ts +0 -1
  206. package/lib/__tests__/utils.test.js +0 -651
  207. package/lib/__tests__/wrapper.test.d.ts +0 -1
  208. package/lib/__tests__/wrapper.test.js +0 -76
  209. package/lib/auth/__tests__/device-flow.test.d.ts +0 -1
  210. package/lib/auth/__tests__/device-flow.test.js +0 -62
  211. package/lib/auth/__tests__/oauth-client.test.d.ts +0 -1
  212. package/lib/auth/__tests__/oauth-client.test.js +0 -93
  213. package/lib/commands/preview-docs/index.d.ts +0 -12
  214. package/lib/commands/preview-docs/index.js +0 -127
  215. package/lib/commands/preview-docs/preview-server/default.hbs +0 -24
  216. package/lib/commands/preview-docs/preview-server/hot.js +0 -59
  217. package/lib/commands/preview-docs/preview-server/oauth2-redirect.html +0 -21
  218. package/lib/commands/preview-docs/preview-server/preview-server.d.ts +0 -5
  219. package/lib/commands/preview-docs/preview-server/preview-server.js +0 -113
  220. package/lib/commands/preview-docs/preview-server/server.d.ts +0 -22
  221. package/lib/commands/preview-docs/preview-server/server.js +0 -85
  222. package/lib/commands/push.d.ts +0 -44
  223. package/lib/commands/push.js +0 -301
  224. package/lib/commands/split/__tests__/index.test.d.ts +0 -1
  225. package/lib/commands/split/__tests__/index.test.js +0 -91
  226. package/lib/reunite/api/__tests__/api-keys.test.d.ts +0 -1
  227. package/lib/reunite/api/__tests__/api-keys.test.js +0 -26
  228. package/lib/reunite/api/__tests__/api.client.test.d.ts +0 -1
  229. package/lib/reunite/api/__tests__/api.client.test.js +0 -337
  230. package/lib/reunite/api/__tests__/domains.test.d.ts +0 -1
  231. package/lib/reunite/api/__tests__/domains.test.js +0 -32
  232. package/lib/reunite/commands/__tests__/push-status.test.d.ts +0 -1
  233. package/lib/reunite/commands/__tests__/push-status.test.js +0 -563
  234. package/lib/reunite/commands/__tests__/push.test.d.ts +0 -1
  235. package/lib/reunite/commands/__tests__/push.test.js +0 -315
  236. package/lib/reunite/commands/__tests__/utils.test.d.ts +0 -1
  237. package/lib/reunite/commands/__tests__/utils.test.js +0 -51
  238. package/lib/utils/__mocks__/miscellaneous.d.ts +0 -43
  239. package/lib/utils/__mocks__/miscellaneous.js +0 -24
  240. package/lib/utils/getCommandNameFromArgs.js +0 -6
  241. package/src/__mocks__/@redocly/openapi-core.ts +0 -88
  242. package/src/__mocks__/documents.ts +0 -124
  243. package/src/__mocks__/fs.ts +0 -6
  244. package/src/__mocks__/perf_hooks.ts +0 -3
  245. package/src/__mocks__/redoc.ts +0 -2
  246. package/src/__tests__/commands/build-docs.test.ts +0 -59
  247. package/src/__tests__/commands/bundle.test.ts +0 -285
  248. package/src/__tests__/commands/join.test.ts +0 -334
  249. package/src/__tests__/commands/lint.test.ts +0 -190
  250. package/src/__tests__/commands/push-region.test.ts +0 -104
  251. package/src/__tests__/commands/push.test.ts +0 -553
  252. package/src/__tests__/fetch-with-timeout.test.ts +0 -81
  253. package/src/__tests__/fixtures/config.ts +0 -21
  254. package/src/__tests__/fixtures/openapi.json +0 -0
  255. package/src/__tests__/fixtures/openapi.yaml +0 -0
  256. package/src/__tests__/fixtures/redocly.yaml +0 -0
  257. package/src/__tests__/spinner.test.ts +0 -51
  258. package/src/__tests__/utils.test.ts +0 -781
  259. package/src/__tests__/wrapper.test.ts +0 -91
  260. package/src/auth/__tests__/device-flow.test.ts +0 -73
  261. package/src/auth/__tests__/oauth-client.test.ts +0 -117
  262. package/src/auth/device-flow.ts +0 -175
  263. package/src/auth/oauth-client.ts +0 -111
  264. package/src/commands/auth.ts +0 -66
  265. package/src/commands/build-docs/index.ts +0 -55
  266. package/src/commands/build-docs/template.hbs +0 -23
  267. package/src/commands/build-docs/types.ts +0 -25
  268. package/src/commands/build-docs/utils.ts +0 -110
  269. package/src/commands/bundle.ts +0 -154
  270. package/src/commands/eject.ts +0 -42
  271. package/src/commands/join.ts +0 -794
  272. package/src/commands/lint.ts +0 -169
  273. package/src/commands/preview-docs/index.ts +0 -183
  274. package/src/commands/preview-docs/preview-server/default.hbs +0 -24
  275. package/src/commands/preview-docs/preview-server/hot.js +0 -59
  276. package/src/commands/preview-docs/preview-server/oauth2-redirect.html +0 -21
  277. package/src/commands/preview-docs/preview-server/preview-server.ts +0 -159
  278. package/src/commands/preview-docs/preview-server/server.ts +0 -92
  279. package/src/commands/preview-project/constants.ts +0 -23
  280. package/src/commands/preview-project/index.ts +0 -71
  281. package/src/commands/preview-project/types.ts +0 -12
  282. package/src/commands/push.ts +0 -470
  283. package/src/commands/split/__tests__/fixtures/samples.json +0 -61
  284. package/src/commands/split/__tests__/fixtures/spec.json +0 -70
  285. package/src/commands/split/__tests__/fixtures/webhooks.json +0 -85
  286. package/src/commands/split/__tests__/index.test.ts +0 -156
  287. package/src/commands/split/index.ts +0 -397
  288. package/src/commands/split/types.ts +0 -60
  289. package/src/commands/stats.ts +0 -140
  290. package/src/commands/translations.ts +0 -32
  291. package/src/custom.d.ts +0 -1
  292. package/src/index.ts +0 -970
  293. package/src/otel.ts +0 -59
  294. package/src/reunite/api/__tests__/api-keys.test.ts +0 -37
  295. package/src/reunite/api/__tests__/api.client.test.ts +0 -452
  296. package/src/reunite/api/__tests__/domains.test.ts +0 -41
  297. package/src/reunite/api/api-client.ts +0 -381
  298. package/src/reunite/api/api-keys.ts +0 -26
  299. package/src/reunite/api/domains.ts +0 -23
  300. package/src/reunite/api/index.ts +0 -3
  301. package/src/reunite/api/types.ts +0 -108
  302. package/src/reunite/commands/__tests__/push-status.test.ts +0 -653
  303. package/src/reunite/commands/__tests__/push.test.ts +0 -385
  304. package/src/reunite/commands/__tests__/utils.test.ts +0 -62
  305. package/src/reunite/commands/push-status.ts +0 -325
  306. package/src/reunite/commands/push.ts +0 -235
  307. package/src/reunite/commands/utils.ts +0 -66
  308. package/src/reunite/utils.ts +0 -1
  309. package/src/types.ts +0 -64
  310. package/src/utils/__mocks__/miscellaneous.ts +0 -24
  311. package/src/utils/assert-node-version.ts +0 -19
  312. package/src/utils/fetch-with-timeout.ts +0 -30
  313. package/src/utils/getCommandNameFromArgs.ts +0 -5
  314. package/src/utils/js-utils.ts +0 -24
  315. package/src/utils/miscellaneous.ts +0 -729
  316. package/src/utils/platform.ts +0 -31
  317. package/src/utils/spinner.ts +0 -50
  318. package/src/utils/update-version-notifier.ts +0 -115
  319. package/src/wrapper.ts +0 -77
  320. package/tsconfig.json +0 -9
  321. package/tsconfig.tsbuildinfo +0 -1
@@ -1,563 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const push_status_1 = require("../push-status");
4
- const remotes = {
5
- getPush: jest.fn(),
6
- getRemotesList: jest.fn(),
7
- };
8
- jest.mock('colorette', () => ({
9
- green: (str) => str,
10
- yellow: (str) => str,
11
- red: (str) => str,
12
- gray: (str) => str,
13
- magenta: (str) => str,
14
- cyan: (str) => str,
15
- }));
16
- jest.mock('../../api', () => ({
17
- ...jest.requireActual('../../api'),
18
- ReuniteApi: jest.fn().mockImplementation(function (...args) {
19
- this.remotes = remotes;
20
- this.reportSunsetWarnings = jest.fn();
21
- }),
22
- }));
23
- jest.mock('@redocly/openapi-core', () => ({
24
- pause: jest.requireActual('@redocly/openapi-core').pause,
25
- }));
26
- describe('handlePushStatus()', () => {
27
- const mockConfig = { apis: {} };
28
- const commitStub = {
29
- message: 'test-commit-message',
30
- branchName: 'test-branch-name',
31
- sha: null,
32
- url: null,
33
- createdAt: null,
34
- namespaceId: null,
35
- repositoryId: null,
36
- author: {
37
- name: 'test-author-name',
38
- email: 'test-author-email',
39
- image: null,
40
- },
41
- statuses: [],
42
- };
43
- const pushResponseStub = {
44
- id: 'test-push-id',
45
- remoteId: 'test-remote-id',
46
- replace: false,
47
- scoutJobId: null,
48
- uploadedFiles: [],
49
- commit: commitStub,
50
- remote: { commits: [] },
51
- isOutdated: false,
52
- isMainBranch: false,
53
- hasChanges: true,
54
- status: {
55
- preview: {
56
- scorecard: [],
57
- deploy: {
58
- url: 'https://preview-test-url',
59
- status: 'success',
60
- },
61
- },
62
- production: {
63
- scorecard: [],
64
- deploy: {
65
- url: 'https://production-test-url',
66
- status: 'success',
67
- },
68
- },
69
- },
70
- };
71
- beforeEach(() => {
72
- jest.spyOn(process.stderr, 'write').mockImplementation(() => true);
73
- jest.spyOn(process.stdout, 'write').mockImplementation(() => true);
74
- });
75
- afterEach(() => {
76
- jest.clearAllMocks();
77
- });
78
- it('should throw error if organization not provided', async () => {
79
- await expect((0, push_status_1.handlePushStatus)({
80
- argv: {
81
- domain: 'test-domain',
82
- organization: '',
83
- project: 'test-project',
84
- pushId: 'test-push-id',
85
- },
86
- config: mockConfig,
87
- version: 'cli-version',
88
- })).rejects.toThrowErrorMatchingInlineSnapshot(`"No organization provided, please use --organization option or specify the 'organization' field in the config file."`);
89
- expect(process.stderr.write).toHaveBeenCalledWith(`No organization provided, please use --organization option or specify the 'organization' field in the config file.` +
90
- '\n\n');
91
- });
92
- it('should print success push status for preview-build', async () => {
93
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
94
- remotes.getPush.mockResolvedValueOnce(pushResponseStub);
95
- await (0, push_status_1.handlePushStatus)({
96
- argv: {
97
- domain: 'test-domain',
98
- organization: 'test-org',
99
- project: 'test-project',
100
- pushId: 'test-push-id',
101
- },
102
- config: mockConfig,
103
- version: 'cli-version',
104
- });
105
- expect(process.stdout.write).toHaveBeenCalledTimes(1);
106
- expect(process.stdout.write).toHaveBeenCalledWith('🚀 Preview deploy success.\nPreview URL: https://preview-test-url\n');
107
- });
108
- it('should print success push status for preview and production builds', async () => {
109
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
110
- remotes.getPush.mockResolvedValue({ ...pushResponseStub, isMainBranch: true });
111
- await (0, push_status_1.handlePushStatus)({
112
- argv: {
113
- domain: 'test-domain',
114
- organization: 'test-org',
115
- project: 'test-project',
116
- pushId: 'test-push-id',
117
- },
118
- config: mockConfig,
119
- version: 'cli-version',
120
- });
121
- expect(process.stdout.write).toHaveBeenCalledTimes(2);
122
- expect(process.stdout.write).toHaveBeenCalledWith('🚀 Preview deploy success.\nPreview URL: https://preview-test-url\n');
123
- expect(process.stdout.write).toHaveBeenCalledWith('🚀 Production deploy success.\nProduction URL: https://production-test-url\n');
124
- });
125
- it('should print failed push status for preview build', async () => {
126
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
127
- remotes.getPush.mockResolvedValue({
128
- isOutdated: false,
129
- hasChanges: true,
130
- status: {
131
- preview: { deploy: { status: 'failed', url: 'https://preview-test-url' }, scorecard: [] },
132
- },
133
- });
134
- await expect((0, push_status_1.handlePushStatus)({
135
- argv: {
136
- domain: 'test-domain',
137
- organization: 'test-org',
138
- project: 'test-project',
139
- pushId: 'test-push-id',
140
- },
141
- config: mockConfig,
142
- version: 'cli-version',
143
- })).rejects.toThrowErrorMatchingInlineSnapshot(`
144
- "❌ Preview deploy fail.
145
- Preview URL: https://preview-test-url"
146
- `);
147
- expect(process.stderr.write).toHaveBeenCalledWith('❌ Preview deploy fail.\nPreview URL: https://preview-test-url' + '\n\n');
148
- });
149
- it('should print success push status for preview build and print scorecards', async () => {
150
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
151
- remotes.getPush.mockResolvedValue({
152
- isOutdated: false,
153
- hasChanges: true,
154
- status: {
155
- preview: {
156
- deploy: { status: 'success', url: 'https://preview-test-url' },
157
- scorecard: [
158
- {
159
- name: 'test-name',
160
- status: 'success',
161
- description: 'test-description',
162
- url: 'test-url',
163
- },
164
- ],
165
- },
166
- },
167
- });
168
- await (0, push_status_1.handlePushStatus)({
169
- argv: {
170
- domain: 'test-domain',
171
- organization: 'test-org',
172
- project: 'test-project',
173
- pushId: 'test-push-id',
174
- },
175
- config: mockConfig,
176
- version: 'cli-version',
177
- });
178
- expect(process.stdout.write).toHaveBeenCalledTimes(4);
179
- expect(process.stdout.write).toHaveBeenCalledWith('🚀 Preview deploy success.\nPreview URL: https://preview-test-url\n');
180
- expect(process.stdout.write).toHaveBeenCalledWith('\nScorecard:');
181
- expect(process.stdout.write).toHaveBeenCalledWith('\n Name: test-name\n Status: success\n URL: test-url\n Description: test-description\n');
182
- expect(process.stdout.write).toHaveBeenCalledWith('\n');
183
- });
184
- it('should print message if there is no changes', async () => {
185
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
186
- remotes.getPush.mockResolvedValueOnce({
187
- isOutdated: false,
188
- hasChanges: false,
189
- status: {
190
- preview: { deploy: { status: 'skipped', url: 'https://preview-test-url' }, scorecard: [] },
191
- production: {
192
- deploy: { status: 'skipped', url: null },
193
- scorecard: [],
194
- },
195
- },
196
- });
197
- await (0, push_status_1.handlePushStatus)({
198
- argv: {
199
- domain: 'test-domain',
200
- organization: 'test-org',
201
- project: 'test-project',
202
- pushId: 'test-push-id',
203
- wait: true,
204
- },
205
- config: mockConfig,
206
- version: 'cli-version',
207
- });
208
- expect(process.stderr.write).toHaveBeenCalledWith('Files not added to your project. Reason: no changes.\n');
209
- });
210
- describe('return value', () => {
211
- it('should return preview deployment info', async () => {
212
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
213
- remotes.getPush.mockResolvedValue({ ...pushResponseStub, isMainBranch: false });
214
- const result = await (0, push_status_1.handlePushStatus)({
215
- argv: {
216
- domain: 'test-domain',
217
- organization: 'test-org',
218
- project: 'test-project',
219
- pushId: 'test-push-id',
220
- },
221
- config: mockConfig,
222
- version: 'cli-version',
223
- });
224
- expect(result).toEqual({
225
- preview: {
226
- deploy: {
227
- status: 'success',
228
- url: 'https://preview-test-url',
229
- },
230
- scorecard: [],
231
- },
232
- production: null,
233
- commit: commitStub,
234
- });
235
- });
236
- it('should return preview and production deployment info', async () => {
237
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
238
- remotes.getPush.mockResolvedValue({ ...pushResponseStub, isMainBranch: true });
239
- const result = await (0, push_status_1.handlePushStatus)({
240
- argv: {
241
- domain: 'test-domain',
242
- organization: 'test-org',
243
- project: 'test-project',
244
- pushId: 'test-push-id',
245
- },
246
- config: mockConfig,
247
- version: 'cli-version',
248
- });
249
- expect(result).toEqual({
250
- preview: {
251
- deploy: {
252
- status: 'success',
253
- url: 'https://preview-test-url',
254
- },
255
- scorecard: [],
256
- },
257
- production: {
258
- deploy: {
259
- status: 'success',
260
- url: 'https://production-test-url',
261
- },
262
- scorecard: [],
263
- },
264
- commit: commitStub,
265
- });
266
- });
267
- });
268
- describe('"wait" option', () => {
269
- it('should wait for preview "success" deployment status', async () => {
270
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
271
- remotes.getPush.mockResolvedValueOnce({
272
- ...pushResponseStub,
273
- status: {
274
- preview: {
275
- deploy: { status: 'pending', url: 'https://preview-test-url' },
276
- scorecard: [],
277
- },
278
- },
279
- });
280
- remotes.getPush.mockResolvedValueOnce({
281
- ...pushResponseStub,
282
- status: {
283
- preview: {
284
- deploy: { status: 'running', url: 'https://preview-test-url' },
285
- scorecard: [],
286
- },
287
- },
288
- });
289
- remotes.getPush.mockResolvedValueOnce({
290
- ...pushResponseStub,
291
- status: {
292
- preview: {
293
- deploy: { status: 'success', url: 'https://preview-test-url' },
294
- scorecard: [],
295
- },
296
- },
297
- });
298
- const result = await (0, push_status_1.handlePushStatus)({
299
- argv: {
300
- domain: 'test-domain',
301
- organization: 'test-org',
302
- project: 'test-project',
303
- pushId: 'test-push-id',
304
- 'retry-interval': 0.5, // 500 ms
305
- wait: true,
306
- },
307
- config: mockConfig,
308
- version: 'cli-version',
309
- });
310
- expect(result).toEqual({
311
- preview: {
312
- deploy: {
313
- status: 'success',
314
- url: 'https://preview-test-url',
315
- },
316
- scorecard: [],
317
- },
318
- production: null,
319
- commit: commitStub,
320
- });
321
- });
322
- it('should wait for production "success" status after preview "success" status', async () => {
323
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
324
- remotes.getPush.mockResolvedValueOnce({
325
- ...pushResponseStub,
326
- isMainBranch: true,
327
- status: {
328
- preview: {
329
- deploy: { status: 'success', url: 'https://preview-test-url' },
330
- scorecard: [],
331
- },
332
- production: {
333
- deploy: { status: 'pending', url: 'https://production-test-url' },
334
- scorecard: [],
335
- },
336
- },
337
- });
338
- remotes.getPush.mockResolvedValueOnce({
339
- ...pushResponseStub,
340
- isMainBranch: true,
341
- status: {
342
- preview: {
343
- deploy: { status: 'success', url: 'https://preview-test-url' },
344
- scorecard: [],
345
- },
346
- production: {
347
- deploy: { status: 'running', url: 'https://production-test-url' },
348
- scorecard: [],
349
- },
350
- },
351
- });
352
- remotes.getPush.mockResolvedValueOnce({
353
- ...pushResponseStub,
354
- isMainBranch: true,
355
- status: {
356
- preview: {
357
- deploy: { status: 'success', url: 'https://preview-test-url' },
358
- scorecard: [],
359
- },
360
- production: {
361
- deploy: { status: 'success', url: 'https://production-test-url' },
362
- scorecard: [],
363
- },
364
- },
365
- });
366
- const result = await (0, push_status_1.handlePushStatus)({
367
- argv: {
368
- domain: 'test-domain',
369
- organization: 'test-org',
370
- project: 'test-project',
371
- pushId: 'test-push-id',
372
- 'retry-interval': 0.5, // 500 ms
373
- wait: true,
374
- },
375
- config: mockConfig,
376
- version: 'cli-version',
377
- });
378
- expect(result).toEqual({
379
- preview: {
380
- deploy: { status: 'success', url: 'https://preview-test-url' },
381
- scorecard: [],
382
- },
383
- production: {
384
- deploy: { status: 'success', url: 'https://production-test-url' },
385
- scorecard: [],
386
- },
387
- commit: commitStub,
388
- });
389
- });
390
- });
391
- describe('"continue-on-deploy-failures" option', () => {
392
- it('should throw error if option value is false', async () => {
393
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
394
- remotes.getPush.mockResolvedValueOnce({
395
- ...pushResponseStub,
396
- status: {
397
- preview: {
398
- deploy: { status: 'failed', url: 'https://preview-test-url' },
399
- scorecard: [],
400
- },
401
- },
402
- });
403
- await expect((0, push_status_1.handlePushStatus)({
404
- argv: {
405
- domain: 'test-domain',
406
- organization: 'test-org',
407
- project: 'test-project',
408
- pushId: 'test-push-id',
409
- 'continue-on-deploy-failures': false,
410
- },
411
- config: mockConfig,
412
- version: 'cli-version',
413
- })).rejects.toThrowErrorMatchingInlineSnapshot(`
414
- "❌ Preview deploy fail.
415
- Preview URL: https://preview-test-url"
416
- `);
417
- });
418
- it('should not throw error if option value is true', async () => {
419
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
420
- remotes.getPush.mockResolvedValueOnce({
421
- ...pushResponseStub,
422
- status: {
423
- preview: {
424
- deploy: { status: 'failed', url: 'https://preview-test-url' },
425
- scorecard: [],
426
- },
427
- },
428
- });
429
- await expect((0, push_status_1.handlePushStatus)({
430
- argv: {
431
- domain: 'test-domain',
432
- organization: 'test-org',
433
- project: 'test-project',
434
- pushId: 'test-push-id',
435
- 'continue-on-deploy-failures': true,
436
- },
437
- config: mockConfig,
438
- version: 'cli-version',
439
- })).resolves.toStrictEqual({
440
- preview: {
441
- deploy: { status: 'failed', url: 'https://preview-test-url' },
442
- scorecard: [],
443
- },
444
- production: null,
445
- commit: commitStub,
446
- });
447
- });
448
- });
449
- describe('"onRetry" callback', () => {
450
- it('should be called when command retries request to API in wait mode for preview deploy', async () => {
451
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
452
- remotes.getPush.mockResolvedValueOnce({
453
- ...pushResponseStub,
454
- status: {
455
- preview: {
456
- deploy: { status: 'pending', url: 'https://preview-test-url' },
457
- scorecard: [],
458
- },
459
- },
460
- });
461
- remotes.getPush.mockResolvedValueOnce({
462
- ...pushResponseStub,
463
- status: {
464
- preview: {
465
- deploy: { status: 'running', url: 'https://preview-test-url' },
466
- scorecard: [],
467
- },
468
- },
469
- });
470
- remotes.getPush.mockResolvedValueOnce({
471
- ...pushResponseStub,
472
- status: {
473
- preview: {
474
- deploy: { status: 'success', url: 'https://preview-test-url' },
475
- scorecard: [],
476
- },
477
- },
478
- });
479
- const onRetrySpy = jest.fn();
480
- const result = await (0, push_status_1.handlePushStatus)({
481
- argv: {
482
- domain: 'test-domain',
483
- organization: 'test-org',
484
- project: 'test-project',
485
- pushId: 'test-push-id',
486
- wait: true,
487
- 'retry-interval': 0.5, // 500 ms
488
- onRetry: onRetrySpy,
489
- },
490
- config: mockConfig,
491
- version: 'cli-version',
492
- });
493
- expect(onRetrySpy).toBeCalledTimes(2);
494
- // first retry
495
- expect(onRetrySpy).toHaveBeenNthCalledWith(1, {
496
- preview: {
497
- deploy: {
498
- status: 'pending',
499
- url: 'https://preview-test-url',
500
- },
501
- scorecard: [],
502
- },
503
- production: null,
504
- commit: commitStub,
505
- });
506
- // second retry
507
- expect(onRetrySpy).toHaveBeenNthCalledWith(2, {
508
- preview: {
509
- deploy: {
510
- status: 'running',
511
- url: 'https://preview-test-url',
512
- },
513
- scorecard: [],
514
- },
515
- production: null,
516
- commit: commitStub,
517
- });
518
- // final result
519
- expect(result).toEqual({
520
- preview: {
521
- deploy: {
522
- status: 'success',
523
- url: 'https://preview-test-url',
524
- },
525
- scorecard: [],
526
- },
527
- production: null,
528
- commit: commitStub,
529
- });
530
- });
531
- });
532
- describe('"max-execution-time" option', () => {
533
- it('should throw error in case "max-execution-time" was exceeded', async () => {
534
- process.env.REDOCLY_AUTHORIZATION = 'test-api-key';
535
- // Stuck deployment simulation
536
- remotes.getPush.mockResolvedValue({
537
- ...pushResponseStub,
538
- status: {
539
- preview: {
540
- deploy: { status: 'pending', url: 'https://preview-test-url' },
541
- scorecard: [],
542
- },
543
- },
544
- });
545
- await expect((0, push_status_1.handlePushStatus)({
546
- argv: {
547
- domain: 'test-domain',
548
- organization: 'test-org',
549
- project: 'test-project',
550
- pushId: 'test-push-id',
551
- 'retry-interval': 2, // seconds
552
- 'max-execution-time': 1, // seconds
553
- wait: true,
554
- },
555
- config: mockConfig,
556
- version: 'cli-version',
557
- })).rejects.toThrowErrorMatchingInlineSnapshot(`
558
- "✗ Failed to get push status. Reason: Timeout exceeded.
559
- "
560
- `);
561
- });
562
- });
563
- });
@@ -1 +0,0 @@
1
- export {};