@plone/volto 18.0.0-alpha.2 → 18.0.0-alpha.4

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 (293) hide show
  1. package/.eslintrc +3 -3
  2. package/.prettierignore +8 -0
  3. package/.prettierrc +12 -0
  4. package/{packages/registry/.release-it.json → .release-it.json} +11 -6
  5. package/CHANGELOG.md +44 -4
  6. package/locales/ca/LC_MESSAGES/volto.po +1 -0
  7. package/locales/de/LC_MESSAGES/volto.po +1 -0
  8. package/locales/en/LC_MESSAGES/volto.po +1 -0
  9. package/locales/es/LC_MESSAGES/volto.po +1 -0
  10. package/locales/eu/LC_MESSAGES/volto.po +1 -0
  11. package/locales/fi/LC_MESSAGES/volto.po +1 -0
  12. package/locales/fr/LC_MESSAGES/volto.po +1 -0
  13. package/locales/it/LC_MESSAGES/volto.po +1 -0
  14. package/locales/ja/LC_MESSAGES/volto.po +1 -0
  15. package/locales/nl/LC_MESSAGES/volto.po +1 -0
  16. package/locales/pt/LC_MESSAGES/volto.po +1 -0
  17. package/locales/pt_BR/LC_MESSAGES/volto.po +1 -0
  18. package/locales/ro/LC_MESSAGES/volto.po +1 -0
  19. package/locales/volto.pot +2 -1
  20. package/locales/zh_CN/LC_MESSAGES/volto.po +1 -0
  21. package/package.json +57 -127
  22. package/razzle.config.js +4 -7
  23. package/src/components/manage/Blocks/Video/Body.jsx +52 -22
  24. package/src/components/manage/Blocks/Video/Body.test.jsx +167 -0
  25. package/src/components/manage/Controlpanels/Users/UserGroupMembershipControlPanel.jsx +2 -2
  26. package/src/components/manage/Form/Form.jsx +5 -2
  27. package/src/components/theme/Breadcrumbs/Breadcrumbs.jsx +19 -2
  28. package/src/components/theme/ContentMetadataTags/ContentMetadataTags.jsx +46 -39
  29. package/src/config/index.js +0 -4
  30. package/src/icons/divide-horizontal.svg +0 -0
  31. package/src/icons/divide-vertical.svg +0 -0
  32. package/src/icons/hero.svg +0 -0
  33. package/src/icons/slider.svg +0 -0
  34. package/src/icons/summary.svg +0 -0
  35. package/src/middleware/api.js +1 -1
  36. package/theme/themes/default/elements/icon.overrides +0 -0
  37. package/theme/themes/default/globals/reset.overrides +0 -0
  38. package/theme/themes/default/globals/site.variables +0 -0
  39. package/theme/themes/default/modules/dropdown.overrides +0 -0
  40. package/theme/themes/default/modules/dropdown.variables +0 -0
  41. package/theme/themes/default/modules/modal.variables +0 -0
  42. package/theme/themes/default/modules/video.overrides +0 -0
  43. package/theme/themes/default/modules/video.variables +0 -0
  44. package/theme/themes/pastanaga/assets/fonts/icons.eot +0 -0
  45. package/theme/themes/pastanaga/assets/fonts/icons.svg +0 -0
  46. package/theme/themes/pastanaga/assets/fonts/icons.ttf +0 -0
  47. package/theme/themes/pastanaga/assets/fonts/icons.woff +0 -0
  48. package/theme/themes/pastanaga/globals/reset.overrides +0 -0
  49. package/theme/themes/pastanaga/globals/site.variables +0 -0
  50. package/theme/themes/pastanaga/modules/dropdown.variables +0 -0
  51. package/theme/themes/pastanaga/modules/modal.variables +0 -0
  52. package/theme/themes/pastanaga/modules/video.overrides +0 -0
  53. package/theme/themes/pastanaga/modules/video.variables +0 -0
  54. package/tsconfig.json +1 -4
  55. package/types/components/manage/Blocks/Video/Body.d.ts +5 -0
  56. package/types/config/RichTextEditor/index.d.ts +5 -8
  57. package/types/helpers/AsyncConnect/index.d.ts +2 -2
  58. package/types/helpers/Url/Url.d.ts +3 -3
  59. package/types/icons/load-icons.d.ts +1 -1
  60. package/webpack-plugins/webpack-less-plugin.js +1 -0
  61. package/CODE_OF_CONDUCT.md +0 -13
  62. package/CONTRIBUTING.md +0 -7
  63. package/README.md +0 -154
  64. package/RELEASING.md +0 -73
  65. package/ROADMAP.md +0 -30
  66. package/SECURITY.md +0 -14
  67. package/logos/Logo.png +0 -0
  68. package/logos/VoltoLogoEra2-dark-mode.png +0 -0
  69. package/logos/VoltoLogoEra2.png +0 -0
  70. package/logos/volto-colorful.png +0 -0
  71. package/logos/volto-colorful.svg +0 -35
  72. package/logos/volto-guide.png +0 -0
  73. package/logos/volto-h-transparent.svg +0 -6
  74. package/logos/volto-transparent.png +0 -0
  75. package/logos/volto-transparent.svg +0 -19
  76. package/logos/volto-transparent2.svg +0 -5
  77. package/logos/volto-yellow.svg +0 -29
  78. package/logos/volto.sketch +0 -0
  79. package/packages/README.md +0 -7
  80. package/packages/registry/.towncrier/towncrier_template.jinja +0 -10
  81. package/packages/registry/CHANGELOG.md +0 -16
  82. package/packages/registry/README.md +0 -207
  83. package/packages/registry/addon-registry.js +0 -603
  84. package/packages/registry/create-addons-loader.js +0 -116
  85. package/packages/registry/create-theme-addons-loader.js +0 -78
  86. package/packages/registry/news/.gitkeep +0 -0
  87. package/packages/registry/package.json +0 -76
  88. package/packages/registry/src/index.ts +0 -174
  89. package/packages/registry/src/registry.test.js +0 -111
  90. package/packages/registry/tsconfig.json +0 -32
  91. package/packages/scripts/CHANGELOG.md +0 -173
  92. package/packages/scripts/README.md +0 -128
  93. package/packages/scripts/addon/consolidate.js +0 -28
  94. package/packages/scripts/addon/generators.js +0 -213
  95. package/packages/scripts/addon/getAddonInfo.js +0 -65
  96. package/packages/scripts/addon/index.js +0 -88
  97. package/packages/scripts/addon/utils.js +0 -44
  98. package/packages/scripts/backportpr.js +0 -75
  99. package/packages/scripts/changelogupdater.cjs +0 -94
  100. package/packages/scripts/corepackagebump.js +0 -20
  101. package/packages/scripts/i18n.cjs +0 -310
  102. package/packages/scripts/package.json +0 -76
  103. package/packages/scripts/templates/towncrier_template.jinja +0 -10
  104. package/packages/types/Blocks/View.ts +0 -11
  105. package/packages/types/actions.ts +0 -15
  106. package/packages/types/breadcrumbs.ts +0 -10
  107. package/packages/types/config/Blocks.ts +0 -153
  108. package/packages/types/config/Content.ts +0 -62
  109. package/packages/types/config/Settings.ts +0 -86
  110. package/packages/types/config/Views.ts +0 -15
  111. package/packages/types/config/Widgets.ts +0 -7
  112. package/packages/types/config/index.ts +0 -21
  113. package/packages/types/content/common.ts +0 -60
  114. package/packages/types/content/get.ts +0 -66
  115. package/packages/types/index.ts +0 -0
  116. package/packages/types/navigation.ts +0 -12
  117. package/packages/types/package.json +0 -64
  118. package/packages/types/types.ts +0 -61
  119. package/packages/volto-slate/.i18n.babel.config.js +0 -1
  120. package/packages/volto-slate/README.md +0 -4
  121. package/packages/volto-slate/build/messages/src/blocks/Table/TableBlockEdit.json +0 -90
  122. package/packages/volto-slate/build/messages/src/blocks/Text/DefaultTextBlockEditor.json +0 -6
  123. package/packages/volto-slate/build/messages/src/blocks/Text/DetachedTextBlockEditor.json +0 -6
  124. package/packages/volto-slate/build/messages/src/blocks/Text/SlashMenu.json +0 -6
  125. package/packages/volto-slate/build/messages/src/editor/plugins/AdvancedLink/index.json +0 -10
  126. package/packages/volto-slate/build/messages/src/editor/plugins/Link/index.json +0 -10
  127. package/packages/volto-slate/build/messages/src/editor/plugins/Table/index.json +0 -30
  128. package/packages/volto-slate/build/messages/src/elementEditor/messages.json +0 -10
  129. package/packages/volto-slate/build/messages/src/widgets/HtmlSlateWidget.json +0 -6
  130. package/packages/volto-slate/build/messages/src/widgets/RichTextWidgetView.json +0 -6
  131. package/packages/volto-slate/locales/de/LC_MESSAGES/volto.po +0 -148
  132. package/packages/volto-slate/locales/en/LC_MESSAGES/volto.po +0 -148
  133. package/packages/volto-slate/locales/volto.pot +0 -182
  134. package/packages/volto-slate/package.json +0 -43
  135. package/packages/volto-slate/src/actions/content.js +0 -30
  136. package/packages/volto-slate/src/actions/index.js +0 -3
  137. package/packages/volto-slate/src/actions/plugins.js +0 -9
  138. package/packages/volto-slate/src/actions/selection.js +0 -22
  139. package/packages/volto-slate/src/blocks/Table/Cell.jsx +0 -87
  140. package/packages/volto-slate/src/blocks/Table/Cell.test.js +0 -54
  141. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +0 -694
  142. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.test.js +0 -40
  143. package/packages/volto-slate/src/blocks/Table/TableBlockView.jsx +0 -150
  144. package/packages/volto-slate/src/blocks/Table/TableBlockView.test.js +0 -49
  145. package/packages/volto-slate/src/blocks/Table/deconstruct.js +0 -113
  146. package/packages/volto-slate/src/blocks/Table/extensions/normalizeTable.js +0 -5
  147. package/packages/volto-slate/src/blocks/Table/index.js +0 -60
  148. package/packages/volto-slate/src/blocks/Table/schema.js +0 -122
  149. package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +0 -304
  150. package/packages/volto-slate/src/blocks/Text/DetachedTextBlockEditor.jsx +0 -77
  151. package/packages/volto-slate/src/blocks/Text/MarkdownIntroduction.jsx +0 -59
  152. package/packages/volto-slate/src/blocks/Text/PluginSidebar.jsx +0 -18
  153. package/packages/volto-slate/src/blocks/Text/ShortcutListing.jsx +0 -28
  154. package/packages/volto-slate/src/blocks/Text/SlashMenu.jsx +0 -203
  155. package/packages/volto-slate/src/blocks/Text/TextBlockEdit.jsx +0 -38
  156. package/packages/volto-slate/src/blocks/Text/TextBlockEdit.test.js +0 -107
  157. package/packages/volto-slate/src/blocks/Text/TextBlockSchema.js +0 -54
  158. package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +0 -31
  159. package/packages/volto-slate/src/blocks/Text/css/editor.css +0 -18
  160. package/packages/volto-slate/src/blocks/Text/extensions/Readme.md +0 -49
  161. package/packages/volto-slate/src/blocks/Text/extensions/breakList.js +0 -100
  162. package/packages/volto-slate/src/blocks/Text/extensions/index.js +0 -6
  163. package/packages/volto-slate/src/blocks/Text/extensions/insertBreak.js +0 -57
  164. package/packages/volto-slate/src/blocks/Text/extensions/isSelected.js +0 -7
  165. package/packages/volto-slate/src/blocks/Text/extensions/normalizeExternalData.js +0 -7
  166. package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +0 -87
  167. package/packages/volto-slate/src/blocks/Text/extensions/withLists.js +0 -5
  168. package/packages/volto-slate/src/blocks/Text/index.js +0 -171
  169. package/packages/volto-slate/src/blocks/Text/keyboard/backspaceInList.js +0 -58
  170. package/packages/volto-slate/src/blocks/Text/keyboard/breakBlocks.js +0 -3
  171. package/packages/volto-slate/src/blocks/Text/keyboard/cancelEsc.js +0 -7
  172. package/packages/volto-slate/src/blocks/Text/keyboard/indentListItems.js +0 -240
  173. package/packages/volto-slate/src/blocks/Text/keyboard/index.js +0 -52
  174. package/packages/volto-slate/src/blocks/Text/keyboard/joinBlocks.js +0 -180
  175. package/packages/volto-slate/src/blocks/Text/keyboard/moveListItems.js +0 -124
  176. package/packages/volto-slate/src/blocks/Text/keyboard/slashMenu.js +0 -19
  177. package/packages/volto-slate/src/blocks/Text/keyboard/softBreak.js +0 -7
  178. package/packages/volto-slate/src/blocks/Text/keyboard/traverseBlocks.js +0 -81
  179. package/packages/volto-slate/src/blocks/Text/keyboard/unwrapEmptyString.js +0 -26
  180. package/packages/volto-slate/src/blocks/Text/schema.js +0 -39
  181. package/packages/volto-slate/src/constants.js +0 -123
  182. package/packages/volto-slate/src/editor/EditorContext.jsx +0 -5
  183. package/packages/volto-slate/src/editor/EditorReference.jsx +0 -22
  184. package/packages/volto-slate/src/editor/SlateEditor.jsx +0 -375
  185. package/packages/volto-slate/src/editor/config.jsx +0 -344
  186. package/packages/volto-slate/src/editor/decorate.js +0 -68
  187. package/packages/volto-slate/src/editor/deserialize.js +0 -185
  188. package/packages/volto-slate/src/editor/extensions/index.js +0 -6
  189. package/packages/volto-slate/src/editor/extensions/insertBreak.js +0 -15
  190. package/packages/volto-slate/src/editor/extensions/insertData.js +0 -159
  191. package/packages/volto-slate/src/editor/extensions/isInline.js +0 -14
  192. package/packages/volto-slate/src/editor/extensions/normalizeExternalData.js +0 -8
  193. package/packages/volto-slate/src/editor/extensions/normalizeNode.js +0 -48
  194. package/packages/volto-slate/src/editor/extensions/withDeserializers.js +0 -15
  195. package/packages/volto-slate/src/editor/extensions/withTestingFeatures.jsx +0 -84
  196. package/packages/volto-slate/src/editor/index.js +0 -14
  197. package/packages/volto-slate/src/editor/less/editor.less +0 -173
  198. package/packages/volto-slate/src/editor/less/globals.less +0 -18
  199. package/packages/volto-slate/src/editor/less/slate.less +0 -28
  200. package/packages/volto-slate/src/editor/plugins/AdvancedLink/deserialize.js +0 -90
  201. package/packages/volto-slate/src/editor/plugins/AdvancedLink/extensions.js +0 -32
  202. package/packages/volto-slate/src/editor/plugins/AdvancedLink/index.js +0 -50
  203. package/packages/volto-slate/src/editor/plugins/AdvancedLink/render.jsx +0 -37
  204. package/packages/volto-slate/src/editor/plugins/AdvancedLink/schema.js +0 -114
  205. package/packages/volto-slate/src/editor/plugins/AdvancedLink/styles.less +0 -8
  206. package/packages/volto-slate/src/editor/plugins/Blockquote/index.js +0 -30
  207. package/packages/volto-slate/src/editor/plugins/Callout/index.js +0 -34
  208. package/packages/volto-slate/src/editor/plugins/Image/deconstruct.js +0 -30
  209. package/packages/volto-slate/src/editor/plugins/Image/extensions.js +0 -51
  210. package/packages/volto-slate/src/editor/plugins/Image/index.js +0 -11
  211. package/packages/volto-slate/src/editor/plugins/Image/render.jsx +0 -22
  212. package/packages/volto-slate/src/editor/plugins/Link/extensions.js +0 -58
  213. package/packages/volto-slate/src/editor/plugins/Link/index.js +0 -164
  214. package/packages/volto-slate/src/editor/plugins/Link/render.jsx +0 -54
  215. package/packages/volto-slate/src/editor/plugins/Markdown/constants.js +0 -81
  216. package/packages/volto-slate/src/editor/plugins/Markdown/extensions.js +0 -334
  217. package/packages/volto-slate/src/editor/plugins/Markdown/index.js +0 -28
  218. package/packages/volto-slate/src/editor/plugins/Markdown/utils.js +0 -198
  219. package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +0 -153
  220. package/packages/volto-slate/src/editor/plugins/StyleMenu/index.js +0 -19
  221. package/packages/volto-slate/src/editor/plugins/StyleMenu/style.less +0 -29
  222. package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +0 -168
  223. package/packages/volto-slate/src/editor/plugins/Table/TableButton.jsx +0 -142
  224. package/packages/volto-slate/src/editor/plugins/Table/TableCell.jsx +0 -44
  225. package/packages/volto-slate/src/editor/plugins/Table/TableContainer.jsx +0 -37
  226. package/packages/volto-slate/src/editor/plugins/Table/TableSizePicker.jsx +0 -83
  227. package/packages/volto-slate/src/editor/plugins/Table/extensions.js +0 -87
  228. package/packages/volto-slate/src/editor/plugins/Table/index.js +0 -390
  229. package/packages/volto-slate/src/editor/plugins/Table/less/public.less +0 -29
  230. package/packages/volto-slate/src/editor/plugins/Table/less/table.less +0 -28
  231. package/packages/volto-slate/src/editor/plugins/Table/render.jsx +0 -30
  232. package/packages/volto-slate/src/editor/plugins/index.js +0 -19
  233. package/packages/volto-slate/src/editor/render.jsx +0 -224
  234. package/packages/volto-slate/src/editor/ui/BasicToolbar.jsx +0 -11
  235. package/packages/volto-slate/src/editor/ui/BlockButton.jsx +0 -31
  236. package/packages/volto-slate/src/editor/ui/ClearFormattingButton.jsx +0 -21
  237. package/packages/volto-slate/src/editor/ui/ExpandedToolbar.jsx +0 -18
  238. package/packages/volto-slate/src/editor/ui/Expando.jsx +0 -5
  239. package/packages/volto-slate/src/editor/ui/InlineToolbar.jsx +0 -73
  240. package/packages/volto-slate/src/editor/ui/MarkButton.jsx +0 -23
  241. package/packages/volto-slate/src/editor/ui/MarkElementButton.jsx +0 -30
  242. package/packages/volto-slate/src/editor/ui/Menu.jsx +0 -13
  243. package/packages/volto-slate/src/editor/ui/PositionedToolbar.jsx +0 -32
  244. package/packages/volto-slate/src/editor/ui/Separator.jsx +0 -7
  245. package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +0 -13
  246. package/packages/volto-slate/src/editor/ui/SlateToolbar.jsx +0 -96
  247. package/packages/volto-slate/src/editor/ui/Toolbar.jsx +0 -103
  248. package/packages/volto-slate/src/editor/ui/ToolbarButton.jsx +0 -33
  249. package/packages/volto-slate/src/editor/ui/ToolbarButton.test.js +0 -25
  250. package/packages/volto-slate/src/editor/ui/index.js +0 -15
  251. package/packages/volto-slate/src/editor/utils.js +0 -248
  252. package/packages/volto-slate/src/elementEditor/ContextButtons.jsx +0 -56
  253. package/packages/volto-slate/src/elementEditor/PluginEditor.jsx +0 -124
  254. package/packages/volto-slate/src/elementEditor/Readme.md +0 -6
  255. package/packages/volto-slate/src/elementEditor/SchemaProvider.jsx +0 -3
  256. package/packages/volto-slate/src/elementEditor/SidebarEditor.jsx +0 -46
  257. package/packages/volto-slate/src/elementEditor/ToolbarButton.jsx +0 -44
  258. package/packages/volto-slate/src/elementEditor/index.js +0 -5
  259. package/packages/volto-slate/src/elementEditor/makeInlineElementPlugin.js +0 -100
  260. package/packages/volto-slate/src/elementEditor/messages.js +0 -14
  261. package/packages/volto-slate/src/elementEditor/utils.js +0 -226
  262. package/packages/volto-slate/src/hooks/index.js +0 -3
  263. package/packages/volto-slate/src/hooks/useEditorContext.js +0 -6
  264. package/packages/volto-slate/src/hooks/useIsomorphicLayoutEffect.js +0 -7
  265. package/packages/volto-slate/src/hooks/useSelectionPosition.js +0 -25
  266. package/packages/volto-slate/src/i18n.js +0 -180
  267. package/packages/volto-slate/src/icons/hashlink.svg +0 -57
  268. package/packages/volto-slate/src/index.js +0 -61
  269. package/packages/volto-slate/src/reducers/content.js +0 -74
  270. package/packages/volto-slate/src/reducers/index.js +0 -3
  271. package/packages/volto-slate/src/reducers/plugins.js +0 -17
  272. package/packages/volto-slate/src/reducers/selection.js +0 -16
  273. package/packages/volto-slate/src/utils/blocks.js +0 -375
  274. package/packages/volto-slate/src/utils/blocks.test.js +0 -138
  275. package/packages/volto-slate/src/utils/editor.js +0 -31
  276. package/packages/volto-slate/src/utils/image.js +0 -25
  277. package/packages/volto-slate/src/utils/index.js +0 -11
  278. package/packages/volto-slate/src/utils/internals.js +0 -46
  279. package/packages/volto-slate/src/utils/lists.js +0 -92
  280. package/packages/volto-slate/src/utils/marks.js +0 -104
  281. package/packages/volto-slate/src/utils/mime-types.js +0 -24
  282. package/packages/volto-slate/src/utils/nodes.js +0 -4
  283. package/packages/volto-slate/src/utils/ops.js +0 -20
  284. package/packages/volto-slate/src/utils/random.js +0 -17
  285. package/packages/volto-slate/src/utils/selection.js +0 -236
  286. package/packages/volto-slate/src/utils/slate-string-utils.js +0 -408
  287. package/packages/volto-slate/src/utils/volto-blocks.js +0 -314
  288. package/packages/volto-slate/src/widgets/ErrorBoundary.jsx +0 -27
  289. package/packages/volto-slate/src/widgets/HtmlSlateWidget.jsx +0 -139
  290. package/packages/volto-slate/src/widgets/ObjectByTypeWidget.jsx +0 -49
  291. package/packages/volto-slate/src/widgets/RichTextWidget.jsx +0 -72
  292. package/packages/volto-slate/src/widgets/RichTextWidgetView.jsx +0 -37
  293. package/packages/volto-slate/src/widgets/style.css +0 -21
