shoplazza-cli 0.0.1

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 (181) hide show
  1. package/.editorconfig +28 -0
  2. package/.prettierrc +9 -0
  3. package/LICENSE +21 -0
  4. package/README.md +208 -0
  5. package/bin/shoplazza +117 -0
  6. package/fixtures/assets/blog.scss +74 -0
  7. package/fixtures/assets/cart_modal.scss +450 -0
  8. package/fixtures/assets/collection_detail.js +234 -0
  9. package/fixtures/assets/collection_detail.scss +345 -0
  10. package/fixtures/assets/collection_list.scss +11 -0
  11. package/fixtures/assets/collection_slider.scss +169 -0
  12. package/fixtures/assets/feature_columns.scss +26 -0
  13. package/fixtures/assets/feature_product.scss +109 -0
  14. package/fixtures/assets/footer.js +58 -0
  15. package/fixtures/assets/footer.scss +337 -0
  16. package/fixtures/assets/four_images.scss +29 -0
  17. package/fixtures/assets/gallery.scss +55 -0
  18. package/fixtures/assets/header.js +178 -0
  19. package/fixtures/assets/header.scss +929 -0
  20. package/fixtures/assets/image_text.scss +72 -0
  21. package/fixtures/assets/logo_bar.scss +11 -0
  22. package/fixtures/assets/newsletter.scss +90 -0
  23. package/fixtures/assets/not_found.scss +39 -0
  24. package/fixtures/assets/page_detail.scss +16 -0
  25. package/fixtures/assets/pagination.scss +150 -0
  26. package/fixtures/assets/postcss.config.js +6 -0
  27. package/fixtures/assets/product_description.scss +88 -0
  28. package/fixtures/assets/product_detail.js +634 -0
  29. package/fixtures/assets/product_detail.scss +1106 -0
  30. package/fixtures/assets/relative_product.scss +45 -0
  31. package/fixtures/assets/reviews.scss +70 -0
  32. package/fixtures/assets/rich_text.scss +71 -0
  33. package/fixtures/assets/search.js +87 -0
  34. package/fixtures/assets/search.scss +67 -0
  35. package/fixtures/assets/slide.scss +51 -0
  36. package/fixtures/assets/slider.scss +141 -0
  37. package/fixtures/assets/theme.css +976 -0
  38. package/fixtures/assets/theme.scss +1100 -0
  39. package/fixtures/assets/three_images.scss +20 -0
  40. package/fixtures/assets/tools.scss +23 -0
  41. package/fixtures/assets/two_images.scss +24 -0
  42. package/fixtures/assets/video.scss +45 -0
  43. package/fixtures/assets/video_text.scss +63 -0
  44. package/fixtures/config/settings_data.json +107 -0
  45. package/fixtures/config/settings_schema.json +690 -0
  46. package/fixtures/layout/theme.liquid +76 -0
  47. package/fixtures/locales/ar-SA.json +212 -0
  48. package/fixtures/locales/de-DE.json +290 -0
  49. package/fixtures/locales/en-US.json +290 -0
  50. package/fixtures/locales/es-ES.json +290 -0
  51. package/fixtures/locales/fr-FR.json +290 -0
  52. package/fixtures/locales/id-ID.json +212 -0
  53. package/fixtures/locales/it-IT.json +212 -0
  54. package/fixtures/locales/ja-JP.json +289 -0
  55. package/fixtures/locales/ko-KR.json +290 -0
  56. package/fixtures/locales/nl-NL.json +290 -0
  57. package/fixtures/locales/pl-PL.json +290 -0
  58. package/fixtures/locales/pt-PT.json +212 -0
  59. package/fixtures/locales/ru-RU.json +212 -0
  60. package/fixtures/locales/th-TH.json +212 -0
  61. package/fixtures/locales/zh-CN.json +290 -0
  62. package/fixtures/locales/zh-TW.json +290 -0
  63. package/fixtures/sections/apps.liquid +47 -0
  64. package/fixtures/sections/blog.liquid +137 -0
  65. package/fixtures/sections/collection_desc.liquid +34 -0
  66. package/fixtures/sections/collection_detail.liquid +436 -0
  67. package/fixtures/sections/collection_image.liquid +104 -0
  68. package/fixtures/sections/collection_list.liquid +161 -0
  69. package/fixtures/sections/collection_name.liquid +34 -0
  70. package/fixtures/sections/collection_slider.liquid +330 -0
  71. package/fixtures/sections/feature_columns.liquid +275 -0
  72. package/fixtures/sections/feature_product.liquid +227 -0
  73. package/fixtures/sections/footer.liquid +488 -0
  74. package/fixtures/sections/four_images.liquid +160 -0
  75. package/fixtures/sections/gallery.liquid +258 -0
  76. package/fixtures/sections/header.liquid +1157 -0
  77. package/fixtures/sections/html.liquid +40 -0
  78. package/fixtures/sections/image_text.liquid +350 -0
  79. package/fixtures/sections/instagram_plus.liquid +393 -0
  80. package/fixtures/sections/logo_bar.liquid +183 -0
  81. package/fixtures/sections/newsletter.liquid +225 -0
  82. package/fixtures/sections/not_found.liquid +39 -0
  83. package/fixtures/sections/overlay_image.liquid +648 -0
  84. package/fixtures/sections/page_detail.liquid +39 -0
  85. package/fixtures/sections/photo_collection.liquid +433 -0
  86. package/fixtures/sections/product_description.liquid +208 -0
  87. package/fixtures/sections/product_detail.liquid +611 -0
  88. package/fixtures/sections/products.liquid +216 -0
  89. package/fixtures/sections/relative_product.liquid +121 -0
  90. package/fixtures/sections/reviews.liquid +115 -0
  91. package/fixtures/sections/rich_text.liquid +157 -0
  92. package/fixtures/sections/search.liquid +163 -0
  93. package/fixtures/sections/slide.liquid +719 -0
  94. package/fixtures/sections/three_images.liquid +157 -0
  95. package/fixtures/sections/two_images.liquid +125 -0
  96. package/fixtures/sections/video.liquid +95 -0
  97. package/fixtures/sections/video_text.liquid +128 -0
  98. package/fixtures/snippets/bgset.liquid +21 -0
  99. package/fixtures/snippets/card_title.liquid +8 -0
  100. package/fixtures/snippets/cart_modal.liquid +74 -0
  101. package/fixtures/snippets/collection.liquid +77 -0
  102. package/fixtures/snippets/collection_filter_modal.liquid +56 -0
  103. package/fixtures/snippets/default_image_4.liquid +14 -0
  104. package/fixtures/snippets/default_image_6.liquid +18 -0
  105. package/fixtures/snippets/default_image_8.liquid +23 -0
  106. package/fixtures/snippets/four_images_item.liquid +8 -0
  107. package/fixtures/snippets/header_ads.liquid +95 -0
  108. package/fixtures/snippets/hero_image.liquid +94 -0
  109. package/fixtures/snippets/icon_video_play_large.liquid +1 -0
  110. package/fixtures/snippets/icon_video_play_medium.liquid +4 -0
  111. package/fixtures/snippets/icon_video_play_small.liquid +4 -0
  112. package/fixtures/snippets/lazyimg.liquid +22 -0
  113. package/fixtures/snippets/lazyimg_art.liquid +36 -0
  114. package/fixtures/snippets/lazysizes.liquid +41 -0
  115. package/fixtures/snippets/link.liquid +2 -0
  116. package/fixtures/snippets/pagination.liquid +48 -0
  117. package/fixtures/snippets/product.liquid +126 -0
  118. package/fixtures/snippets/product_art_tpl.liquid +152 -0
  119. package/fixtures/snippets/product_info_body.liquid +337 -0
  120. package/fixtures/snippets/product_info_tpl.liquid +423 -0
  121. package/fixtures/snippets/product_label.liquid +46 -0
  122. package/fixtures/snippets/settings.liquid +295 -0
  123. package/fixtures/snippets/social-meta-tags.liquid +106 -0
  124. package/fixtures/snippets/video_html.liquid +11 -0
  125. package/fixtures/snippets/video_source.liquid +98 -0
  126. package/fixtures/snippets/video_thumb_icon.liquid +2 -0
  127. package/fixtures/templates/404.liquid +1 -0
  128. package/fixtures/templates/collection.liquid +92 -0
  129. package/fixtures/templates/index.liquid +206 -0
  130. package/fixtures/templates/page.liquid +1 -0
  131. package/fixtures/templates/product.liquid +99 -0
  132. package/fixtures/templates/search.liquid +1 -0
  133. package/jest.config.js +192 -0
  134. package/lib/__tests__/log.test.js +15 -0
  135. package/lib/__tests__/utils.test.js +69 -0
  136. package/lib/auth/__mocks__/getCode.js +7 -0
  137. package/lib/auth/__mocks__/index.js +0 -0
  138. package/lib/auth/child.js +23 -0
  139. package/lib/auth/getCode.js +35 -0
  140. package/lib/auth/index.js +91 -0
  141. package/lib/commands/__tests__/login.test.js +77 -0
  142. package/lib/commands/__tests__/logout.test.js +29 -0
  143. package/lib/commands/__tests__/store.test.js +44 -0
  144. package/lib/commands/__tests__/switch.test.js +45 -0
  145. package/lib/commands/login.js +99 -0
  146. package/lib/commands/logout.js +14 -0
  147. package/lib/commands/store.js +14 -0
  148. package/lib/commands/switch.js +52 -0
  149. package/lib/commands/theme/__tests__/delete.test.js +49 -0
  150. package/lib/commands/theme/__tests__/init.test.js +21 -0
  151. package/lib/commands/theme/__tests__/list.test.js +80 -0
  152. package/lib/commands/theme/__tests__/package.test.js +17 -0
  153. package/lib/commands/theme/__tests__/publish.test.js +61 -0
  154. package/lib/commands/theme/__tests__/pull.test.js +69 -0
  155. package/lib/commands/theme/__tests__/push.test.js +63 -0
  156. package/lib/commands/theme/__tests__/serve.test.js +107 -0
  157. package/lib/commands/theme/delete.js +64 -0
  158. package/lib/commands/theme/init.js +51 -0
  159. package/lib/commands/theme/list.js +28 -0
  160. package/lib/commands/theme/package.js +37 -0
  161. package/lib/commands/theme/publish.js +56 -0
  162. package/lib/commands/theme/pull.js +62 -0
  163. package/lib/commands/theme/push.js +106 -0
  164. package/lib/commands/theme/serve.js +153 -0
  165. package/lib/commands/theme/share.js +20 -0
  166. package/lib/commands/version.js +6 -0
  167. package/lib/config.js +5 -0
  168. package/lib/db/__mocks__/index.js +9 -0
  169. package/lib/db/__tests__/analytics.test.js +19 -0
  170. package/lib/db/__tests__/user.test.js +20 -0
  171. package/lib/db/analytics.js +48 -0
  172. package/lib/db/index.js +9 -0
  173. package/lib/db/user.js +68 -0
  174. package/lib/log.js +13 -0
  175. package/lib/openAPI/__mocks__/index.js +20 -0
  176. package/lib/openAPI/api.js +76 -0
  177. package/lib/openAPI/index.js +46 -0
  178. package/lib/report.js +37 -0
  179. package/lib/tracing.js +50 -0
  180. package/lib/utils.js +48 -0
  181. package/package.json +54 -0
