@akinon/projectzero 1.29.0-rc.2 → 1.30.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 (508) hide show
  1. package/CHANGELOG.md +5 -7
  2. package/commands/create.ts +118 -49
  3. package/commands/plugins.ts +36 -0
  4. package/dist/commands/create.js +68 -32
  5. package/dist/commands/plugins.js +20 -0
  6. package/package.json +2 -1
  7. package/tsconfig.json +8 -9
  8. package/app-template/.editorconfig +0 -7
  9. package/app-template/.env.example +0 -9
  10. package/app-template/.eslintignore +0 -1
  11. package/app-template/.eslintrc.js +0 -31
  12. package/app-template/.gitattributes +0 -18
  13. package/app-template/.husky/pre-commit +0 -4
  14. package/app-template/.lintstagedrc.js +0 -12
  15. package/app-template/.prettierrc +0 -13
  16. package/app-template/.releaserc.json +0 -49
  17. package/app-template/.stylelintrc.json +0 -37
  18. package/app-template/.vscode/extensions.json +0 -11
  19. package/app-template/.vscode/launch.json +0 -29
  20. package/app-template/.yarnrc +0 -1
  21. package/app-template/CHANGELOG.md +0 -564
  22. package/app-template/LICENSE +0 -21
  23. package/app-template/Procfile +0 -1
  24. package/app-template/README.md +0 -29
  25. package/app-template/akinon.json +0 -28
  26. package/app-template/bitbucket-pipelines.yml +0 -54
  27. package/app-template/build.sh +0 -7
  28. package/app-template/docs/CHANGELOG.md +0 -85
  29. package/app-template/docs/advanced-usage.md +0 -43
  30. package/app-template/docs/basic-setup.md +0 -59
  31. package/app-template/docs/data-fetching/client/account.md +0 -1064
  32. package/app-template/docs/data-fetching/client/address.md +0 -805
  33. package/app-template/docs/data-fetching/client/basket.md +0 -107
  34. package/app-template/docs/data-fetching/client/checkout.md +0 -904
  35. package/app-template/docs/data-fetching/client/misc.md +0 -135
  36. package/app-template/docs/data-fetching/client/product.md +0 -284
  37. package/app-template/docs/data-fetching/client/user.md +0 -56
  38. package/app-template/docs/data-fetching/client/wishlist.md +0 -111
  39. package/app-template/docs/data-fetching/server/category.md +0 -324
  40. package/app-template/docs/data-fetching/server/flat-page.md +0 -42
  41. package/app-template/docs/data-fetching/server/list.md +0 -353
  42. package/app-template/docs/data-fetching/server/menu.md +0 -363
  43. package/app-template/docs/data-fetching/server/product.md +0 -131
  44. package/app-template/docs/data-fetching/server/seo.md +0 -44
  45. package/app-template/docs/data-fetching/server/special-page.md +0 -79
  46. package/app-template/docs/data-fetching/server/widget.md +0 -218
  47. package/app-template/docs/delete-account.md +0 -25
  48. package/app-template/docs/deployment.md +0 -46
  49. package/app-template/docs/dynamic-route.md +0 -33
  50. package/app-template/docs/icons.md +0 -52
  51. package/app-template/docs/localization.md +0 -204
  52. package/app-template/docs/logging.md +0 -48
  53. package/app-template/docs/plugins.md +0 -76
  54. package/app-template/docs/seo-management.md +0 -125
  55. package/app-template/docs/static-assets.md +0 -36
  56. package/app-template/docs/widgets.md +0 -127
  57. package/app-template/global.d.ts +0 -1
  58. package/app-template/jest.config.ts +0 -34
  59. package/app-template/next-env.d.ts +0 -6
  60. package/app-template/next.config.mjs +0 -34
  61. package/app-template/package.json +0 -96
  62. package/app-template/plugins.d.ts +0 -1
  63. package/app-template/postcss.config.js +0 -6
  64. package/app-template/public/404.png +0 -0
  65. package/app-template/public/500.png +0 -0
  66. package/app-template/public/apple-splash-1125-2436.jpg +0 -0
  67. package/app-template/public/apple-splash-1136-640.jpg +0 -0
  68. package/app-template/public/apple-splash-1170-2532.jpg +0 -0
  69. package/app-template/public/apple-splash-1242-2208.jpg +0 -0
  70. package/app-template/public/apple-splash-1242-2688.jpg +0 -0
  71. package/app-template/public/apple-splash-1284-2778.jpg +0 -0
  72. package/app-template/public/apple-splash-1334-750.jpg +0 -0
  73. package/app-template/public/apple-splash-1536-2048.jpg +0 -0
  74. package/app-template/public/apple-splash-1620-2160.jpg +0 -0
  75. package/app-template/public/apple-splash-1668-2224.jpg +0 -0
  76. package/app-template/public/apple-splash-1668-2388.jpg +0 -0
  77. package/app-template/public/apple-splash-1792-828.jpg +0 -0
  78. package/app-template/public/apple-splash-2048-1536.jpg +0 -0
  79. package/app-template/public/apple-splash-2048-2732.jpg +0 -0
  80. package/app-template/public/apple-splash-2160-1620.jpg +0 -0
  81. package/app-template/public/apple-splash-2208-1242.jpg +0 -0
  82. package/app-template/public/apple-splash-2224-1668.jpg +0 -0
  83. package/app-template/public/apple-splash-2388-1668.jpg +0 -0
  84. package/app-template/public/apple-splash-2436-1125.jpg +0 -0
  85. package/app-template/public/apple-splash-2532-1170.jpg +0 -0
  86. package/app-template/public/apple-splash-2688-1242.jpg +0 -0
  87. package/app-template/public/apple-splash-2732-2048.jpg +0 -0
  88. package/app-template/public/apple-splash-2778-1284.jpg +0 -0
  89. package/app-template/public/apple-splash-640-1136.jpg +0 -0
  90. package/app-template/public/apple-splash-750-1334.jpg +0 -0
  91. package/app-template/public/apple-splash-828-1792.jpg +0 -0
  92. package/app-template/public/apple-touch-icon-152x152.png +0 -0
  93. package/app-template/public/apple-touch-icon-167x167.png +0 -0
  94. package/app-template/public/apple-touch-icon-180x180.png +0 -0
  95. package/app-template/public/apple-touch-icon.png +0 -0
  96. package/app-template/public/apple.svg +0 -47
  97. package/app-template/public/cvv.jpg +0 -0
  98. package/app-template/public/facebook.svg +0 -3
  99. package/app-template/public/google.svg +0 -12
  100. package/app-template/public/icon-192x192.png +0 -0
  101. package/app-template/public/icon-256x256.png +0 -0
  102. package/app-template/public/icon-384x384.png +0 -0
  103. package/app-template/public/icon-512x512.png +0 -0
  104. package/app-template/public/icon-sprite.svg +0 -528
  105. package/app-template/public/locales/en/account.json +0 -487
  106. package/app-template/public/locales/en/auth.json +0 -100
  107. package/app-template/public/locales/en/basket.json +0 -50
  108. package/app-template/public/locales/en/category.json +0 -26
  109. package/app-template/public/locales/en/checkout.json +0 -152
  110. package/app-template/public/locales/en/common.json +0 -65
  111. package/app-template/public/locales/en/forgot_password.json +0 -41
  112. package/app-template/public/locales/en/form.json +0 -5
  113. package/app-template/public/locales/en/product.json +0 -39
  114. package/app-template/public/locales/tr/account.json +0 -487
  115. package/app-template/public/locales/tr/auth.json +0 -100
  116. package/app-template/public/locales/tr/basket.json +0 -50
  117. package/app-template/public/locales/tr/category.json +0 -26
  118. package/app-template/public/locales/tr/checkout.json +0 -152
  119. package/app-template/public/locales/tr/common.json +0 -65
  120. package/app-template/public/locales/tr/forgot_password.json +0 -41
  121. package/app-template/public/locales/tr/form.json +0 -5
  122. package/app-template/public/locales/tr/product.json +0 -39
  123. package/app-template/public/logo.svg +0 -29
  124. package/app-template/public/manifest.json +0 -35
  125. package/app-template/public/mastercard.png +0 -0
  126. package/app-template/public/mastersecure.png +0 -0
  127. package/app-template/public/mfs-client.min.js +0 -3
  128. package/app-template/public/noimage.jpg +0 -0
  129. package/app-template/public/safari-pinned-tab.svg +0 -320
  130. package/app-template/public/ssl-secure.png +0 -0
  131. package/app-template/public/vbv.png +0 -0
  132. package/app-template/public/visa.png +0 -0
  133. package/app-template/public/zepto.min.js +0 -2
  134. package/app-template/sentry.client.config.ts +0 -16
  135. package/app-template/sentry.edge.config.ts +0 -3
  136. package/app-template/sentry.properties +0 -4
  137. package/app-template/sentry.server.config.ts +0 -3
  138. package/app-template/setupTests.ts +0 -4
  139. package/app-template/src/__tests__/index.test.tsx +0 -7
  140. package/app-template/src/__tests__/tsconfig.json +0 -7
  141. package/app-template/src/app/[commerce]/[locale]/[currency]/account/address/page.tsx +0 -74
  142. package/app-template/src/app/[commerce]/[locale]/[currency]/account/change-email/page.tsx +0 -174
  143. package/app-template/src/app/[commerce]/[locale]/[currency]/account/change-password/page.tsx +0 -206
  144. package/app-template/src/app/[commerce]/[locale]/[currency]/account/contact/page.tsx +0 -7
  145. package/app-template/src/app/[commerce]/[locale]/[currency]/account/coupons/page.tsx +0 -210
  146. package/app-template/src/app/[commerce]/[locale]/[currency]/account/email-verification/page.tsx +0 -5
  147. package/app-template/src/app/[commerce]/[locale]/[currency]/account/faq/page.tsx +0 -23
  148. package/app-template/src/app/[commerce]/[locale]/[currency]/account/favourite-products/page.tsx +0 -32
  149. package/app-template/src/app/[commerce]/[locale]/[currency]/account/layout.tsx +0 -28
  150. package/app-template/src/app/[commerce]/[locale]/[currency]/account/my-quotations/page.tsx +0 -7
  151. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/cancellation/page.tsx +0 -255
  152. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/layout.tsx +0 -5
  153. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/page.tsx +0 -309
  154. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/page.tsx +0 -137
  155. package/app-template/src/app/[commerce]/[locale]/[currency]/account/page.tsx +0 -226
  156. package/app-template/src/app/[commerce]/[locale]/[currency]/account/profile/page.tsx +0 -399
  157. package/app-template/src/app/[commerce]/[locale]/[currency]/address/stores/page.tsx +0 -271
  158. package/app-template/src/app/[commerce]/[locale]/[currency]/anonymous-tracking/page.tsx +0 -33
  159. package/app-template/src/app/[commerce]/[locale]/[currency]/auth/oauth-login/page.tsx +0 -3
  160. package/app-template/src/app/[commerce]/[locale]/[currency]/auth/page.tsx +0 -76
  161. package/app-template/src/app/[commerce]/[locale]/[currency]/basket/page.tsx +0 -77
  162. package/app-template/src/app/[commerce]/[locale]/[currency]/basket-b2b/page.tsx +0 -7
  163. package/app-template/src/app/[commerce]/[locale]/[currency]/category/[pk]/loading.tsx +0 -53
  164. package/app-template/src/app/[commerce]/[locale]/[currency]/category/[pk]/page.tsx +0 -16
  165. package/app-template/src/app/[commerce]/[locale]/[currency]/client-root.tsx +0 -9
  166. package/app-template/src/app/[commerce]/[locale]/[currency]/contact-us/page.tsx +0 -11
  167. package/app-template/src/app/[commerce]/[locale]/[currency]/error.tsx +0 -20
  168. package/app-template/src/app/[commerce]/[locale]/[currency]/flat-page/[pk]/loading.tsx +0 -5
  169. package/app-template/src/app/[commerce]/[locale]/[currency]/flat-page/[pk]/page.tsx +0 -18
  170. package/app-template/src/app/[commerce]/[locale]/[currency]/forms/[pk]/generate/page.tsx +0 -48
  171. package/app-template/src/app/[commerce]/[locale]/[currency]/group-product/[pk]/loading.tsx +0 -5
  172. package/app-template/src/app/[commerce]/[locale]/[currency]/group-product/[pk]/page.tsx +0 -72
  173. package/app-template/src/app/[commerce]/[locale]/[currency]/landing-page/[pk]/loading.tsx +0 -5
  174. package/app-template/src/app/[commerce]/[locale]/[currency]/landing-page/[pk]/page.tsx +0 -23
  175. package/app-template/src/app/[commerce]/[locale]/[currency]/layout.tsx +0 -78
  176. package/app-template/src/app/[commerce]/[locale]/[currency]/list/loading.tsx +0 -53
  177. package/app-template/src/app/[commerce]/[locale]/[currency]/list/page.tsx +0 -16
  178. package/app-template/src/app/[commerce]/[locale]/[currency]/orders/checkout/page.tsx +0 -140
  179. package/app-template/src/app/[commerce]/[locale]/[currency]/orders/completed/[token]/layout.tsx +0 -5
  180. package/app-template/src/app/[commerce]/[locale]/[currency]/orders/completed/[token]/page.tsx +0 -285
  181. package/app-template/src/app/[commerce]/[locale]/[currency]/page.tsx +0 -50
  182. package/app-template/src/app/[commerce]/[locale]/[currency]/product/[pk]/loading.tsx +0 -67
  183. package/app-template/src/app/[commerce]/[locale]/[currency]/product/[pk]/page.tsx +0 -81
  184. package/app-template/src/app/[commerce]/[locale]/[currency]/special-page/[pk]/loading.tsx +0 -53
  185. package/app-template/src/app/[commerce]/[locale]/[currency]/special-page/[pk]/page.tsx +0 -25
  186. package/app-template/src/app/[commerce]/[locale]/[currency]/template.tsx +0 -75
  187. package/app-template/src/app/[commerce]/[locale]/[currency]/users/email-set-primary/[[...id]]/page.tsx +0 -43
  188. package/app-template/src/app/[commerce]/[locale]/[currency]/users/password/reset/page.tsx +0 -79
  189. package/app-template/src/app/[commerce]/[locale]/[currency]/users/registration/account-confirm-email/[[...id]]/page.tsx +0 -43
  190. package/app-template/src/app/[commerce]/[locale]/[currency]/users/reset/[[...id]]/page.tsx +0 -110
  191. package/app-template/src/app/[commerce]/[locale]/[currency]/xml-sitemap/[node]/route.ts +0 -25
  192. package/app-template/src/app/[commerce]/[locale]/[currency]/xml-sitemap/route.ts +0 -37
  193. package/app-template/src/app/api/cache/route.ts +0 -1
  194. package/app-template/src/app/api/client/[...slug]/route.ts +0 -1
  195. package/app-template/src/app/api/form/[...id]/route.ts +0 -7
  196. package/app-template/src/app/api/logout/route.ts +0 -1
  197. package/app-template/src/app/api/sentry/route.ts +0 -9
  198. package/app-template/src/app/api/web-vitals/route.ts +0 -1
  199. package/app-template/src/app/favicon.ico +0 -0
  200. package/app-template/src/assets/fonts/Jost/Jost-Black.eot +0 -0
  201. package/app-template/src/assets/fonts/Jost/Jost-Black.ttf +0 -0
  202. package/app-template/src/assets/fonts/Jost/Jost-Black.woff +0 -0
  203. package/app-template/src/assets/fonts/Jost/Jost-Black.woff2 +0 -0
  204. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.eot +0 -0
  205. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.ttf +0 -0
  206. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.woff +0 -0
  207. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.woff2 +0 -0
  208. package/app-template/src/assets/fonts/Jost/Jost-Bold.eot +0 -0
  209. package/app-template/src/assets/fonts/Jost/Jost-Bold.ttf +0 -0
  210. package/app-template/src/assets/fonts/Jost/Jost-Bold.woff +0 -0
  211. package/app-template/src/assets/fonts/Jost/Jost-Bold.woff2 +0 -0
  212. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.eot +0 -0
  213. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.ttf +0 -0
  214. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.woff +0 -0
  215. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.woff2 +0 -0
  216. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.eot +0 -0
  217. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.ttf +0 -0
  218. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.woff +0 -0
  219. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.woff2 +0 -0
  220. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.eot +0 -0
  221. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.ttf +0 -0
  222. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.woff +0 -0
  223. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.woff2 +0 -0
  224. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.eot +0 -0
  225. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.ttf +0 -0
  226. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.woff +0 -0
  227. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.woff2 +0 -0
  228. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.eot +0 -0
  229. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.ttf +0 -0
  230. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.woff +0 -0
  231. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.woff2 +0 -0
  232. package/app-template/src/assets/fonts/Jost/Jost-Italic.eot +0 -0
  233. package/app-template/src/assets/fonts/Jost/Jost-Italic.ttf +0 -0
  234. package/app-template/src/assets/fonts/Jost/Jost-Italic.woff +0 -0
  235. package/app-template/src/assets/fonts/Jost/Jost-Italic.woff2 +0 -0
  236. package/app-template/src/assets/fonts/Jost/Jost-Light.eot +0 -0
  237. package/app-template/src/assets/fonts/Jost/Jost-Light.ttf +0 -0
  238. package/app-template/src/assets/fonts/Jost/Jost-Light.woff +0 -0
  239. package/app-template/src/assets/fonts/Jost/Jost-Light.woff2 +0 -0
  240. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.eot +0 -0
  241. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.ttf +0 -0
  242. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.woff +0 -0
  243. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.woff2 +0 -0
  244. package/app-template/src/assets/fonts/Jost/Jost-Medium.eot +0 -0
  245. package/app-template/src/assets/fonts/Jost/Jost-Medium.ttf +0 -0
  246. package/app-template/src/assets/fonts/Jost/Jost-Medium.woff +0 -0
  247. package/app-template/src/assets/fonts/Jost/Jost-Medium.woff2 +0 -0
  248. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.eot +0 -0
  249. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.ttf +0 -0
  250. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.woff +0 -0
  251. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.woff2 +0 -0
  252. package/app-template/src/assets/fonts/Jost/Jost-Regular.eot +0 -0
  253. package/app-template/src/assets/fonts/Jost/Jost-Regular.ttf +0 -0
  254. package/app-template/src/assets/fonts/Jost/Jost-Regular.woff +0 -0
  255. package/app-template/src/assets/fonts/Jost/Jost-Regular.woff2 +0 -0
  256. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.eot +0 -0
  257. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.ttf +0 -0
  258. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.woff +0 -0
  259. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.woff2 +0 -0
  260. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.eot +0 -0
  261. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.ttf +0 -0
  262. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.woff +0 -0
  263. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.woff2 +0 -0
  264. package/app-template/src/assets/fonts/Jost/Jost-Thin.eot +0 -0
  265. package/app-template/src/assets/fonts/Jost/Jost-Thin.ttf +0 -0
  266. package/app-template/src/assets/fonts/Jost/Jost-Thin.woff +0 -0
  267. package/app-template/src/assets/fonts/Jost/Jost-Thin.woff2 +0 -0
  268. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.eot +0 -0
  269. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.ttf +0 -0
  270. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.woff +0 -0
  271. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.woff2 +0 -0
  272. package/app-template/src/assets/fonts/Jost/index.scss +0 -269
  273. package/app-template/src/assets/fonts/index.scss +0 -1
  274. package/app-template/src/assets/fonts/pz-icon.css +0 -154
  275. package/app-template/src/assets/fonts/pz-icon.eot +0 -0
  276. package/app-template/src/assets/fonts/pz-icon.html +0 -456
  277. package/app-template/src/assets/fonts/pz-icon.scss +0 -300
  278. package/app-template/src/assets/fonts/pz-icon.svg +0 -144
  279. package/app-template/src/assets/fonts/pz-icon.ttf +0 -0
  280. package/app-template/src/assets/fonts/pz-icon.woff +0 -0
  281. package/app-template/src/assets/fonts/pz-icon.woff2 +0 -0
  282. package/app-template/src/assets/globals.scss +0 -65
  283. package/app-template/src/assets/icons/akinon.svg +0 -11
  284. package/app-template/src/assets/icons/arrow-up.svg +0 -11
  285. package/app-template/src/assets/icons/bell.svg +0 -1
  286. package/app-template/src/assets/icons/cart.svg +0 -13
  287. package/app-template/src/assets/icons/check.svg +0 -19
  288. package/app-template/src/assets/icons/chevron-down.svg +0 -8
  289. package/app-template/src/assets/icons/chevron-end.svg +0 -8
  290. package/app-template/src/assets/icons/chevron-start.svg +0 -8
  291. package/app-template/src/assets/icons/chevron-up.svg +0 -8
  292. package/app-template/src/assets/icons/close.svg +0 -12
  293. package/app-template/src/assets/icons/cvc.svg +0 -54
  294. package/app-template/src/assets/icons/default.svg +0 -6
  295. package/app-template/src/assets/icons/directions.svg +0 -14
  296. package/app-template/src/assets/icons/eye-off.svg +0 -10
  297. package/app-template/src/assets/icons/eye-on.svg +0 -17
  298. package/app-template/src/assets/icons/facebook-login.svg +0 -11
  299. package/app-template/src/assets/icons/facebook.svg +0 -9
  300. package/app-template/src/assets/icons/giftbox.svg +0 -22
  301. package/app-template/src/assets/icons/globe.svg +0 -12
  302. package/app-template/src/assets/icons/google-login.svg +0 -19
  303. package/app-template/src/assets/icons/google.svg +0 -9
  304. package/app-template/src/assets/icons/hamburger.svg +0 -5
  305. package/app-template/src/assets/icons/heart-full.svg +0 -20
  306. package/app-template/src/assets/icons/heart-stroke.svg +0 -22
  307. package/app-template/src/assets/icons/info.svg +0 -1
  308. package/app-template/src/assets/icons/instagram.svg +0 -14
  309. package/app-template/src/assets/icons/layout-2.svg +0 -7
  310. package/app-template/src/assets/icons/layout-3.svg +0 -4
  311. package/app-template/src/assets/icons/logo.svg +0 -24
  312. package/app-template/src/assets/icons/mail.svg +0 -1
  313. package/app-template/src/assets/icons/minus.svg +0 -4
  314. package/app-template/src/assets/icons/money.svg +0 -4
  315. package/app-template/src/assets/icons/mp-otp.svg +0 -1
  316. package/app-template/src/assets/icons/pin.svg +0 -16
  317. package/app-template/src/assets/icons/pinterest.svg +0 -12
  318. package/app-template/src/assets/icons/plus.svg +0 -5
  319. package/app-template/src/assets/icons/search.svg +0 -13
  320. package/app-template/src/assets/icons/share.svg +0 -10
  321. package/app-template/src/assets/icons/spinner.svg +0 -6
  322. package/app-template/src/assets/icons/store-pin.svg +0 -14
  323. package/app-template/src/assets/icons/track-order.svg +0 -1
  324. package/app-template/src/assets/icons/twitter.svg +0 -11
  325. package/app-template/src/assets/icons/user.svg +0 -14
  326. package/app-template/src/assets/icons/whatsapp.svg +0 -45
  327. package/app-template/src/components/__tests__/Modal.test.tsx +0 -103
  328. package/app-template/src/components/__tests__/accordion.test.tsx +0 -65
  329. package/app-template/src/components/__tests__/badge.test.tsx +0 -20
  330. package/app-template/src/components/__tests__/button.test.tsx +0 -59
  331. package/app-template/src/components/__tests__/checkbox.test.tsx +0 -57
  332. package/app-template/src/components/__tests__/file-input.test.tsx +0 -42
  333. package/app-template/src/components/__tests__/icon.test.tsx +0 -39
  334. package/app-template/src/components/__tests__/input.test.tsx +0 -69
  335. package/app-template/src/components/__tests__/language-select.test.tsx +0 -81
  336. package/app-template/src/components/__tests__/link.test.tsx +0 -65
  337. package/app-template/src/components/__tests__/price.test.tsx +0 -72
  338. package/app-template/src/components/__tests__/radio.test.tsx +0 -52
  339. package/app-template/src/components/__tests__/select.test.tsx +0 -115
  340. package/app-template/src/components/__tests__/tab.test.tsx +0 -101
  341. package/app-template/src/components/accordion.tsx +0 -64
  342. package/app-template/src/components/badge.tsx +0 -21
  343. package/app-template/src/components/button.tsx +0 -46
  344. package/app-template/src/components/canonical-url.tsx +0 -21
  345. package/app-template/src/components/carousel-core.tsx +0 -42
  346. package/app-template/src/components/checkbox.tsx +0 -28
  347. package/app-template/src/components/currency-select.tsx +0 -81
  348. package/app-template/src/components/custom-loader.tsx +0 -21
  349. package/app-template/src/components/dynamic-form.tsx +0 -17
  350. package/app-template/src/components/file-input.tsx +0 -8
  351. package/app-template/src/components/generate-form-fields.tsx +0 -349
  352. package/app-template/src/components/icon.tsx +0 -18
  353. package/app-template/src/components/index.ts +0 -41
  354. package/app-template/src/components/input.tsx +0 -110
  355. package/app-template/src/components/language-select.tsx +0 -33
  356. package/app-template/src/components/link.tsx +0 -53
  357. package/app-template/src/components/loader-spinner.tsx +0 -23
  358. package/app-template/src/components/modal.tsx +0 -66
  359. package/app-template/src/components/pagination.tsx +0 -267
  360. package/app-template/src/components/password-rules-feedback.tsx +0 -60
  361. package/app-template/src/components/price.tsx +0 -54
  362. package/app-template/src/components/pwa-tags.tsx +0 -233
  363. package/app-template/src/components/radio.tsx +0 -18
  364. package/app-template/src/components/react-portal.tsx +0 -47
  365. package/app-template/src/components/select.tsx +0 -70
  366. package/app-template/src/components/shimmer.tsx +0 -21
  367. package/app-template/src/components/skeleton-article.tsx +0 -15
  368. package/app-template/src/components/skeleton-product.tsx +0 -14
  369. package/app-template/src/components/skeleton-profile.tsx +0 -19
  370. package/app-template/src/components/skeleton-wrapper.tsx +0 -19
  371. package/app-template/src/components/skeleton.tsx +0 -37
  372. package/app-template/src/components/source.tsx +0 -12
  373. package/app-template/src/components/tab-panel.tsx +0 -10
  374. package/app-template/src/components/tab.tsx +0 -58
  375. package/app-template/src/components/tabs.tsx +0 -58
  376. package/app-template/src/components/types/index.ts +0 -89
  377. package/app-template/src/hooks/index.ts +0 -1
  378. package/app-template/src/hooks/use-add-product-to-basket.ts +0 -48
  379. package/app-template/src/hooks/use-contract.tsx +0 -58
  380. package/app-template/src/hooks/use-fav-button.tsx +0 -99
  381. package/app-template/src/instrumentation.ts +0 -1
  382. package/app-template/src/middleware.ts +0 -33
  383. package/app-template/src/pages/_error.js +0 -14
  384. package/app-template/src/pages/api/auth/[...nextauth].ts +0 -3
  385. package/app-template/src/plugins.js +0 -14
  386. package/app-template/src/redux/middlewares/category.ts +0 -42
  387. package/app-template/src/redux/reducers/category.ts +0 -67
  388. package/app-template/src/redux/store.ts +0 -47
  389. package/app-template/src/routes/index.ts +0 -46
  390. package/app-template/src/settings.js +0 -62
  391. package/app-template/src/theme.js +0 -1
  392. package/app-template/src/types/index.ts +0 -72
  393. package/app-template/src/types/next-auth.d.ts +0 -24
  394. package/app-template/src/types/widgets.ts +0 -115
  395. package/app-template/src/utils/convert-facet-search-params.ts +0 -15
  396. package/app-template/src/utils/generate-jsonld.ts +0 -23
  397. package/app-template/src/utils/gtm.ts +0 -247
  398. package/app-template/src/utils/index.ts +0 -60
  399. package/app-template/src/views/account/account-menu.tsx +0 -117
  400. package/app-template/src/views/account/address-card.tsx +0 -107
  401. package/app-template/src/views/account/address-form.tsx +0 -374
  402. package/app-template/src/views/account/back-button.tsx +0 -27
  403. package/app-template/src/views/account/contact-form.tsx +0 -283
  404. package/app-template/src/views/account/content-header.tsx +0 -52
  405. package/app-template/src/views/account/faq/faq-footer.tsx +0 -30
  406. package/app-template/src/views/account/faq/faq-search.tsx +0 -35
  407. package/app-template/src/views/account/faq/faq-tabs.tsx +0 -54
  408. package/app-template/src/views/account/faq/index.ts +0 -3
  409. package/app-template/src/views/account/favorite-item.tsx +0 -191
  410. package/app-template/src/views/account/favourite-products/favourite-products-list.tsx +0 -65
  411. package/app-template/src/views/account/index.ts +0 -4
  412. package/app-template/src/views/account/order.tsx +0 -89
  413. package/app-template/src/views/account/orders/order-cancellation-item.tsx +0 -99
  414. package/app-template/src/views/account/orders/order-detail-header.tsx +0 -39
  415. package/app-template/src/views/anonymous-tracking/index.tsx +0 -109
  416. package/app-template/src/views/anonymous-tracking/order-detail/index.tsx +0 -318
  417. package/app-template/src/views/basket/basket-item.tsx +0 -231
  418. package/app-template/src/views/basket/index.ts +0 -2
  419. package/app-template/src/views/basket/summary.tsx +0 -195
  420. package/app-template/src/views/breadcrumb.tsx +0 -35
  421. package/app-template/src/views/category/category-active-filters.tsx +0 -98
  422. package/app-template/src/views/category/category-banner.tsx +0 -34
  423. package/app-template/src/views/category/category-header.tsx +0 -143
  424. package/app-template/src/views/category/category-info.tsx +0 -123
  425. package/app-template/src/views/category/filters/index.tsx +0 -163
  426. package/app-template/src/views/category/filters/size-filter.tsx +0 -27
  427. package/app-template/src/views/category/layout.tsx +0 -38
  428. package/app-template/src/views/checkout/auth.tsx +0 -54
  429. package/app-template/src/views/checkout/index.tsx +0 -3
  430. package/app-template/src/views/checkout/layout/footer.tsx +0 -48
  431. package/app-template/src/views/checkout/layout/header.tsx +0 -38
  432. package/app-template/src/views/checkout/step-button.tsx +0 -69
  433. package/app-template/src/views/checkout/step-list.tsx +0 -51
  434. package/app-template/src/views/checkout/steps/payment/agreements.tsx +0 -42
  435. package/app-template/src/views/checkout/steps/payment/index.tsx +0 -31
  436. package/app-template/src/views/checkout/steps/payment/options/credit-card/index.tsx +0 -382
  437. package/app-template/src/views/checkout/steps/payment/options/credit-card/installments.tsx +0 -100
  438. package/app-template/src/views/checkout/steps/payment/options/credit-payment.tsx +0 -14
  439. package/app-template/src/views/checkout/steps/payment/options/funds-transfer.tsx +0 -174
  440. package/app-template/src/views/checkout/steps/payment/options/loyalty.tsx +0 -19
  441. package/app-template/src/views/checkout/steps/payment/options/pay-on-delivery.tsx +0 -15
  442. package/app-template/src/views/checkout/steps/payment/options/redirection.tsx +0 -94
  443. package/app-template/src/views/checkout/steps/payment/payment-header.tsx +0 -17
  444. package/app-template/src/views/checkout/steps/payment/payment-option-buttons.tsx +0 -73
  445. package/app-template/src/views/checkout/steps/shipping/address-box.tsx +0 -204
  446. package/app-template/src/views/checkout/steps/shipping/addresses.tsx +0 -189
  447. package/app-template/src/views/checkout/steps/shipping/index.tsx +0 -27
  448. package/app-template/src/views/checkout/steps/shipping/shipping-options.tsx +0 -72
  449. package/app-template/src/views/checkout/summary.tsx +0 -181
  450. package/app-template/src/views/coupon-item/index.tsx +0 -80
  451. package/app-template/src/views/find-in-store/index.tsx +0 -183
  452. package/app-template/src/views/footer.tsx +0 -21
  453. package/app-template/src/views/guest-login/index.tsx +0 -130
  454. package/app-template/src/views/header/action-menu.tsx +0 -117
  455. package/app-template/src/views/header/band.tsx +0 -32
  456. package/app-template/src/views/header/index.tsx +0 -66
  457. package/app-template/src/views/header/mini-basket.tsx +0 -267
  458. package/app-template/src/views/header/mobile-hamburger-button.tsx +0 -35
  459. package/app-template/src/views/header/mobile-menu.tsx +0 -144
  460. package/app-template/src/views/header/navbar.tsx +0 -186
  461. package/app-template/src/views/header/pwa-back-button.tsx +0 -60
  462. package/app-template/src/views/header/search/index.tsx +0 -82
  463. package/app-template/src/views/header/search/results.tsx +0 -122
  464. package/app-template/src/views/header/user-menu.tsx +0 -72
  465. package/app-template/src/views/index.tsx +0 -2
  466. package/app-template/src/views/installment-options/index.tsx +0 -127
  467. package/app-template/src/views/login/index.tsx +0 -233
  468. package/app-template/src/views/otp-login/index.tsx +0 -152
  469. package/app-template/src/views/page-loader-spinner/index.tsx +0 -9
  470. package/app-template/src/views/product/accordion-wrapper.tsx +0 -47
  471. package/app-template/src/views/product/combine-product-card.tsx +0 -82
  472. package/app-template/src/views/product/index.ts +0 -8
  473. package/app-template/src/views/product/layout.tsx +0 -40
  474. package/app-template/src/views/product/misc-buttons.tsx +0 -65
  475. package/app-template/src/views/product/price-wrapper.tsx +0 -41
  476. package/app-template/src/views/product/product-group-info.tsx +0 -63
  477. package/app-template/src/views/product/product-info.tsx +0 -253
  478. package/app-template/src/views/product/slider.tsx +0 -92
  479. package/app-template/src/views/product/variant.tsx +0 -104
  480. package/app-template/src/views/product-item/index.tsx +0 -96
  481. package/app-template/src/views/product-pointer-banner-item.tsx +0 -243
  482. package/app-template/src/views/register/index.tsx +0 -417
  483. package/app-template/src/views/root-modal.tsx +0 -21
  484. package/app-template/src/views/sales-contract-modal/index.tsx +0 -288
  485. package/app-template/src/views/share/index.tsx +0 -71
  486. package/app-template/src/views/widgets/home-hero-slider-content.tsx +0 -54
  487. package/app-template/src/views/widgets/recommendation-content.tsx +0 -86
  488. package/app-template/src/widgets/footer-copyright.tsx +0 -25
  489. package/app-template/src/widgets/footer-info.tsx +0 -78
  490. package/app-template/src/widgets/footer-menu.tsx +0 -258
  491. package/app-template/src/widgets/footer-social.tsx +0 -53
  492. package/app-template/src/widgets/footer-subscription/footer-subscription-form.tsx +0 -110
  493. package/app-template/src/widgets/footer-subscription/index.tsx +0 -30
  494. package/app-template/src/widgets/header-band-text.tsx +0 -21
  495. package/app-template/src/widgets/home-discovery.tsx +0 -191
  496. package/app-template/src/widgets/home-hero-slider.tsx +0 -36
  497. package/app-template/src/widgets/home-product-recommendation.tsx +0 -18
  498. package/app-template/src/widgets/home-single-banner.tsx +0 -87
  499. package/app-template/src/widgets/home-stories-eng.tsx +0 -112
  500. package/app-template/src/widgets/index.ts +0 -25
  501. package/app-template/src/widgets/product-pointer-banners.tsx +0 -35
  502. package/app-template/src/widgets/special-page-banner.tsx +0 -49
  503. package/app-template/src/widgets/special-page-carousel.tsx +0 -68
  504. package/app-template/src/widgets/widget-order.tsx +0 -1
  505. package/app-template/tailwind.config.js +0 -170
  506. package/app-template/tsconfig.json +0 -44
  507. package/app-template/tsconfig.test.json +0 -6
  508. package/app-template/yarn.lock +0 -11278