@@ -1,128 +0,0 @@
1
- # @plone/scripts package
2
-
3
- This package is a library of scripts that are useful to automate certain tasks when developing Volto core or Volto projects.
4
-
5
- ## i18n
6
-
7
- It scans and detects i18n messages from the code and adds them to the i18n machinery.
8
-
9
- See https://6.docs.plone.org/volto/recipes/i18n.html for more information.
10
-
11
- This script is installed in the `node_modules/.bin` directory and can be called via `yarn i18n` or directly in the `scripts` `package.json` part.
12
-
13
- ## changelogupdater
14
-
15
- It updates the change log according the current defaults in the Volto project.
16
-
17
- See how Volto core uses it, along with `release-it`, to automate the release process:
18
-
19
- https://github.com/plone/volto/blob/4f52bf61062d1e34e3391ed0a36781b8df98a316/package.json#L173-L192
20
-
21
- ### Bump
22
-
23
- Given the version, you can update the first `unreleased` literal. `release-it` provides it as a `version` variable.
24
-
25
- ```shell
26
- yarn changelogupdater bump ${version}
27
- ```
28
-
29
- ### Excerpt
30
-
31
- It generates the change log of the version to be released. This is useful when creating the Release information and sending it to GitHub.
32
-
33
- ```shell
34
- yarn changelogupdater.js excerpt
35
- ```
36
-
37
- ### Back
38
-
39
- It creates the blank placeholder for the next release. Given the (next) version, it will be added to the placeholder.
40
-
41
- ```shell
42
- yarn changelogupdater.js back ${version}
43
- ```
44
-
45
- ## addon
46
-
47
- This script creates and configures a vanilla project using the Volto generator.
48
- The project is configured to have the current add-on installed and ready to work with.
49
- This script is useful to bootstrap an isolated environment that can be used to quickly develop the add-on or for demo purposes.
50
- It's also useful when testing an add-on in a CI environment.
51
-
52
- **Note:** It's quite similar when you develop a Plone backend add-on in the Python side, and embed a ready to use Plone build (using buildout or pip) in order to develop and test the package.
53
-
54
- Unfortunately, the NodeJS tooling does not work well with symlinks or outside the root of the project.
55
- This script proceeds in the following way:
56
-
57
- 1. Generates a vanilla project using the official Volto Yo Generator (@plone/generator-volto)
58
- 2. Configures it to use the add-on with the name stated in the `package.json`
59
- 3. Copies over the root of the add-on (`src` and essential files) inside the created project
60
-
61
- After this, you can change directory to the created project, by default `addon-testing-project`.
62
- The name of the created project is parameterizable.
63
-
64
- After that you can use the full fledged project, and run any standard Volto command for linting, acceptance test or unit tests.
65
-
66
- ### clone (git)
67
-
68
- Given the add-on remote git repository, it pulls and configures it into the vanilla project generated by the script.
69
-
70
- `npx -p @plone/scripts addon clone [options] <source> [destination]`
71
-
72
- ```console
73
- Usage: addon clone [options] <source> [destination]
74
-
75
- clone a repository into a newly created directory
76
-
77
- Options:
78
- -p, --private set if the repo is private, then GITHUB_TOKEN is used
79
- -b, --branch <branch> set the repo branch, defaults to main
80
- -c, --canary downloads latest Volto canary (alpha) version
81
- -h, --help display help for command
82
- ```
83
-
84
- This next command downloads the `volto-blocks-grid` add-on from its git repository's `main` branch, and will generate a project with the latest Volto canary (alpha) version.
85
-
86
- ```shell
87
- npx -p @plone/scripts addon clone https://github.com/kitconcept/volto-blocks-grid.git --branch main --canary
88
- ```
89
-
90
- This will create a directory named `addon-testing-project`, and will bootstrap a new project using Volto's standard project generator.
91
- It will adjust the configuration of this project to setup the add-on in the project using `mrs-developer`, and the git URL given to fetch the add-on contents.
92
- You can specify the branch to be used, if the project should use the latest alpha available.
93
- For private repositories, it uses the `GITHUB_TOKEN` present in your environment variables to fetch it.
94
-
95
- After this, as a developer you can use the usual project commands to run tests (unit, linting, acceptance) inside the generated `addon-testing-project`.
96
- You can configure the CI of your choice for automated testing, you can take a look at how it's done in: https://github.com/kitconcept/volto-blocks-grid/tree/main/.github/workflows
97
-
98
- The idea is to issue commands inside the generated `addon-testing-project` project and do your checks.
99
- Take special care on how to pass down to the `npx` command the current pull request branch.
100
- Depending on your CI system, this might be different.
101
-
102
- ### clone local
103
-
104
- You can also clone the local add-on using:
105
-
106
- ```shell
107
- npx -p @plone/scripts addon clone .
108
- ```
109
-
110
- This only works if you execute the command from the root of your add-on directory.
111
-
112
- ### consolidate
113
-
114
- While developing, you might have done changes inside the generated project, and you most probably want to consolidate them, back into the root of the repository.
115
- By running this script, it copies over from `addon-testing-project/src/addons/<my-addon>` to the root of your repository.
116
-
117
- It should be run at the root of the add-on, and it gets an optional `source` argument in case you have specified a directory other than `addon-testing-project`.
118
-
119
- `npx -p @plone/scripts addon consolidate --help`
120
-
121
- ```console
122
- Usage: addon consolidate [options] [source]
123
-
124
- Consolidate a cloned project
125
-
126
- Options:
127
- -h, --help display help for command
128
- ```
@@ -1,28 +0,0 @@
1
- /* eslint no-console: 0 */
2
- import fs from 'fs';
3
- import fse from 'fs-extra';
4
- import { getLocalAddonInfo } from './getAddonInfo.js';
5
-
6
- export async function consolidateAddon({ source = 'addon-testing-project' }) {
7
- const { name } = await getLocalAddonInfo({
8
- source: '.',
9
- });
10
-
11
- try {
12
- const filterFunc = (filenames) => {
13
- const IGNORE_FILES = ['node_modules', '.git'];
14
- return filenames.filter((item) => !IGNORE_FILES.includes(item));
15
- };
16
- const filenames = filterFunc(
17
- fs.readdirSync(`${source}/src/addons/${name}`),
18
- );
19
-
20
- filenames.forEach((filename) => {
21
- fse.copySync(`${source}/src/addons/${name}/${filename}`, `${filename}`, {
22
- overwrite: true,
23
- });
24
- });
25
- } catch (err) {
26
- console.error(err);
27
- }
28
- }
@@ -1,213 +0,0 @@
1
- /* eslint no-console: 0 */
2
- import fs from 'fs';
3
- import fse from 'fs-extra';
4
- import { execSync } from 'child_process';
5
- import { develop } from 'mrs-developer';
6
- import chalk from 'chalk';
7
- import { getGitAddonInfo, getLocalAddonInfo } from './getAddonInfo.js';
8
- import {
9
- amendPackageJSON,
10
- createLocalMrsDeveloperConfig,
11
- createMrsDeveloperConfig,
12
- } from './utils.js';
13
-
14
- export async function runGitGenerator({
15
- source,
16
- destination = 'addon-testing-project',
17
- isPrivate = false,
18
- branch = 'main',
19
- isCanary = false,
20
- }) {
21
- if (isPrivate) {
22
- console.log(
23
- chalk.green(
24
- `Retrieving private package info from branch ${chalk.yellow(
25
- branch,
26
- )} repo ${chalk.yellow(source)}`,
27
- ),
28
- );
29
- } else {
30
- console.log(
31
- chalk.blue(
32
- `Retrieving package info from branch ${chalk.yellow(
33
- branch,
34
- )} repo ${chalk.yellow(source)}`,
35
- ),
36
- );
37
- }
38
-
39
- const { fullname, name, version } = await getGitAddonInfo({
40
- source,
41
- branch,
42
- isPrivate,
43
- });
44
-
45
- console.log(
46
- chalk.green(
47
- `The package name is ${chalk.yellow(
48
- fullname || name,
49
- )} pulling version ${chalk.yellow(version)}`,
50
- ),
51
- );
52
-
53
- const GENERATOR_CLI = `yo --force --no-insight @plone/volto ${destination} --no-interactive --skip-install --workspace src/addons/${name} --addon ${
54
- fullname || name
55
- } ${isCanary ? '--canary' : ''}`;
56
-
57
- execSync(GENERATOR_CLI, (error, stdout, stderr) => {
58
- if (error) {
59
- console.log(`error: ${error.message}`);
60
- return;
61
- }
62
- if (stderr) {
63
- console.log(`stderr: ${stderr}`);
64
- return;
65
- }
66
- });
67
-
68
- createMrsDeveloperConfig({
69
- fullname,
70
- name,
71
- version,
72
- source,
73
- destination,
74
- branch,
75
- });
76
-
77
- // BBB: Maintains compatibility with
78
- // @plone/generator-volto < 7.0.0-alpha.7
79
- // In new versions of @plone/generator-volto we do not have jsconfig.json but tsconfig.json
80
- let configFile;
81
- if (fs.existsSync(`${destination}/jsconfig.json`)) {
82
- configFile = 'jsconfig.json';
83
- } else {
84
- configFile = 'tsconfig.json';
85
- }
86
-
87
- await develop({
88
- root: destination,
89
- configFile: configFile,
90
- output: 'addons',
91
- });
92
-
93
- execSync(
94
- `cd ${destination} && yarn config set enableImmutableInstalls false && yarn install`,
95
- { stdio: 'inherit' },
96
- (error, stdout, stderr) => {
97
- if (error) {
98
- console.log(`error: ${error.message}`);
99
- return;
100
- }
101
- if (stderr) {
102
- console.log(`stderr: ${stderr}`);
103
- return;
104
- }
105
- },
106
- );
107
-
108
- console.log(
109
- chalk.green(
110
- `Preparing and amending testing project ${chalk.yellow('package.json')}`,
111
- ),
112
- );
113
- amendPackageJSON(name, destination, isCanary);
114
- }
115
-
116
- export async function runLocalGenerator({
117
- source,
118
- destination = 'addon-testing-project',
119
- isCanary = false,
120
- }) {
121
- const { fullname, name, version } = await getLocalAddonInfo({
122
- source,
123
- });
124
-
125
- console.log(
126
- chalk.green(
127
- `The package name is ${chalk.yellow(
128
- fullname || name,
129
- )} pulling version ${chalk.yellow(version)}`,
130
- ),
131
- );
132
-
133
- const GENERATOR_CLI = `yo --force --no-insight @plone/volto ${destination} --no-interactive --skip-install --workspace src/addons/${name} --addon ${
134
- fullname || name
135
- } ${isCanary ? '--canary' : ''}`;
136
-
137
- execSync(GENERATOR_CLI, (error, stdout, stderr) => {
138
- if (error) {
139
- console.log(`error: ${error.message}`);
140
- return;
141
- }
142
- if (stderr) {
143
- console.log(`stderr: ${stderr}`);
144
- return;
145
- }
146
- });
147
-
148
- try {
149
- const filterFunc = (filenames) => {
150
- const IGNORE_FILES = ['node_modules', '.git', destination];
151
- return filenames.filter((item) => !IGNORE_FILES.includes(item));
152
- };
153
- const filenames = filterFunc(fs.readdirSync(source));
154
-
155
- filenames.forEach((filename) => {
156
- fse.copySync(
157
- `${source}/${filename}`,
158
- `${destination}/src/addons/${name}/${filename}`,
159
- {
160
- overwrite: false,
161
- },
162
- );
163
- });
164
- } catch (err) {
165
- console.error(err);
166
- }
167
-
168
- createLocalMrsDeveloperConfig({
169
- fullname,
170
- name,
171
- version,
172
- source,
173
- destination,
174
- });
175
-
176
- // BBB: Maintains compatibility with
177
- // @plone/generator-volto < 7.0.0-alpha.7
178
- // In new versions of @plone/generator-volto we do not have jsconfig.json but tsconfig.json
179
- let configFile;
180
- if (fs.existsSync(`${destination}/jsconfig.json`)) {
181
- configFile = 'jsconfig.json';
182
- } else {
183
- configFile = 'tsconfig.json';
184
- }
185
-
186
- await develop({
187
- root: destination,
188
- configFile: configFile,
189
- output: 'addons',
190
- });
191
-
192
- execSync(
193
- `cd ${destination} && yarn config set enableImmutableInstalls false && yarn install`,
194
- { stdio: 'inherit' },
195
- (error, stdout, stderr) => {
196
- if (error) {
197
- console.log(`error: ${error.message}`);
198
- return;
199
- }
200
- if (stderr) {
201
- console.log(`stderr: ${stderr}`);
202
- return;
203
- }
204
- },
205
- );
206
-
207
- console.log(
208
- chalk.green(
209
- `Preparing and amending testing project ${chalk.yellow('package.json')}`,
210
- ),
211
- );
212
- amendPackageJSON(name, destination, isCanary);
213
- }
@@ -1,65 +0,0 @@
1
- /* eslint no-console: 0 */
2
- import fs from 'fs';
3
- import https from 'https';
4
- import GitUrlParse from 'git-url-parse';
5
-
6
- /*
7
- * Retrieves latest Volto released version from NPM registry
8
- */
9
- export async function getGitAddonInfo({ source, branch = 'main', isPrivate }) {
10
- const sourceParse = GitUrlParse(source);
11
- const packageJSONURL = isPrivate
12
- ? `https://api.github.com/repos/${sourceParse.full_name}/contents/package.json`
13
- : `https://raw.githubusercontent.com/${sourceParse.full_name}/${branch}/package.json`;
14
-
15
- return new Promise((resolve, reject) => {
16
- https
17
- .get(
18
- packageJSONURL,
19
- {
20
- headers: {
21
- ...(isPrivate
22
- ? {
23
- Authorization: `token ${process.env.GITHUB_TOKEN}`,
24
- 'User-Agent': 'node.js',
25
- Accept: 'application/vnd.github.VERSION.raw',
26
- }
27
- : {}),
28
- },
29
- },
30
- (resp) => {
31
- let data = [];
32
- resp.on('data', (chunk) => {
33
- data.push(chunk);
34
- });
35
- resp.on('end', () => {
36
- const res = JSON.parse(data.join(''));
37
- resolve({
38
- name: res.name,
39
- version: res.version,
40
- ...(res.name.includes('@')
41
- ? { fullname: res.name, name: res.name.split('/')[1] }
42
- : {}),
43
- });
44
- });
45
- },
46
- )
47
- .on('error', (err) => {
48
- reject(err.message);
49
- });
50
- });
51
- }
52
-
53
- export async function getLocalAddonInfo({ source }) {
54
- const packageJSON = JSON.parse(
55
- fs.readFileSync(`${source}/package.json`, 'utf8'),
56
- );
57
-
58
- return {
59
- name: packageJSON.name,
60
- version: packageJSON.version,
61
- ...(packageJSON.name.includes('@')
62
- ? { fullname: packageJSON.name, name: packageJSON.name.split('/')[1] }
63
- : {}),
64
- };
65
- }
@@ -1,88 +0,0 @@
1
- #!/usr/bin/env node
2
- /* eslint no-console: 0 */
3
- /**
4
- * addon testing setup convenience script
5
- * @module scripts/addon
6
- */
7
- import { program } from 'commander';
8
- import chalk from 'chalk';
9
- import { runGitGenerator, runLocalGenerator } from './generators.js';
10
- import { consolidateAddon } from './consolidate.js';
11
-
12
- function cloneAddon({
13
- source,
14
- destination = 'addon-testing-project',
15
- branch = 'main',
16
- isPrivate,
17
- isCanary = false,
18
- }) {
19
- const isLocal = source === '.';
20
-
21
- if (isLocal) {
22
- console.log(
23
- chalk.yellow(
24
- 'Using local configuration, remember to run this command at the root of your add-on',
25
- ),
26
- chalk.green(
27
- `Copying current add-on data into the project ${chalk.yellow(
28
- destination,
29
- )}`,
30
- ),
31
- );
32
-
33
- runLocalGenerator({
34
- source,
35
- destination,
36
- branch,
37
- isPrivate,
38
- isCanary,
39
- isLocal,
40
- }).then();
41
- } else {
42
- console.log(
43
- chalk.green(
44
- `Cloning addon from ${chalk.yellow(
45
- source,
46
- )} and creating a testing environment in ${chalk.yellow(destination)}`,
47
- ),
48
- );
49
-
50
- runGitGenerator({
51
- source,
52
- destination,
53
- branch,
54
- isPrivate,
55
- isCanary,
56
- isLocal,
57
- }).then();
58
- }
59
- }
60
-
61
- program
62
- .command('clone <source> [destination]')
63
- .description('clone a repository into a newly created directory')
64
- .option(
65
- '-p, --private',
66
- 'set if the repo is private, then GITHUB_TOKEN is used',
67
- )
68
- .option('-b, --branch <branch>', 'set the repo branch, defaults to main')
69
- .option('-c, --canary', 'downloads latest Volto canary (alpha) version')
70
- .action((source, destination, options) => {
71
- cloneAddon({
72
- source,
73
- destination,
74
- isPrivate: options.private,
75
- isCanary: options.canary,
76
- branch: options.branch,
77
- });
78
- });
79
-
80
- program
81
- .command('consolidate [source]')
82
- .description('Consolidate a cloned project')
83
- .action((source = 'addon-testing-project') => {
84
- consolidateAddon({
85
- source,
86
- });
87
- });
88
- program.parse(process.argv);
@@ -1,44 +0,0 @@
1
- import fs from 'fs';
2
-
3
- export function amendPackageJSON(name, destination, isCanary) {
4
- const packageJSON = JSON.parse(
5
- fs.readFileSync(`${destination}/package.json`, 'utf8'),
6
- );
7
- packageJSON.scripts = {
8
- ...packageJSON.scripts,
9
- test: `RAZZLE_JEST_CONFIG=src/addons/${name}/jest-addon.config.js razzle test --passWithNoTests`,
10
- 'cypress:open': `make test-acceptance-addon ADDONPATH=src/addons/${name}`,
11
- 'cypress:run': `make test-acceptance-addon-headless ADDONPATH=src/addons/${name}`,
12
- 'cypress:ci:full': `make full-test-acceptance-addon ADDONPATH=src/addons/${name}`,
13
- };
14
- fs.writeFileSync(
15
- `${destination}/package.json`,
16
- `${JSON.stringify(packageJSON, null, 2)}`,
17
- );
18
- }
19
-
20
- export function createMrsDeveloperConfig(config) {
21
- const template = { [config.name]: {} };
22
- const packageName = config.fullname || config.name;
23
- template[config.name].package = packageName;
24
- template[config.name].url = config.source;
25
- template[config.name].path = 'src';
26
- template[config.name].branch = config.branch || 'main';
27
-
28
- fs.writeFileSync(
29
- `${config.destination}/mrs.developer.json`,
30
- `${JSON.stringify(template, null, 2)}`,
31
- );
32
- }
33
-
34
- export function createLocalMrsDeveloperConfig(config) {
35
- const template = { [config.name]: {} };
36
- const packageName = config.fullname || config.name;
37
- template[config.name].package = packageName;
38
- template[config.name].local = `addons/${config.name}/src`;
39
-
40
- fs.writeFileSync(
41
- `${config.destination}/mrs.developer.json`,
42
- `${JSON.stringify(template, null, 2)}`,
43
- );
44
- }
@@ -1,75 +0,0 @@
1
- /* eslint no-console: 0 */
2
- import https from 'https';
3
- import { execSync, exec } from 'child_process';
4
-
5
- if (process.argv.length < 2) {
6
- console.log(process.argv.length);
7
- process.exit(1);
8
- }
9
-
10
- const pr = process.argv[2];
11
- const URL = `https://api.github.com/repos/plone/volto/pulls/${pr}`;
12
-
13
- function getPRInfo(pr) {
14
- return new Promise((resolve, reject) => {
15
- https
16
- .get(
17
- URL,
18
- {
19
- headers: {
20
- Authorization: `token ${process.env.GITHUB_TOKEN}`,
21
- 'User-Agent': 'node.js',
22
- Accept: 'application/vnd.github+json',
23
- },
24
- },
25
- (resp) => {
26
- let data = [];
27
- resp.on('data', (chunk) => {
28
- data.push(chunk);
29
- });
30
- resp.on('end', () => {
31
- const res = JSON.parse(data.join(''));
32
- resolve({
33
- branchName: res.head.ref,
34
- mergeCommit: res.merge_commit_sha,
35
- });
36
- });
37
- },
38
- )
39
- .on('error', (err) => {
40
- reject(err.message);
41
- });
42
- });
43
- }
44
-
45
- function execCommand(command) {
46
- return execSync(command, (error, stdout, stderr) => {
47
- console.log(stdout);
48
- if (error) {
49
- console.log(`error: ${error.message}`);
50
- return;
51
- }
52
- if (stderr) {
53
- console.log(`stderr: ${stderr}`);
54
- return;
55
- }
56
- return stdout;
57
- });
58
- }
59
-
60
- async function main(params) {
61
- const PRInfo = await getPRInfo(pr);
62
-
63
- // const currentBranch = execCommand(
64
- // `git rev-parse --abbrev-ref HEAD`,
65
- // ).toString();
66
- // execCommand(`git co -b ${PRInfo.branchName}__${currentBranch.split('.')[0]}`);
67
-
68
- // Now we do that in the same PR
69
- execCommand(`git cherry-pick ${PRInfo.mergeCommit}`);
70
-
71
- // execCommand(`git push`);
72
- // execCommand(`git co $(git rev-parse --abbrev-ref HEAD)`);
73
- }
74
-
75
- main();