package/lib/tracing.js ADDED
@@ -0,0 +1,50 @@
1
+ const axios = require('axios');
2
+ const Sentry = require('@sentry/node');
3
+ const Tracing = require('@sentry/tracing');
4
+
5
+ const map = new Map();
6
+ const generatorTransactionName = (config) => {
7
+ try {
8
+ return `${config.method.toUpperCase()}-${config.url}-${JSON.stringify(config.params)}-${JSON.stringify(
9
+ config.data
10
+ )}`;
11
+ } catch (err) {
12
+ Sentry.captureException(err);
13
+ return `${config.method.toUpperCase()}-${config.url}`;
14
+ }
15
+ };
16
+
17
+ axios.interceptors.request.use((config) => {
18
+ try {
19
+ Sentry.configureScope((scope) => {
20
+ const transaction = Sentry.startTransaction({
21
+ op: 'transaction',
22
+ name: generatorTransactionName(config)
23
+ });
24
+ map.set(generatorTransactionName(config), transaction);
25
+ scope.setSpan(transaction);
26
+ });
27
+ } catch (err) {
28
+ Sentry.captureException(err);
29
+ }
30
+
31
+ return config;
32
+ });
33
+
34
+ axios.interceptors.response.use(
35
+ function (response) {
36
+ try {
37
+ const key = generatorTransactionName(response.config);
38
+ const transaction = map.get(key);
39
+ transaction.finish();
40
+ map.delete(key);
41
+ } catch (err) {
42
+ Sentry.captureException(err);
43
+ }
44
+ return response;
45
+ },
46
+ function (error) {
47
+ Sentry.captureException(error);
48
+ return Promise.reject(error);
49
+ }
50
+ );
package/lib/utils.js ADDED
@@ -0,0 +1,48 @@
1
+ const path = require('path');
2
+ const fs = require('fs-extra');
3
+ const AdmZip = require('adm-zip');
4
+ const chalk = require('chalk');
5
+
6
+ exports.unzipTheme = (zipPath, outputPath) => {
7
+ const zip = new AdmZip(zipPath);
8
+ const zipEntries = zip.getEntries();
9
+ const innerName = zipEntries[0].entryName.split('/')[0];
10
+ fs.emptyDirSync(outputPath);
11
+ zipEntries.forEach((entry) => {
12
+ zip.extractEntryTo(
13
+ entry,
14
+ path.join(outputPath, entry.entryName.replace(`${innerName}`, '').replace(path.basename(entry.entryName), '')),
15
+ false,
16
+ true
17
+ );
18
+ });
19
+ fs.removeSync(zipPath);
20
+ };
21
+
22
+ exports.zipTheme = (filePath, themeName) => {
23
+ const zip = new AdmZip();
24
+ zip.addLocalFolder(filePath, themeName);
25
+ zip.writeZip(`${process.cwd()}/${themeName}.zip`);
26
+ };
27
+
28
+ exports.getThemeFilenameTypeAndLocation = (filename) => {
29
+ const result = filename.split(path.sep);
30
+ const location = result.pop();
31
+ const type = result.pop();
32
+ return {
33
+ type,
34
+ location
35
+ };
36
+ };
37
+
38
+ exports.formatThemeList = (themes, defaultThemeId) => {
39
+ return themes.map((theme) => ({
40
+ ...theme,
41
+ name: `${theme.name} (${theme.id ? chalk.green(theme.id) : ''}) ${
42
+ theme.id === defaultThemeId ? chalk.green('[live]') : chalk.yellow('[unpublished]')
43
+ }`,
44
+ value: theme.id
45
+ }));
46
+ };
47
+
48
+ exports.sleep = (time) => new Promise((resolve) => setTimeout(resolve, time));
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "shoplazza-cli",
3
+ "version": "0.0.1",
4
+ "title": "Shoplazza CLI",
5
+ "description": "Shoplazza CLI is a command-line interface tool that helps you build Shoplazza themes. It quickly generates Shoplazza themes. You can also use it to automate many common development tasks.",
6
+ "main": "bin/shoplazza",
7
+ "engines": {
8
+ "node": ">=14.14.0"
9
+ },
10
+ "bin": {
11
+ "shoplazza": "bin/shoplazza"
12
+ },
13
+ "scripts": {
14
+ "prettier": "prettier --write ./lib",
15
+ "test": "jest --runInBand --forceExit"
16
+ },
17
+ "homepage": "https://github.com/Shoplazza/shoplazza-cli",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/Shoplazza/shoplazza-cli"
21
+ },
22
+ "keywords": [
23
+ "shoplazza",
24
+ "cli",
25
+ "developer",
26
+ "theme"
27
+ ],
28
+ "author": "Shoplazza",
29
+ "license": "MIT",
30
+ "devDependencies": {
31
+ "axios-mock-adapter": "^1.20.0",
32
+ "jest": "^28.1.0",
33
+ "prettier": "2.6.2"
34
+ },
35
+ "dependencies": {
36
+ "@sentry/node": "^6.19.7",
37
+ "@sentry/tracing": "^6.19.7",
38
+ "adm-zip": "^0.5.9",
39
+ "axios": "^0.27.1",
40
+ "better-sqlite3": "^7.5.1",
41
+ "chalk": "^4.1.2",
42
+ "commander": "^9.2.0",
43
+ "execa": "^5.1.1",
44
+ "form-data": "^4.0.0",
45
+ "fs-extra": "^10.1.0",
46
+ "inquirer": "^8.2.3",
47
+ "livereload": "^0.9.3",
48
+ "node-watch": "^0.7.3",
49
+ "open": "^8.4.0",
50
+ "ora": "^5.4.1",
51
+ "update-notifier": "^5.1.0",
52
+ "yargs": "^17.5.0"
53
+ }
54
+ }