package/CHANGELOG.md CHANGED
@@ -1,18 +1,16 @@
1
1
  # @akinon/projectzero
2
2
 
3
- ## 1.29.0-rc.2
3
+ ## 1.30.0
4
4
 
5
5
  ### Minor Changes
6
6
 
7
- - 495d155: ZERO-2563: The create command cli now doesnt get it from bitbucket but clones the repository from a localized clone version
7
+ - 197d602: ZERO-2459: Warn if akinon-next version is not up to date
8
8
 
9
- ## 1.28.0-rc.1
10
-
11
- ## 1.28.0-rc.0
9
+ ### Patch Changes
12
10
 
13
- ### Minor Changes
11
+ - 073fbd2: ZERO-2503: Add check changeset control script
14
12
 
15
- - 495d155: ZERO-2563: The create command cli now doesnt get it from bitbucket but clones the repository from a localized clone version
13
+ ## 1.29.0
16
14
 
17
15
  ## 1.27.0
18
16
 
@@ -2,9 +2,13 @@ import path from 'path';
2
2
  import * as fs from 'fs';
3
3
  import * as readline from 'readline';
4
4
  import { slugify } from '../utils';
5
+ import temp from 'temp';
5
6
 
7
+ const exec = require('child_process').exec;
6
8
  const loadingSpinner = require('loading-spinner');
