@total_onion/onion-library 3.2.0 → 3.2.2
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.
- package/.github/workflows/npm-publish.yml +38 -0
- package/.prettierrc +22 -0
- package/__spec__/copyBlockComponent.spec.js +94 -0
- package/__spec__/copyFile.spec.js +78 -0
- package/__spec__/copyFileKeeping.spec.js +74 -0
- package/__spec__/files/source.txt +1 -0
- package/__spec__/update-all-components.spec.js +99 -0
- package/__spec__/update-component.spec.js +165 -0
- package/assembleAssetList.js +69 -0
- package/breakpoints.scss +6 -0
- package/build-library.js +4 -0
- package/checkBuildAssets.js +17 -0
- package/components/block-accent-image-v3/accent-image-v3.js +7 -0
- package/components/block-accent-image-v3/accent-image-v3.scss +4 -0
- package/components/block-accent-image-v3/accent-image-v3.twig +137 -0
- package/components/block-accent-image-v3/group_6890e1233ff2d.json +81 -0
- package/components/block-accordion-v3/accordion-v3.js +119 -0
- package/components/block-accordion-v3/accordion-v3.scss +197 -0
- package/components/block-accordion-v3/accordion-v3.twig +51 -0
- package/components/block-accordion-v3/group_6888d2f0b230b.json +458 -0
- package/components/block-back-to-top-button-v3/back-to-top-button-v3.js +12 -0
- package/components/block-back-to-top-button-v3/back-to-top-button-v3.scss +68 -0
- package/components/block-back-to-top-button-v3/back-to-top-button-v3.twig +40 -0
- package/components/block-back-to-top-button-v3/group_63e24e04a1e61.json +323 -0
- package/components/block-betterreviews-display-v3/betterreviews-display-v3.js +10 -0
- package/components/block-betterreviews-display-v3/betterreviews-display-v3.scss +104 -0
- package/components/block-betterreviews-display-v3/betterreviews-display-v3.twig +24 -0
- package/components/block-betterreviews-display-v3/group_6892880fc1a00.json +182 -0
- package/components/block-block-interactions-v3/block-interactions-v3.js +53 -0
- package/components/block-block-interactions-v3/block-interactions-v3.scss +32 -0
- package/components/block-block-interactions-v3/block-interactions-v3.twig +55 -0
- package/components/block-block-interactions-v3/group_687e1575ba23d.json +700 -0
- package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.js +243 -0
- package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.scss +156 -0
- package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.twig +146 -0
- package/components/block-carousel-multi-layout-v3/group_686bd42e551d6.json +578 -0
- package/components/block-cocktail-recipe-v3/cocktail-recipe-v3.js +127 -0
- package/components/block-cocktail-recipe-v3/cocktail-recipe-v3.scss +345 -0
- package/components/block-cocktail-recipe-v3/cocktail-recipe-v3.twig +93 -0
- package/components/block-cocktail-recipe-v3/group_68fff19fa4dd0.json +202 -0
- package/components/block-cover-link-v3/cover-link-v3.js +7 -0
- package/components/block-cover-link-v3/cover-link-v3.scss +10 -0
- package/components/block-cover-link-v3/cover-link-v3.twig +16 -0
- package/components/block-cover-link-v3/group_687192c28b7eb.json +96 -0
- package/components/block-divider-v3/divider-v3.js +8 -0
- package/components/block-divider-v3/divider-v3.scss +103 -0
- package/components/block-divider-v3/divider-v3.twig +45 -0
- package/components/block-divider-v3/group_686b919696bfe.json +891 -0
- package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.js +44 -0
- package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.scss +93 -0
- package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.twig +43 -0
- package/components/block-featured-image-gallery-v3/group_5f91897095b42.json +88 -0
- package/components/block-form-selection-v3/form-selection-v3.js +78 -0
- package/components/block-form-selection-v3/form-selection-v3.scss +38 -0
- package/components/block-form-selection-v3/form-selection-v3.twig +84 -0
- package/components/block-form-selection-v3/group_68752e7949e53.json +351 -0
- package/components/block-gradient-layer-v3/gradient-layer-v3.js +7 -0
- package/components/block-gradient-layer-v3/gradient-layer-v3.scss +8 -0
- package/components/block-gradient-layer-v3/gradient-layer-v3.twig +78 -0
- package/components/block-gradient-layer-v3/group_686fdadc85df4.json +206 -0
- package/components/block-group-container-v3/group-container-v3.js +7 -0
- package/components/block-group-container-v3/group-container-v3.php +14 -0
- package/components/block-group-container-v3/group-container-v3.scss +45 -0
- package/components/block-group-container-v3/group-container-v3.twig +70 -0
- package/components/block-group-container-v3/group_6865578ada499.json +3660 -0
- package/components/block-lottie-content-v3/group_687197027216d.json +177 -0
- package/components/block-lottie-content-v3/lottie-content-v3.js +25 -0
- package/components/block-lottie-content-v3/lottie-content-v3.scss +2 -0
- package/components/block-lottie-content-v3/lottie-content-v3.twig +15 -0
- package/components/block-market-selector-v3/group_68752075dd831.json +129 -0
- package/components/block-market-selector-v3/market-selector-v3.js +7 -0
- package/components/block-market-selector-v3/market-selector-v3.scss +120 -0
- package/components/block-market-selector-v3/market-selector-v3.twig +40 -0
- package/components/block-modal-form-v3/modal-form-v3.js +59 -0
- package/components/block-modal-form-v3/modal-form-v3.scss +6 -0
- package/components/block-modal-form-v3/modal-form-v3.twig +30 -0
- package/components/block-nav-menu-container-v3/group_687e00b45e9a3.json +187 -0
- package/components/block-nav-menu-container-v3/nav-menu-container-v3.js +7 -0
- package/components/block-nav-menu-container-v3/nav-menu-container-v3.scss +3 -0
- package/components/block-nav-menu-container-v3/nav-menu-container-v3.twig +23 -0
- package/components/block-post-info-v3/group_6866429531436.json +3112 -0
- package/components/block-post-info-v3/post-info-v3/bazaarvoice-inline.twig +13 -0
- package/components/block-post-info-v3/post-info-v3/better-reviews.twig +15 -0
- package/components/block-post-info-v3/post-info-v3/divider.twig +8 -0
- package/components/block-post-info-v3/post-info-v3/drink-description.twig +10 -0
- package/components/block-post-info-v3/post-info-v3/global-image.twig +22 -0
- package/components/block-post-info-v3/post-info-v3/gradient-layer.twig +78 -0
- package/components/block-post-info-v3/post-info-v3/gradient-overlay.twig +10 -0
- package/components/block-post-info-v3/post-info-v3/post-author.twig +17 -0
- package/components/block-post-info-v3/post-info-v3/post-buy-now.twig +116 -0
- package/components/block-post-info-v3/post-info-v3/post-categories.twig +15 -0
- package/components/block-post-info-v3/post-info-v3/post-headline.twig +15 -0
- package/components/block-post-info-v3/post-info-v3/post-image.twig +47 -0
- package/components/block-post-info-v3/post-info-v3/post-info-description.twig +15 -0
- package/components/block-post-info-v3/post-info-v3/post-info-subtitle.twig +14 -0
- package/components/block-post-info-v3/post-info-v3/post-link.twig +42 -0
- package/components/block-post-info-v3/post-info-v3/post-name.twig +12 -0
- package/components/block-post-info-v3/post-info-v3/post-publish-date.twig +12 -0
- package/components/block-post-info-v3/post-info-v3/post-tags.twig +24 -0
- package/components/block-post-info-v3/post-info-v3/post-text-alternative-style.twig +16 -0
- package/components/block-post-info-v3/post-info-v3/post-title.twig +15 -0
- package/components/block-post-info-v3/post-info-v3/post-video.twig +27 -0
- package/components/block-post-info-v3/post-info-v3/reservebar-add-to-cart.twig +32 -0
- package/components/block-post-info-v3/post-info-v3/shopify-add-to-cart.twig +31 -0
- package/components/block-post-info-v3/post-info-v3/social-networks.twig +33 -0
- package/components/block-post-info-v3/post-info-v3/spacer-v3.twig +9 -0
- package/components/block-post-info-v3/post-info-v3.js +10 -0
- package/components/block-post-info-v3/post-info-v3.scss +210 -0
- package/components/block-post-info-v3/post-info-v3.twig +67 -0
- package/components/block-product-info-v3/group_68909995b6550.json +3544 -0
- package/components/block-product-info-v3/product-info-v3/product-abv.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-cask-type-label.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-cask-type.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-colour-label.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-colour.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-description.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-finish-label.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-finish.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-headline.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-image.twig +43 -0
- package/components/block-product-info-v3/product-info-v3/product-name.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-nose-label.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-nose.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-pair-with-label.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-pair-with.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-palate-label.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-palate.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-taste-label.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-taste.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/product-volume.twig +14 -0
- package/components/block-product-info-v3/product-info-v3/spacer-v3.twig +9 -0
- package/components/block-product-info-v3/product-info-v3.js +7 -0
- package/components/block-product-info-v3/product-info-v3.scss +171 -0
- package/components/block-product-info-v3/product-info-v3.twig +43 -0
- package/components/block-raw-html-v3/group_686ba68d603a2.json +212 -0
- package/components/block-raw-html-v3/raw-html-v3.js +7 -0
- package/components/block-raw-html-v3/raw-html-v3.scss +2 -0
- package/components/block-raw-html-v3/raw-html-v3.twig +17 -0
- package/components/block-responsive-table-v3/group_6617ecc987ddd.json +394 -0
- package/components/block-responsive-table-v3/responsive-table-v3.js +7 -0
- package/components/block-responsive-table-v3/responsive-table-v3.scss +49 -0
- package/components/block-responsive-table-v3/responsive-table-v3.twig +47 -0
- package/components/block-scrolling-banner-v3/group_68e67fca1ec80.json +664 -0
- package/components/block-scrolling-banner-v3/scrolling-banner-v3.js +144 -0
- package/components/block-scrolling-banner-v3/scrolling-banner-v3.scss +104 -0
- package/components/block-scrolling-banner-v3/scrolling-banner-v3.twig +72 -0
- package/components/block-section-separator-v3/group_6874c8d79b84b.json +576 -0
- package/components/block-section-separator-v3/section-separator-v3.js +7 -0
- package/components/block-section-separator-v3/section-separator-v3.scss +42 -0
- package/components/block-section-separator-v3/section-separator-v3.twig +46 -0
- package/components/block-single-column-container-v3/group_6887640458d61.json +481 -0
- package/components/block-single-column-container-v3/single-column-container-v3.js +7 -0
- package/components/block-single-column-container-v3/single-column-container-v3.scss +14 -0
- package/components/block-single-column-container-v3/single-column-container-v3.twig +30 -0
- package/components/block-single-responsive-image-v3/group_6867bcf24c2fc.json +128 -0
- package/components/block-single-responsive-image-v3/single-responsive-image-v3.js +7 -0
- package/components/block-single-responsive-image-v3/single-responsive-image-v3.scss +9 -0
- package/components/block-single-responsive-image-v3/single-responsive-image-v3.twig +24 -0
- package/components/block-site-copyright-notice-v3/group_66296c3716b4f.json +304 -0
- package/components/block-site-copyright-notice-v3/index.html +33 -0
- package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.js +58 -0
- package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.scss +21 -0
- package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.twig +30 -0
- package/components/block-site-logo-container-v3/group_687e3b887b508.json +175 -0
- package/components/block-site-logo-container-v3/site-logo-container-v3.js +7 -0
- package/components/block-site-logo-container-v3/site-logo-container-v3.scss +29 -0
- package/components/block-site-logo-container-v3/site-logo-container-v3.twig +40 -0
- package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.js +7 -0
- package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.scss +16 -0
- package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.twig +24 -0
- package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.js +8 -0
- package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.scss +31 -0
- package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.twig +18 -0
- package/components/block-social-networks-v3/group_6891d4d7db414.json +146 -0
- package/components/block-social-networks-v3/social-networks-v3.js +7 -0
- package/components/block-social-networks-v3/social-networks-v3.scss +7 -0
- package/components/block-social-networks-v3/social-networks-v3.twig +24 -0
- package/components/block-spacer-v3/group_686b8cb48c708.json +131 -0
- package/components/block-spacer-v3/spacer-v3.js +8 -0
- package/components/block-spacer-v3/spacer-v3.scss +19 -0
- package/components/block-spacer-v3/spacer-v3.twig +13 -0
- package/components/block-spotify-embed-v3/group_67d04c4c4cf78.json +120 -0
- package/components/block-spotify-embed-v3/spotify-embed-v3.js +7 -0
- package/components/block-spotify-embed-v3/spotify-embed-v3.scss +11 -0
- package/components/block-spotify-embed-v3/spotify-embed-v3.twig +23 -0
- package/components/block-standard-content-v3/group_68655756737c9.json +344 -0
- package/components/block-standard-content-v3/standard-content-v3.js +39 -0
- package/components/block-standard-content-v3/standard-content-v3.scss +11 -0
- package/components/block-standard-content-v3/standard-content-v3.twig +46 -0
- package/components/block-sticky-buy-cta-v3/group_68b061bb56543.json +172 -0
- package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.js +7 -0
- package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.scss +2 -0
- package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.twig +92 -0
- package/components/block-sub-group-container-v3/group_686ceba7d6066.json +2142 -0
- package/components/block-sub-group-container-v3/sub-group-container-v3.js +9 -0
- package/components/block-sub-group-container-v3/sub-group-container-v3.scss +27 -0
- package/components/block-sub-group-container-v3/sub-group-container-v3.twig +59 -0
- package/components/block-video-content-v3/group_687190b8d26df.json +169 -0
- package/components/block-video-content-v3/video-content-v3.js +12 -0
- package/components/block-video-content-v3/video-content-v3.scss +123 -0
- package/components/block-video-content-v3/video-content-v3.twig +26 -0
- package/components/component-accent-image-v3/accent-image-v3.twig +119 -0
- package/components/component-accent-image-v3/group_686cd5547efd2.json +975 -0
- package/components/component-accent-text-v3/accent-text-v3-extra.scss +2 -0
- package/components/component-accent-text-v3/accent-text-v3.scss +60 -0
- package/components/component-accent-text-v3/group_686b91fed8f5f.json +220 -0
- package/components/component-accordion-v3/accordion-v3.js +113 -0
- package/components/component-accordion-v3/accordion-v3.scss +189 -0
- package/components/component-accordion-v3/accordion-v3.twig +39 -0
- package/components/component-accordion-v3/group_66ab7edfc6d63.json +535 -0
- package/components/component-animations-style-v3/animations-style-v3.twig +5 -0
- package/components/component-animations-v3/animations-v3.scss +161 -0
- package/components/component-animations-v3/animations-v3.twig +19 -0
- package/components/component-animations-v3/group_689f39c37980a.json +499 -0
- package/components/component-better-reviews-v3/better-reviews-v3.scss +137 -0
- package/components/component-block-padding-v3/block-padding-v3.scss +64 -0
- package/components/component-block-padding-v3/block-padding-v3.twig +33 -0
- package/components/component-block-padding-v3/group_689f66f3e26df.json +535 -0
- package/components/component-block-settings-v3/block-settings-v3.scss +46 -0
- package/components/component-block-settings-v3/block-settings-v3.twig +34 -0
- package/components/component-block-settings-v3/group_689f649af2ac4.json +983 -0
- package/components/component-blockquote-v3/blockquote-v3.scss +54 -0
- package/components/component-box-shadow-v3/box-shadow-v3.scss +12 -0
- package/components/component-buy-now-button-v3/buy-now-buttons-v3.twig +69 -0
- package/components/component-carousel-fields-v3/group_686fd30f4d873.json +3025 -0
- package/components/component-child-block-video-fields/group_6852a4f384204.json +536 -0
- package/components/component-content-box-settings-v3/content-box-settings-v3.scss +205 -0
- package/components/component-content-box-settings-v3/content-box-settings-v3.twig +156 -0
- package/components/component-content-box-settings-v3/group_686e6ec702acc.json +1729 -0
- package/components/component-content-box-v3/content-box-v3.js +6 -0
- package/components/component-content-box-v3/content-box-v3.scss +28 -0
- package/components/component-content-box-v3/content-box-v3.twig +23 -0
- package/components/component-content-box-v3/group_686b8a4f1fe5d.json +568 -0
- package/components/component-content-image-v3/content-image-v3.scss +33 -0
- package/components/component-content-image-v3/content-image-v3.twig +77 -0
- package/components/component-content-image-v3/group_68722935c428f.json +647 -0
- package/components/component-core-body-close-v3/core-body-close-v3.twig +2 -0
- package/components/component-core-body-open-v3/core-body-open-v3.twig +32 -0
- package/components/component-core-group-container-styles-v3/core-group-container-styles-v3.scss +48 -0
- package/components/component-core-head-v3/core-head-v3.twig +62 -0
- package/components/component-cta-selection-v3/cta-selection-v3.twig +256 -0
- package/components/component-cta-selection-v3/group_686e93eb832a6.json +1117 -0
- package/components/component-e-shop-settings-v3/e-shop-settings-v3.twig +114 -0
- package/components/component-element-positioning-v3/element-positioning-v3.scss +41 -0
- package/components/component-element-positioning-v3/element-positioning-v3.twig +42 -0
- package/components/component-element-positioning-v3/group_6882281544263.json +635 -0
- package/components/component-endpoints/endpoints.php +32 -0
- package/components/component-flex-layout-container-v3/flex-layout-container-v3.scss +38 -0
- package/components/component-flex-layout-container-v3/flex-layout-container-v3.twig +28 -0
- package/components/component-flex-layout-container-v3/group_6887a026bbc33.json +773 -0
- package/components/component-global-content-max-width-v3/global-content-max-width-v3.twig +10 -0
- package/components/component-global-content-max-width-v3/group_63c83de4f0a99.json +58 -0
- package/components/component-gradient-overlay-v3/gradient-overlay-v3.scss +43 -0
- package/components/component-gradient-overlay-v3/gradient-overlay-v3.twig +58 -0
- package/components/component-gradient-overlay-v3/group_686fd9ca50b63.json +495 -0
- package/components/component-grid-gap-mults-v3/grid-gap-mults-v3.twig +10 -0
- package/components/component-grid-gap-mults-v3/group_689221b94ce69.json +220 -0
- package/components/component-grid-layout-container-v3/grid-layout-container-v3.scss +154 -0
- package/components/component-grid-layout-container-v3/grid-layout-container-v3.twig +88 -0
- package/components/component-grid-layout-container-v3/group_6882282e65bf2.json +1525 -0
- package/components/component-grid-layout-element-v3/grid-layout-element-v3.scss +47 -0
- package/components/component-grid-layout-element-v3/grid-layout-element-v3.twig +23 -0
- package/components/component-grid-layout-element-v3/group_68822860bda9f.json +728 -0
- package/components/component-nav-menu-v3/group_68da703f710ff.json +432 -0
- package/components/component-nav-menu-v3/nav-menu-v3.scss +43 -0
- package/components/component-nav-menu-v3/nav-menu-v3.twig +75 -0
- package/components/component-responsive-image-v3/group_6867bc53f1da8.json +1515 -0
- package/components/component-responsive-image-v3/responsive-image-v3.scss +63 -0
- package/components/component-responsive-image-v3/responsive-image-v3.twig +71 -0
- package/components/component-responsive-picture-element-v3/responsive-picture-element-v3.twig +35 -0
- package/components/component-responsive-show-hide/responsive-show-hide-v3.twig +9 -0
- package/components/component-social-media-share-v3/social-media-share-v3-extra.scss +6 -0
- package/components/component-social-media-share-v3/social-media-share-v3.scss +131 -0
- package/components/component-social-networks-v3/social-networks-v3.scss +73 -0
- package/components/component-social-networks-v3/social-networks-v3.twig +43 -0
- package/components/component-text-editor-settings-container-classes-v3/text-editor-settings-container-classes-v3.twig +9 -0
- package/components/component-text-editor-settings-element-classes-v3/text-editor-settings-element-classes-v3.twig +13 -0
- package/components/component-text-editor-settings-v3/group_687a4e2334e37.json +1377 -0
- package/components/component-text-editor-settings-variables-v3/text-editor-settings-variables-v3.twig +61 -0
- package/components/component-video-component-v3/video-component-v3.twig +90 -0
- package/components/component-video-fields-v3/group_6872282f44634.json +1013 -0
- package/components/component-video-trigger-button-v3/video-trigger-button-v3.twig +14 -0
- package/components/component-wysiwyg-editor-v3/group_6867e153af466.json +127 -0
- package/components/component-wysiwyg-editor-v3/wysiwyg-editor-v3.twig +18 -0
- package/components/core-block-editor-assets-v3/core-block-editor-assets-v3.php +14 -0
- package/components/core-core-block-render-function-v3/core-block-render-function-v3.php +39 -0
- package/components/core-core-design-settings-v3/core-design-settings-v3.php +43 -0
- package/components/core-core-post-overrides-v3/core-post-overrides-v3.php +21 -0
- package/components/core-core-themes/core-themes-v3.php +68 -0
- package/components/core-core-typography-v3/core-typography-v3.php +239 -0
- package/components/core-globals/globals.php +39 -0
- package/components/entrypoint-entry-point-classes-v3/entry-point-classes-v3.twig +12 -0
- package/components/entrypoint-entry-point-html-v3/entry-point-html-v3.twig +19 -0
- package/components/entrypoint-entry-point-style-v3/entry-point-style-v3.twig +11 -0
- package/components/fields-acf-wysiwyg-options-v3/acf-wysiwyg-options-v3.php +221 -0
- package/components/fields-animations-v3/animations-v3.scss +127 -0
- package/components/fields-archive-pages-v3/group_635e777ce46d4.json +150 -0
- package/components/fields-cocktail-info-v3/group_64c29b7f188ca.json +686 -0
- package/components/fields-content-container-settings-v3/content-container-settings-v3.scss +213 -0
- package/components/fields-content-container-v3/content-container-v3.js +96 -0
- package/components/fields-content-container-v3/content-container-v3.scss +31 -0
- package/components/fields-core-critical-v3/core-critical-v3.scss +13 -0
- package/components/fields-core-css-modules-v3/core-css-modules-v3.scss +13 -0
- package/components/fields-core-css-sizing-vars-v3/core-css-sizing-vars-v3.scss +125 -0
- package/components/fields-core-cta-v3/core-cta-v3.scss +276 -0
- package/components/fields-core-functions-v3/core-functions-v3.scss +30 -0
- package/components/fields-core-generic-v3/core-generic-v3.scss +299 -0
- package/components/fields-core-mixins-v3/core-mixins-v3.scss +744 -0
- package/components/fields-core-root-variables-v3/core-root-variables-v3.scss +47 -0
- package/components/fields-core-typography-mixins-v3/core-typography-mixins-v3.scss +1080 -0
- package/components/fields-core-typography-v3/core-typography-v3.scss +457 -0
- package/components/fields-core-wordpress-block-editor-preview-v3/core-wordpress-block-editor-preview-v3.js +270 -0
- package/components/fields-core-wordpress-block-editor-preview-v3/core-wordpress-block-editor-preview-v3.scss +106 -0
- package/components/fields-drink-responsibly-notice-v3/group_68751257883ad.json +266 -0
- package/components/fields-dynamic-critical-css-v3/group_65abcd463e8d0.json +126 -0
- package/components/fields-e-shop-settings-v3/e-shop-settings-v3.twig +87 -0
- package/components/fields-e-shop-settings-v3/group_650b24b4e623d.json +803 -0
- package/components/fields-global-preload-v3/group_65e0bd35e781b.json +289 -0
- package/components/fields-image-management-service-v3/group_677813165b633.json +149 -0
- package/components/fields-ingredients-list/group_6900f19dadebf.json +225 -0
- package/components/fields-modal-popup-content-v3/group_689876f1ee3fc.json +403 -0
- package/components/fields-modal-popup-content-v3/modal-popup-content-v3.twig +18 -0
- package/components/fields-post-info-v3/group_6867bbe167dd2.json +1089 -0
- package/components/fields-product-info-v3/group_689098dd3a131.json +721 -0
- package/components/fields-upload-filesize-limit-v3/group_659d259760a1d.json +56 -0
- package/components/fields-video-management-services-v3/group_67b4cac05cb30.json +146 -0
- package/components/webc-counter-display/counter-display.css +2 -0
- package/components/webc-counter-display/counter-display.html +5 -0
- package/components/webc-counter-display/counter-display.js +30 -0
- package/components/webc-counter-display/index.html +30 -0
- package/components/webc-layout-container/index.html +108 -0
- package/components/webc-layout-container/layout-container.css +9 -0
- package/components/webc-layout-container/layout-container.html +5 -0
- package/components/webc-layout-container/layout-container.js +22 -0
- package/components/webc-loadmore-trigger/index.html +30 -0
- package/components/webc-loadmore-trigger/loadmore-trigger.css +20 -0
- package/components/webc-loadmore-trigger/loadmore-trigger.html +6 -0
- package/components/webc-loadmore-trigger/loadmore-trigger.js +34 -0
- package/components/webc-post-carousel-display-module/index.html +30 -0
- package/components/webc-post-carousel-display-module/post-carousel-display-module.css +36 -0
- package/components/webc-post-carousel-display-module/post-carousel-display-module.html +5 -0
- package/components/webc-post-carousel-display-module/post-carousel-display-module.js +48 -0
- package/components/webc-post-filter-module/dev-content/amber.webp +0 -0
- package/components/webc-post-filter-module/dev-content/bluey.webp +0 -0
- package/components/webc-post-filter-module/dev-content/chucky-vanille.webp +0 -0
- package/components/webc-post-filter-module/dev-content/dev-content.js +347 -0
- package/components/webc-post-filter-module/dev-content/dev-contentlocal.js +362 -0
- package/components/webc-post-filter-module/dev-content/fat-gigio-basket-life.webp +0 -0
- package/components/webc-post-filter-module/dev-content/fat-gigio-kitten.webp +0 -0
- package/components/webc-post-filter-module/dev-content/fat-gigio-sleepy.webp +0 -0
- package/components/webc-post-filter-module/dev-content/kai-lounging.webp +0 -0
- package/components/webc-post-filter-module/dev-content/kai-selfie.webp +0 -0
- package/components/webc-post-filter-module/dev-content/kai.webp +0 -0
- package/components/webc-post-filter-module/dev-content/lulu-mad.webp +0 -0
- package/components/webc-post-filter-module/dev-content/lulu-serious.webp +0 -0
- package/components/webc-post-filter-module/dev-content/martha-on-the-mat.webp +0 -0
- package/components/webc-post-filter-module/dev-content/max-on-the-mat.webp +0 -0
- package/components/webc-post-filter-module/dev-content/mephy-dreams-of-mice.webp +0 -0
- package/components/webc-post-filter-module/dev-content/mr-business-doing-work.webp +0 -0
- package/components/webc-post-filter-module/dev-content/mr-business-on-top.webp +0 -0
- package/components/webc-post-filter-module/dev-content/peanut-keeping-an-eye.webp +0 -0
- package/components/webc-post-filter-module/dev-content/pete-at-work.webp +0 -0
- package/components/webc-post-filter-module/dev-content/pete-bath.webp +0 -0
- package/components/webc-post-filter-module/dev-content/pete-dinosaur.webp +0 -0
- package/components/webc-post-filter-module/dev-content/pete-lawn.webp +0 -0
- package/components/webc-post-filter-module/dev-content/pete-snacks.webp +0 -0
- package/components/webc-post-filter-module/dev-content/ramses-kitten.webp +0 -0
- package/components/webc-post-filter-module/dev-content/ramses-school-day.webp +0 -0
- package/components/webc-post-filter-module/dev-content/ramses-tired.webp +0 -0
- package/components/webc-post-filter-module/dev-content/remy-garden-contemplation.webp +0 -0
- package/components/webc-post-filter-module/dev-content/sky-field.webp +0 -0
- package/components/webc-post-filter-module/dev-content/sky-luxury-2.webp +0 -0
- package/components/webc-post-filter-module/dev-content/sky-luxury.webp +0 -0
- package/components/webc-post-filter-module/dev-content/sky-puppy-good-dog.webp +0 -0
- package/components/webc-post-filter-module/dev-content/sky-puppy-pose.webp +0 -0
- package/components/webc-post-filter-module/dev-content/sky-security.webp +0 -0
- package/components/webc-post-filter-module/dev-content/vanille-asleep.webp +0 -0
- package/components/webc-post-filter-module/dev-content/vanille-bass.webp +0 -0
- package/components/webc-post-filter-module/dev-content/vanille-party.webp +0 -0
- package/components/webc-post-filter-module/dev-content/vanille-puppy-eyes.webp +0 -0
- package/components/webc-post-filter-module/dev-content/vanille-puppy.webp +0 -0
- package/components/webc-post-filter-module/index.html +30 -0
- package/components/webc-post-filter-module/post-filter-module.css +59 -0
- package/components/webc-post-filter-module/post-filter-module.html +13 -0
- package/components/webc-post-filter-module/post-filter-module.js +359 -0
- package/components/webc-post-filter-module-no-group/index.html +30 -0
- package/components/webc-post-filter-module-no-group/post-filter-module-no-group.css +59 -0
- package/components/webc-post-filter-module-no-group/post-filter-module-no-group.html +13 -0
- package/components/webc-post-filter-module-no-group/post-filter-module-no-group.js +312 -0
- package/components/webc-post-grid-display-module/index.html +30 -0
- package/components/webc-post-grid-display-module/post-grid-display-module.css +42 -0
- package/components/webc-post-grid-display-module/post-grid-display-module.html +6 -0
- package/components/webc-post-grid-display-module/post-grid-display-module.js +48 -0
- package/components/webc-ptfg-9000/index.html +108 -0
- package/components/webc-ptfg-9000/ptfg-9000.css +14 -0
- package/components/webc-ptfg-9000/ptfg-9000.html +1 -0
- package/components/webc-ptfg-9000/ptfg-9000.js +42 -0
- package/components/webc-responsive-image/index.html +108 -0
- package/components/webc-responsive-image/layout-container.css +9 -0
- package/components/webc-responsive-image/layout-container.js +22 -0
- package/components/webc-responsive-image/responsive-image.html +15 -0
- package/components/webc-slot-test/slot-test.html +25 -0
- package/components/webc-text-input-trigger/index.html +30 -0
- package/components/webc-text-input-trigger/text-input-trigger.css +6 -0
- package/components/webc-text-input-trigger/text-input-trigger.html +4 -0
- package/components/webc-text-input-trigger/text-input-trigger.js +33 -0
- package/components/webc-toggle-trigger/index.html +30 -0
- package/components/webc-toggle-trigger/toggle-trigger.css +13 -0
- package/components/webc-toggle-trigger/toggle-trigger.html +8 -0
- package/components/webc-toggle-trigger/toggle-trigger.js +53 -0
- package/createDynamicBlockScss-v3.js +25 -0
- package/createJsAssets-v3.js +35 -0
- package/createJsAssets.js +31 -0
- package/createNewBlock.js +131 -0
- package/createNewChildBlock2.js +140 -0
- package/createPreviewScss.js +35 -0
- package/datalayer-tools.mjs +2 -0
- package/duplicateBlock.js +123 -0
- package/esbuild.mjs +87 -0
- package/exportAllBlocks.js +147 -0
- package/exportBlock.js +109 -0
- package/exportChildBlock.js +102 -0
- package/exportCustomCachesToLibrary.js +76 -0
- package/exportEntrypointToLibrary.js +79 -0
- package/exportImagesToLibrary.js +68 -0
- package/exportSEOExtrasToLibrary.js +76 -0
- package/exportToLibrary.js +551 -0
- package/importBlock.js +92 -0
- package/importChildBlock.js +76 -0
- package/install-component.js +204 -0
- package/list-components.js +9 -0
- package/new-block-templates/template-acf-pattern.js +30 -0
- package/new-block-templates/template-block-json.js +37 -0
- package/new-block-templates/template-default.js +24 -0
- package/new-block-templates/template-js-blank.js +12 -0
- package/new-block-templates/template-scss-blank.js +6 -0
- package/no-audio.vtt +4 -0
- package/onion-loader-dev.js +260 -0
- package/onion-loader-local.js +222 -0
- package/onion-loader-v2.js +285 -0
- package/onion-loader.js +14 -22
- package/package.json +1 -9
- package/public/.gitkeep +0 -0
- package/public/assetList.mjs +3 -0
- package/public/block-accent-image-v3/accent-image-v3.css +2 -0
- package/public/block-accent-image-v3/accent-image-v3.js +7 -0
- package/public/block-accordion-v3/accordion-v3.css +380 -0
- package/public/block-accordion-v3/accordion-v3.js +117 -0
- package/public/block-back-to-top-button-v3/back-to-top-button-v3.css +64 -0
- package/public/block-back-to-top-button-v3/back-to-top-button-v3.js +12 -0
- package/public/block-betterreviews-display-v3/betterreviews-display-v3.css +95 -0
- package/public/block-betterreviews-display-v3/betterreviews-display-v3.js +7 -0
- package/public/block-block-interactions-v3/block-interactions-v3.css +36 -0
- package/public/block-block-interactions-v3/block-interactions-v3.js +44 -0
- package/public/block-carousel-multi-layout-v3/carousel-multi-layout-v3.css +187 -0
- package/public/block-carousel-multi-layout-v3/carousel-multi-layout-v3.js +185 -0
- package/public/block-cocktail-recipe-v3/cocktail-recipe-v3.css +268 -0
- package/public/block-cocktail-recipe-v3/cocktail-recipe-v3.js +95 -0
- package/public/block-cover-link-v3/cover-link-v3.css +8 -0
- package/public/block-cover-link-v3/cover-link-v3.js +7 -0
- package/public/block-divider-v3/divider-v3.css +74 -0
- package/public/block-divider-v3/divider-v3.js +7 -0
- package/public/block-featured-image-gallery-v3/featured-image-gallery-v3.css +98 -0
- package/public/block-featured-image-gallery-v3/featured-image-gallery-v3.js +44 -0
- package/public/block-form-selection-v3/form-selection-v3.css +31 -0
- package/public/block-form-selection-v3/form-selection-v3.js +61 -0
- package/public/block-gradient-layer-v3/gradient-layer-v3.css +45 -0
- package/public/block-gradient-layer-v3/gradient-layer-v3.js +7 -0
- package/public/block-group-container-v3/group-container-v3.css +303 -0
- package/public/block-group-container-v3/group-container-v3.js +7 -0
- package/public/block-lottie-content-v3/lottie-content-v3.css +0 -0
- package/public/block-lottie-content-v3/lottie-content-v3.js +25 -0
- package/public/block-market-selector-v3/market-selector-v3.css +136 -0
- package/public/block-market-selector-v3/market-selector-v3.js +7 -0
- package/public/block-modal-form-v3/modal-form-v3.css +0 -0
- package/public/block-modal-form-v3/modal-form-v3.js +48 -0
- package/public/block-nav-menu-container-v3/nav-menu-container-v3.css +3 -0
- package/public/block-nav-menu-container-v3/nav-menu-container-v3.js +7 -0
- package/public/block-post-info-v3/post-info-v3.css +1148 -0
- package/public/block-post-info-v3/post-info-v3.js +7 -0
- package/public/block-post-type-filter-grid-v3/post-type-filter-grid-v3.css +873 -0
- package/public/block-post-type-filter-grid-v3/post-type-filter-grid-v3.js +13 -0
- package/public/block-product-info-v3/product-info-v3.css +846 -0
- package/public/block-product-info-v3/product-info-v3.js +7 -0
- package/public/block-raw-html-v3/raw-html-v3.css +0 -0
- package/public/block-raw-html-v3/raw-html-v3.js +7 -0
- package/public/block-responsive-table-v3/responsive-table-v3.css +50 -0
- package/public/block-responsive-table-v3/responsive-table-v3.js +7 -0
- package/public/block-scrolling-banner-v3/scrolling-banner-v3.css +93 -0
- package/public/block-scrolling-banner-v3/scrolling-banner-v3.js +118 -0
- package/public/block-section-separator-v3/section-separator-v3.css +43 -0
- package/public/block-section-separator-v3/section-separator-v3.js +7 -0
- package/public/block-single-column-container-v3/single-column-container-v3.css +14 -0
- package/public/block-single-column-container-v3/single-column-container-v3.js +7 -0
- package/public/block-single-responsive-image-v3/single-responsive-image-v3.css +61 -0
- package/public/block-single-responsive-image-v3/single-responsive-image-v3.js +7 -0
- package/public/block-site-copyright-notice-v3/site-copyright-notice-v3.css +20 -0
- package/public/block-site-copyright-notice-v3/site-copyright-notice-v3.js +44 -0
- package/public/block-site-logo-container-v3/site-logo-container-v3.css +18 -0
- package/public/block-site-logo-container-v3/site-logo-container-v3.js +7 -0
- package/public/block-site-title-and-tagline-v3/site-title-and-tagline-v3.css +12 -0
- package/public/block-site-title-and-tagline-v3/site-title-and-tagline-v3.js +7 -0
- package/public/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.css +25 -0
- package/public/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.js +8 -0
- package/public/block-social-networks-v3/social-networks-v3.css +74 -0
- package/public/block-social-networks-v3/social-networks-v3.js +7 -0
- package/public/block-spacer-v3/spacer-v3.css +16 -0
- package/public/block-spacer-v3/spacer-v3.js +2 -0
- package/public/block-spotify-embed-v3/spotify-embed-v3.css +7 -0
- package/public/block-spotify-embed-v3/spotify-embed-v3.js +7 -0
- package/public/block-standard-content-v3/standard-content-v3.css +423 -0
- package/public/block-standard-content-v3/standard-content-v3.js +7 -0
- package/public/block-sticky-buy-cta-v3/sticky-buy-cta-v3.css +0 -0
- package/public/block-sticky-buy-cta-v3/sticky-buy-cta-v3.js +7 -0
- package/public/block-sub-group-container-v3/sub-group-container-v3.css +288 -0
- package/public/block-sub-group-container-v3/sub-group-container-v3.js +2 -0
- package/public/block-video-content-v3/video-content-v3.css +102 -0
- package/public/block-video-content-v3/video-content-v3.js +11 -0
- package/public/dynamicBlockScss-v3.css +6392 -0
- package/public/dynamicBlockScss-v3.scss +37 -0
- package/public/jsAssets.mjs +4 -0
- package/public/publicBundleBase.css +4742 -0
- package/public/publicBundleBase.scss +11 -0
- package/removeBlock.js +124 -0
- package/update-all-components.js +96 -0
- package/update-component.js +538 -0
- package/update-template.js +538 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# This workflow will run tests using node and then publish a package to NPM when a release is created
|
|
2
|
+
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
|
|
3
|
+
|
|
4
|
+
name: Node.js Package
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
release:
|
|
8
|
+
types: [published]
|
|
9
|
+
branches:
|
|
10
|
+
- master
|
|
11
|
+
permissions:
|
|
12
|
+
id-token: write # Required for OIDC
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
build:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
- uses: actions/setup-node@v4
|
|
21
|
+
with:
|
|
22
|
+
node-version: 24
|
|
23
|
+
# Ensure npm 11.5.1 or later is installed
|
|
24
|
+
- name: Update npm
|
|
25
|
+
run: npm install -g npm@latest
|
|
26
|
+
- run: npm ci
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
publish:
|
|
30
|
+
needs: build
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v4
|
|
34
|
+
- uses: actions/setup-node@v4
|
|
35
|
+
with:
|
|
36
|
+
node-version: 24
|
|
37
|
+
registry-url: https://registry.npmjs.org/
|
|
38
|
+
- run: npm publish
|
package/.prettierrc
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"useTabs": true,
|
|
3
|
+
"overrides": [
|
|
4
|
+
{
|
|
5
|
+
"files": "*.test.js",
|
|
6
|
+
"options": {
|
|
7
|
+
"semi": true
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"files": ["*.js", "*.css", "*.scss"],
|
|
12
|
+
"options": {
|
|
13
|
+
"useTabs": true,
|
|
14
|
+
"semi": true,
|
|
15
|
+
"singleQuote": true,
|
|
16
|
+
"trailingComma": "none",
|
|
17
|
+
"tabWidth": 4,
|
|
18
|
+
"bracketSpacing": false
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { promisify } from 'node:util';
|
|
4
|
+
|
|
5
|
+
// Import the function to be tested
|
|
6
|
+
import updateComponent from '../update-component.js';
|
|
7
|
+
|
|
8
|
+
// Promisify the fs functions used in the copyBlockComponent function
|
|
9
|
+
const readdirPromisified = promisify(fs.readdir);
|
|
10
|
+
const accessPromisified = promisify(fs.access);
|
|
11
|
+
|
|
12
|
+
// Create a utility function to remove the file (used after each test)
|
|
13
|
+
const removeFile = async (filePath) => {
|
|
14
|
+
try {
|
|
15
|
+
await fs.promises.unlink(filePath);
|
|
16
|
+
} catch (err) {
|
|
17
|
+
// If the file doesn't exist, ignore the error
|
|
18
|
+
if (err.code !== 'ENOENT') {
|
|
19
|
+
console.error('Error removing the file:', err);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
xdescribe('copyBlockComponent function', () => {
|
|
25
|
+
const libraryPath = 'testFiles/library'; // Assuming the libraryPath is defined for the tests
|
|
26
|
+
const componentName = 'TestComponent';
|
|
27
|
+
|
|
28
|
+
// Before each test, create the source directory with some test files
|
|
29
|
+
beforeEach(async () => {
|
|
30
|
+
try {
|
|
31
|
+
const sourceDir = path.join(libraryPath, 'components', componentName);
|
|
32
|
+
await fs.promises.mkdir(sourceDir, { recursive: true });
|
|
33
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.php'), 'Test PHP content');
|
|
34
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.js'), 'Test JS content');
|
|
35
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.scss'), 'Test SCSS content');
|
|
36
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.json'), 'Test JSON content');
|
|
37
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.twig'), 'Test Twig content');
|
|
38
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.vue'), 'Test Vue content');
|
|
39
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.extra'), 'Test Extra content');
|
|
40
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.spec'), 'Test Spec content');
|
|
41
|
+
} catch (err) {
|
|
42
|
+
console.error('Error creating the source directory:', err);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// After each test, remove the source and destination files
|
|
47
|
+
afterEach(async () => {
|
|
48
|
+
try {
|
|
49
|
+
const sourceDir = path.join(libraryPath, 'components', componentName);
|
|
50
|
+
await fs.promises.rmdir(sourceDir, { recursive: true });
|
|
51
|
+
await removeFile('./inc/acf-blocks/TestComponent.php');
|
|
52
|
+
await removeFile('./assets/js/blocks/TestComponent.js');
|
|
53
|
+
await removeFile('./assets/scss/blocks/TestComponent.scss');
|
|
54
|
+
await removeFile('./acf-json/TestComponent.json');
|
|
55
|
+
await removeFile('./views/blocks/TestComponent.twig');
|
|
56
|
+
await removeFile('./assets/vue/blocks/TestComponent.vue');
|
|
57
|
+
await removeFile('./assets/scss/blocks/TestComponent/TestComponent.extra');
|
|
58
|
+
} catch (err) {
|
|
59
|
+
console.error('Error cleaning up the test files:', err);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it('should copy files from source to destination based on the file types', async () => {
|
|
64
|
+
// Call the function to be tested
|
|
65
|
+
await updateComponent.copyBlockComponent(componentName);
|
|
66
|
+
|
|
67
|
+
// Assert that the destination files exist for each file type
|
|
68
|
+
const destinationFiles = [
|
|
69
|
+
'./inc/acf-blocks/TestComponent.php',
|
|
70
|
+
'./assets/js/blocks/TestComponent.js',
|
|
71
|
+
'./assets/scss/blocks/TestComponent.scss',
|
|
72
|
+
'./acf-json/TestComponent.json',
|
|
73
|
+
'./views/blocks/TestComponent.twig',
|
|
74
|
+
'./assets/vue/blocks/TestComponent.vue',
|
|
75
|
+
'./assets/scss/blocks/TestComponent/TestComponent.extra',
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
for (const filePath of destinationFiles) {
|
|
79
|
+
const fileExists = await accessPromisified(filePath)
|
|
80
|
+
.then(() => true)
|
|
81
|
+
.catch(() => false);
|
|
82
|
+
expect(fileExists).toBe(true);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Assert that the destination files contain the same content as the source files
|
|
86
|
+
const sourceDir = path.join(libraryPath, 'components', componentName);
|
|
87
|
+
const fileTypes = ['php', 'js', 'scss', 'json', 'twig', 'vue', 'extra'];
|
|
88
|
+
for (const fileType of fileTypes) {
|
|
89
|
+
const sourceContent = await fs.promises.readFile(path.join(sourceDir, `TestComponent.${fileType}`), 'utf-8');
|
|
90
|
+
const destinationContent = await fs.promises.readFile(path.join(`./${fileType === 'extra' ? 'assets/scss/blocks/TestComponent' : fileType}s/TestComponent.${fileType}`), 'utf-8');
|
|
91
|
+
expect(destinationContent).toBe(sourceContent);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import updateComponent from '../update-component.js';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
describe('copyFile function', () => {
|
|
9
|
+
const sourceFilePath = './__spec__/files/source.txt';
|
|
10
|
+
const destinationFilePath = './__spec__/files/destination.txt';
|
|
11
|
+
|
|
12
|
+
// Helper function to delete a file if it exists
|
|
13
|
+
const deleteFileIfExists = (filePath) => {
|
|
14
|
+
if (fs.existsSync(filePath)) {
|
|
15
|
+
fs.unlinkSync(destinationFilePath);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
deleteFileIfExists(destinationFilePath);
|
|
21
|
+
jest.resetModules();
|
|
22
|
+
jest.clearAllMocks();
|
|
23
|
+
});
|
|
24
|
+
afterEach(() => {
|
|
25
|
+
deleteFileIfExists(destinationFilePath);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// Test case 1: Ensure the file is copied when destination does not exists
|
|
30
|
+
test('copies file if it does not exist', async () => {
|
|
31
|
+
await updateComponent.copyFile(sourceFilePath, destinationFilePath);
|
|
32
|
+
|
|
33
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
34
|
+
await new Promise((resolve) => setTimeout(resolve, 150)); // Adjust the delay time as needed
|
|
35
|
+
|
|
36
|
+
expect(fs.existsSync(destinationFilePath)).toBe(true);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// Test case 2: Ensure the file is copied even if the destination exists
|
|
40
|
+
test('overwrite file when destination file already exists', async () => {
|
|
41
|
+
// Create a dummy destination file to simulate an existing file
|
|
42
|
+
fs.writeFileSync(destinationFilePath, 'Dummy content Newer');
|
|
43
|
+
|
|
44
|
+
await updateComponent.copyFile(sourceFilePath, destinationFilePath);
|
|
45
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
46
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
|
|
47
|
+
|
|
48
|
+
// Assert that the destination file still exists after the function call
|
|
49
|
+
expect(fs.existsSync(destinationFilePath)).toBe(true);
|
|
50
|
+
|
|
51
|
+
// get file content
|
|
52
|
+
const destinationContent = fs.readFileSync(destinationFilePath, 'utf8');
|
|
53
|
+
|
|
54
|
+
// content should be
|
|
55
|
+
expect(destinationContent).toBe('Dummy content');
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// Test case 3: Ensure the function handles errors properly
|
|
59
|
+
test('handles errors when copying the file', async () => {
|
|
60
|
+
// Create a dummy destination file to simulate an existing file
|
|
61
|
+
// fs.writeFileSync(destinationFilePath, 'Dummy content');
|
|
62
|
+
const sourceFilePath = './__spec__/nonexistent_source.txt';
|
|
63
|
+
|
|
64
|
+
// Ensure that console.error is called with the error message
|
|
65
|
+
const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
|
|
66
|
+
|
|
67
|
+
await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
|
|
68
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
69
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
|
|
70
|
+
|
|
71
|
+
// Assert that console.error was called with the expected error message
|
|
72
|
+
expect(consoleErrorSpy).toHaveBeenCalled();
|
|
73
|
+
|
|
74
|
+
// Restore the original console.error function
|
|
75
|
+
consoleErrorSpy.mockRestore();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
// import path from 'node:path';
|
|
5
|
+
import updateComponent from '../update-component.js';
|
|
6
|
+
|
|
7
|
+
describe('copyFileKeeping', () => {
|
|
8
|
+
const sourceFilePath = './__spec__/files/source.txt';
|
|
9
|
+
const destinationFilePath = './__spec__/files/destination.txt';
|
|
10
|
+
|
|
11
|
+
// Helper function to delete a file if it exists
|
|
12
|
+
const deleteFileIfExists = (filePath) => {
|
|
13
|
+
if (fs.existsSync(filePath)) {
|
|
14
|
+
fs.unlinkSync(destinationFilePath);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
deleteFileIfExists(destinationFilePath);
|
|
20
|
+
jest.resetModules();
|
|
21
|
+
jest.clearAllMocks();
|
|
22
|
+
});
|
|
23
|
+
afterEach(() => {
|
|
24
|
+
deleteFileIfExists(destinationFilePath);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// Test case 1: Ensure the file is copied when destination does not exists
|
|
28
|
+
test('copies file if it does not exist', async () => {
|
|
29
|
+
await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
|
|
30
|
+
|
|
31
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
32
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
|
|
33
|
+
|
|
34
|
+
expect(fs.existsSync(destinationFilePath)).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// Test case 2: Ensure the file is NOT copied when destination exists
|
|
38
|
+
test('copies file when destination file already exists', async () => {
|
|
39
|
+
// Create a dummy destination file to simulate an existing file
|
|
40
|
+
fs.writeFileSync(destinationFilePath, 'Dummy content Newer');
|
|
41
|
+
|
|
42
|
+
await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
|
|
43
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
44
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
|
|
45
|
+
|
|
46
|
+
// Assert that the destination file still exists after the function call
|
|
47
|
+
expect(fs.existsSync(destinationFilePath)).toBe(true);
|
|
48
|
+
|
|
49
|
+
// get file content
|
|
50
|
+
const destinationContent = fs.readFileSync(destinationFilePath, 'utf8');
|
|
51
|
+
|
|
52
|
+
expect(destinationContent).toBe('Dummy content Newer');
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Test case 3: Ensure the function handles errors properly
|
|
56
|
+
test('handles errors when copying the file', async () => {
|
|
57
|
+
// Create a dummy destination file to simulate an existing file
|
|
58
|
+
// fs.writeFileSync(destinationFilePath, 'Dummy content');
|
|
59
|
+
const sourceFilePath = './__spec__/nonexistent_source.txt';
|
|
60
|
+
|
|
61
|
+
// Ensure that console.error is called with the error message
|
|
62
|
+
const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
|
|
63
|
+
|
|
64
|
+
await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
|
|
65
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
66
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
|
|
67
|
+
|
|
68
|
+
// Assert that console.error was called with the expected error message
|
|
69
|
+
expect(consoleErrorSpy).toHaveBeenCalled();
|
|
70
|
+
|
|
71
|
+
// Restore the original console.error function
|
|
72
|
+
consoleErrorSpy.mockRestore();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Dummy content
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import * as glob from 'glob';
|
|
4
|
+
const fs = jest.mock('fs');
|
|
5
|
+
import updateAllComponents from '../update-all-components.js';
|
|
6
|
+
|
|
7
|
+
describe('getComponentsList', () => {
|
|
8
|
+
afterEach(() => {
|
|
9
|
+
jest.resetModules(); // Reset all mocked modules after each test
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('returns the correct components list when project-components-list.json is found', () => {
|
|
13
|
+
const projectComponentsList = {
|
|
14
|
+
"block": [
|
|
15
|
+
"accordion",
|
|
16
|
+
"standard-content-v2"
|
|
17
|
+
],
|
|
18
|
+
"fields": [
|
|
19
|
+
"video-standard",
|
|
20
|
+
"responsive-show-hide"
|
|
21
|
+
],
|
|
22
|
+
"admin": [
|
|
23
|
+
"filter-pages-by-block",
|
|
24
|
+
"resizable-editor-sidebar"
|
|
25
|
+
]
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
jest.mock('fs', () => ({
|
|
29
|
+
existsSync: jest.fn().mockReturnValue(true),
|
|
30
|
+
readFileSync: jest
|
|
31
|
+
.fn()
|
|
32
|
+
.mockReturnValue(JSON.stringify(projectComponentsList)),
|
|
33
|
+
}));
|
|
34
|
+
|
|
35
|
+
const result = updateAllComponents.getComponentsList();
|
|
36
|
+
|
|
37
|
+
// random order
|
|
38
|
+
result.map(m => expect([
|
|
39
|
+
"block-accordion",
|
|
40
|
+
"block-standard-content-v2",
|
|
41
|
+
|
|
42
|
+
"admin-core-mixins",
|
|
43
|
+
"admin-core-design-system",
|
|
44
|
+
"admin-core-generic",
|
|
45
|
+
"admin-core-critical",
|
|
46
|
+
"admin-core-functions",
|
|
47
|
+
|
|
48
|
+
"admin-filter-pages-by-block",
|
|
49
|
+
"admin-resizable-editor-sidebar",
|
|
50
|
+
"fields-video-standard",
|
|
51
|
+
"fields-responsive-show-hide",
|
|
52
|
+
|
|
53
|
+
"admin-core-cta",
|
|
54
|
+
"admin-core-root-variables",
|
|
55
|
+
"admin-core-css-sizing-vars",
|
|
56
|
+
"admin-core-colour-data-config",
|
|
57
|
+
"admin-core-wordpress-block-editor-preview",
|
|
58
|
+
"admin-core-editor-cta-style-select",
|
|
59
|
+
"admin-core-gradient-designer",
|
|
60
|
+
"admin-core-typography",
|
|
61
|
+
]).toContain(m));
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it('returns the correct components list when project-components-list.json is not found', () => {
|
|
65
|
+
jest.mock('fs', () => ({
|
|
66
|
+
existsSync: jest.fn().mockReturnValue(false), // Simulate 'project-components-list.json' not existing
|
|
67
|
+
}));
|
|
68
|
+
|
|
69
|
+
jest.mock('glob', () => ({
|
|
70
|
+
// mock components in the filesystem
|
|
71
|
+
sync: jest.fn().mockReturnValue([
|
|
72
|
+
`./node_modules/@pernod-ricard-global-cms/cbl-component-library/components/component1`,
|
|
73
|
+
`./node_modules/@pernod-ricard-global-cms/cbl-component-library/components/component2`,
|
|
74
|
+
]),
|
|
75
|
+
}));
|
|
76
|
+
const result = updateAllComponents.getComponentsList();
|
|
77
|
+
|
|
78
|
+
// random order
|
|
79
|
+
result.map(m => expect([
|
|
80
|
+
"admin-core-mixins",
|
|
81
|
+
"admin-core-design-system",
|
|
82
|
+
"admin-core-generic",
|
|
83
|
+
"admin-core-critical",
|
|
84
|
+
"admin-core-functions",
|
|
85
|
+
|
|
86
|
+
"component1",
|
|
87
|
+
"component2",
|
|
88
|
+
|
|
89
|
+
"admin-core-cta",
|
|
90
|
+
"admin-core-root-variables",
|
|
91
|
+
"admin-core-css-sizing-vars",
|
|
92
|
+
"admin-core-colour-data-config",
|
|
93
|
+
"admin-core-wordpress-block-editor-preview",
|
|
94
|
+
"admin-core-editor-cta-style-select",
|
|
95
|
+
"admin-core-gradient-designer",
|
|
96
|
+
"admin-core-typography",
|
|
97
|
+
]).toContain(m));
|
|
98
|
+
});
|
|
99
|
+
});
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// import * as glob from 'glob';
|
|
4
|
+
import fs from 'node:fs';
|
|
5
|
+
// const fse = require("fs-extra");
|
|
6
|
+
|
|
7
|
+
// import path from 'node:path';
|
|
8
|
+
import updateComponent from '../update-component.js';
|
|
9
|
+
|
|
10
|
+
jest.mock('fs');
|
|
11
|
+
|
|
12
|
+
describe('getExtension', () => {
|
|
13
|
+
test('Check getExtension js', () => {
|
|
14
|
+
const result = updateComponent.getExtension('testing.js')
|
|
15
|
+
expect(result).toBe('js');
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('Check getExtension spec.js', () => {
|
|
19
|
+
const result = updateComponent.getExtension('testing.spec.js')
|
|
20
|
+
expect(result).toBe('js');
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe('getFileType function', () => {
|
|
25
|
+
it('should return "extra" for filenames ending with "-extra.scss"', () => {
|
|
26
|
+
const result = updateComponent.getFileType('styles-extra.scss');
|
|
27
|
+
expect(result).toBe('extra');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('should return "spec" for filenames ending with "spec.js"', () => {
|
|
31
|
+
const result = updateComponent.getFileType('test.spec.js');
|
|
32
|
+
expect(result).toBe('spec');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('should return the correct file extension for other filenames', () => {
|
|
36
|
+
const result = updateComponent.getFileType('script.js');
|
|
37
|
+
expect(result).toBe('js');
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should return an empty string for filenames without extensions', () => {
|
|
41
|
+
const result = updateComponent.getFileType('README');
|
|
42
|
+
expect(result).toBe('');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
describe('checkFolder function', () => {
|
|
47
|
+
beforeEach(() => {
|
|
48
|
+
jest.resetModules();
|
|
49
|
+
jest.clearAllMocks();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('should return true for an existing directory', () => {
|
|
53
|
+
// Mocking fs.existsSync to return true
|
|
54
|
+
fs.existsSync.mockReturnValue(true);
|
|
55
|
+
// Mocking fs.statSync to return an object with isDirectory function returning true
|
|
56
|
+
fs.statSync.mockReturnValue({ isDirectory: () => true });
|
|
57
|
+
|
|
58
|
+
const result = updateComponent.checkFolder('/path/to/existing/folder');
|
|
59
|
+
expect(result).toBe(true);
|
|
60
|
+
// Ensure that the fs.existsSync function was called with the correct argument
|
|
61
|
+
expect(fs.existsSync).toHaveBeenCalledWith('/path/to/existing/folder');
|
|
62
|
+
// Ensure that the fs.statSync function was called with the correct argument
|
|
63
|
+
expect(fs.statSync).toHaveBeenCalledWith('/path/to/existing/folder');
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('should return false for a non-existing directory', () => {
|
|
67
|
+
// Mocking fs.existsSync to return false
|
|
68
|
+
fs.existsSync.mockReturnValue(false);
|
|
69
|
+
|
|
70
|
+
const result = updateComponent.checkFolder('/path/to/non_existing/folder');
|
|
71
|
+
expect(result).toBe(false);
|
|
72
|
+
// Ensure that the fs.existsSync function was called with the correct argument
|
|
73
|
+
expect(fs.existsSync).toHaveBeenCalledWith('/path/to/non_existing/folder');
|
|
74
|
+
// Ensure that the fs.statSync function was not called (since the folder does not exist)
|
|
75
|
+
expect(fs.statSync).not.toHaveBeenCalled();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('should return false for an existing file (not a directory)', () => {
|
|
79
|
+
// Mocking fs.existsSync to return true
|
|
80
|
+
fs.existsSync.mockReturnValue(true);
|
|
81
|
+
// Mocking fs.statSync to return an object with isDirectory function returning false
|
|
82
|
+
fs.statSync.mockReturnValue({ isDirectory: () => false });
|
|
83
|
+
|
|
84
|
+
const result = updateComponent.checkFolder('/path/to/existing/file');
|
|
85
|
+
expect(result).toBe(false);
|
|
86
|
+
// Ensure that the fs.existsSync function was called with the correct argument
|
|
87
|
+
expect(fs.existsSync).toHaveBeenCalledWith('/path/to/existing/file');
|
|
88
|
+
// Ensure that the fs.statSync function was called with the correct argument
|
|
89
|
+
expect(fs.statSync).toHaveBeenCalledWith('/path/to/existing/file');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
describe('getProjectName function', () => {
|
|
94
|
+
beforeEach(() => {
|
|
95
|
+
jest.resetModules();
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
test('should return the project name from package.json', () => {
|
|
99
|
+
const projectName = 'Your Project Name';
|
|
100
|
+
const packageJson = {
|
|
101
|
+
name: projectName
|
|
102
|
+
};
|
|
103
|
+
fs.readFileSync.mockReturnValue(JSON.stringify(packageJson));
|
|
104
|
+
const result = updateComponent.getProjectName();
|
|
105
|
+
expect(result).toBe(projectName);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
test('should capitalize the project name if it does not start with "the"', () => {
|
|
109
|
+
const projectName = 'your project name';
|
|
110
|
+
const packageJson = {
|
|
111
|
+
name: projectName
|
|
112
|
+
};
|
|
113
|
+
fs.readFileSync.mockReturnValue(JSON.stringify(packageJson));
|
|
114
|
+
const result = updateComponent.getProjectName();
|
|
115
|
+
expect(result).toBe('Your project name');
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
test('should capitalize and prepend "The" to the project name if it starts with "the"', () => {
|
|
119
|
+
const projectName = 'theglenlivet';
|
|
120
|
+
const packageJson = {
|
|
121
|
+
name: projectName
|
|
122
|
+
};
|
|
123
|
+
fs.readFileSync.mockReturnValue(JSON.stringify(packageJson));
|
|
124
|
+
const result = updateComponent.getProjectName();
|
|
125
|
+
expect(result).toBe('The Glenlivet');
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
test('should return default project name if package.json is not found', () => {
|
|
129
|
+
fs.readFileSync.mockImplementation(() => {
|
|
130
|
+
throw new Error('File not found');
|
|
131
|
+
});
|
|
132
|
+
// Ensure that console.error is called with the error message
|
|
133
|
+
const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
|
|
134
|
+
|
|
135
|
+
const result = updateComponent.getProjectName();
|
|
136
|
+
expect(result).toBe('Global Theme');
|
|
137
|
+
// Assert that console.error was called with the expected error message
|
|
138
|
+
expect(consoleErrorSpy).toHaveBeenCalled();
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
describe('getFileType function', () => {
|
|
143
|
+
it('should return "extra" for filenames ending with "-extra.scss"', () => {
|
|
144
|
+
const filename = 'style-extra.scss';
|
|
145
|
+
expect(updateComponent.getFileType(filename)).toBe('extra');
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it('should return "spec" for filenames ending with "spec.js"', () => {
|
|
149
|
+
const filename = 'test.spec.js';
|
|
150
|
+
expect(updateComponent.getFileType(filename)).toBe('spec');
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
it('should call getExtension for other filenames', () => {
|
|
154
|
+
const addSpy = jest.spyOn(updateComponent, 'getExtension');
|
|
155
|
+
// console.log(addSpy)
|
|
156
|
+
// return
|
|
157
|
+
const filename = 'example.txt';
|
|
158
|
+
const result = updateComponent.getFileType(filename);
|
|
159
|
+
// expect(addSpy).toHaveBeenCalledWith(filename);
|
|
160
|
+
expect(result).toBe('txt');
|
|
161
|
+
|
|
162
|
+
// Don't forget to restore the original 'add' function after the test
|
|
163
|
+
addSpy.mockRestore();
|
|
164
|
+
});
|
|
165
|
+
});
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import {globSync} from 'glob';
|
|
4
|
+
|
|
5
|
+
const dynamicEntryPointsJs = globSync(`./components/block-*/*-v3.js`).map(
|
|
6
|
+
(filePath) => {
|
|
7
|
+
const assetKey = path.basename(filePath, '.js');
|
|
8
|
+
return assetKey;
|
|
9
|
+
}
|
|
10
|
+
);
|
|
11
|
+
const dynamicEntryPointsJsV4 = globSync(`./components/block-*/*-v4.js`).map(
|
|
12
|
+
(filePath) => {
|
|
13
|
+
const assetKey = path.basename(filePath, '.js');
|
|
14
|
+
return assetKey;
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
const dynamicEntryPointsScss = globSync(`./components/block-*/*-v3.scss`).map(
|
|
18
|
+
(filePath) => {
|
|
19
|
+
const assetKey = path.basename(filePath, '.js');
|
|
20
|
+
return assetKey;
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
const dynamicEntryPointsCss = globSync(`./components/block-*/*-v4.css`).map(
|
|
24
|
+
(filePath) => {
|
|
25
|
+
const assetKey = path.basename(filePath, '.js');
|
|
26
|
+
return assetKey;
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
const assetArrayJs = dynamicEntryPointsJs.map((entry) => {
|
|
30
|
+
return `./components/block-${entry}/${entry}.js`;
|
|
31
|
+
});
|
|
32
|
+
const assetArrayJsV4 = dynamicEntryPointsJsV4.map((entry) => {
|
|
33
|
+
return `./components/block-${entry}/${entry}.js`;
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const assetArrayScss = dynamicEntryPointsScss.map((entry) => {
|
|
37
|
+
let filename = entry.replace('.scss', '');
|
|
38
|
+
return `./components/block-${filename}/${filename}.scss`;
|
|
39
|
+
});
|
|
40
|
+
const assetArrayCss = dynamicEntryPointsCss.map((entry) => {
|
|
41
|
+
let filename = entry.replace('.css', '');
|
|
42
|
+
return `./components/block-${filename}/${filename}.css`;
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// Create the directory path for the target file
|
|
46
|
+
const jsModulePath = path.join('./public');
|
|
47
|
+
const jsAssetsFilePath = path.join(jsModulePath, 'assetList.mjs');
|
|
48
|
+
|
|
49
|
+
// Create directories if they don't exist
|
|
50
|
+
fs.mkdirSync(jsModulePath, {recursive: true});
|
|
51
|
+
|
|
52
|
+
// Write the initial content to the target file
|
|
53
|
+
fs.writeFileSync(jsAssetsFilePath, '// This file is auto-generated.\n');
|
|
54
|
+
|
|
55
|
+
// Create directories if they don't exist
|
|
56
|
+
const dirPath = path.dirname(jsAssetsFilePath);
|
|
57
|
+
fs.mkdirSync(dirPath, {recursive: true});
|
|
58
|
+
|
|
59
|
+
const data = `
|
|
60
|
+
const dynamicAssets = ${JSON.stringify([
|
|
61
|
+
...assetArrayScss,
|
|
62
|
+
...assetArrayCss,
|
|
63
|
+
...assetArrayJs,
|
|
64
|
+
...assetArrayJsV4
|
|
65
|
+
])};
|
|
66
|
+
export default dynamicAssets;
|
|
67
|
+
`;
|
|
68
|
+
|
|
69
|
+
fs.writeFileSync(jsAssetsFilePath, data);
|
package/breakpoints.scss
ADDED
package/build-library.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import 'dotenv/config';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import {fork} from 'node:child_process';
|
|
4
|
+
|
|
5
|
+
const themePath = process.env.THEME_PATH || 'web/wp-content/themes/global-theme';
|
|
6
|
+
|
|
7
|
+
const paths = {
|
|
8
|
+
createJsAssets: `${themePath}/assets/js/modules/jsAssets.js`,
|
|
9
|
+
createPreviewScss: `${themePath}/assets/scss/modules/dynamicBlocksPreview.scss`,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
Object.keys(paths).forEach((key) => {
|
|
13
|
+
if (!fs.existsSync(paths[key])) {
|
|
14
|
+
console.log(`creating missing assets with ${key}`);
|
|
15
|
+
fork(`./node_modules/@pernod-ricard-global-cms/jsbuildutils/${key}.js`);
|
|
16
|
+
}
|
|
17
|
+
});
|