7
9
 
10
+ temp.track();
11
+
8
12
  interface Question {
9
13
  text: string;
10
14
  optional: boolean;
@@ -16,6 +20,8 @@ interface Answers {
16
20
  [key: string]: string;
17
21
  }
18
22
 
23
+ const repositorySlug = 'pz-next';
24
+ const tempDirPath = temp.mkdirSync('pz-temp');
19
25
  const workingDir = path.resolve(process.cwd());
20
26
  const rl = readline.createInterface({
21
27
  input: process.stdin,
@@ -23,6 +29,7 @@ const rl = readline.createInterface({
23
29
  });
24
30
 
25
31
  const ANSWERS: Answers = {};
32
+
26
33
  const QUESTIONS: Array<Question> = [
27
34
  {
28
35
  text: 'Brand name',
@@ -75,36 +82,99 @@ const getAnswers = () => {
75
82
  });
76
83
  };
77
84
 
78
- const updateFileContents = (
79
- filePath: string,
80
- replacements: { [key: string]: string }
81
- ): void => {
82
- let content = fs.readFileSync(filePath, { encoding: 'utf8' });
83
- Object.entries(replacements).forEach(([key, value]) => {
84
- if (filePath.endsWith('.json')) {
85
- content = content.replace(
86
- new RegExp(`"${key}":\\s*".*?"`, 'g'),
87
- `"${key}": "${value}"`
88
- );
89
- } else {
90
- content = content.replace(
91
- new RegExp(`^${key}=.*$`, 'gm'),
92
- `${key}=${value}`
93
- );
94
- }
85
+ const cloneRepository = () =>
86
+ new Promise<{ error?: Error }>((resolve) => {
87
+ exec(
88
+ `cd ${tempDirPath} && git clone git@bitbucket.org:akinonteam/${repositorySlug}.git`,
89
+ function (err: any, stdout: any, stderr: any) {
90
+ if (err != null) {
91
+ resolve({ error: new Error(err) });
92
+ } else if (typeof stderr != 'string') {
93
+ resolve({ error: new Error(stderr) });
94
+ } else {
95
+ resolve({});
96
+ }
97
+ }
98
+ );
99
+ });
100
+
101
+ const updatePackageJson = (brandName: string) => {
102
+ const packageJsonPath = path.resolve(
103
+ tempDirPath,
104
+ `./${repositorySlug}/apps/projectzeronext/package.json`
105
+ );
106
+
107
+ const packageJsonData = fs.readFileSync(packageJsonPath, {
108
+ encoding: 'utf8',
109
+ flag: 'r'
95
110
  });
96
- fs.writeFileSync(filePath, content, { encoding: 'utf8' });
111
+
112
+ fs.writeFileSync(
113
+ packageJsonPath,
114
+ packageJsonData.replace(/"name": ".*"/, `"name": "${slugify(brandName)}"`)
115
+ );
97
116
  };
98
117
 
99
- function updatePluginsFile(projectDir: string): void {
100
- const pluginsFilePath = path.join(projectDir, 'src', 'plugins.js');
118
+ const updateAkinonJson = (brandName: string, projectDescription: string) => {
119
+ const akinonJsonPath = path.resolve(
120
+ tempDirPath,
121
+ `./${repositorySlug}/apps/projectzeronext/akinon.json`
122
+ );
101
123
 
102
- const content = 'module.exports = [];';
124
+ const akinonJsonData = fs.readFileSync(akinonJsonPath, {
125
+ encoding: 'utf8',
126
+ flag: 'r'
127
+ });
103
128
 
104
- fs.writeFileSync(pluginsFilePath, content, { encoding: 'utf8' });
105
- }
129
+ let updatedData = akinonJsonData.replace(
130
+ /"name": ".*"/,
131
+ `"name": "${brandName}"`
132
+ );
133
+
134
+ if (projectDescription) {
135
+ updatedData = updatedData.replace(
136
+ /"description": ".*"/,
137
+ `"description": "${projectDescription}"`
138
+ );
139
+ }
140
+
141
+ fs.writeFileSync(akinonJsonPath, updatedData);
142
+ };
143
+
144
+ const copyEnv = (commerceUrl: string) => {
145
+ const repositoryPath = path.resolve(tempDirPath, `./${repositorySlug}/apps/projectzeronext/`);
146
+
147
+ const envExamplePath = path.resolve(repositoryPath, `./.env.example`);
148
+ const envPath = path.resolve(repositoryPath, `./.env`);
149
+
150
+ const envData = fs.readFileSync(envExamplePath, {
151
+ encoding: 'utf8',
152
+ flag: 'r'
153
+ });
154
+
155
+ if (commerceUrl) {
156
+ fs.writeFileSync(
157
+ envExamplePath,
158
+ envData.replace(
159
+ /SERVICE_BACKEND_URL=.*/,
160
+ `SERVICE_BACKEND_URL=${commerceUrl}`
161
+ )
162
+ );
163
+ }
164
+
165
+ fs.copyFileSync(envExamplePath, envPath);
166
+ };
167
+
168
+ const updatePlugins = () => {
169
+ const pluginsPath = path.resolve(
170
+ tempDirPath,
171
+ `./${repositorySlug}/apps/projectzeronext/src/plugins.js`
172
+ );
106
173
 
107
- export default async (): Promise<void> => {
174
+ fs.writeFileSync(pluginsPath, 'module.exports = [];');
175
+ };
176
+
177
+ export default async () => {
108
178
  const minNodeVersion = 18;
109
179
  const currentNodeVersion = parseInt(
110
180
  process.version.replace('v', '').split('.')[0]
@@ -122,38 +192,37 @@ export default async (): Promise<void> => {
122
192
  }
123
193
 
124
194
  const answers = await getAnswers();
125
- const brandName =
126
- answers.brandName === '.' ? path.basename(workingDir) : answers.brandName;
127
- const projectDir = path.resolve(workingDir, slugify(brandName));
128
195
 
129
- if (!fs.existsSync(projectDir)) {
130
- fs.mkdirSync(projectDir, { recursive: true });
131
- }
196
+ const brandName =
197
+ answers.brandName === '.'
198
+ ? path.basename(process.cwd())
199
+ : answers.brandName;
132
200
 
133
- const templatesDir = path.resolve(
134
- __dirname,
135
- '../../../projectzero-cli/app-template'
136
- );
201
+ loadingSpinner.start();
137
202
 
138
- fs.cpSync(templatesDir, projectDir, { recursive: true });
203
+ await cloneRepository();
204
+ updatePackageJson(brandName);
205
+ updateAkinonJson(brandName, answers.projectDescription);
206
+ copyEnv(answers.commerceUrl);
207
+ updatePlugins();
139
208
 
140
- updatePluginsFile(projectDir);
209
+ const slugifiedBrandName = slugify(answers.brandName);
141
210
 
142
- if (answers.projectDescription) {
143
- updateFileContents(path.join(projectDir, 'akinon.json'), {
144
- description: answers.projectDescription
145
- });
146
- }
211
+ fs.rmSync(path.resolve(tempDirPath, `./${repositorySlug}/apps/projectzeronext/.git`), {
212
+ recursive: true,
213
+ force: true
214
+ });
147
215
 
148
- if (answers.commerceUrl) {
149
- updateFileContents(path.join(projectDir, '.env'), {
150
- SERVICE_BACKEND_URL: answers.commerceUrl
151
- });
152
- }
216
+ fs.cpSync(
217
+ path.resolve(tempDirPath, `./${repositorySlug}/apps/projectzeronext/`),
218
+ path.resolve(workingDir, `./${slugifiedBrandName}`),
219
+ {
220
+ recursive: true,
221
+ force: true
222
+ }
223
+ );
153
224
 
154
- updateFileContents(path.join(projectDir, 'package.json'), {
155
- name: slugify(brandName)
156
- });
225
+ temp.cleanupSync();
157
226
 
158
227
  loadingSpinner.stop();
159
228
 
@@ -1,11 +1,44 @@
1
1
  import * as fs from 'fs';
2
2
  import path from 'path';
3
3
  import { execSync } from 'child_process';
4
+ import semver from 'semver';
4
5
 
5
6
  const Prompt = require('prompt-checkbox');
6
7
 
7
8
  const rootDir = path.resolve(process.cwd());
8
9
 
10
+ interface PackageInfo {
11
+ 'dist-tags': {
12
+ latest: string;
13
+ };
14
+ }
15
+
16
+ interface PackageJson {
17
+ dependencies: {
18
+ [key: string]: string;
19
+ };
20
+ }
21
+
22
+ async function checkVersion(pkg: PackageJson) {
23
+ const packageName = '@akinon/next';
24
+ const registryUrl = `https://registry.npmjs.org/${packageName}`;
25
+
26
+ try {
27
+ const response = await fetch(registryUrl);
28
+ const pkgInfo = (await response.json()) as PackageInfo;
29
+ const latestVersion = pkgInfo['dist-tags'].latest;
30
+
31
+ if (!semver.satisfies(pkg.dependencies['@akinon/next'], latestVersion)) {
32
+ console.warn(
33
+ `\x1b[43mWarning: The "${packageName}" package is currently at version ${pkg.dependencies['@akinon/next']}. Please upgrade it to the latest version (${latestVersion}) to ensure plugin compatibility.`,
34
+ '\x1b[0m\n'
35
+ );
36
+ }
37
+ } catch (error: any) {
38
+ console.error(`\x1b[41mError: ${error?.message}`, '\x1b[0m\n');
39
+ }
40
+ }
41
+
9
42
  export default async () => {
10
43
  function findPluginsFilePath() {
11
44
  const option1 = path.resolve(rootDir, './src/plugins.js');
@@ -22,6 +55,9 @@ export default async () => {
22
55
  }
23
56
  }
24
57
 
58
+ const pkg: PackageJson = require(path.resolve(rootDir, './package.json'));
59
+ await checkVersion(pkg);
60
+
25
61
  const pluginsFilePath = findPluginsFilePath();
26
62
 
27
63
  let installedPlugins: Array<string> = [];
@@ -39,7 +39,12 @@ const path_1 = __importDefault(require("path"));
39
39
  const fs = __importStar(require("fs"));
40
40
  const readline = __importStar(require("readline"));
41
41
  const utils_1 = require("../utils");
42
+ const temp_1 = __importDefault(require("temp"));
43
+ const exec = require('child_process').exec;
42
44
  const loadingSpinner = require('loading-spinner');
45
+ temp_1.default.track();
46
+ const repositorySlug = 'pz-next';
47
+ const tempDirPath = temp_1.default.mkdirSync('pz-temp');
43
48
  const workingDir = path_1.default.resolve(process.cwd());
44
49
  const rl = readline.createInterface({
45
50
  input: process.stdin,
@@ -92,23 +97,56 @@ const getAnswers = () => {
92
97
  });
93
98
  });
94
99
  };
95
- const updateFileContents = (filePath, replacements) => {
96
- let content = fs.readFileSync(filePath, { encoding: 'utf8' });
97
- Object.entries(replacements).forEach(([key, value]) => {
98
- if (filePath.endsWith('.json')) {
99
- content = content.replace(new RegExp(`"${key}":\\s*".*?"`, 'g'), `"${key}": "${value}"`);
100
+ const cloneRepository = () => new Promise((resolve) => {
101
+ exec(`cd ${tempDirPath} && git clone git@bitbucket.org:akinonteam/${repositorySlug}.git`, function (err, stdout, stderr) {
102
+ if (err != null) {
103
+ resolve({ error: new Error(err) });
104
+ }
105
+ else if (typeof stderr != 'string') {
106
+ resolve({ error: new Error(stderr) });
100
107
  }
101
108
  else {
102
- content = content.replace(new RegExp(`^${key}=.*$`, 'gm'), `${key}=${value}`);
109
+ resolve({});
103
110
  }
104
111
  });
105
- fs.writeFileSync(filePath, content, { encoding: 'utf8' });
112
+ });
113
+ const updatePackageJson = (brandName) => {
114
+ const packageJsonPath = path_1.default.resolve(tempDirPath, `./${repositorySlug}/apps/projectzeronext/package.json`);
115
+ const packageJsonData = fs.readFileSync(packageJsonPath, {
116
+ encoding: 'utf8',
117
+ flag: 'r'
118
+ });
119
+ fs.writeFileSync(packageJsonPath, packageJsonData.replace(/"name": ".*"/, `"name": "${(0, utils_1.slugify)(brandName)}"`));
120
+ };
121
+ const updateAkinonJson = (brandName, projectDescription) => {
122
+ const akinonJsonPath = path_1.default.resolve(tempDirPath, `./${repositorySlug}/apps/projectzeronext/akinon.json`);
123
+ const akinonJsonData = fs.readFileSync(akinonJsonPath, {
124
+ encoding: 'utf8',
125
+ flag: 'r'
126
+ });
127
+ let updatedData = akinonJsonData.replace(/"name": ".*"/, `"name": "${brandName}"`);
128
+ if (projectDescription) {
129
+ updatedData = updatedData.replace(/"description": ".*"/, `"description": "${projectDescription}"`);
130
+ }
131
+ fs.writeFileSync(akinonJsonPath, updatedData);
132
+ };
133
+ const copyEnv = (commerceUrl) => {
134
+ const repositoryPath = path_1.default.resolve(tempDirPath, `./${repositorySlug}/apps/projectzeronext/`);
135
+ const envExamplePath = path_1.default.resolve(repositoryPath, `./.env.example`);
136
+ const envPath = path_1.default.resolve(repositoryPath, `./.env`);
137
+ const envData = fs.readFileSync(envExamplePath, {
138
+ encoding: 'utf8',
139
+ flag: 'r'
140
+ });
141
+ if (commerceUrl) {
142
+ fs.writeFileSync(envExamplePath, envData.replace(/SERVICE_BACKEND_URL=.*/, `SERVICE_BACKEND_URL=${commerceUrl}`));
143
+ }
144
+ fs.copyFileSync(envExamplePath, envPath);
145
+ };
146
+ const updatePlugins = () => {
147
+ const pluginsPath = path_1.default.resolve(tempDirPath, `./${repositorySlug}/apps/projectzeronext/src/plugins.js`);
148
+ fs.writeFileSync(pluginsPath, 'module.exports = [];');
106
149
  };
107
- function updatePluginsFile(projectDir) {
108
- const pluginsFilePath = path_1.default.join(projectDir, 'src', 'plugins.js');
109
- const content = 'module.exports = [];';
110
- fs.writeFileSync(pluginsFilePath, content, { encoding: 'utf8' });
111
- }
112
150
  exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
113
151
  const minNodeVersion = 18;
114
152
  const currentNodeVersion = parseInt(process.version.replace('v', '').split('.')[0]);
@@ -117,27 +155,25 @@ exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
117
155
  process.exit(1);
118
156
  }
119
157
  const answers = yield getAnswers();
120
- const brandName = answers.brandName === '.' ? path_1.default.basename(workingDir) : answers.brandName;
121
- const projectDir = path_1.default.resolve(workingDir, (0, utils_1.slugify)(brandName));
122
- if (!fs.existsSync(projectDir)) {
123
- fs.mkdirSync(projectDir, { recursive: true });
124
- }
125
- const templatesDir = path_1.default.resolve(__dirname, '../../../projectzero-cli/app-template');
126
- fs.cpSync(templatesDir, projectDir, { recursive: true });
127
- updatePluginsFile(projectDir);
128
- if (answers.projectDescription) {
129
- updateFileContents(path_1.default.join(projectDir, 'akinon.json'), {
130
- description: answers.projectDescription
131
- });
132
- }
133
- if (answers.commerceUrl) {
134
- updateFileContents(path_1.default.join(projectDir, '.env'), {
135
- SERVICE_BACKEND_URL: answers.commerceUrl
136
- });
137
- }
138
- updateFileContents(path_1.default.join(projectDir, 'package.json'), {
139
- name: (0, utils_1.slugify)(brandName)
158
+ const brandName = answers.brandName === '.'
159
+ ? path_1.default.basename(process.cwd())
160
+ : answers.brandName;
161
+ loadingSpinner.start();
162
+ yield cloneRepository();
163
+ updatePackageJson(brandName);
164
+ updateAkinonJson(brandName, answers.projectDescription);
165
+ copyEnv(answers.commerceUrl);
166
+ updatePlugins();
167
+ const slugifiedBrandName = (0, utils_1.slugify)(answers.brandName);
168
+ fs.rmSync(path_1.default.resolve(tempDirPath, `./${repositorySlug}/apps/projectzeronext/.git`), {
169
+ recursive: true,
170
+ force: true
171
+ });
172
+ fs.cpSync(path_1.default.resolve(tempDirPath, `./${repositorySlug}/apps/projectzeronext/`), path_1.default.resolve(workingDir, `./${slugifiedBrandName}`), {
173
+ recursive: true,
174
+ force: true
140
175
  });
176
+ temp_1.default.cleanupSync();
141
177
  loadingSpinner.stop();
142
178
  console.log('\x1b[32m%s\x1b[0m', `\n ✓ ${answers.brandName} project is ready.\n`);
143
179
  console.log('\x1b[33m%s\x1b[0m', 'Project Zero - Akinon\n');
@@ -38,8 +38,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
38
38
  const fs = __importStar(require("fs"));
39
39
  const path_1 = __importDefault(require("path"));
40
40
  const child_process_1 = require("child_process");
41
+ const semver_1 = __importDefault(require("semver"));
41
42
  const Prompt = require('prompt-checkbox');
42
43
  const rootDir = path_1.default.resolve(process.cwd());
44
+ function checkVersion(pkg) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const packageName = '@akinon/next';
47
+ const registryUrl = `https://registry.npmjs.org/${packageName}`;
48
+ try {
49
+ const response = yield fetch(registryUrl);
50
+ const pkgInfo = (yield response.json());
51
+ const latestVersion = pkgInfo['dist-tags'].latest;
52
+ if (!semver_1.default.satisfies(pkg.dependencies['@akinon/next'], latestVersion)) {
53
+ console.warn(`\x1b[43mWarning: The "${packageName}" package is currently at version ${pkg.dependencies['@akinon/next']}. Please upgrade it to the latest version (${latestVersion}) to ensure plugin compatibility.`, '\x1b[0m\n');
54
+ }
55
+ }
56
+ catch (error) {
57
+ console.error(`\x1b[41mError: ${error === null || error === void 0 ? void 0 : error.message}`, '\x1b[0m\n');
58
+ }
59
+ });
60
+ }
43
61
  exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
44
62
  function findPluginsFilePath() {
45
63
  const option1 = path_1.default.resolve(rootDir, './src/plugins.js');
@@ -54,6 +72,8 @@ exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
54
72
  throw new Error('plugins.js was not found in either of the expected locations.');
55
73
  }
56
74
  }
75
+ const pkg = require(path_1.default.resolve(rootDir, './package.json'));
76
+ yield checkVersion(pkg);
57
77
  const pluginsFilePath = findPluginsFilePath();
58
78
  let installedPlugins = [];
59
79
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akinon/projectzero",
3
- "version": "1.29.0-rc.2",
3
+ "version": "1.30.0",
4
4
  "private": false,
5
5
  "description": "CLI tool to manage your Project Zero Next project",
6
6
  "bin": {
@@ -15,6 +15,7 @@
15
15
  "license": "ISC",
16
16
  "devDependencies": {
17
17
  "@types/node": "^18.8.0",
18
+ "@types/semver": "7.5.8",
18
19
  "@types/temp": "0.9.4"
19
20
  },
20
21
  "dependencies": {
package/tsconfig.json CHANGED
@@ -11,7 +11,7 @@
11
11
  // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12
12
 
13
13
  /* Language and Environment */
14
- "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
14
+ "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15
15
  // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16
16
  // "jsx": "preserve", /* Specify what JSX code is generated. */
17
17
  // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
@@ -25,7 +25,7 @@
25
25
  // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
26
26
 
27
27
  /* Modules */
28
- "module": "commonjs" /* Specify what module code is generated. */,
28
+ "module": "commonjs", /* Specify what module code is generated. */
29
29
  // "rootDir": "./", /* Specify the root folder within your source files. */
30
30
  // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
31
31
  // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
@@ -49,7 +49,7 @@
49
49
  // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
50
50
  // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
51
51
  // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
52
- "outDir": "./dist" /* Specify an output folder for all emitted files. */,
52
+ "outDir": "./dist", /* Specify an output folder for all emitted files. */
53
53
  // "removeComments": true, /* Disable emitting comments. */
54
54
  // "noEmit": true, /* Disable emitting files from a compilation. */
55
55
  // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
@@ -71,12 +71,12 @@
71
71
  /* Interop Constraints */
72
72
  // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
73
73
  // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
74
- "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */,
74
+ "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
75
75
  // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
76
- "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
76
+ "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
77
77
 
78
78
  /* Type Checking */
79
- "strict": true /* Enable all strict type-checking options. */,
79
+ "strict": true, /* Enable all strict type-checking options. */
80
80
  // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
81
81
  // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
82
82
  // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
@@ -98,7 +98,6 @@
98
98
 
99
99
  /* Completeness */
100
100
  // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
101
- "skipLibCheck": true /* Skip type checking all .d.ts files. */
102
- },
103
- "exclude": ["app-template"]
101
+ "skipLibCheck": true /* Skip type checking all .d.ts files. */
102
+ }
104
103
  }
@@ -1,7 +0,0 @@
1
- [*]
2
- indent_style = space
3
- indent_size = 2
4
- end_of_line = lf
5
- charset = utf-8
6
- trim_trailing_whitespace = true
7
- insert_final_newline = true
@@ -1,9 +0,0 @@
1
- NEXTAUTH_SECRET=PDpBb/aSJESgBbPLHw1+jveHXqyvkC7GC1Z82jvE04s=
2
- NEXTAUTH_URL=http://localhost:3000
3
- NEXT_PUBLIC_MAP_API_KEY=YOUR_MAP_API_KEY
4
- NEXT_PUBLIC_GTM_KEY=GTM_KEY
5
- NEXT_PUBLIC_URL=http://localhost:3000
6
- SERVICE_BACKEND_URL=https://02fde10fee4440269e695aa10707dfaf.lb.akinoncloud.com
7
- # CACHE_SECRET=KhvhE1go3GDmYJ7PhZLmskqfhYNlPSm6
8
- # CACHE_HOST=default:redispw@localhost
9
- # CACHE_PORT=6379
@@ -1 +0,0 @@
1
- public
@@ -1,31 +0,0 @@
1
- module.exports = {
2
- env: {
3
- browser: true,
4
- es6: true,
5
- node: true,
6
- jest: true
7
- },
8
- extends: [
9
- 'next/core-web-vitals',
10
- 'eslint:recommended',
11
- 'plugin:@typescript-eslint/recommended',
12
- 'prettier',
13
- 'plugin:@akinon/projectzero/core', // DO NOT remove this config for stability
14
- 'plugin:@akinon/projectzero/recommended' // Optional
15
- ],
16
- plugins: ['@typescript-eslint', '@akinon/projectzero'],
17
- parser: '@typescript-eslint/parser',
18
- parserOptions: {
19
- ecmaVersion: 2021,
20
- sourceType: 'module'
21
- },
22
- settings: {
23
- next: {
24
- rootDir: ['src/*/']
25
- }
26
- },
27
- rules: {
28
- '@typescript-eslint/no-unused-vars': 'warn',
29
- '@typescript-eslint/no-explicit-any': 'warn'
30
- }
31
- };
@@ -1,18 +0,0 @@
1
- *.js text eol=lf
2
- *.jsx text eol=lf
3
- *.ts text eol=lf
4
- *.tsx text eol=lf
5
- *.json text eol=lf
6
- *.yaml text eol=lf
7
- *.yml text eol=lf
8
- *.md text eol=lf
9
- *.sh text eol=lf
10
-
11
- .eslintignore text eol=lf
12
- .eslintrc text eol=lf
13
- .gitignore text eol=lf
14
- .prettierrc text eol=lf
15
- .yarnrc text eol=lf
16
-
17
- * text=auto
18
-
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env sh
2
- . "$(dirname -- "$0")/_/husky.sh"
3
-
4
- yarn lint-staged
@@ -1,12 +0,0 @@
1
- const path = require('path');
2
-
3
- const buildEslintCommand = (filenames) =>
4
- // TODO: Add --fix flag later
5
- `next lint --file ${filenames
6
- .map((f) => path.relative(process.cwd(), f))
7
- .join(' --file ')}`;
8
-
9
- module.exports = {
10
- '**/*.(ts|tsx)': () => 'yarn tsc --noEmit',
11
- '*.{js,jsx,ts,tsx}': [buildEslintCommand]
12
- };
@@ -1,13 +0,0 @@
1
- {
2
- "bracketSameLine": false,
3
- "tabWidth": 2,
4
- "singleQuote": true,
5
- "jsxSingleQuote": false,
6
- "bracketSpacing": true,
7
- "semi": true,
8
- "useTabs": false,
9
- "arrowParens": "always",
10
- "endOfLine": "lf",
11
- "proseWrap": "never",
12
- "trailingComma": "none"
13
- }