diff --git a/packages/metascraper-amazon/test/fixtures/amazon-co-uk/product-url.html b/packages/metascraper-amazon/test/fixtures/amazon-co-uk/product-url.html index 4d64b47db..5a193bcdd 100644 --- a/packages/metascraper-amazon/test/fixtures/amazon-co-uk/product-url.html +++ b/packages/metascraper-amazon/test/fixtures/amazon-co-uk/product-url.html @@ -1,4792 +1,2189 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Vegetable Perfection: 100 delicious recipes for roots, bulbs, shoots and stems: Amazon.co.uk: Mat Follas: 9781849757096: Books - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Learn more - - - - - -Download now - - - - - -Shop now - - - - - -Learn more - - - - - -Shop now - - - - - -Shop now - - - - - -Shop now - - - - - -Shop now -Shop now -Shop now -Shop now - - - - - -Shop now - - - - - -Learn More - - - - - -Shop now - - - - - - - - - - - - - - - - - -Shop now - - - - - - - - - - - -Learn more - - - - - -Shop Fire - - - - - -Shop Kindle - - - - - -Moana - Listen with Prime - - - - - -Shop now - - - - - - - - - - - -Shop now - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +

Select your cookie preferences

We use cookies and similar tools that are necessary to enable you to make purchases, to enhance your shopping experiences and to provide our services, as detailed in our Cookie notice. We also use these cookies to understand how customers use our services (for example, by measuring site visits) so we can make improvements.

If you agree, we'll also use cookies to complement your shopping experience across the Amazon stores as described in our Cookie notice. Your choice applies to using first-party and third-party advertising cookies on this service. Cookies store or access standard device information such as a unique identifier. The 103 third parties who use cookies on this service do so for their purposes of displaying and measuring personalized ads, generating audience insights, and developing and improving products. Click "Decline" to reject, or "Customise" to make more detailed advertising choices, or learn more. You can change your choices at any time by visiting Cookie preferences, as described in the Cookie notice. To learn more about how and for what purposes Amazon uses personal information (such as Amazon Store order history), please visit our Privacy notice.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - - - - - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - -
- - - -
-
-
-
-
    - - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - - - - - - - - - -RRP: £16.99 - - - - -
  • - - - - - - - -
  • - - You Save: £3.46 - (20%) - -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • -
    - - - - - - - - - - - - - - - - -
    -
  • - - - - - -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - -FREE Delivery in the UK. - - - - - - - -
-
- - - - - - - - - - - -
- - - - - - - - - - - - - - -
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - Only 4 left in stock (more on the way). - - - - - - - - - - - - - -
- - - - - - - - - - - -
+ + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - Dispatched from and sold by Amazon. - - - - - - - - - - - - Gift-wrap available. - - - - - - - - - - - - - - -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - -
- -
- - -
- -
-
- -
-
- - - - - -
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
-
-
- -
- Vegetable Perfection: 100... - has been added to your Basket -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
+ + + + + + + + + + + + + + + + - - - - - - - - - - - - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- - Dispatch to: - -
- - - - - - - - - - -
- - -
- - To see addresses, please - -
- -
- - -
-
- -
- -
-
Or
- -
- - - -
- - -
- - -
- -
-
-
- - Please enter a valid UK postcode. - -
- - -
- - -
Or
-
-
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - -
-
- - - - - - - -
-
- - - - -
-
- - - - - - - - -
- - @@ -4801,173 +2198,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
-
FREE Delivery on orders over £10.
-
- - - - - - - - - - - - - @@ -4975,8907 +2209,6252 @@ - - - - - -
-
- - Used: Very Good - - - | Details - -
-
- Sold by - - - - Quality Books Today - - -
- - -
- -
-
- - Condition: - Used: Very Good - -
-
- - Comment: Overall very good condition, no marks or missing pages. Slight crease on the front cover. Fast, secure shipment through the Amazon warehouse. - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('dpJsAssetsLoadMarker').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/01I3s4SlPiL._RC|211253b1vbL.js,216Y5JcOfSL.js,11-asXJWfkL.js,01s80TZosWL.js,015gdESSAtL.js,01GJONmvbXL.js,017VcaK0ACL.js,01Gujc1zuyL.js,61sRSxLQeCL.js,01EfL1GvN7L.js,01hcvL3758L.js_.js?AUIClients/DetailPageMetaAssetFixed#desktop.gb'); + }); + (function(e){var a=window.AmazonUIPageJS||window.P,c=a._namespace||a.attributeErrors,b=c?c("DetailPageLatencyClientSideLibraries@timeToInteractive","DetailPageLatencyClientSideLibraries"):a;b.guardFatal?b.guardFatal(e)(b,window):b.execute(function(){e(b,window)})})(function(e,a,c){e.now().execute("dp-create-feature-interactive-api",function(){function b(d,b,a){d={name:d,options:b,type:a,timestamp:+new Date};f?f.updateFeatures([d]):c.push(d)}"function"===typeof uet&&uet("bb","clickToCI",{wb:1});var c= + [],f;a.markFeatureRender=function(d,a){b(d,a,"render")};a.markFeatureInteractive=function(a,c){b(a,c,"interactive")};e.when("dp-time-to-interactive").execute("dp-update-interactive-feature-list",function(a){f=a;c.length&&f.updateFeatures(c)})})}); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('injectCalendarOnDetailPage').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/31VObggAjcL.js?AUIClients/AmazonUICalendar'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('dpJsAssetsLoadMarker').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/01rg6Ce9FhL._RC|01uFARlAE3L.js_.js?AUIClients/DetailPageEverywhereMetaAsset_EUSTORES_PRICE_TRACKER_ASSETS_792716&0eGuTKvu#desktop.840577-C.824182-C'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('useOffersDebugAssets').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/21VSLKrZ2cL.js?AUIClients/DetailPageOffersDebugAssets'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('dpJsAssetsLoadMarker').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/41bVTGEWAZL.js?AUIClients/DetailPageStorePickupAssets'); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/21E2aIDj6DL._RC|310RbtAZwaL.js,31y+4gWgSSL.js,01g2etah0NL.js,31Nb5hZQizL.js,215ks++J3VL.js,21S7HDrs82L.js,31oAl8dJC2L.js,41VI+ex+36L.js,41f3LoY5A6L.js,015DG-FKw3L.js,21fKwyzgGjL.js,31vMFUg376L.js,01TQyo0bnIL.js,21toT31IYOL.js,514-4bWCCBL.js,01WNBm1NhqL.js,41lxrvkGALL.js,01X5C8pWB1L.js,01NM5eWfPmL.js,41lkyHEebjL.js,11oGaoYgbdL.js,111zW1Nhl9L.js,01jqyAujTwL.js,31+0pACITzL.js,01OtvpwikQL.js,21tLhGXzFFL.js,11LSI8IU0NL.js,41IfRyNVHBL.js,11p0nLfNCcL.js,11iHZuQapKL.js,11PUEGgF9FL.js,31EFtqFUPbL.js,21YblE14ZTL.js,01+oIQ0jY7L.js,61ojJEMaumL.js,013eoEBTVUL.js,016QFWAAdML.js,51qmRnkXLKL.js,01Fzql+0SbL.js,019W6kk1gjL.js,311A0yCIeJL.js,41oBtj8IbiL.js,51mR7NLZfpL.js,01j5DeZSMzL.js,31CuRA-rQfL.js,41H9Pg6PDQL.js,01mjV3L7d0L.js,01cyf4FMJWL.js,5102rR7LqJL.js,5195Mrz6F8L.js,21OE0Cpw7-L.js,21qTalAdEVL.js,21jUGXir-HL.js,31vI2qZfDdL.js,112VxugcJXL.js,31KDiyJXc5L.js,51FsGDKjXnL.js,21rm8VbLiLL.js,01tx7ThnHlL.js,11K5qCK19CL.js,21IQl4blS4L.js,01HPCJZdF6L.js,51E09rhAXIL.js,51UdpHbqZTL.js,31jdfgcsPAL.js,31ESJLcgDXL.js,019MkidFEWL.js,21ZLsM3yTQL.js,11DDRPetx5L.js,01sWkjQEFNL.js,01Z3OBC-FbL.js,61cTN5ssfAL.js,21R4scfPaqL.js,01LfAzkSkvL.js_.js?AUIClients/MediaDetailPageMetaAsset_TURBO_DESKTOP&lHA6EmSM#desktop.language-en.gb.792084-C.542412-T1.765527-T1.775189-T1.793921-T1.709527-T1.818225-T1.662697-T1.809436-T1.796491-T1.808293-T1.712712-T1.787078-T1.533504-T1.708839-T1.651909-T1.692339-T2.775324-T1.558981-T1.195406-T1.368370-C.712488-C.774964-T1.396187-T1.488124-T1.262481-T1.458655-T1.672479-T1.759955-T1.682739-T1.551170-T2.762074-T1.811034-T1.347518-T1.364202-T1.797206-T1.447372-T1.594166-T1.617632-T1.519356-T1'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('aodIngressClick').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/613%2BQE3z0NL.js?AUIClients/DetailPageAllOffersDisplayAssets&P3Wo0o2z#language-en.403176-C'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('dpJsAssetsLoadMarker').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/21-4MPDTEIL.js?AUIClients/DetailPageDigitalBulkAssets'); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/31ROB5T%2Bk1L.js?AUIClients/DetailPageMangaAcquisitionAssets'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('gestaltCustomizableProductDetailPage').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/91%2BpPsvqJsL.js?AUIClients/GestaltBuyerAssetsBundler-DetailPage'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('dpJsAssetsLoadMarker').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/01hvGVYicrL.js?AUIClients/DetailPageMediaMatrixGridAsset&p7Q60or+#desktop.662697-T1'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('useDesktopTwisterMetaAsset').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/51WtuaLg8PL.js?AUIClients/DetailPageDesktopConfiguratorMetaAsset&KEHdN7+B#830424-T1.384314-T1'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('dpJsAssetsLoadMarker').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/115eVrAGkcL.js?AUIClients/DetailPageRichProductInformationAssets#desktop'); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/11so9OiZpzL.js?AUIClients/MorpheusPopularityRankSidesheetAssets'); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/31ZC%2BAhAnCL.js?AUIClients/DetailPageBookDescriptionAssets&DrPG6tbK#desktop.594167-T1.849419-T1'); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/31VXphxm6JL.js?AUIClients/EbooksBottomSheetAssets#desktop'); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/01qV2oooAfL.js?AUIClients/DetailPageKcpAppAssets'); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/01YgpCubxaL.js?AUIClients/InstallmentPaymentDetailPageMetaAsset#desktop'); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/21pHgHNX7kL.js?AUIClients/DetailPageAlohaAssets'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('sp.load.js').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/413x%2BZquP1L.js?AUIClients/DetailPageLookInsideAssets&DxGsvfX3#desktop.798128-T1'); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/11KL9q3-ZWL._RC|61Nv4FoPMFL.js,51ltXzEtLKL.js,11tZt25FAcL.js,21yF4pWForL.js,31xxXYsiMJL.js_.js?AUIClients/DetailPageDesktopImageBlockMetaAsset&55nOpqvh#776712-T1.559071-T1.342971-T1.585425-T1.672366-T1'); + }); + (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('dpJsAssetsLoadMarker').execute(function(){ + (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/212oymxqQbL.js?AUIClients/DetailPageNostosAssets'); + }); + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - -
- - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
- Have one to sell? -
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - - – 7 Apr 2016 - + + + - -
- - - - - - - - - - - -
- - - - - - - by - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - -
-
- Mat Follas - - (Author) - - -
- -
- -
-
- search results for this author -
- -
- - - - -
- -
-
-
- - Mat Follas - - - - - - - - - - - (Author) - - -
- - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - + + + + + + + + + + + + + + + + + + + Vegetable Perfection: 100 delicious recipes for roots, bulbs, shoots and stems: Amazon.co.uk: Follas, Mat: 9781849757096: Books + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ Sponsored +
+ + + + + + + + +
+
+ + + - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - + + + + + + + + + + +
+ + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.5 out of 5 stars - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4 customer reviews - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - See all 2 formats and editions - Hide other formats and editions - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- Amazon Price -
-
-
-
- New from - - Used from -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - Hardcover - - - - - - - - - - - -
-
- - - - - - - - - - - - - - £13.53 - - - - - - - -
-
- - - - -
-
-
- - £6.74 - - - - £5.28 - -
-
-
- - -
-
- - - - - - - - - - - -
- -
- - - - - - -
+ +
+ + + + + +
- - - - - - - - - £13.53 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 15 Used from £5.28 - - - - - - - 27 New from £6.74 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - -
-
- - - -
- - - - - - - - - - - - -
- - - -
- -
- - - - - - - - - £13.53 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FREE Delivery in the UK. - - - - - - - - - - - - - - - - - - - - - - - Only 4 left in stock (more on the way). - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Buy used £4.45
+
+ + + + + + + +
£3.99 delivery 17 January - 7 February. Details
+ Used: Good + | Details
Sold by Goldstone-Books
Condition: + Used: Good
Comment: BUY ANY 2 BOOKS & GET 10% OFF! 10 BOOKS=20% OFF! 20 BOOKS=30% OFF! 50 BOOKS=40% OFF! All orders are dispatched within 1 working day from our UK warehouse. Established in 2004.
+ +
Added to

Sorry, there was a problem.

There was an error retrieving your Wish Lists. Please try again.

Sorry, there was a problem.

List unavailable.
+
+ +
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ Sponsored +
+ + + + + + + + +
+
+
+
+
+
+
+
+
+ + +
Kindle app logo image

Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet or computer – no Kindle device required.

Read instantly on your browser with Kindle for Web.

Using your mobile phone camera - scan the code below and download the Kindle app.

QR code to download the Kindle App

+
+ +
+
+ +
+ +
+
+ + + +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+ +
+
+
+
+
+ + +

Follow the author

Something went wrong. Please try your request again later.

+ + + +
+
+
+
+
+
+ +
+
+

Vegetable Perfection: 100 delicious recipes for roots, bulbs, shoots and stems Hardcover – 7 April 2016

+
+
+
+
+
+ + +
+ + 4.4 4.4 out of 5 stars + 16 ratings + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+ Promotion Message + + Buy 2, save 10% + + 1 promotion + +
  • + Buy 2, save 10% Terms +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + dir = 'rtl'; + } + + var doc = ((iframe.contentWindow && iframe.contentWindow.document) || iframe.contentDocument); + if (doc && doc.open) { + doc.open(); + + doc.writeln('
' + + '' + decodeURIComponent(encodedIframeContent) + ''+''); + doc.close(); + } + } + this.iframeload = function () { + var iframe = document.getElementById(iframeId); + iframe.style.display = ''; + setTimeout(function () { + setIframeHeight(initialResizeCallback); + }, 20); + } - + function getDocHeight(doc) { + var contentDiv = doc.getElementById("iframeContent"); + var docHeight = 0; + if(contentDiv){ + docHeight = Math.max( + contentDiv.scrollHeight, + contentDiv.offsetHeight, + contentDiv.clientHeight + ); + } + return docHeight; + } - - - - - - - - - - - - - - - -
- - - - - - - + function setIframeHeight(resizeCallback) { + var iframeDoc, iframe = document.getElementById(iframeId); + iframeDoc = ((iframe.contentWindow && iframe.contentWindow.document) || iframe.contentDocument); + if (iframeDoc) { + var h = getDocHeight(iframeDoc); + if (h && h != 0) { + iframe.style.height = parseInt(h) + 'px'; + if(typeof resizeCallback == "function") { + resizeCallback(iframeId); + } + } else if (nTries < MAX_TRIES) { + nTries++; + setTimeout(function () { + setIframeHeight(resizeCallback); + }, 50); + } + } + } -
- - - - -
- - - + this.resizeIframe = function(resizeCallback) { + nTries = 0; + setIframeHeight(resizeCallback); + } + } + + return DynamicIframe; + }); +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+

More than ever before modern chefs use interesting new cooking techniques and ingredients to boost texture, add depth of flavour and make so much more of humble carrots, kale and cauliflower. Vegetable dishes are now storming the menus at some of the world’s best restaurants where chefs are treating fresh vegetable produce with the reverence it deserves and turning ingredients that used to be reserved for side dishes into centrepieces. Organized by type of produce, there are recipes for root veg, alliums and bulbs, potatoes and squash, legumes and pods, sweet vegetables, shoots and stems, mushroom and funghi, as well as basic recipes for a well-stocked chef's storecupboard. Choose from Smoked Parsnips with Blue Cheese, Cauliflower & Truffle Pate, Red Cabbage & Burnt Aubergine Baba Ganoush, Kale Gnocchi, Kimchi, Spring Pistou Soup, Nettle & Wild Garlic Soup with Gruyere Toasts, Red Onion Tarte Tatin, Pea Panna Cotta, Pizza Bianca, Spaghetti Puttanesca, Artichoke Frittata, Champagne Mushrooms, Fennel & Roast Tomato Lasagne or a selection of versatile sauces, ketchups, chutneys, pickles, pestos and oils. Whether you want a revitalizing juice to start the day, a quick summer salad, a slow-roasted winter bake or to preserve an abundance of seasonal produce, you'll find plenty of fresh inspiration here.

+ +
+
+
+ +
+
+
+ +
+
+
+
+

About the Author

Mat Follas is a chef, food writer and judge of the Great Taste Awards. Winner of MasterChef UK (BBC) in 2009, he owned restaurant The Wild Garlic which opened to considerable acclaim, including 2 AA Rosettes and recommendations in the Good Food and Michelin guides, and in 2014 opened a second restaurant within The Casterbridge Hotel in Dorchester. He regularly runs courses on foraging and wild plants, is featured in the 'Guardian' and wrote the forward for the 'AA Restaurant Guide 2014'. Mat is a regular judge for MasterChef UK, The Great Taste Awards and the World Cheese Awards, and his recipes are published in a variety of magazines including BBC GoodFood, Olive and Delicious. Mat lives in Dorset with his family.

+
+
+ +
+
+
+
+
+
+
+
+ + +
+ + + +
+
+
+
+
+
+
+
+ + +
+
+ +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+
+
+
+ + +
+
+ + +
+
+ + + + + + + + + + + + + +
+
+
+
+
+
+ + +
+ + + +
+ + +
+ +
+
+
+
+ + + + + + +
+
+
+
+ + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +
+
+
+
+
+ + +
+ + + +
+
+
+
+
+
+
+ +
+ + +

Product details

+
+
  • ASIN + ‏ + : + ‎ + 1849757097
  • Publisher + ‏ + : + ‎ + Ryland Peters & Small (7 April 2016)
  • Language + ‏ + : + ‎ + English
  • Hardcover + ‏ + : + ‎ + 176 pages
  • ISBN-10 + ‏ + : + ‎ + 9781849757096
  • ISBN-13 + ‏ + : + ‎ + 978-1849757096
  • Dimensions + ‏ + : + ‎ + 21.59 x 2.03 x 25.4 cm
+
  • Customer reviews: + +
    + + 4.4 4.4 out of 5 stars + 16 ratings + + +
    +
+
+ + +
+
+
+ + +

About the author

Follow authors to get new release updates, plus improved recommendations.
Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.

Mat Follas is a chef, food writer and judge of the Great Taste Awards. Winner of Master Chef UK (BBC) in 2009, he owned restaurant The Wild Garlic which opened to considerable acclaim, including 2 AA Rosettes and recommendations in the Good Food and Michelin guides, and in 2014 opened a second restaurant within The Casterbridge Hotel in Dorchester. He regularly runs courses on foraging and wild plants, is featured in the 'Guardian' and wrote the forward for the 'AA Restaurant Guide 2014'. Mat is a regular judge for MasterChef UK, The Great Taste Awards and the World Cheese Awards, and his recipes are published in a variety of magazines including BBC GoodFood, Olive and Delicious. Mat lives in Dorset with his family.

+ + + +
+
+ + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ Sponsored +
+ + + + + + +
+ + + + + + + + + + + + +
+
+ + +
+
+
+

How would you rate your experience shopping for books on Amazon today?

Thank you for your feedback!

+ +
+
+ + + + + + +
+
+
+ + + - - - + + + + +
+
+ + +

Customer reviews

4.4 out of 5 stars
4.4 out of 5
16 global ratings
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ Sponsored +
+ + + + + + + + +
+
+
+ +
+ + +

Submit a report

A few common reasons why customers report reviews:
  • Harassment, profanity
  • Spam, advertisement, promotions
  • Given in exchange for cash, discounts
When we get your report, we will check if the review meets our Community guidelines. If it does not, we will remove it.
Sorry, we couldn't load the review
Thank you for your feedback

Sorry, there was an error

Please try again later.
+ + + +
+ + +
+
  • + + + + + + + + + + + + + + + + + +
    + + + + + + +

+ + + + + + + + + + + Top reviews from United Kingdom +

+ + +
Reviewed in the United Kingdom on 8 April 2016
+ + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
-
- -

Special offers and product promotions

+ + +
+ + + + +
+
+ Customer image +
+
+
+
+
+
+
+
+
+
+
+
+ + + + 5.0 out of 5 stars + + Particularly beautiful is his take on a red onion tarte-tatin! + +
+ + + + + + Reviewed in the United Kingdom on 8 April 2016 + + + + +
+ + Mat makes food we all want to eat, whether vegetarian or not, and there are plenty of delicious things in his book to whet your appetite. Particularly beautiful is his take on a red onion tarte-tatin, which was the first thing I made, and is pictured below (closely followed by the wild garlic soup - bang in season, make it now)! These aren't just lovely dishes though, Mat has included lots of little bits of advice that those of us who've been cooking for a long-time take as read, but are rarely put into writing (you need to trim puff pastry with a sharp knife, or the layers won't flake apart during the rise; smoke the parsnips before cooking to ensure a more mellow smokiness etc). It's a pleasure to see a well-written and thought-out cookbook, where many of the recipes are vegan as well as vegetarian, and you don't notice the difference!

Contents: Vegetarian and vegan substitutions; Vegetable juices; Roots; Brassicas and greens; Tomatoes, peppers and aubergines; Bulbs and aliums; Potatoes, squash and corn; Peas, beans and pulses; Stalks, stems and soft leaves; Fungi; Chef's store cupboard; Resources

Roots: carrot and beetroot terrine; beetroot soup with goat's cheese cream; tumbleweed tempura; celery remoulade with heritage beetroot and fennel; smoked parsnip, pear and Stilton salad; the perfect roast veg; Spring pistou soup.

Brassicas and greens: cauliflower and truffle pâté with pea shoots; Moroccan roasted cauliflower; cauliflower cheese; Savoy cabbage ratatouille parcel; +
+
+ + Images in this review + +
+ + + Customer image + + +
+
+
+ + +
+ + + + +
+ Customer image
+
+
+
16 people found this helpful
+ +
+ Report +
3.0 out of 5 stars + + + + + + + + This book is different from other vegetarian cookbooks, there ... - Reviewed in the United Kingdom on 8 June 2016
- - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
- - - + This book is different from other vegetarian cookbooks, there are some unusual takes on recipes. Some are inspired, others a little eccentric. The book is far from run of the mill though, and a welcome addition to the veggie cookbook scene. +
+
2 people found this helpful
+ +
+ Report +
5.0 out of 5 stars + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Frequently bought together

-
-
-
- -
- -
-
Total price: £35.89
-
- - -
- -
-
- -
Buy the selected items together
-
-
-
-
+ On time and as described. - - - - - - - - - - - - - - -
+
Reviewed in the United Kingdom on 24 March 2017
+ Super book,delivered on time and as described. +
+ + + + Report +
Reviewed in the United Kingdom on 29 October 2017
+ + + + Report +
Reviewed in the United Kingdom on 8 March 2021
- - - - - - - - - + Arrived as expected
Looking forward to trying some of the recipes
- - - - - - - - - +
+ + + + Report +
+
+ +
- - - - - - - - - - - - - - - - - - - - -
- - - - - - - - + + +
+
+ + + + + + + + + + + + + - - -
-
-

Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.

-

-
-
    -
  • -
    -
    - -
    - Apple - -
    -
  • -
  • -
    -
    - -
    - Android - -
    -
  • -
  • -
    -
    - -
    - Windows Phone - -
    -
  • -
-
- -
- -

To get the free app, enter your mobile phone number.

- - - -
- - - -
- - -
-
- -
+ + + + +
+
+ + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + +
+
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - -
-

Product details

-
- - - - - - -
    - - - - - -
  • Hardcover: 176 pages
  • - - - - - - - - - -
  • Publisher: Ryland Peters & Small (7 April 2016)
  • - - - - - -
  • Language: English
  • - - - - - - -
  • ISBN-10: 1849757097
  • -
  • ISBN-13: 978-1849757096
  • - - - - - - - - - - - - - -
  • - Product Dimensions: - - 21.6 x 0.1 x 25.4 cm -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • Average Customer Review: - - - - - - - - - 4.5 out of 5 stars - - - - - - - 4 customer reviews - - - - - - - - - - - - - -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • -Amazon Bestsellers Rank: - - - - - - - - - - - - - - - - - - - - - - -294,890 in Books (See Top 100 in Books) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - - - - - - - - - - - - - -

    -Would you like to tell us about a lower price?
    If you are a seller for this product, would you like to suggest updates through seller support?

    - - - - - - - - - - - - - -
-
-
-
- - - - - - - - - - - - - - - + var onload = function () { + setTimeout(prefetchTYPAssets, 2000); + }; + if (window.addEventListener) { + window.addEventListener("load", onload); + } else if (window.attachEvent) { /* for <= IE 8 */ + window.attachEvent("onload", onload); + } + - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
- - - - - - - - - - - - - - - - - + }); + })(window.$Nav); + + + + + + + + + + + - - - - - - - - - - - - - - - -
-
-
- - - - - - - - - - - - - - - - - - - -
- - - -
- - -

- Product description - -

- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - -

Review

- - - -

'Flavour-packed veggie dinners from former MasterChef winner Mat Follas.' --Great British Food, June 2016

'A very solid, good cookbook and is an excellent place to start if you want to begin cooking with less meat.' --Waitrose Weekend, June 2016 - -

- - - - - -

About the Author

- - - -

Mat Follas is a chef, food writer and judge of the Great Taste Awards. Winner of MasterChef UK (BBC) in 2009, he owned restaurant The Wild Garlic which opened to considerable acclaim, including 2 AA Rosettes and recommendations in the Good Food and Michelin guides, and in 2014 opened a second restaurant within The Casterbridge Hotel in Dorchester. He regularly runs courses on foraging and wild plants, is featured in the 'Guardian' and wrote the forward for the 'AA Restaurant Guide 2014'. Mat is a regular judge for MasterChef UK, The Great Taste Awards and the World Cheese Awards, and his recipes are published in a variety of magazines including BBC GoodFood, Olive and Delicious. Mat lives in Dorset with his family.

- -

- - - - - - - - - -
- - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
-
- - - - - - - - - - - - - - - - +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -

What other items do customers buy after viewing this item?

-
- - -
- + + +
+
+ + + + -
- - - + - -
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
-
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - SainSmart - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
-

- - - - - - - - - - SainSmart 4-Channel Relay Module - - - - - - - - - - - - - - - - -

- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.3 out of 5 stars - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 194 customer reviews - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - | - - - - - 44 answered questions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Price: - - - $8.99 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Free Shipping for Prime Members
- - - - - - -FREE Shipping -
Get free shipping
-
Free 5-8 business-day shipping within the U.S. when you order $25 of eligible items sold or fulfilled by Amazon.
-
Or get 4-5 business-day shipping on this item for $5.99. (Prices may vary for AK and HI.)
-Learn more about free shipping -
- on orders over $25—or get FREE Two-Day Shipping with Amazon Prime
- - - - - - - - - - - - - -
- - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

This item at this price, sold by Amazon.com, is currently reserved exclusively for Prime members.

- - Prime free trial and invitee customers: We will automatically apply an Amazon.com Gift Card to your Gift Card Balance in the amount equal to the Prime exclusive discount after you become a paid Prime member. If you cancel your paid Prime membership or return the qualifying smartphone within the first 3 months of your paid Prime membership, we may void your Gift Card or charge you in the amount of the Gift Card. Terms and Conditions apply. -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - In Stock. - - - - - - - - - - - - -
- - - - - - - - - - - -
- - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - -
- - - - - - -
- - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - Ships from and sold by Amazon.com. - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
-
- - - Standard Packaging - - - -
-
- - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - -
    - - -
  • - 5V 4-Channel Relay interface board, and each one needs 15-20mA Driver Current - -
  • - -
  • - Equipped with high-current relay, AC250V 10A ; DC30V 10A - -
  • - -
  • - Standard interface that can be controlled directly by microcontroller (Arduino , 8051, AVR, PIC, DSP, ARM, ARM, MSP431, TTL logic) - -
  • - -
  • - Indication LED's for Relay output status - -
  • - -
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - 2 new from $8.99 - - - - 3 used from $7.18 - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
- -
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
- - - -
- -
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - -
-
- - - -
- - - - - - - - - - - - - - - - - -
- - - -
- -
- - - - - - - - - $8.99 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Free Shipping for Prime Members
- - - - - - -FREE Shipping -
Get free shipping
-
Free 5-8 business-day shipping within the U.S. when you order $25 of eligible items sold or fulfilled by Amazon.
-
Or get 4-5 business-day shipping on this item for $5.99. (Prices may vary for AK and HI.)
-Learn more about free shipping -
- on orders over $25—or get FREE Two-Day Shipping with Amazon Prime
- - - - - - - - - - - - - - - - - - - - - - - - - In Stock. - - - - - - - - - - - - - - - - - - - - Ships from and sold by Amazon.com. - - - - - - - - - - - - -
-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Frequently bought together

-
-
-
- -
-
    -
  • SainSmart 4-Channel Relay Module
  • +
  • Elegoo 120pcs Multicolored Dupont Wire 40pin Male to Female, 40pin Male to Male, 40pin Female to Female Breadboard Jumper Wires Ribbon Cables Kit for arduino
  • +
  • Arduino Uno R3 Microcontroller A000066
  • -
-
-
Total price: $45.70
-
- - -
- -
-
- -
Buy the selected items together
-
-
-
-
- - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
- -
- - - - -
- - - - - - - -
-
- -

Special offers and product promotions

- - - - -
Product Packaging: Standard Packaging
- - - - - - -
- -
- - - - - - - - -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
-

- Have a question? -

-

- Find answers in product info, Q&As, reviews -

- - - -
-
- - - - - - - - - - - - - - - - - - - - - - -
-
- -
-
-
-

- Please make sure that you are posting in the form of a question. -

-
-
- - Don't see what you're looking for? - - - - -
-
- There was a problem completing your request. Please try your search again later. -
-
- - - - All - - - - - - - Product Information - - - - - - - Customer Q&A's - - - - - - - Customer Reviews - - - -
-
-
-
-
-
-
- - - - - -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -

From the manufacturer

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
- - -
- - - - - -
- - - - - - - - - -
- - - - - - - - -
- - -
- - - - - -
- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - -
- - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - - - - - - - - - - - - - - - - - -
- - - -
- - -

- Product description - -

- - - - - - - - - - - - - - -
- - - - - - - - - - - -
- - - - - Product Packaging:Standard Packaging - - -
- - - - - - - - - - - - - - - - - - - - - - -

This is a 5V 4-Channel Relay interface board, Be able to control various appliances, and other equipments with large current. It can be controlled directly by Microcontroller (Arduino, 8051, AVR, PIC, DSP, ARM, ARM, MSP430, TTL logic). - -

- - - - - - - - - - -
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - -
- -
-
-

- Product information -

- - - - - - - - - - - - - - - - - Product Packaging:Standard Packaging - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
-
- - -
- - - - - - -
-

- Feedback -

-
- -
- - - - - - - - - - - - - If you are a seller for this product, would you like to suggest updates through seller support? - - -
-
- - - - - - - - Would you like to tell us about a lower price? - - - - - - -
- -
-
- - -
-
-
- - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - -
- - -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - -
-
- - -
-
- - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -
-
- - -
-
- - -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
$8.99
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ FREE Returns +
+ Return this item for free
  • Free returns are available for the shipping address you chose. You can return the item for any reason in new and unused condition: no return shipping charges.
  • Learn more about free returns.
+
+ + + + No Import Fees Deposit & $10.11 Shipping to Spain Details

Shipping & Fee Details

+ +
Price $8.99
AmazonGlobal Shipping $10.11
+ Estimated Import Fees Deposit + $0.00
Total $19.10

+
+
+
+
+
+
Delivery Friday, January 19. Order within 20 hrs 9 mins
Or fastest delivery Wednesday, January 17
+ + -
- - - - - - - - - - - - - -
- - - - - -
+ if (event.updateDeliveryBlockOnQuantityChange) { + return; + } + event.updateDeliveryBlockOnQuantityChange = 1; + // "#buybox" is included in this list because if there is no accordion row, then it is a single-offer layout + // possible id's may include "usedAccordionRow", "newAccordionRow_1", "newAccordionRow_2" + var accordionRow = $(this).closest('[id$="AccordionRow"], #buybox, [id^="newAccordionRow"]'); -
-
-

Customer reviews

-
+ var quantity = $(this).val(); + var asin = accordionRow.find("#deliveryBlockSelectAsin").val(); + var merchantId = accordionRow.find("#deliveryBlockSelectMerchant").val(); - -

Read reviews that mention

+
+
+
+
+
+
+
+
-

Top customer reviews

September 4, 2017
Package Type: Standard Packaging|Verified Purchase
0Comment|Was this review helpful to you? - - Report abuse
August 13, 2016
Package Type: Standard Packaging|Verified Purchase
0Comment| - One person found this helpful. - - Was this review helpful to you? - - Report abuse
September 22, 2017
Package Type: Standard Packaging|Verified Purchase
-
-
-
- - review image
- -
-
-
-
0Comment|Was this review helpful to you? - - Report abuse
March 30, 2017
Package Type: Standard Packaging|Verified Purchase
0Comment|Was this review helpful to you? - - Report abuse
December 21, 2013
Package Type: Standard Packaging|Verified Purchase
0Comment| - 2 people found this helpful. - - Was this review helpful to you? - - Report abuse
September 22, 2012
Package Type: Standard Packaging|Verified Purchase
0Comment| - 2 people found this helpful. - - Was this review helpful to you? - - Report abuse
February 28, 2015
Package Type: Standard Packaging|Verified Purchase
0Comment|Was this review helpful to you? - - Report abuse
April 15, 2017
Package Type: Standard Packaging|Verified Purchase
0Comment|Was this review helpful to you? - - Report abuse
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+
+
+
+
+ + + + +
$$8.99 + () + Includes selected options. Includes initial monthly payment and selected options. + Details +
Price
Subtotal
$$8.99
Subtotal
Initial payment breakdown
Shipping cost, delivery date, and order total (including tax) shown at checkout.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
Added to

Sorry, there was a problem.

There was an error retrieving your Wish Lists. Please try again.

Sorry, there was a problem.

List unavailable.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ + +
+ + + +
+
+
+
+
+
+
+
+
+ + @@ -16219,184 +4539,1238 @@

Read reviews that mention< + +
+ + + + + + +
+ Sponsored +
+ +

+
+
+
+
+
+
+ +
+
+ +
+
+
+ + +
+
+
+
+
+
- +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +

SainSmart 4-Channel Relay Module

+ +
+ +
+ + 4.6 4.6 out of 5 stars + 422 ratings + +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
$8.99
-
-
-
-
- +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ + +
+
+
+
+ + FREE Returns +
+ Return this item for free
  • Free returns are available for the shipping address you chose. You can return the item for any reason in new and unused condition: no return shipping charges.
  • Learn more about free returns.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + No Import Fees Deposit & $10.11 Shipping to Spain Details

Shipping & Fee Details

+
Price $8.99
AmazonGlobal Shipping $10.11
+ Estimated Import Fees Deposit + $0.00
Total $19.10

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.
Pattern Name: + Module
+ + +
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
{"desktop_buybox_group_1":[{"displayPrice":"$8.99","priceAmount":8.99,"currencySymbol":"$","integerValue":"8","decimalSeparator":".","fractionalValue":"99","symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"bfYR62RbBF444Jcheo7z7L%2FK5UpU8QjX095ksrSWartcgZUxfFwm2no%2FEcxDwVG6%2BL9CqVneGf3TBuhUcTqM0540%2FOuhxAM1HoqgwZnUezpdFEMaiG9oSRNDRn94eA6Y0dtezBz2I5%2Bm07lpxrIY%2FaL0hlssFwRiB8phzSInUB8q9%2FvFCY7SpQKXMTdV6pYk","locale":"en-US","buyingOptionType":"NEW","aapiBuyingOptionIndex":0}]}

Purchase options and add-ons

+
+ + + +
+
+
+
+ + +
Connector Type /
Contact Material /
Contact Type /
Current Rating 10 Amps
Mounting Type /
+
+

+

About this item

  • 5V 4-Channel Relay interface board, and each one needs 15-20mA Driver Current
  • Equipped with high-current relay, AC250V 10A ; DC30V 10A
  • Standard interface that can be controlled directly by microcontroller (Arduino , 8051, AVR, PIC, DSP, ARM, ARM, MSP431, TTL logic)
  • Indication LED's for Relay output status
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Customers usually keep this item

This product has fewer returns than average compared to similar products.

+
+
+ + +
+ + + +
+
+
+
+ - - - - - - - - - +
+ +
+
+ Note: Products with electrical plugs are designed for use in the US. Outlets and voltage differ internationally and this product may require an adapter or converter for use in your destination. Please check compatibility before purchasing. +
+
+
+
+
+
+
+
+
+
+ - - - +
+
+
+
+
- -
-
-
-

Set up an Amazon Giveaway

-
- - -
-
- SainSmart 4-Channel Relay Module -
-
- -
- Amazon Giveaway allows you to run promotional giveaways in order to create buzz, reward your audience, and attract new followers and customers. Learn more about Amazon Giveaway
-
-
- This item: SainSmart 4-Channel Relay Module
-
- -
-
-
- - - - - - - - - - - - - - + @@ -16412,69 +5786,29 @@

Set up an Amazon Giveaway

-
-
- - + - - - - - - @@ -16497,23 +5831,19 @@

Set up an Amazon Giveaway

- - - - - @@ -16524,12 +5854,161 @@

Set up an Amazon Giveaway

- + +
+ + + + + + +
+ Sponsored +
+ @@ -16538,8 +6017,6 @@

Set up an Amazon Giveaway

- - @@ -16550,13 +6027,119 @@

Set up an Amazon Giveaway

+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ + + - + @@ -16575,12 +6158,15 @@

Set up an Amazon Giveaway

+ + + @@ -16601,12 +6187,47 @@

Set up an Amazon Giveaway

+ + + + + + +
@@ -16624,6 +6245,7 @@

Set up an Amazon Giveaway

+ @@ -16639,6 +6261,16 @@

Set up an Amazon Giveaway

+ + + @@ -16647,6 +6279,7 @@

Set up an Amazon Giveaway

+ @@ -16655,30 +6288,41 @@

Set up an Amazon Giveaway

+ + + + + - + + + + + + + @@ -16695,88 +6339,21 @@

Set up an Amazon Giveaway

+ - -
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
- - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -16793,16 +6370,11 @@

Set up an Amazon Giveaway

-
- - - - @@ -16810,13 +6382,13 @@

Set up an Amazon Giveaway

+ -
@@ -16824,136 +6396,16 @@

Set up an Amazon Giveaway

-
-
+ + + -
-
-
- -

What other items do customers buy after viewing this item?

- - -
- - - - @@ -16968,13 +6420,7 @@

What other items do customers buy after -

- - - - - @@ -16987,6 +6433,7 @@

What other items do customers buy after + @@ -16996,31 +6443,81 @@

What other items do customers buy after + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -17030,6 +6527,8 @@

What other items do customers buy after + + @@ -17038,6 +6537,9 @@

What other items do customers buy after + + + @@ -17047,17 +6549,22 @@

What other items do customers buy after + + + + + @@ -17066,14 +6573,12 @@

What other items do customers buy after + -
- Pages with related products. - See and discover other items: 4 channel, 5 channel, relay kit, relay switch -
+ @@ -17086,30 +6591,32 @@

What other items do customers buy after - + + +
+ - - - - - - - +
+
+
+
+ - - +
+
+
@@ -17118,107 +6625,96 @@

What other items do customers buy after - - - + + +

Frequently bought together

$8.99
Get it as soon as Friday, Jan 19
In Stock
Sold by SainSmart Official and ships from Amazon Fulfillment.
+
$27.60
Get it as soon as Friday, Jan 19
In Stock
Sold by Arduino and ships from Amazon Fulfillment.
Total price:$43.57
Details
Added to Cart
These items are shipped from and sold by different sellers.
+ + + +

+
+
+ +
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + +
+ + +
+ +
+

Important information

To report an issue with this product or seller, click here.

+
+ - +
+
+
+
+
+
+ + +
Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.
+ + + +
+
+
+ +
+ + +
+
+
+ + +

Compare with similar items

This Item
SainSmart 4-Channel Relay Module
SainSmart 4-Channel Relay Module
Recommendations
HiLetgo 2pcs 5V One Channel Relay Module Relay Switch with OPTO Isolation High Low Level Trigger
dummy
SainSmart 2-Channel Relay Module
dummy
ELEGOO 4 Channel DC 5V Relay Module with Optocoupler Compatible with Arduino UNO R3 MEGA 2560 DSP ARM PIC AVR STM32
dummy
SainSmart 16-Channel 12V Relay Module Board for Arduino DSP AVR PIC ARM
dummy
SainSmart 8-Channel Relay Module
Details
Added to Cart
Details
Added to Cart
Details
Added to Cart
Details
Added to Cart
Details
Added to Cart
Details
Added to Cart
Price$8.99$7.39-7% $8.28
Typical:$8.95
$7.99-17% $15.99
List:$19.29
-15% $10.99
List:$12.99
Delivery
Get it as soon as Friday, Jan 19
Get it as soon as Friday, Jan 19
Get it as soon as Friday, Jan 19
Get it as soon as Friday, Jan 19
Get it as soon as Monday, Jan 22
Customer Ratings
Easy to use
4.3
4.5
4.2
3.8
4.4
Value for money
4.3
4.4
4.2
4.3
4.6
Quality of material
4.2
4.8
4.0
Sold By
SainSmart Official
HiLetgo
Amazon.com
ELEGOO Official US
SainSmart Official
SainSmart Official
contact type
/
Normally Open
/
max switch current
10 amps
10 amps
10 amps
10 amps
12 amps
10 amps
specification met
/
Vcc
/
250 volts
250 volts
250 volts
30 volts
coil voltage
5 volts
5 volts
5 volts
5 volts
12 volts
5 volts
operation mode
Automatic
Automatic
Automatic
Automatic
Automatic
Automatic
+ + + +
+
+
+
+
+
+ +
+
+
+
+
+
- +
+
+ - - +
+
+
+
+
+
+
+
+
+
+ +

What's in the box

  • /
  • +
    + +
    +

    + Product information

    +

    Technical Details

    Collapse all

    Additional Information

    Warranty & Support

    Product Warranty: For warranty information about this product, please click here

    Feedback

    +
    + Would you like to tell us about a lower price? + +
    + +
    + + + +
    + Please sign in to provide feedback.
    + + +
    +
    + + function triggerPricingFeedback( + customerId, + marketplaceId, + asin, + price, + retailerType, + retailerUrl, + retailerName, + retailerCity, + retailerState, + retailerPrice, + retailerShipping, + sampleDate + ) { + var dataCart = { + ourPrice: parseInt(price), + retailer: { + type: retailerType, + name: retailerName, + city: retailerCity, + state: retailerState, + price: parseInt(retailerPrice), + shippingCost: parseInt(retailerShipping), + url: retailerUrl + }, + date: sampleDate + "T00:00:00.102Z" + }; + return new Promise((resolve, reject) => { + A.$.ajax($("#aapiEndpoint").val() + "/api/marketplaces/" + marketplaceId + "/products/" + asin + "/feedback/pricing", + { + type: 'POST', + headers: { + 'Accept-Language': 'en-US', + 'Accept': 'application/vnd.com.amazon.api+json; type="product.feedback.pricing/v1"', + 'x-amzn-encrypted-slate-token': document.querySelector('meta[name="encrypted-slate-token"]')?.content, + 'Content-Type': 'application/vnd.com.amazon.api+json; type="product.feedback.pricing.request/v1"', + 'x-api-csrf-token': csrf + }, + data: JSON.stringify(dataCart), + xhrFields: { + withCredentials: true + }, + + success: function (responseContent) { + $("#pricingFeedback_thankcontent").innerText = "Success! " + responseContent.toString(); + resolve(); + }, + + error: function (err) { + $("#pricingFeedback_thankcontent").innerText = "Error! " + err.toString(); + reject(); + } + }) + }) + } + function getAuthenticationPageURL(asin, hostname) { + return hostname + '/ap/signin?_encoding=UTF8&openid.assoc_handle=usflex&openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&openid.identity=http://specs.openid.net/auth/2.0/identifier_select&openid.mode=checkid_setup&openid.ns=http://specs.openid.net/auth/2.0&openid.ns.pape=http://specs.openid.net/extensions/pape/1.0&openid.pape.max_auth_age=0&openid.return_to=https://www.amazon.com/dp//'; + } + function getCurrentDay() { + var date = new Date(); + return date.getDate().toString(); + } + function getCurrentMonth() { + var date = new Date(); + return (date.getMonth() + 1).toString(); + } + function getCurrentYear() { + var date = new Date(); + return date.getFullYear().toString(); + } + function setInitialStates(onlineMonth, currentMonth, offlineMonth, onlineDay, currentDate, offlineDay, + onlineYear, currentYear, offlineYear, onlineStoreInputForm, offlineStoreInputForm, enableOfflineStoreRadio, + enableOnlineStoreRadio, onlineCalendar, offlineCalendar, offlineStateMain, offlineState) { + onlineMonth.defaultValue = currentMonth; + offlineMonth.defaultValue = currentMonth; + onlineDay.defaultValue = currentDate; + offlineDay.defaultValue = currentDate; + onlineYear.defaultValue = currentYear; + offlineYear.defaultValue = currentYear; + + var stateEmptyMarketplace = ["A33AVAJ2PDY3EV", "A3OCL2LJ6GDH9T","A1ZXRLSQW2V54D", "A2WDZJZ5TCRMLH"]; + var marketplaceId = $("#marketplaceId").val(); + + var stateLabel = document.querySelector('#stateLabel') + var stateValue = document.querySelector('#stateValue') + + if(stateEmptyMarketplace.includes(marketplaceId)) { + stateLabel.style['display'] = 'none'; + stateValue.style['display'] = 'none'; + } + var onlineMonthOption = document.querySelector('#onlineMonthOptionDefault'); + onlineMonthOption.innerText = currentMonth; + var onlineMonthPrompt = document.querySelector('#onlineMonthPrompt'); + onlineMonthPrompt.innerText = currentMonth; + var offlineMonthOption = document.querySelector('#offlineMonthOptionDefault'); + offlineMonthOption.innerText = currentMonth; + var offlineMonthPrompt = document.querySelector('#offlineMonthPrompt'); + offlineMonthPrompt.innerText = currentMonth; + var onlineDateOption = document.querySelector('#onlineDateOptionDefault'); + onlineDateOption.innerText = currentDate; + var onlineDayPrompt = document.querySelector('#onlineDatePrompt'); + onlineDayPrompt.innerText = currentDate; + var offlineDateOption = document.querySelector('#offlineDateOptionDefault'); + offlineDateOption.innerText = currentDate; + var offlineDayPrompt = document.querySelector('#offlineDatePrompt'); + offlineDayPrompt.innerText = currentDate; - + var onlineYearOption = document.querySelector('#onlineYearOptionDefault'); + onlineYearOption.setAttribute('href', currentYear); + onlineYearOption.innerText = currentYear; + var onlineYearPrompt = document.querySelector('#onlineYearPrompt'); + onlineYearPrompt.innerText = currentYear; + var offlineYearOption = document.querySelector('#offlineYearOptionDefault'); + offlineYearOption.setAttribute('href', currentYear); + offlineYearOption.innerText = currentYear; + var offlineYearPrompt = document.querySelector('#offlineYearPrompt'); + offlineYearPrompt.innerText = currentYear; + if (onlineMonth.children && offlineMonth.children && onlineDay.children && offlineDay.children) { + onlineMonth.children[currentMonth].setAttribute('selected', currentMonth); + offlineMonth.children[currentMonth].setAttribute('selected', currentMonth); + onlineDay.children[currentDate].setAttribute('selected', currentDate); + offlineDay.children[currentDate].setAttribute('selected', currentDate); + } + onlineStoreInputForm.style['display'] = 'none'; + offlineStoreInputForm.style['display'] = 'none'; + enableOfflineStoreRadio.checked = false; + enableOnlineStoreRadio.checked = false; + if (onlineCalendar.style && offlineCalendar.style) { + onlineCalendar.style['display'] = 'block'; + offlineCalendar.style['display'] = 'block'; + } + } + function submitFeedback( + customerId, + marketplaceId, + asin, + price, + onlineStoreInputForm, + offlineStoreInputForm, + onlineUrl, + onlinePriceRaw, + onlineShippingRaw, + onlineDay, + onlineMonth, + offlineStoreName, + offlineCity, + offlineState, + offlinePriceRaw, + offlineDay, + offlineMonth, + thankYouDiv, + errorDiv, + submitButton, + loadingGifDiv, + errorMessages + ) { + errorDiv.innerHTML = ''; + + let cleanRetailerType, + cleanRetailerUrl, + cleanRetailerName, + cleanRetailerCity, + cleanRetailerState, + cleanRetailerPrice, + cleanRetailerShipping, + cleanSampleDate; + var currentYear = getCurrentYear(); + if (onlineStoreInputForm.style['display'] === 'table') { + var onlineValidity = validateOnlineInputs(onlineUrl, onlinePriceRaw, onlineShippingRaw, errorMessages); + if (onlineValidity.valid) { + cleanRetailerType = 'ONLINE'; + cleanRetailerUrl = truncate(trim(onlineUrl), 300); + cleanRetailerPrice = trim(onlinePriceRaw); + cleanRetailerShipping = trim(onlineShippingRaw); + if (!cleanRetailerShipping) { + cleanRetailerShipping = '0'; + } + cleanSampleDate = formatDate( + currentYear, + onlineDay ? onlineDay : getCurrentDay(), + onlineMonth ? onlineMonth : getCurrentMonth() + ); + } else { + if (onlineValidity.error) { + errorDiv.innerHTML = getErrorDiv(onlineValidity.error); + } + return null; + } + } else if (offlineStoreInputForm.style['display'] === 'table') { + var offlineValidity = validateOfflineInputs( + offlineStoreName, + offlineCity, + offlineState, + offlinePriceRaw, + errorMessages, + marketplaceId + ); + if (offlineValidity.valid) { + cleanRetailerType = 'OFFLINE'; + cleanRetailerName = truncate(trim(offlineStoreName), 100); + cleanRetailerCity = truncate(trim(offlineCity), 100); + cleanRetailerState = truncate(trim(offlineState), 100); + cleanRetailerPrice = trim(offlinePriceRaw); + cleanRetailerShipping = '0'; + cleanSampleDate = formatDate( + currentYear, + offlineDay ? offlineDay : getCurrentDay(), + offlineMonth ? offlineMonth : getCurrentMonth() + ); + } else { + if (offlineValidity.error) { + errorDiv.innerHTML = getErrorDiv(offlineValidity.error); + } + return null; + } + } else { + errorDiv.innerHTML = getErrorDiv(errorMessages.errorNoRetailerType); + return null; + } + loadingGifDiv.innerHTML = getLoadingGifDiv(); + + if (price) price = parseFloat(price); + return triggerPricingFeedback( + customerId, + marketplaceId, + asin, + price, + cleanRetailerType, + cleanRetailerUrl, + cleanRetailerName, + cleanRetailerCity, + cleanRetailerState, + parseFloat(cleanRetailerPrice), + parseFloat(cleanRetailerShipping), + cleanSampleDate + ) + .then(response => { + errorDiv.innerHTML = ''; + thankYouDiv.innerHTML = getThankYouDiv(errorMessages.thankFeedback); + + submitButton.style.display = 'none'; + return response; + }) + .catch(err => { + errorDiv.innerHTML = getErrorDiv(errorMessages.errorSubmission); + return null; + }); + } + function validateOnlineInputs(url, onlinePrice, onlineShipping, errorMessages) { + if (isEmptyValue(url) || isEmptyValue(onlinePrice)) { + return { + valid: false, + error: errorMessages.errorEmptyFields + }; + } else if (!isValidUrl(url)) { + return { + valid: false, + error: errorMessages.errorInvalidUrl + }; + } else if (!isNumericPrice(onlinePrice) || (!isEmptyValue(onlineShipping) && !isNumericPrice(onlineShipping))) { + return { + valid: false, + error: errorMessages.errorBadPriceShipping + }; + } + return { + valid: true, + error: null + }; + } + function validateOfflineInputs(offlineStoreName, offlineCity, offlineState, offlinePrice, errorMessages, marketPlaceId) { + if ( + isEmptyValue(offlineStoreName) || + isEmptyValue(offlineCity) || + isEmptyValue(offlinePrice) + ) { + return { + valid: false, + error: errorMessages.errorEmptyFields + }; + } else if (!isNumericPrice(offlinePrice)) { + return { + valid: false, + error: errorMessages.errorBadPrice + }; + } + return { + valid: true, + error: null + }; + } + function getErrorDiv(errorMsg) { + return ( + '' + ); + } - - - - + function getThankYouDiv(thankMsg) { + return ( + '
    ' + + '
    ' + + thankMsg + + '
    \n' + + '


    ' + ); + } + function getLoadingGifDiv() { + return ''; + } + function isValidUrl(url) { + if (!url) { + return false; + } + var encodedUrl = encodeURI(url); + return encodedUrl.match( + /^(https?:\/\/)?(([a-z0-9-]|%[A-F0-9]{2})+\.)+(([a-z]|%[A-F0-9]{2})([a-z0-9]|%[A-F0-9]{2})*)(:[0-9]+)?(\/[a-z0-9;:,~!+#@&=%\/$\.?_-]+)?$/ + ); + } + function isNumericPrice(price) { + if (!price) { + return false; + } + return price.match(/^([0-9]+\.?[0-9]*)$|^([0-9]*\.[0-9]+)$/); + } + function isEmptyValue(input) { + return !input || input.length === 0 || input.match(/^\s*$/); + } + function truncate(input, length) { + if (!input) { + return ''; + } else { + return input.substr(0, length); + } + } -
    - -
    + function formatDate(year, date, month) { + return year + '-' + month + '-' + date; + } + function trim(input) { + if (!input) { + return ''; + } else { + return input.trim(); + } + } + function resetModalToInitialState(currentMonth, currentDate, currentYear) { + var enableOnlineStoreRadio = document.querySelector('#pricingFeedback_onlineRadio'); + var enableOfflineStoreRadio = document.querySelector('#pricingFeedback_offlineRadio'); + var onlineStoreInputForm = document.querySelector('#pricingFeedback_onlineInput'); + var offlineStoreInputForm = document.querySelector('#pricingFeedback_offlineInput'); + var onlineUrl = document.querySelector('#onlineUrl'); + var onlinePriceRaw = document.querySelector('#onlinePriceRaw'); + var onlineShippingRaw = document.querySelector('#onlineShippingRaw'); + var onlineDay = document.querySelector('#onlineDay'); + var onlineMonth = document.querySelector('#onlineMonth'); + var onlineYear = document.querySelector('#onlineYear'); + var onlineCalendar = document.querySelector('#onlineCalendar'); + + var offlineStoreName = document.querySelector('#offlineStoreName'); + var offlineCity = document.querySelector('#offlineCity'); + var offlineState = document.querySelector('#offlineState'); + var offlinePriceRaw = document.querySelector('#offlinePriceRaw'); + var offlineDay = document.querySelector('#offlineDay'); + var offlineMonth = document.querySelector('#offlineMonth'); + var offlineYear = document.querySelector('#offlineYear'); + var offlineCalendar = document.querySelector('#offlineCalendar'); + + var thankYouDiv = document.querySelector('#pricingFeedback_thank'); + var errorDiv = document.querySelector('#pricingFeedback_error'); + var submitButton = document.querySelector('#pricingFeedback_submit'); + var loadingGifDiv = document.querySelector('#loading'); + + var stateDefaultOption = document.querySelector('#stateDefaultOption'); + var stateDefaultPrompt = document.querySelector('#stateDefaultPrompt'); + var offlineStateMain = document.querySelector('#offlineStateMain'); + + if (thankYouDiv) { + thankYouDiv.innerHTML = ''; + } + if (errorDiv) { + errorDiv.innerHTML = ''; + } + if (loadingGifDiv) { + loadingGifDiv.innerHTML = ''; + } + if (submitButton) { + submitButton.style.display = 'block'; + } + onlineUrl.value = ''; + onlinePriceRaw.value = ''; + onlineShippingRaw.value = ''; + offlineStoreName.value = ''; + offlineCity.value = ''; + offlineState.value = ''; + offlinePriceRaw.value = ''; + + stateDefaultOption.innerHTML = $("#selectProvince").val(); + stateDefaultPrompt.innerHTML = $("#selectProvince").val(); + + setInitialStates( + onlineMonth, + currentMonth, + offlineMonth, + onlineDay, + currentDate, + offlineDay, + onlineYear, + currentYear, + offlineYear, + onlineStoreInputForm, + offlineStoreInputForm, + enableOfflineStoreRadio, + enableOnlineStoreRadio, + onlineCalendar, + offlineCalendar, + offlineStateMain, + offlineState + ); + } + }); + +
    +
    +
    +
    +
    +
    +
    + +
    +
    - -
    - -
    +
    +
    - +
    +
    +
    +

    Product Description

    +
    + +
    + +
    +
    @@ -17483,82 +8131,794 @@

    What other items do customers buy after + + + +
    +
    +
    + +
    + +

    + Looking for specific info? +

    +
    +
    +
    +
    +

    +
    +
    +
    + +
    +
    +

    +

    From the brand

    + + + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +

    +

    From the manufacturer

    + +
    +
    +
    +

    SainSmart 4-Channel 5V Relay Module

    +
    +
    +
    +
    +

    Package Content:

    1 x SainSmart 4-Channel 5V Relay Module

    More Manual instruction please refer to our site.

    +
    +
    +

    SainSmart 4-Channel 5V Relay Module

    5V 4-Channel Relay interface board, and each one needs 15-20mA Driver Current

    - Equiped with high-current relay, AC250V 10A ; DC30V 10A.

    - Standard interface that can be controlled directly by microcontroller (Arduino , 8051, AVR, PIC, DSP, ARM, ARM, MSP430, TTL logic active low).

    - Opto-isolated inputs.

    - Indication LED’s for Relay output status.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Product information

    This is a 5V 4-Channel Relay interface board, be able to control various appliances, and other equipments with large current.

    It can be controlled directly by Microcontroller (Arduino, 8051, AVR, PIC, DSP, ARM, ARM, MSP430, TTL logic).

    Item weight: 0.2 pounds.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + + + +
    +
    +
    +
    + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    @@ -17577,6 +8937,7 @@

    What other items do customers buy after + @@ -17616,6 +8977,10 @@

    What other items do customers buy after + @@ -17623,6 +8988,7 @@

    What other items do customers buy after +
    @@ -17638,8 +9004,153 @@

    What other items do customers buy after + +
    + + + + + + +
    + Sponsored +
    + @@ -17655,12 +9166,47 @@

    What other items do customers buy after +

    +
    +
    +
    +
    +
    +
    + + + + + + +
    +
    + + +

    Customer reviews

    4.6 out of 5 stars
    4.6 out of 5
    422 global ratings
    + + + +
    + + + +
    + @@ -17684,14 +9230,160 @@

    What other items do customers buy after + +
    + + + + + + +
    + Sponsored +
    + +

    +
    +
    +
    + + +

    Submit a report

    A few common reasons customers report reviews:
    • Harassment, profanity
    • Spam, advertisement, promotions
    • Given in exchange for cash, discounts
    When we get your report, we'll check if the review meets our Community guidelines. If it doesn't, we'll remove it.
    Sorry we couldn't load the review
    Thank you for your feedback

    Sorry, there was an error

    Please try again later.
    + + + +
    + + +
    +
    • @@ -17731,10 +9547,28 @@

      What other items do customers buy after +
      + + + + + +

    @@ -17745,7 +9579,11 @@

    What other items do customers buy after +Top reviews from the United States +

    + +
    Reviewed in the United States on March 28, 2013
    Pattern Name: ModuleVerified Purchase
    +
    8 people found this helpful
    + +
    + Report +
    Reviewed in the United States on July 19, 2012
    Pattern Name: ModuleVerified Purchase
    +
    71 people found this helpful
    + +
    + Report +
    Reviewed in the United States on March 16, 2013
    Pattern Name: ModuleVerified Purchase
    +
    26 people found this helpful
    + +
    + Report +
    +
    + + +
    + +
    +

    + + + Top reviews from other countries + + + +

    + +
    +
    +
    Translate all reviews to English +
    +
    + +
    +
    +
    + +
    +
    Rini Boo
    5.0 out of 5 stars @@ -17826,7 +9750,9 @@

    What other items do customers buy after + Works on both Raspberry Pi and Pico W without mod +

    Reviewed in Canada on March 8, 2023
    Pattern Name: ModuleVerified Purchase
    @@ -17849,14 +9777,99 @@

    What other items do customers buy after + +
    + + + +
    +
    + Customer image +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Rini Boo
    +
    + 5.0 out of 5 stars + + Works on both Raspberry Pi and Pico W without mod + +
    + + + + + + Reviewed in Canada on March 8, 2023 + + + + +
    + + I have been running the Raspberry Pi 3 with this Sainsmart relay module for 6 years 24/7 home automation on my LAN, there has been zero problem. Recently I want to re-write my code to use MQTT cloud and upgraded to Pico W, then I bought another Sainsmart relay module. I read a lot of articles and YouTube videos saying you have to mod it because both Pi 3 and Pico W GPIO output is 3.3V and the easiest way I learned is to short the Sainsmart onboard LED to get that 1.7V difference. Of coz there are other ways. According to the electronic guys, without any mod, the 3.3V GPIO *may* work but it is not reliable. But I tell you, I am not an electronic guy and I didn't do any mod. My Pi 3 running for 6 years and the relay opens/closes at least 10-15 times a day and I didn't experience any problem or errors.

    For my new Pico W, I just tested it, it's exactly the same as my Pi 3. Without any mod, I connected Pico VBUS (40) to Relay JD-VCC, then VSYS (39) to Relay VCC, Pico Gnd (38) to Relay Gnd, Pico GPIO 16 (21) to Relay IN1.

    I can switch the relay on and off using Python, notice that it's "Low level trigger" meaning the following MicroPython code will turn on with value 0. You can see the photo, I have the relay LED lit up:
    Pin (16, mode=Pin.OUT, value=0)

    Even if you don't take JD-VCC and VCC jumper off and don't connect Pico VBUS (40), it works fine too. I just want the power isolation. +
    +
    + + Images in this review + +
    + + + Customer image + + Customer image + + +
    +
    +
    + + +
    + +

    + Customer imageCustomer image
    +
    +
    + + Report +
    + + + + +
    SKY1
    5.0 out of 5 stars @@ -17865,8 +9878,10 @@

    What other items do customers buy after + SWは良好 +

    Reviewed in Japan on May 7, 2013
    Pattern Name: ModuleVerified Purchase
    +
    One person found this helpful
    + Report +
    + + + + +
    横浜発信
    4.0 out of 5 stars @@ -17885,8 +9910,10 @@

    What other items do customers buy after + 満足してます +

    Reviewed in Japan on April 15, 2018
    Pattern Name: ModuleVerified Purchase
    Carl Chan
    5.0 out of 5 stars @@ -17906,7 +9938,9 @@

    What other items do customers buy after + Works great with Raspberry Pi +

    Reviewed in Canada on June 30, 2013
    Pattern Name: ModuleVerified Purchase
    + + Report +
    + + + + +
    kazu
    3.0 out of 5 stars @@ -17925,8 +9969,10 @@

    What other items do customers buy after + ラズベリーパイ でそのまま使えません +

    Reviewed in Japan on June 26, 2021
    Pattern Name: ModuleVerified Purchase
    +
    One person found this helpful
    + Report +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    + + + + +
    +
    + +
    +
    + + @@ -17983,6 +10127,9 @@

    What other items do customers buy after +

    +
    + @@ -17994,15 +10141,43 @@

    What other items do customers buy after +

    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +
    + @@ -18056,6 +10234,7 @@

    What other items do customers buy after + @@ -18095,6 +10274,10 @@

    What other items do customers buy after + @@ -18118,8 +10301,153 @@

    What other items do customers buy after + +
    + + + + + + +
    + Sponsored +
    + @@ -18137,15 +10465,34 @@

    What other items do customers buy after +

    + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + @@ -18154,19 +10501,164 @@

    What other items do customers buy after +

    +
    +
    + + + + + + + + @@ -18183,9 +10675,55 @@

    What other items do customers buy after + + + @@ -18193,25 +10731,126 @@

    What other items do customers buy after + + + + + + + + + + + + + @@ -18229,9 +10868,24 @@

    What other items do customers buy after + + + + + + +
    + @@ -18246,308 +10900,479 @@

    What other items do customers buy after - + + -
    + + - + + + + + + + + + + + + + + + + + - + - + - - - United States - + + + - - - - - - - - - - - - - - +
    \ No newline at end of file diff --git a/packages/metascraper-amazon/test/fixtures/amazon-com/product-url.html b/packages/metascraper-amazon/test/fixtures/amazon-com/product-url.html index ffb27661f..49c54da88 100644 --- a/packages/metascraper-amazon/test/fixtures/amazon-com/product-url.html +++ b/packages/metascraper-amazon/test/fixtures/amazon-com/product-url.html @@ -1,15822 +1,10167 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -The Whole Truth (A. Shaw Book 1) - Kindle edition by David Baldacci. Literature & Fiction Kindle eBooks @ Amazon.com. - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Industrial Deals - - - - - -HPC - - - - - -Holiday Gift Picks - - - - - -Holiday Dress Guide - - - - - -nav_sap_hiltonhonors_launch - - - - - -New album by NERD - - - - - -STEM - - - - - -Limited time offer - - - - - - - -Handmade Last Minute Gifts - - - - - -Holiday Home Gift Guide - - - - - -Book a house cleaner for 2 or more hours on Amazon - - - - - -independenceday -independenceday -independenceday - - - - - - All-new Echo - - - - - -Save $30 on All-New Fire HD 8. Limited-time offer. - - - - - -$20 off Kindle Paperwhite - - - - - - - - - - - -Shop Now - - - - - -HTL17_gno - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    -
    - - -
    -
    - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - + - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - + + - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - -
    - - - - - - - - - - -
    - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + +
    + + + + + + + + + + - + + + + + + + - + - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Kindle Price: - - $9.99 - - -
    - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - + - - - - - - + - - - - - - - - - + + + + - + + + - - - - - - - - - - - + - - - - - - - - - + - +
    + - - - - - - - - - - - - - - - - + - -
    -
    - + - + - - - - - - - - - - - - - - - -
    - - - - - - - + + + + - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - Facebook - - - - - - - - - - - - Twitter - - - - - - - - - - - - Pinterest - - - - - - - - <Embed> - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - -
    - -
    - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - -
    - -
    - - - - - - - - - - - - - -
    - - - - - + + + + + + - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - The Whole Truth (A. Shaw Book 1) by [Baldacci, David] - - -
    -
    -
    -
    - -
    - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - -
    - - -
    - Kindle App Ad -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - -
    -
    - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - The Whole Truth (A. Shaw Book 1) - - - - - - - - - - - - Kindle Edition - - - - -

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - + + - - - - - - - - - - - - -
    - - - - - - - - - - + - - - - - - - - - - -
    - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.4 out of 5 stars - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,010 customer reviews - - - - - - - - - - - - - - -
    - - -
    - - - - -
    - - - - Book 1 of 2 in A. Shaw (2 Book Series) - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - See all 48 formats and editions - Hide other formats and editions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - -
    -
    - Price -
    -
    -
    -
    - New from - - Used from -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - Kindle - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - $9.99 - - - - - - - -
    -
    - - - - -
    -
    -
    - — - - — -
    -
    -
    - - -
    -
    + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - + + - - + + - - - - + + + + + + + - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - Hardcover - - - - - - - - - - - - -
    -
    - - - - - - - — - - - -
    -
    - - - - -
    -
    -
    - - $5.00 - - - - $0.95 - -
    -
    -
    - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - Paperback - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - $8.00 - - - - - - - -
    -
    - - - - -
    -
    -
    - - $8.00 - - - - $2.98 - -
    -
    -
    - - -
    - -
    - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - -
    - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - Audible, Unabridged - - - - - - - - - - - - -
    -
    - - - - - - - - - $0.00 - - - - - - -
    -
    - - - - -
    -
    -
    - Free with your Audible trial -
    -
    -
    - - -
    - -
    - - + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The Whole Truth (A. Shaw Book 1) - Kindle edition by Baldacci, David. Mystery, Thriller & Suspense Kindle eBooks @ Amazon.com. + + + + + + + + + + + + + +
    + + + + + + + + +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + Sponsored +
    + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    Kindle Price: $10.99
    + +
    +
    +
    + +
    +
    +
    + + + + +

    These promotions will be applied to this item:

    Some promotions may be combined; others are not eligible to be combined with other offers. For details, please see the Terms & Conditions associated with these promotions.

    +
    + +
    + +
    + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    You've subscribed to ! We will preorder your items within 24 hours of when they become available. When new books are released, we'll charge your default payment method for the lowest price available during the pre-order period.
    Update your device or payment method, cancel individual pre-orders or your subscription at
    Your Memberships & Subscriptions
    +
    +
    +
    +
    + +

    Buy for others

    Give as a gift or purchase for a team or group.
    Learn more

    Buying and sending eBooks to others

    Select quantity
    Buy and send eBooks
    Recipients can read on any device

    These ebooks can only be redeemed by recipients in the US. Redemption links and eBooks cannot be resold.

    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    Added to

    Sorry, there was a problem.

    There was an error retrieving your Wish Lists. Please try again.

    Sorry, there was a problem.

    List unavailable.
    +
    +
    +
    +
    +
    + +
    Kindle app logo image

    Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.

    Read instantly on your browser with Kindle for Web.

    Using your mobile phone camera - scan the code below and download the Kindle app.

    QR code to download the Kindle App

    +
    + +
    Loading your book clubs
    There was a problem loading your book clubs. Please try again.
    Not in a club? Learn more
    Amazon book clubs early access

    +
    Join or create book clubs

    +
    Choose books together

    +
    Track your books
    Bring your club to Amazon Book Clubs, start a new book club and invite your friends to join, or find a club that’s right for you for free.
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + Sponsored +
    + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +

    Follow the author

    Something went wrong. Please try your request again later.

    + + + +
    +
    +
    +
    + +
    +
    +

    The Whole Truth (A. Shaw Book 1) Kindle Edition

    +
    +
    +
    +
    +
    +
    + +
    + + 4.4 4.4 out of 5 stars + 21,200 ratings + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + A powerful defense contractor, a reluctant intelligence agent, and an ambitious journalist race to contain and control an international crisis that could destroy the world in this #1 New York Times bestselling thriller.

    "Dick, I need a war."

    Nicolas Creel is a man on a mission. He heads up the world's largest defense contractor, The Ares Corporation. Dick Pender is the man Creel retains to "perception manage" his company to even more riches by manipulating international conflicts. But Creel may have an even grander plan in mind.

    Shaw, a man with no first name and a truly unique past, has a different agenda. Reluctantly doing the bidding of a secret multi-national intelligence agency, he travels the globe to keep it safe and at peace.

    Desperate to get back to the top of her profession, Katie James gets the break of a lifetime: the chance to interview the sole survivor of a massacre that has left every nation stunned.

    In David Baldacci's first international thriller, these characters face a catastrophic threat that could change the world as we know it.
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +

    Review

    "When Baldacci is on fire, nobody can touch him."―Booklist (starred review)

    "High-stakes action, shadowy government agencies, and [a] neo-Cold War backdrop . . . Baldacci pushes his plot ahead at such a blistering pace."―
    Washington Post

    "Delicious . . . [a] roller-coaster adventure . . . an utterly enjoyable escapist page-turner."―
    Tampa Tribune

    "Baldacci boldly steps into the arena of international thriller and may have created his most explosive and hard-hitting story to date."―
    BookReporter.com --This text refers to an out of print or unavailable edition of this title.

    From Publishers Weekly

    Starred Review. If there is such a category as a guys' audio, The Whole Truth fits the bill perfectly. Ron McLarty's gruff voice enhances this fast-moving thriller as he takes the listener through barrages of deadly assaults featuring gunfire, knives, bombs and hacksaws. He portrays Shaw, the unwilling secret agent, as weary yet tough. Nicolas Creel, who needs a good war to help sagging profits, comes across as appropriately cerebral and coldhearted. While McLarty gives different accents to Anna and Katie, otherwise, both sound alike, but he performs a variety of French and Slavic villains in quick succession. The sound track is comparable to a terrific cinematic score: darkly foreboding or quietly romantic when appropriate, raising this audio to an art form and enhancing the already gripping tale. A Grand Central hardcover (Reviews, Mar. 3). (May)
    Copyright © Reed Business Information, a division of Reed Elsevier Inc. All rights reserved.
    --This text refers to the audio_download edition.

    From Booklist

    Nicolas Creel, a powerful and wealthy defense contractor, is also a megalomaniac who wants to start a world war, which would help improve the bottom line of his company. Shaw (and that’s the only name he is known by), an agent for a secret multinational intelligence agency, teams up with Katie James, a disgraced journalist, to thwart Creel’s plan. Bullets fly and bad guys die, as do a few innocent bystanders. McLarty’s reading is accomplished, and his precise tone alternates between quiet and measured and furious and fast paced. His strong characterizations make it easy to distinguish the players, and an echo tone effectively signals Shaw’s memories. However the intermittent background music, rather than heightening drama, is somewhat distracting but shouldn’t deter Baldacci fans. --Jeanette Larson --This text refers to an out of print or unavailable edition of this title.

    About the Author

    David Baldacci lives with his family in Virginia. He and his wife have founded the Wish You Well Foundation, a nonprofit organization dedicated to supporting literacy efforts across America. He invites you to visit him at: www.david-baldacci.com and his foundation at www.wishyouwellfoundation.org , and to look into its program to spread books across America at www.FeedingBodyandMind.com. --This text refers to an out of print or unavailable edition of this title.

    From AudioFile

    Nicholas Creel's enormous defense contracting company needs a war, so he creates a conflict, using the Internet to grease the wheels by spreading rumors of murders in Russia. In the meantime, Shaw, an enforcer for a super-secret intelligence agency, becomes embroiled in Creel's game when his fianc��e is murdered while investigating the validity of the rumors. Ron McLarty delivers Baldacci's thriller with the aplomb of the veteran narrator he is. His gravelly voice alternates between calmness and intensity, drawing in the listener with each word. As Creel spins propaganda and twists reality, McLarty's even pacing and minimal characterizations keep the listener focused on the tangled plot, which seems all too conceivable. M.B.K. © AudioFile 2008, Portland, Maine --This text refers to an out of print or unavailable edition of this title.
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + +
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + All 2 for you in this series + + + + See full series + +
    +
    +
    + +
    +
    + + + + + + + + +
    + + + + + + + + + + + See included books + + + + + + + +
    +
    + + + + + +
    + + + + +
    +
    + Total Price: + $17.01 + +
    +
    + + + +
    + + + + + + + + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + By clicking on above button, you agree to the Kindle Store Terms of Use + + +
    +
    + +
    +
    +
    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + +
    +
    +
    +
    + + + + +
    + +
    +
    +
    +
    +
    + + +
    Popular Highlights in this book
    + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + +
    + + +
    +
    + + +

    Product details

    +
    +
    • ASIN + ‏ + : + ‎ + B0011UCPM4
    • Publisher + ‏ + : + ‎ + Grand Central Publishing; 1st edition (April 22, 2008)
    • Publication date + ‏ + : + ‎ + April 22, 2008
    • Language + ‏ + : + ‎ + English
    • File size + ‏ + : + ‎ + 5482 KB
    • Text-to-Speech + ‏ + : + ‎ + Enabled
    • Screen Reader + ‏ + : + ‎ + Supported
    • Enhanced typesetting + ‏ + : + ‎ + Enabled
    • X-Ray + ‏ + : + ‎ + Enabled
    • Word Wise + ‏ + : + ‎ + Enabled
    • Sticky notes + ‏ + : + ‎ + On Kindle Scribe
    • Print length + ‏ + : + ‎ + 497 pages
    +
    • Customer Reviews: + +
      + + 4.4 4.4 out of 5 stars + 21,200 ratings + + +
      +
    +
    + + +
    +
    +
    + +
    +
    + + +

    About the author

    Follow authors to get new release updates, plus improved recommendations.
    Brief content visible, double tap to read full content.
    Full content visible, double tap to read brief content.

    David Baldacci has been writing since childhood, when his mother gave him a lined notebook in which to write down his stories. (Much later, when David thanked her for being the spark that ignited his writing career, she revealed that she'd given him the notebook to keep him quiet, "because every mom needs a break now and then.")

    David published his first novel, ABSOLUTE POWER, in 1996. The feature film adaptation followed, with Clint Eastwood as its director and star. In total, David has published 48 novels for adults; all have been national and international bestsellers and several have been adapted for film and television. His novels have been translated into over 45 languages and sold in more than 80 countries, with 150 million copies sold worldwide. David has also published seven novels for younger readers.

    David is also the cofounder, along with his wife, of the Wish You Well Foundation, a nonprofit organization dedicated to supporting literacy programs across the United States.

    + + + +
    +
    + + +
    +
    +
    +
    + + +
    + +
    +
    +
    +
    + + +
    +
    +
    +

    How would you rate your experience shopping for books on Amazon today?

    Thank you for your feedback!

    + +
    +
    + + + + + +
    +
    +
    +
    + + +

    Related books

    + + + +
    + + +
    + +
    +
    +
    + + + + + + + + +
    +
    + + +

    Customer reviews

    4.4 out of 5 stars
    4.4 out of 5
    21,200 global ratings
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + Sponsored +
    + + + + + + + + +
    + + +
    + + + +
    +
    +
    + +
    + + +
    + + + +
    + + +
    +
    • + + + + + + + + + + + + + + + + + +
      + + + + + +

    + + + + + + + + + + + Top reviews from the United States +

    + + +
    Reviewed in the United States on August 2, 2021
    +
    6 people found this helpful
    + +
    + Report +
    5.0 out of 5 stars + + + + - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - Unknown Binding - - - - - - - - - - - - -
    -
    - - - - - - - — - - - -
    -
    - - - - -
    -
    -
    - - $4.29 - - - - $4.99 - -
    -
    -
    - - -
    - -
    - - - - + + Real Mystery + +
    Reviewed in the United States on August 28, 2023
    + + + + Report +
    Reviewed in the United States on August 15, 2023
    + + + + Report +
    Reviewed in the United States on July 20, 2023
    +
    One person found this helpful
    + +
    + Report +
    3.0 out of 5 stars - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Read with Our - - Free App - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - - - - - - - - - - - - - - -Hardcover
    + + Baldacci as Ian Flemming + +
  • Reviewed in the United States on July 1, 2008
    +
    10 people found this helpful
    + +
    + Report +
    Reviewed in the United States on June 16, 2023
    + + + + Report +
    Reviewed in the United States on June 9, 2023
    + + + + Report +
    +
    + + + + + + + +
    + +
    +

    + + + Top reviews from other countries + + + +

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 280 Used from $0.95 - - - - - - - - 35 New from $5.00 - - - - - - - - - 33 Collectible from $2.99 +
    +
    +
    Translate all reviews to English +
    +
    - -
    - - +
    + +
    +
    + +
    +
    Oils and Pencils
    5.0 out of 5 stars - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - - - - - - - - - - - + + + + + + + + Perfect, just perfect + +
  • Reviewed in Canada on October 29, 2023
    + + Report +
    MR JOHN C S PERRY
    5.0 out of 5 stars + + - - - - - - - - - - - - - - - - - - - - - $8.00 - - - - + so exciting! - - - - +
    Reviewed in the United Kingdom on November 13, 2023
    + + Report +
    Caroline Walcot
    5.0 out of 5 stars + + - - - - - - - - - - - - - - - - - - - - - $9.00 - - - - + Scary. This improbable plot has now been rendered more probable 14 years after this novel was written. - - - - +
    Reviewed in Germany on June 6, 2021
    + + Report +
    Shane Mackenzie
    5.0 out of 5 stars - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - - - - - - - - - - - - - - - -Audio CD
    - - - - - - - - - - - - - - - - - - - - - $12.67 - - - - + Scary that this could be true - - - - +
  • Reviewed in Australia on October 17, 2019
    + + Report +
    +
    +
    +
    - - - - - - 11 New from $8.98 - - - - - +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
    +
    + - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - +
    +
    + + +
    +
    +
    +
    + - - - - - - - - - - - - - -
    - - - - - +
    +
    + +
    +
    + - - - - - - - - - - + + + + + + + +
    +
    + + + + + + - - - - - - - - - - + + + + + + - +
    +
    +
    +
    + + + - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - +
    +
    + - - - - - - - - - - - - - - - - - - - - + +
    +
    + + + +
    +
    + + + +
    +
    + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - +
    +
    + +
    +
    +
    +
    + +
    +
    + + + + + + + + + +
    +
    +
    + + +
    Report an issue

    Does this item contain inappropriate content?
    Do you believe that this item violates a copyright?
    Does this item contain quality or formatting issues?
    + + + +
    + - - - - - - - - - - - - - - - - - - - -
    -
    -
    - -
    -
    - - - - - - - - - - - - - - + for(i = 0 ; i < performance.getEntries().length ; i++) { + var name = performance.getEntries()[i].name ; + var res = name.match(/\.css\?AUIClients\/AmazonUI/); + var initiatorType = performance.getEntries()[i].initiatorType; + if(res && initiatorType && initiatorType == "link") { + var duration = performance.getEntries()[i].duration ; + ue.count("aui.duration", duration); + ue.count("aui.startTime", performance.getEntries()[i].startTime); + if(duration < 50) { + csmTag = "auiCached"; + } + else { + csmTag = "auiNotCached"; + } + if(window.ue && ue.tag) { + ue.tag(csmTag); + } + break; + } + } + } + - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - -Length: - - - 564 pages - - - - - - - - - - - - - - - -Word Wise: - - - Enabled - - - - - - - - - - - - - - - -Enhanced Typesetting: - - - Enabled - - - - - - -
    - - - - - - - - - - - Page Flip: - - - - Enabled - - - - - - - - - - - - - - - -
    - - - -
      - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - + + + + + - + - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - + + + + + + + + +
    + +
    +
    + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - - - - - + + + + - - - - - - -
    - -
    -
    Alexa, read my book
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - -
    -
    -
    - Books In This Series (2 Books) -
    -
    - -
    -
    -
    - - - - - - - -
    - Complete Series - - - - - - - - - - - - - - -
    - -
    - -
    -
    - - - - A. Shaw (2 Book Series) - - - - - -
    - Kindle Edition -
    - -
    - $19.98 -
    - -
    - -
    - - - - - - - - - - - - - -
    -
    -

    Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.

    -

    -
    -
      -
    • -
      -
      - -
      - Apple - -
      -
    • -
    • -
      -
      - -
      - Android - -
      -
    • -
    • -
      -
      - -
      - Windows Phone - -
      -
    • -
    • -
      -
      - -
      - Android - -
      -
    • -
    -
    - -
    - -

    To get the free app, enter your mobile phone number.

    - - - -
    - - - -
    - - + + +
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
    + - - - - - - - - - - - - - - - - - - - - -
    - - - - - - + - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    - -
    -

    Editorial Reviews

    - -
    - - - -

    From Publishers Weekly

    -
    - Starred Review. If there is such a category as a guys' audio, The Whole Truth fits the bill perfectly. Ron McLarty's gruff voice enhances this fast-moving thriller as he takes the listener through barrages of deadly assaults featuring gunfire, knives, bombs and hacksaws. He portrays Shaw, the unwilling secret agent, as weary yet tough. Nicolas Creel, who needs a good war to help sagging profits, comes across as appropriately cerebral and coldhearted. While McLarty gives different accents to Anna and Katie, otherwise, both sound alike, but he performs a variety of French and Slavic villains in quick succession. The sound track is comparable to a terrific cinematic score: darkly foreboding or quietly romantic when appropriate, raising this audio to an art form and enhancing the already gripping tale. A Grand Central hardcover (Reviews, Mar. 3). (May)
    Copyright © Reed Business Information, a division of Reed Elsevier Inc. All rights reserved. + + + United States + +
    + +
    -
    + + - -

    From Booklist

    -
    - Nicolas Creel, a powerful and wealthy defense contractor, is also a megalomaniac who wants to start a world war, which would help improve the bottom line of his company. Shaw (and that’s the only name he is known by), an agent for a secret multinational intelligence agency, teams up with Katie James, a disgraced journalist, to thwart Creel’s plan. Bullets fly and bad guys die, as do a few innocent bystanders. McLarty’s reading is accomplished, and his precise tone alternates between quiet and measured and furious and fast paced. His strong characterizations make it easy to distinguish the players, and an echo tone effectively signals Shaw’s memories. However the intermittent background music, rather than heightening drama, is somewhat distracting but shouldn’t deter Baldacci fans. --Jeanette Larson -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - -
    - - - - -
    - -

    Product details

    -
    - - - - - - - -
      - - - - - - - - - - -
    • File Size: 1074 KB
    • - - - - - - - -
    • Print Length: 564 pages
    • - - - - - - - - - - - -
    • Publisher: Grand Central Publishing; 1st edition (April 22, 2008)
    • - - - - - - - - - - - - -
    • Publication Date: April 22, 2008
    • - - - - - - - - - - - - - - - - - - - -
    • - Sold by: Hachette Book Group -
    • - - - - - - -
    • Language: English
    • - - - - - - - -
    • ASIN: B0011UCPM4
    • - - - - - - - - - -
    • Text-to-Speech: - - Enabled - - -
    • - - - - - - - - - - - - - -
    • -
      - X-Ray: -
      -
      -
      - - Enabled - - + -
      -
    • - - - - - - - - + - - - - - - - - - -
    • Word Wise: Enabled
    • - - - - - - -
    • Lending: Not Enabled
    • - - - - - - - - - - - - - - - -
    • - Screen Reader: - - Supported - - -
    • - - - - - - - - - - - - - -
    • - Enhanced Typesetting: - - Enabled - - -
    • - - - - - - - - - - - - - - - - - - - - - -
    • -Amazon Best Sellers Rank: - - - - - - - - - - - - - - - - - - - - - - -#10,214 Paid in Kindle Store (See Top 100 Paid in Kindle Store) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    • - - - - - - - - - - - - - - - - - - - - - -

      + + + + + + + -Would you like to tell us about a lower price?

      - - - - - -
    - - -
      - - - - - - - - - -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - + + + + + + + + + + + + - - + csa.plugin(function(c){var m="transitionStart",n="pageVisible",e="PageTiming",t="visibilitychange",s="$latency.visible",i=c.global,r=(i.performance||{}).timing,a=["navigationStart","unloadEventStart","unloadEventEnd","redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseStart","responseEnd","domLoading","domInteractive","domContentLoadedEventStart","domContentLoadedEventEnd","domComplete","loadEventStart","loadEventEnd"],u=c.config,o=i.Math,l=o.max,g=o.floor,d=i.document||{},f=(r||{}).navigationStart,v=f,p=0,S=null;if(i.Object.keys&&[].forEach&&!u["KillSwitch."+e]){if(!r||null===f||f<=0||void 0===f)return c.error("Invalid navigation timing data: "+f);S=new E({schemaId:".PageLatency.6",producerId:"csa"}),"boolean"!=typeof d.hidden&&"string"!=typeof d.visibilityState||!d.removeEventListener?c.emit(s):b()?(c.emit(s),I(n,f)):c.on(d,t,function e(){b()&&(v=c.time(),d.removeEventListener(t,e),I(m,v),I(n,v),c.emit(s))}),c.once("$unload",h),c.once("$load",h),c.on("$pageTransition",function(){v=c.time()}),c.register(e,{mark:I,instance:function(e){return new E(e)}})}function E(e){var i,r=null,a=e.ent||{page:["pageType","subPageType","requestId"]},o=e.logger||c("Events",{producerId:e.producerId,lob:u.lob||"0"});if(!e||!e.producerId||!e.schemaId)return c.error("The producer id and schema Id must be defined for PageLatencyInstance.");function d(){return i||v}function n(){r=c.UUID()}this.mark=function(n,t){if(null!=n)return t=t||c.time(),n===m&&(i=t),c.once(s,function(){o("log",{messageId:r,__merge:function(e){e.markers[n]=function(e,n){return l(0,n-(e||v))}(d(),t),e.markerTimestamps[n]=g(t)},markers:{},markerTimestamps:{},navigationStartTimestamp:d()?new Date(d()).toISOString():null,schemaId:e.schemaId},{ent:a})}),t},n(),c.on("$beforePageTransition",n)}function I(e,n){e===m&&(v=n);var t=S.mark(e,n);c.emit("$timing:"+e,t)}function h(){if(!p){for(var e=0;eI)break}else f=f.n}ee=0,f&&(ee||(!0===M.hidden?(oe=1,he()):u.timeout(he,0)))}function me(e,n,t,i,r){ue=C(e),q=n,Q=t,U=i,G=r;var o=M.createTreeWalker(M.body,NodeFilter.SHOW_TEXT,null,null),a={w:B.innerWidth,h:B.innerHeight,x:B.pageXOffset,y:B.pageYOffset};M.body[w]=e,z.push({w:o,vp:a}),A.push({img:M.images,iter:0}),q.h=pe,(q.n=Q).h=ve,(Q.n=U).h=ye,(U.n=z).h=Ee,(z.n=A).h=Se,(A.n=G).h=be,f=q,he()}function pe(e){e.m.forEach(function(e){for(var n=e;n&&(e===n||!n[r]||!n[o]);)n[r]||(n[r]=e[r]),n[o]||(n[o]=e[o]),n[w]=n[r]-P,n=n[s]})}function ve(e){e.m.forEach(function(e){var n=e[t];_ in n||(n[_]=e.oldValue)})}function ye(n){n.m.forEach(function(e){e[t][w]=n.t-P})}function Ee(e){for(var n,t=e.vp,i=e.w,r=T;(n=i.nextNode())&&0.Metric.4",metrics:{},dimensions:s,__merge:function(e){e.metrics[r]=n}},e)},this.recordCounter=function(r,e){var n=i.logOptions||{ent:{page:["pageType","subPageType","requestId"]}};if("string"!=typeof r||"number"!=typeof e||!isFinite(e))return d.error("Invalid type given for counter name or counter value: "+r+"/"+e);a(),r in u||(u[r]={});var c=u[r];"f"in c||(c.f=e),c.c=(c.c||0)+1,c.s=(c.s||0)+e,c.l=e,o("log",{messageId:t,schemaId:i.schemaId||".InternalCounters.3",c:{},__merge:function(e){r in e.c||(e.c[r]={}),c.fs||(c.fs=1,e.c[r].f=c.f),1.Timer.1",markers:{},__merge:function(r){r.markers[e]=n}},i.logOptions)}}r&&(e(),t.on("$beforePageTransition",e),t.register("Timers",{instance:function(r){return new i(r||{})}}))});csa.plugin(function(t){var e="takeRecords",i="disconnect",n="function",o=t("Metrics",{producerId:"csa"}),c=t("PageTiming"),a=t.global,u=t.timeout,r=t.on,f=a.PerformanceObserver,m=0,l=!1,s=0,d=a.performance,h=a.document,v=null,y=!1,g=t.blank;function p(){l||(l=!0,clearTimeout(v),typeof f[e]===n&&f[e](),typeof f[i]===n&&f[i](),o("recordMetric","documentCumulativeLayoutShift",m),c("mark","cumulativeLayoutShiftLastTimestamp",Math.floor(s+d.timing.navigationStart)))}f&&d&&d.timing&&h&&(f=new f(function(t){v&&clearTimeout(v);t.getEntries().forEach(function(t){t.hadRecentInput||(m+=t.value,s.CacheImpression.2"},{ent:"all"}),i&&i(n,t,c)}}(),n(r+a,d.now()+36e5),o.once("$load",function(){var c=d.now();t(function(e,n){return 0==e.indexOf(r)&&parseInt(n)p)break}i=0,_.length&&B()}function B(){i=i||u.raf(q)}function X(t,e,n){return{n:t,e:e,t:n}}function Y(t,e,n,i){var o=u.UUID(),r={id:o},c=M(e);return e[s][b]=o,n(r,e),c&&c.id&&(r.parentId=c.id),H(t,e,r,i)}function $(t){return isNaN(t)?null:Math.round(t)}function H(t,e,n,i){N&&(n.schemaId=".ContentEntity.2"),n.id=n.id||u.UUID();var o=new j(t,n,e,i);return function(t){return!S&&((t.op||{}).hasOwnProperty(E)||y)}(o)&&function(t,e){var n={},i=u.exec($);t.el&&(n=t.el.getBoundingClientRect()),t.log({schemaId:".ContentRender.3",timestamp:e,width:i(n.width),height:i(n.height),positionX:i(n.left+k.pageXOffset),positionY:i(n.top+k.pageYOffset)})}(o,i),u.emit("$content.register",o),R[n.id]=o}function K(t){return R[(t[s]||{})[b]]}function W(n,i){var o={};return r in(n=n||{})&&Object.keys(n[s]).forEach(function(t){if(!t.indexOf(i)&&i.length.ContentView.4",timeToViewed:t.vt-t.el.rt,pageFirstPaintToElementViewed:t.vt-g})}(t))}function I(t){t&&!t.it&&(t.i=o.time()-t.is>m,function(t){t.it=o.time(),t.el.log({schemaId:".ContentImpressed.3",timeToImpressed:t.it-t.el.rt,pageFirstPaintToElementImpressed:t.it-g})}(t))}!u&&l[n]&&(i=new l[n](function(t){var n=o.time();t.forEach(function(t){var e=function(t){if(t&&t[r])return d[t[s][a]]}(t.target);if(e){o.emit("$content.intersection",{meta:e.el,t:n,e:t});var i=t.intersectionRect;t.isIntersecting&&0.ContentLatency.4",logOptions:o.dlo})),o.t("mark",t,n)}})});csa.plugin(function(t){function n(i,e,o){var c={};function r(t,n,e){t in c&&o<=n-c[t].s&&(function(n,e,i){if(!p)return;E(function(t){T(n,t),t.w[n][e]=a((t.w[n][e]||0)+i)})}(t,i,n-c[t].d),c[t].d=n),e||delete c[t]}this.update=function(t,n){n.isIntersecting&&e<=n.intersectionRatio?function(t,n){t in c||(c[t]={s:n,d:n})}(t,u()):r(t,u())},this.stopAll=function(t){var n=u();for(var e in c)r(e,n,t)},this.reset=function(){var t=u();for(var n in c)c[n].s=t,c[n].d=t}}var e=t.config,u=t.time,i="ContentInteractionsSummary",o=e[i+".FlushInterval"]||5e3,c=e[i+".FlushBackoff"]||1.5,r=t.global,s=t.on,a=Math.floor,f=(r.document||{}).documentElement||{},l=((r.performance||{}).timing||{}).responseStart||t.time(),d=o,m=0,p=!0,v=t.UUID(),g=t("Events",{producerId:"csa",lob:e.lob||"0"}),w=new n("it0",0,0),I=new n("it50",.5,1e3),h=new n("it100",.99,0),b={},A={};function $(){w.stopAll(!0),I.stopAll(!0),h.stopAll(!0),S()}function C(){w.reset(),I.reset(),h.reset(),S()}function S(){d&&(clearTimeout(m),m=t.timeout($,d),d*=c)}function U(n){E(function(t){T(n,t),t.w[n].mc=(t.w[n].mc||0)+1})}function E(t){g("log",{messageId:v,schemaId:".ContentInteractionsSummary.2",w:{},__merge:t},{ent:{page:["requestId"]}})}function T(t,n){t in n.w||(n.w[t]={})}e["KillSwitch."+i]||(s("$content.intersection",function(t){if(t&&t.meta&&t.e){var n=t.meta.id;if(n in b){var e=t.e.boundingClientRect||{};e.width<5||e.height<5||(w.update(n,t.e),I.update(n,t.e),h.update(n,t.e),!t.e.isIntersecting||n in A||(A[n]=1,function(n,e){E(function(t){T(n,t),t.w[n].ttfv=a(e)})}(n,u()-l)))}}}),s("$content.register",function(t){(t.e||{}).slotId&&(b[t.id]={},function(e){E(function(t){var n=e.id;T(n,t),t.w[n].sid=(e.e||{}).slotId,t.w[n].cid=(e.e||{}).contentId})}(t))}),s("$beforePageTransition",function(){$(),C(),v=t.UUID(),S()}),s("$beforeunload",function(){w.stopAll(),I.stopAll(),h.stopAll(),d=null}),s("$visible",function(t){t?C():($(),clearTimeout(m)),p=t},{buffered:1}),s(f,"click",function(t){for(var n=t.target,e=25;n&&0.TabbedBrowsing.3",m="visible",y=o.global,I=o("Events",{producerId:"csa",lob:o.config.lob||"0"}),h=y.location||{},T=y.document,w=y.JSON,z=((y.performance||{}).navigation||{}).type,P=o.store,S=o.on,k=o.storageSupport(),x=!1,A={},C={},O={},$={},j=!1,q=!1,B=!1;function E(i){try{return w.parse(P(p,void 0,{session:i})||"{}")||{}}catch(i){o.error('Could not parse storage value for key "'+p+'": '+i)}return{}}function J(i,t){P(p,w.stringify(t||{}),{session:i})}function N(i){var t=C.tid||i.id,n=A[u]||{};n.tid===t&&(n.pid=i.id),$={pid:i.id,tid:t,lastInteraction:C[l]||{},initialized:!0},O={lastActive:n,lastInteraction:A[l]||{},time:o.time()}}function D(i){var t=i===d,n=T.referrer,e=!(n&&n.length)||!~n.indexOf(h.origin||""),a=t&&e,r={type:i,toTabId:$.tid,toPageId:$.pid,transitTime:o.time()-A.time||null};a||function(i,t,n){var e=i===s,a=t?A[u]||{}:C,r=A[l]||{},o=C[l]||{},d=t?r:o;n.fromTabId=a.tid,n.fromPageId=a.pid,e||!d.id||d[f]||(n.interactionId=d.id||null,r.id===d.id&&(r[f]=!0),o.id===d.id&&(o[f]=!0))}(i,t,r),I("log",{navigation:r,schemaId:b},{ent:{page:["pageType","subPageType","requestId"]}})}function F(i){B=function(i){return i&&i in v}(i.transitionType),function(){A=E(!1),C=E(!0);var i=A[l],t=C[l],n=!1,e=!1;i&&t&&i.id===t.id&&i[f]!==t[f]&&(n=!i[f],e=!t[f],t[f]=i[f]=!0,n&&J(!1,A),e&&J(!0,C))}(),N(i),j=!0,function(i){var t,n;t=H(),n=K(),(t||n)&&N(i)}(i)}function G(){x&&!B?D(a):(x=!0,D(z===c||B?e:z===r?C.initialized?s:d:C.initialized?i:d))}function H(){return!(!j||!t)&&(C[l]={id:t.messageId,used:!(A[l]={id:t.messageId,used:!1})},!(t=null))}function K(){var i=!1;if(q=T[g]===m,j){var t=A[u]||{};i=function(i,t,n){var e=!1,a=i[u];return q?a&&a.tid===$.tid&&a[m]&&a.pid===n||(i[u]={visible:!0,pid:n,tid:t},e=!0):a&&a.tid===$.tid&&a[m]&&(e=!(a[m]=!1)),e}(A,C.tid||t.tid||$.tid,C.pid||t.pid||$.pid)}return i}k.local&&k.session&&w&&T&&g in T&&(n=function(){try{return y.self!==y.top}catch(i){return!0}}(),S("$pageChange",function(i){n||(F(i),G(),J(!1,O),J(!0,$),C=$,A=O)},{buffered:1}),S("$content.interaction",function(i){t=i,H()&&(J(!1,A),J(!0,C))}),S(T,"visibilitychange",function(){!n&&K()&&J(!1,A)},{capture:!1,passive:!0}))});csa.plugin(function(c){var e=c("Metrics",{producerId:"csa"});c.on(c.global,"pageshow",function(c){c&&c.persisted&&e("recordMetric","bfCache",1)})});csa.plugin(function(n){var e,t,i,o,r,a,c,u,f,s,l,d,m,p,g,v,h="hasFocus",b="$app.",y="avail",S="client",T="document",$="inner",I="offset",P="screen",w="scroll",D="Width",E="Height",F=y+D,O=y+E,q=S+D,x=S+E,z=$+D,C=$+E,H=I+D,K=I+E,M=w+D,W=w+E,X=n.config,Y=X["KillSwitch.PageInteractionsSummary"],j=n("Events",{producerId:"csa",lob:X.lob||"0"}),k=1,A=n.global||{},B=n.time,G=n.on,J=n.once,L=A[T]||{},N=A[P]||{},Q=A.Math||{},R=Q.abs,U=Q.max,V=Q.ceil,Z=((A.performance||{}).timing||{}).responseStart,_=function(){return L[h]()},nn=1,en=100,tn={},on=1;function rn(){c=t=o=r=e,i=0,a=u=f=s=0,un(),cn()}function an(){Z&&!o&&(c=V((o=l)-Z),on=1)}function cn(){u=V(U(u,m+v)),d&&(f=V(U(f,d+g))),on=1}function un(){l=B(),d=R(A.pageXOffset||0),m=R(A.pageYOffset||0),p=0.PageInteractionsSummary.2"},{ent:{page:["pageType","subPageType","requestId"]}})}}function pn(){sn(),mn(tn)}function gn(n,e){return function(){nn=e,n()}}function vn(){_=function(){return nn},nn&&!r&&(r=B())}"function"!=typeof L[h]||Y||(rn(),p&&an(),G(A,w,fn,{passive:!0}),G(A,"blur",pn),G(A,"focus",gn(ln,1)),J(b+"android",vn),J(b+"ios",vn),G(b+"pause",gn(pn,0)),G(b+"resume",gn(ln,1)),G(b+"resign",gn(pn,0)),G(b+"active",gn(ln,1)),_()&&(r=Z||B()),J("$beforeunload",mn),G("$beforeunload",mn),G("$document.hidden",pn),G("$beforePageTransition",mn),G("$afterPageTransition",function(){on=k=1}))});csa.plugin(function(e){var o,n,r=".Navigator.5",a=e.global,i=a.navigator||{},d=i.connection||{},c=a.Math.round,t=e("Events",{producerId:"csa",lob:e.config.lob||"0"});function l(){o={network:{downlink:void 0,downlinkMax:void 0,rtt:void 0,type:void 0,effectiveType:void 0,saveData:void 0},language:void 0,doNotTrack:void 0,hardwareConcurrency:void 0,deviceMemory:void 0,cookieEnabled:void 0,webdriver:void 0},v(),o.language=i.language||null,o.doNotTrack=function(){switch(i.doNotTrack){case"1":return"enabled";case"0":return"disabled";case"unspecified":return i.doNotTrack;default:return null}}(),o.hardwareConcurrency="hardwareConcurrency"in i?c(i.hardwareConcurrency||0):null,o.deviceMemory="deviceMemory"in i?c(i.deviceMemory||0):null,o.cookieEnabled="cookieEnabled"in i?i.cookieEnabled:null,o.webdriver="webdriver"in i?i.webdriver:null}function u(){t("log",{network:(n={},Object.keys(o.network).forEach(function(e){n[e]=o.network[e]+""}),n),language:o.language,doNotTrack:o.doNotTrack,hardwareConcurrency:o.hardwareConcurrency,deviceMemory:o.deviceMemory,cookieEnabled:o.cookieEnabled,webdriver:o.webdriver,schemaId:r},{ent:{page:["pageType","subPageType","requestId"]}})}function v(){!function(n){Object.keys(o.network).forEach(function(e){o.network[e]=n[e]})}({downlink:"downlink"in d?c(d.downlink||0):null,downlinkMax:"downlinkMax"in d?c(d.downlinkMax||0):null,rtt:"rtt"in d?(d.rtt||0).toFixed():null,type:d.type||null,effectiveType:d.effectiveType||null,saveData:"saveData"in d?d.saveData:null})}function k(){v(),u()}function w(){l(),u()}l(),u(),e.on("$afterPageTransition",w),e.on(d,"change",k)}); + (function(u,w,K){var m=function(a,c,b,f){a.addEventListener?a.addEventListener(c,b,f):a.attachEvent&&a.attachEvent("on"+c,b)},p=function(a,c,b,f){document.removeEventListener?a.removeEventListener(c,b,f||!1):document.detachEvent&&a.detachEvent("on"+c,b)},y=function(a){var c;a=a.document;"undefined"!==typeof a.hidden?c="visibilitychange":"undefined"!==typeof a.mozHidden?c="mozvisibilitychange":"undefined"!==typeof a.msHidden?c="msvisibilitychange":"undefined"!==typeof a.webkitHidden&&(c="webkitvisibilitychange"); + return c},D=function(a,c){var b=y(a),f=a.document;b&&m(f,b,c,!1)},x=function(a){try{for(var c=Array.prototype.slice.call(arguments,1),b=0;bh-b)){d.push({x:a.clientX, + y:a.clientY});if(50d.length))){var l=d[0].x,g=d[49].x,e=d[0].y,q=d[49].y;a=q-e;for(var k=l-g,l=e*g-l*q,g=a/k*-1,r=d[49].ts-d[0].ts,e=!0,q=0;qd&&0g&&c(50,0,{xDiff:d,yDiff:g});p(a,"click",C)}catch(r){n(r,"JS exception - checkFirstClick")}}; + m(a,"mousemove",r,!1);m(a,"mouseup",v,!1);m(a,"mousedown",B,!1);m(a,"click",C,!1);m(a,"click",g,!1)},F=function(){if("undefined"!==typeof InstallTrigger){var a=0;void 0!==window.onstorage&&a++;var b=document.createElement("div");b.style.wordSpacing="22%";"22%"===b.style.wordSpacing&&a++;"function"===typeof b.getAttributeNames&&a++;2=a.encodedBodySize&&(b=e.exec(String(a.name)))&&3===b.length){a:{b=a.serverTiming||[];for(a=0;ah&&(m=b,h=a))}g(m,"_cdn_mp")}d.ue&&"function"===typeof d.ue.tag&&c.performance&&c.location&&n()},"cdnTagging")(ue_csm,window); + + + } + !function(n){var A;n.RXVM=function(r){var o=n([1,function(n){n.u.t[m(n)]=h(n)},2,function(n){n.o[0].t[m(n)]=h(n)},3,function(n){n.i=h(n)},4,function(n){var r=h(n),t=h(n),n=h(n);b(n)||(n[t]=r)},10,function(n){n.u.v.push(h(n))},12,function(n){for(var r=F(n);0>"),s(27,"&&"),s(28,"||"),s(30,">"),s(32,">="),s(31,"<"),s(33,"<="),s(34,"=="),s(35,"==="),s(36,"!="),s(37,"!=="),s(38," in "),n([10,A,11,null,14,!0,15,!1])),u=n([1,function(n){return n.i},17,F,18,function(n){n=m(n)|m(n)<<8|m(n)<<16|m(n)<<24;return n=2147483647>t-6],i&=255>>8-(t-=6);return 0>t-8),i&=255>>8-(t-=8);return new Uint8Array(o)}function p(){v||(setTimeout(h(A),c),v=1)}function A(){v=0,rx.ep&&0 + +
    + + + + + + + + + \ No newline at end of file diff --git a/packages/metascraper-amazon/test/fixtures/amazon-es/product-url.html b/packages/metascraper-amazon/test/fixtures/amazon-es/product-url.html index ec4a72eb9..6d9380cdb 100644 --- a/packages/metascraper-amazon/test/fixtures/amazon-es/product-url.html +++ b/packages/metascraper-amazon/test/fixtures/amazon-es/product-url.html @@ -1,43191 +1,9899 @@ - + + + + + + - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - Cecotec Conga Excellence 990, Robot Aspirador 4 en 1. iTech 3.0. Programable 24h. 5 Modos de Limpieza: Amazon.es: Hogar - - - - - +var ue_csm = window, +ue_hob = +new Date(); +(function(d){var e=d.ue=d.ue||{},f=Date.now||function(){return+new Date};e.d=function(b){return f()-(b?0:d.ue_t0)};e.stub=function(b,a){if(!b[a]){var c=[];b[a]=function(){c.push([c.slice.call(arguments),e.d(),d.ue_id])};b[a].replay=function(b){for(var a;a=c.shift();)b(a[0],a[1],a[2])};b[a].isStub=1}};e.exec=function(b,a){return function(){try{return b.apply(this,arguments)}catch(c){ueLogError(c,{attribution:a||"undefined",logLevel:"WARN"})}}}})(ue_csm); - - - +var ue_err_chan = 'jserr-rw'; +(function(d,e){function h(f,b){if(!(a.ec>a.mxe)&&f){a.ter.push(f);b=b||{};var c=f.logLevel||b.logLevel;c&&c!==k&&c!==m&&c!==n&&c!==p||a.ec++;c&&c!=k||a.ecf++;b.pageURL=""+(e.location?e.location.href:"");b.logLevel=c;b.attribution=f.attribution||b.attribution;a.erl.push({ex:f,info:b})}}function l(a,b,c,e,g){d.ueLogError({m:a,f:b,l:c,c:""+e,err:g,fromOnError:1,args:arguments},g?{attribution:g.attribution,logLevel:g.logLevel}:void 0);return!1}var k="FATAL",m="ERROR",n="WARN",p="DOWNGRADED",a={ec:0,ecf:0, +pec:0,ts:0,erl:[],ter:[],buffer:[],mxe:50,startTimer:function(){a.ts++;setInterval(function(){d.ue&&a.pec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + - -
    - - +
    + - - - - + - +window.rx = { 'rid':'KD59PH5DWR8J8YM1ZWAC', 'sid':'262-1956829-2195739', 'c':{ 'rxp':'/rd/uedata' }}; + + + + + - + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - Mas informaciòn - - - Tienda de bebe - - - - - - Cloud Drive Photos - - - Tienda de Electrónica - - - Tienda de Electrónica - - - Descúbrelo - - - Desúbrelo - - - - - - - - - Descúbrelo - - - Haz clic aquí - - - - - - Descúbrelo - - - Deportes - - - Tienda de videojuegos - - + + + + + + + + + - - - - -
    - -
    -
    -
    - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - -
    - - - -
    -
    -
    -
    -
    - - - -
    -
    - - ¿Le parece útil esta función? - - - -
    -
    - - Gracias por tu opinión. - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - Cargando recomendaciones para este artículo... - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -

    - Añadido a la cesta -

    -
    -
    - -

    - No añadido -

    -
    -
    - -

    - El producto está en la cesta -

    -
    -
    -
    -
    -
    -
    -
    - - - -
    -
    -
    - -
    -
    -
    - - - Ver cesta - -
    - -
    -
    -
    -
    -
    -
    - -

    - No añadido -

    -
    - - Ha surgido un problema al añadir este artículo a la cesta. Inténtalo de nuevo más tarde. - -
    -
    -
    -
    - - Lo sentimos, estamos teniendo algunos problemas para mostrarte recomendaciones en este momento. Inténtalo de nuevo más tarde. - -
    - - Seguir comprando - -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - En estos momentos, no hay vendedores que realicen envíos a Estados Unidos. Más información -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - Sólo queda(n) 3 en stock. - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - 225,00 € - -
    -
    - -
    -
    -
    - - - -
    -
    - -
    -
    -
    -
    -
    - -
    - - - - - - - - - -
    -
    -
    -
    -
    -
    - Vendido y enviado por NFBRICOLAJE. - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    Está disponible el envío GRATIS para este producto. Ver detalles.
    -
    -
    -
    -
    -
    - - De 2ª mano: Bueno - - - | Detalles - -
    -
    - Vendido por - Productos Reacondicionados -
    - -
    -
    -
    - - Estado: - De 2ª mano: Bueno - -
    -
    - - Comentario: El artículo está en su embalaje original, pero el embalaje presenta daños. Falta el material extra. Falta el manual. Los accesorios pueden mostrar daños estéticos. Imperfección de mediana importancia en la parte frontal del artículo (menos de 2'5 x 2'5 cm). Imperfección de mediana importancia en la parte superior del artículo (menos de 4 x 4 cm). Imperfección de mediana importancia en los laterales del artículo (menos de 2,5 x 2,5 cm). Imperfección de mediana importancia en la parte posterior del artículo (menos de 2,5 x 2,5 cm). - -
    -
    - - -
    -
    -
    - -
    -
    - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    - - - - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    -

    - - -
    -
    -
    -
    -
    -
    -
    -
    -

    -

    - - -
    -
    -
    -
    - - - - - -
    - - -
    + } + } + + + + + + + + + + + + + + + + + + +
    -
    -
    -
    -
    - -
    -
    -
    - Compara precios en Amazon -
    -
    -
    - - -
    -
    - Nuevos y de 2ª mano: 237 desde 151,88 € -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    - - - - -
    - -
    -
    -
    -
    -
    -

    - - Cecotec Conga Excellence 990, Robot Aspirador 4 en 1. iTech 3.0. Programable 24h. 5 Modos de Limpieza - -

    -
    -
    -
    -
    -
    -
    -
    - de - Cecotec -
    -
    -
    -
    -
    - -
    - - - - -4.0 de un máximo de 5 estrellas - - - - - - - - - 3,044 opiniones de clientes - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Cecotec Robot Limpiacristales Windroid 880 SprayWater Smart Connected. 90 W, Pulveriza, Limpia y Seca, Control por App y Mando a Distancia, 4 Programas, Cable 5,5m, Incluye 12 Paños : Amazon.es: Hogar y cocina + + + + + + + + + + + + + + + + + + + + + - -
    -
    -
    - | - - - - 879 preguntas respondidas - + } + + if (P && P.setPriority && typeof P.setPriority === 'function' ) { + prioritizeCriticalModules = false; + P.setPriority(priorityModuleList); + } + } + } + if(typeof P != 'undefined'){ + P.register(b.p); + if(a == 'af') { + if(typeof uet === 'function') { + uet('bb', 'TwisterAUIWait', {wb: 1}); + } + } + }; +} +} + +if(typeof P != 'undefined') { +P.when('A').execute(function(A) { + if(typeof uet === 'function') { + uet('af', 'TwisterAUIWait', {wb: 1}); + } +}); +} + +var addlongPoleTag = function(marker,customtag){ +marker=marker.toLowerCase(); +var b=CSMReqs[marker]; +if(b.c == 0){ + if(window.ue && typeof ue.tag === 'function') { + ue.tag(customtag); + } +} +}; + + +var gbEnableTwisterJS = 0; +var isTwisterPage = 0; + + + + + + + + + + + + + + +
    + + + + + + + + + + +
    +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + Patrocinado +
    + + + + + + + + +
    +
    + + +
    +
    + + + + + + +
    + + + + + + +
    +
    + + +
    +
    + + + + + + + + + + + + +
    + + + +
    + + +
    +
    + + + + + + + + + + + + +
    + -
    - -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    Precio recomendado: - 239,00 € - - - -
    Precio: - 225,00 € - - - -
    Ahorras:14,00 € (6%)
    - - -
    - Precio final del producto -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - Nuevos: 1 desde 225,00 € - De 2ª mano: 236 desde 151,88 € -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - Barre, aspira, pasa la mopa y friega el suelo; navegation iTech Evo, navegación inteligente milímetro a milímetro gracias a sus sensores de proximidad, distancia y anticaída -
    • -
    • - Programmable memory: programable 24 horas al día 7 días a la semana controlado por un mando a distancia con pantalla LCD, sencillo e intuitivo; 5 modos de limpieza: Auto, Bordes, Habitación, espiral y vuelta a casa, modo Silencioso -
    • -
    • - AutoBack Home: vuelta automática a la base al finalizar la limpieza; AnimalCare, respetuoso con las mascotas, pero no con sus pelos: modo de succión sin enredos, se adapta a tu hogar, limpia bajo los muebles y no se cae por las escaleras -
    • -
    • - Intelligent Battery Pro: consigue un tiempo de autonomía de 90 minutos, apto para todo tipo de suelos y alfombras finas; TurboBoost: sistema avanzado con una turbina potente que maximiza la succión -
    • -
    • - Purifica el aire: filtro HEPA capaz de retener el 99,9 % de alérgenos, depósito de gran capacidad 300 ml con innovador sistema de vaciado fácil; llega a todos los rincones, incluye 4 cepillos laterales -
    • -
    - - - - Ver más detalles -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - -
    - - - - - - -
    Only on Amazon: One product for every need Only on Amazon: New Releases

    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    + +
  • + › +
  • +
  • + + Aspiración, limpieza y cuidado de suelo y ventanas + +
  • +
  • + › +
  • +
  • + + Aspiradoras + +
  • +
  • + › +
  • +
  • + + Robots aspiradores + +
  • + +
    +
    + + + + + + + + + + + + + + + +
    + + +
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - -
    -
    - -
    -
    -

    Comprados juntos habitualmente

    -
    -
    -
    - -
    -
      -
    • Cecotec Conga Excellence 990, Robot Aspirador 4 en 1. iTech 3.0. Programable 24h. 5 Modos de Limpieza
    • -
    • +
    • -
    • Amoy Recambio de Paños lavables Compatible Conga Excellence y ILIFE V3 V3s V5 V5s V5s pro accesorios de consumibles de robotic aspiradora,paquete de 3
    • -
    • +
    • -
    • Kit de accesorios de limpieza para robots aspiradores Conga Excellence: 4 cepillos laterales, 1 cepillo central, 1 filtro EPA, 1 filtro malla, 1 cepillo de limpieza
    • -
    -
    -
    Precio total: EUR 254,98
    -
    -
    - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    -
    - -
    -
    - -
    -
    - Comprar los productos seleccionados conjuntamente - -
    -
    - -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + - -
    - - - -
    - - -
    + - -
    - -
    - - - -
    -
    -
    -
    -

    - ¿Tienes alguna pregunta? -

    -

    - Encuentra respuestas en la información del producto, en preguntas y respuestas y en reseñas. -

    -
    - - - - - - - - - - - - - - - - - - -
    - - - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -

    - Asegúrate de haber introducido una pregunta válida. Podrás editar tu pregunta o publicación. -

    -
    -
    - - ¿No ve lo que está buscando? - - - - -
    -
    - Ha surgido un problema al completar tu solicitud. Vuelve a efectuar la búsqueda más tarde. -
    -
    - - - - Todo - - - - - - - Información sobre el producto - - - - - - - Preguntas y respuestas de clientes - - - - - - - Comentarios de clientes - - - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - -

    Información de producto

    -
    -
    -
    -
    - Detalles técnicos -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MarcaCecotec
    Número de modelo05042
    ColorGris
    Peso del producto4,6 Kg
    Dimensiones del paquete57,2 x 37,8 x 12 cm
    Potencia1200 vatios
    Apagado automáticoNo
    Radio de acción12 metros
    Eficiencia energéticaA
    Ruido64 dB -
    Características especialesRobot aspirador profesional 4 en 1: barre, aspira, pasa la mopa y friega el suelo.
    -
    -
    -
    -
    -
    -
    -
    -
    - Información adicional -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - -
    ASINB01MUGXRT9
    Valoración media de los clientes - - - - 4.0 de un máximo de 5 estrellas - - - - - - - 3.044 opiniones de clientes - - -
    Producto en Amazon.es desde15 de noviembre de 2018
    -
    -
    -
    -
    -
    -
    - Ayúdanos a mejorar -
    -
    - - ¿Quieres informarnos sobre un precio más bajo? -
    + } + + setTimeout(verifyAssetsLoaded, 50000) +}); +
    +
    + +
    Entrega en Murcia 30001 - Actualizar ubicación
    +
    +
    +
    Añadido a

    Ha surgido un problema.

    Se ha producido un error al recuperar las listas de deseos. Inténtalo de nuevo.

    Ha surgido un problema.

    La lista no está disponible.
    +
    +
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    - Descripción del producto -

    -
    - - -

    Descripción del producto

    -

    Robot aspirador Conga Excellence 990 de Cecotec. Friega el suelo, Barre, aspira y pasa la mopa. Programable 24h. 5 modos de limpieza. Base de carga. Silencioso. Potente. Filtro EPA. -

    -

    Contenido de la caja

    -

    Robot aspirador inteligente, base de carga, mando de control remoto, adaptador, cepillo central, 4 cepillos laterales, 2 filtros HEPA, 2 depósitos: húmedo y seco, 1 mopa de limpieza, cepillo de limpieza y manual de instrucciones. -

    -
    - - - - -
    -
    -
    -
    -
    -
    -

    Más información del producto

    -
    - + +
    +
    +
    +
    +
    +
    +
    -
    -
    -

    + +
    +
    + -
    - -
    - -
    +
  • + + 73 tracks + +
  • +
    - - - - - -
    - -
    -
    - - - - -
    -
    -
    -
    -

    Thanks for 5.000 likes on www.facebook.com/BeautyBrainMusic :D

    <3 <3 <3

    + +
    + +
    +
    +
    + Report
    - - - - -
    -
    +
    +
    + +
    -

    - -

    -
    -
    - - -
    -

    - - 180 comments -

    -
    -
    +
  • +
    + +
    +
    -
    +
    +
    + -
  • - -
    - -
    - - - Pause - -
    -
  • + +
    +
    -
    -
    -
    -
  • - - + +
    +
    +
    + + +
    + +
    - - -
    -
    +
    +
    - -
  • - -
    - -
    - - - Play - -
    -
  • + +
    +
    -
    -
    -
    - - - + +
    +
    +
    + + +
    + +
    - - -
    -
    + + - -
  • - - -
    -

    - - In albums -

    - View all -
    -
    +
    + +
    +

    + + In albums +

    + View all +
    +
    -
    -
    -

    - - In playlists -

    - View all -
    -
    +
    +
    +

    + + In playlists +

    + View all +
    +
  • - -
    - -
    -
    -
    -
    -
    - -
      - -
    - -
    -
    -
    -
  • - -
    - -
    -
    -
  • -
  • -
    -
    -

    - - 1,672 likes -

    - View all -
    -
    +
    +
    +

    + + 1,700 likes +

    + View all +
    +
    -
    -
    -

    - - 415 reposts -

    - View all + +
  • +
    +

    + + 410 reposts +

    + View all +
    +
    -
    -
    -

    - Go mobile -

    - Dismiss -
    -
    -
    - - - - -
    - - -
    -
    -
    -
    -
    Next up
    - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - -
    - +
    + + +
    + +
    + +
    Like "Swag Bandicoot [FREE DOWNLOAD]" ?
    Sign up to make it official. With a free SoundCloud account you can save this track and start supporting your favorite artists.
    + + + +
    + + +
    - - - - - - + + + + + - - - - - - - + OptanonWrapper.isLoaded = true; + }; - - - + OptanonWrapper.callbacks = []; + OptanonWrapper.isLoaded = false; - - - - - - -

    This track can’t be played right now. Please try again later.

    + global.OptanonWrapper = OptanonWrapper; + }(window)); + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/metascraper-soundcloud/test/snapshots/index.js.md b/packages/metascraper-soundcloud/test/snapshots/index.js.md index 4760335a0..4be8dd346 100644 --- a/packages/metascraper-soundcloud/test/snapshots/index.js.md +++ b/packages/metascraper-soundcloud/test/snapshots/index.js.md @@ -9,12 +9,12 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 { - author: 'Beauty Brain', + author: 'Beauty Brain Verified', date: '2014-01-27T16:19:55.000Z', description: 'Thanks for 5.000 likes on https://www.facebook.com/BeautyBrainMusic :D <3 <3 <3', image: 'https://i1.sndcdn.com/artworks-000069142357-nwttc6-t500x500.jpg', lang: 'en', - logo: 'https://a-v2.sndcdn.com/assets/images/sc-icons/ios-a62dfc8f.png', + logo: 'https://a-v2.sndcdn.com/assets/images/sc-icons/ios-a62dfc8fe7.png', publisher: 'SoundCloud', title: 'Swag Bandicoot [FREE DOWNLOAD]', url: 'https://soundcloud.com/beautybrainsp/beauty-brain-swag-bandicoot', diff --git a/packages/metascraper-soundcloud/test/snapshots/index.js.snap b/packages/metascraper-soundcloud/test/snapshots/index.js.snap index f055f6578..cb7cc6d11 100644 Binary files a/packages/metascraper-soundcloud/test/snapshots/index.js.snap and b/packages/metascraper-soundcloud/test/snapshots/index.js.snap differ diff --git a/packages/metascraper-spotify/test/description.js b/packages/metascraper-spotify/test/description.js index 0fd098479..e5b62eb27 100644 --- a/packages/metascraper-spotify/test/description.js +++ b/packages/metascraper-spotify/test/description.js @@ -42,7 +42,7 @@ test('artist', async t => { const metascraper = createMetascraper() const metadata = await metascraper({ url: artistUrl, html }) - t.is(metadata.description, 'Artist · 2.5M monthly listeners.') + t.is(metadata.description, 'Artist · 2M monthly listeners.') }) test('album', async t => { @@ -60,5 +60,5 @@ test('track', async t => { const metascraper = createMetascraper() const metadata = await metascraper({ url: trackUrl, html }) - t.is(metadata.description, 'Justice · Song · 2012') + t.is(metadata.description, 'Justice · Song · 2013') }) diff --git a/packages/metascraper-spotify/test/fixtures/album.html b/packages/metascraper-spotify/test/fixtures/album.html index ce2dae048..d41ddc9f2 100644 --- a/packages/metascraper-spotify/test/fixtures/album.html +++ b/packages/metascraper-spotify/test/fixtures/album.html @@ -1,8 +1,5 @@ -Spotify – Access All Arenas
    Access All Arenas

    Preview of Spotify

    Sign up to get unlimited songs and podcasts with occasional ads. No credit card needed.

    0:00
    0:00
    Access All Arenas

    Album

    Access All Arenas

    14 songs, 1 hr 19 min

    December 10, 2012

    © 2013 Ed Banger Records under exclusive license to Because Music

    ℗ 2013 Ed Banger Records under exclusive license to Because Music

    - + + .ot-floating-button__front{background-image:url('https://cdn.cookielaw.org/logos/static/ot_persistent_cookie_icon.png')} + @keyframes slide-down-custom { + 0% { + bottom: 420px !important; + } + 100% { + bottom: 0px; + } + } + @-webkit-keyframes slide-down-custom { + 0% { + bottom: 420px !important; + } + 100% { + bottom: 0px; + } + } + @-moz-keyframes slide-down-custom { + 0% { + bottom: 420px !important; + } + 100% { + bottom: 0px; + } + } +

    Preview of Spotify

    Sign up to get unlimited songs and podcasts with occasional ads. No credit card needed.

    -:--
    -:--
    Access All Arenas
    Access All Arenas
    Album

    Access All Arenas

    201214 songs, 1 hr 19 min

    Merch

    ACCESS ALL ARENAS
    Double vinyl edition 2x12" black vinyl - Gatefold sleeveCD included in clear plastic sleeve with flap CD editionSilk-screen printed white jewel box
    \ No newline at end of file diff --git a/packages/metascraper-spotify/test/fixtures/artist.html b/packages/metascraper-spotify/test/fixtures/artist.html index 6bdff049a..542986b17 100644 --- a/packages/metascraper-spotify/test/fixtures/artist.html +++ b/packages/metascraper-spotify/test/fixtures/artist.html @@ -1,8 +1,5 @@ -Spotify – Justice
    Justice

    Preview of Spotify

    Sign up to get unlimited songs and podcasts with occasional ads. No credit card needed.

    0:00
    0:00
    Verified Artist

    Justice

    2,520,001 monthly listeners

    Popular

    Artist pick

    Justice
    Justice for all ✨
    Playlist

    Popular releases

    † (Anniversary Edition)
    Album
    Escapades
    Album
    Woman
    Album
    Randy (Mixed)
    Compilation

    Featuring Justice

    This Is Justice
    This is Justice. The essential tracks, all in one playlist.
    Justice Radio
    By Spotify
    Top Hits España 2006
    Revive un año de grandes canciones. Foto: Fito y Fitipaldis
    Fiesta Indie
    ¡Los éxitos indie para levantar la fiesta!
    Indietronica Disco
    One more time... back to when indie discos had synths!
    SebastiAn
    Artist
    Mr. Oizo
    Artist
    Kavinsky
    Artist
    Justice Essentials
    The very best of Justice.
    Justice Complete Discography
    Listen to Justice's complete discography
    Gaspard Augé - Escapades
    Listen to the tracks and pre-save the upcoming album of Gaspard Augé "Escapades".
    Escape now with Gaspard Augé!
    Dive into Gaspard Augé's musical world and discover the artists that influenced his debut album "Escapades".
    Justice Influences
    Justice's music influences.
    Top Gaming Tracks
    Press play, press start.
    All Out 2000s
    The biggest songs of the 2000s.
    French Touch
    Some of the biggest french touch classics! Cover: Daft Punk
    Dance Hits 2000s
    The biggest dance floor bangers of the 2000s.
    OFF POP
    New music off the beaten track. Cover: David Bay

    About

    Create your first playlistIt's easy, we'll help you
    Let's find some podcasts to followWe'll keep you updated on new episodes

    Preview of Spotify

    Sign up to get unlimited songs and podcasts with occasional ads. No credit card needed.

    -:--
    -:--
    Justice
    Verified Artist

    Justice

    2,041,699 monthly listeners

    Popular

    Artist pick

    merch
    Justice
    Justice for all ✨

    Popular releases

    Justice
    Album
    D.A.N.C.E
    EP
    Woman
    Album
    Randy (Mixed)
    Compilation
    This Is Justice
    This is Justice. The essential tracks, all in one playlist.
    Justice Radio
    With Digitalism, SebastiAn, Boys Noize and more
    Grand Theft Auto Official Playlist
    Listen to all the iconic tracks from GTA, all in one place.
    Top Hits España 2006
    Revive un año de grandes canciones. Foto: Fito y Fitipaldis
    The Idol Official Playlist
    We all crave things that aren't good for us. Listen to music from the HBO Original series The Idol, streaming on Max.
    SebastiAn
    Artist
    MSTRKRFT
    Artist
    Mr. Oizo
    Artist
    Escape now with Gaspard Augé!
    Dive into Gaspard Augé's musical world and discover the artists that influenced his debut album "Escapades".
    Justice Influences
    Justice's music influences.
    Justice Complete Discography
    Listen to Justice's complete discography
    Gaspard Augé - Escapades
    Listen to the tracks and pre-save the upcoming album of Gaspard Augé "Escapades".
    Justice Essentials
    The very best of Justice.
    French Touch
    Some of the biggest french touch classics! Cover: Daft Punk
    Dance Hits 2000s
    The biggest dance floor bangers of the 2000s.
    New Year's Eve Party Bangers!
    Over twelve hours of bangers, all primed and ready to explode on New Year's Eve...
    All Out 2000s
    The biggest songs of the 2000s. Cover: Lady Gaga.

    About

    Merch

    +

    We and our partners process data to provide:

    Store and/or access information on a device. Personalised advertising. Personalised content. Advertising and content measurement, audience research, and services development.

    About Your Privacy

    We process your data for purposes such as delivering content or advertisements and measuring the delivery of such content or advertisements to extract insights about our website. We may share this information with our partners. Cookies set by Spotify are labelled “first party”; you may exercise your preferences in relation to first party cookies by toggling the switch for each first party cookie category below. The remaining cookies are third party cookies; you may exercise your preferences in relation to each purpose by toggling the relevant switch below or by vendor by clicking “List of IAB Vendors.” These choices will be signaled globally to other websites participating in the Transparency and Consent Framework. +
    Cookie Policy

    Manage Consent Preferences

    Strictly Necessary Cookies

    Always Active

    These cookies are necessary for the service to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the service will not then work.

    First Party Functional Cookies

    These cookies enable us to provide enhanced functionality and personalisation. If you do not allow these cookies then some or all of these services may not function properly.

    First Party Performance Cookies

    These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our services. They help us to know which pages are the most and least popular and see how visitors move around the platform. If you do not allow these cookies we will not be able to monitor the performance of our services.

    First Party Targeting Cookies

    These cookies may be used to deliver targeted advertisements and to build a profile of your interests. If you do not allow these cookies you will still experience advertising but it will be less tailored to you.

    Content Selection, Delivery, and Reporting

    These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools.

    Store and/or access information on a device 643 partners can use this purpose

    Cookies, device or similar online identifiers (e.g. login-based identifiers, randomly assigned identifiers, network based identifiers) together with other information (e.g. browser type and information, language, screen size, supported technologies etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here.

    • Store and access information on a device
      label

      Cookies, device or similar online identifiers together with other information (e.g. browser type and information, language, screen size, supported technologies, etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here.

    Personalised advertising 613 partners can use this purpose

    • Use profiles to select personalised advertising 475 partners can use this purpose

      Advertising presented to you on this service can be based on your advertising profiles, which can reflect your activity on this service or other websites or apps (like the forms you submit, content you look at), possible interests and personal aspects.

    • Create profiles for personalised advertising 480 partners can use this purpose

      Information about your activity on this service (such as forms you submit, content you look at) can be stored and combined with other information about you (for example, information from your previous activity on this service and other websites or apps) or similar users. This is then used to build or improve a profile about you (that might include possible interests and personal aspects). Your profile can be used (also later) to present advertising that appears more relevant based on your possible interests by this and other entities.

    • Use limited data to select advertising 535 partners can use this purpose

      Advertising presented to you on this service can be based on limited data, such as the website or app you are using, your non-precise location, your device type or which content you are (or have been) interacting with (for example, to limit the number of times an ad is presented to you).

    Personalised content 224 partners can use this purpose

    • Create profiles to personalise content 218 partners can use this purpose

      Information about your activity on this service (for instance, forms you submit, non-advertising content you look at) can be stored and combined with other information about you (such as your previous activity on this service or other websites or apps) or similar users. This is then used to build or improve a profile about you (which might for example include possible interests and personal aspects). Your profile can be used (also later) to present content that appears more relevant based on your possible interests, such as by adapting the order in which content is shown to you, so that it is even easier for you to find content that matches your interests.

    • Use profiles to select personalised content 192 partners can use this purpose

      Content presented to you on this service can be based on your content personalisation profiles, which can reflect your activity on this or other services (for instance, the forms you submit, content you look at), possible interests and personal aspects, such as by adapting the order in which content is shown to you, so that it is even easier for you to find (non-advertising) content that matches your interests.

    Advertising and content measurement, audience research, and services development 659 partners can use this purpose

    • Understand audiences through statistics or combinations of data from different sources 392 partners can use this purpose

      Reports can be generated based on the combination of data sets (like user profiles, statistics, market research, analytics data) regarding your interactions and those of other users with advertising or (non-advertising) content to identify common characteristics (for instance, to determine which target audiences are more receptive to an ad campaign or to certain contents).

    • Develop and improve services 448 partners can use this purpose

      Information about your activity on this service, such as your interaction with ads or content, can be very helpful to improve products and services and to build new products and services based on user interactions, the type of audience, etc. This specific purpose does not include the development or improvement of user profiles and identifiers.

    • Measure content performance 302 partners can use this purpose

      Information regarding which content is presented to you and how you interact with it can be used to determine whether the (non-advertising) content e.g. reached its intended audience and matched your interests. For instance, whether you read an article, watch a video, listen to a podcast or look at a product description, how long you spent on this service and the web pages you visit etc. This is very helpful to understand the relevance of (non-advertising) content that is shown to you.

    • Measure advertising performance 596 partners can use this purpose

      Information regarding which advertising is presented to you and how you interact with it can be used to determine how well an advert has worked for you or other users and whether the goals of the advertising were reached. For instance, whether you saw an ad, whether you clicked on it, whether it led you to buy a product or visit a website, etc. This is very helpful to understand the relevance of advertising campaigns.

    Ensure security, prevent and detect fraud, and fix errors 488 partners can use this purpose

    Always Active

    Your data can be used to monitor for and prevent unusual and possibly fraudulent activity (for example, regarding advertising, ad clicks by bots), and ensure systems and processes work properly and securely. It can also be used to correct any problems you, the publisher or the advertiser may encounter in the delivery of content and ads and in your interaction with them.

    Deliver and present advertising and content 479 partners can use this purpose

    Always Active

    Certain information (like an IP address or device capabilities) is used to ensure the technical compatibility of the content or advertising, and to facilitate the transmission of the content or ad to your device.

    Match and combine data from other data sources 332 partners can use this purpose

    Always Active

    Information about your activity on this service may be matched and combined with other information relating to you and originating from various sources (for instance your activity on a separate online service, your use of a loyalty card in-store, or your answers to a survey), in support of the purposes explained in this notice.

    • Match and combine data from other sources
      Always Active

      Information about your activity on this service may be matched and combined with other information relating to you and originating from various sources (for instance your activity on a separate online service, or your answers to a survey), in support of the purposes explained in this notice.

    Link different devices 316 partners can use this purpose

    Always Active

    In support of the purposes explained in this notice, your device might be considered as likely linked to other devices that belong to you or your household (for instance because you are logged in to the same service on both your phone and your computer, or because you may use the same Internet connection on both devices).

    Identify devices based on information transmitted automatically 456 partners can use this purpose

    Always Active

    Your device might be distinguished from other devices based on information it automatically sends when accessing the Internet (for instance, the IP address of your Internet connection or the type of browser you are using) in support of the purposes exposed in this notice.

    Cookie List

    label
    Consent Leg.Interest
    label
    label
    label
      \ No newline at end of file diff --git a/packages/metascraper-spotify/test/fixtures/episode.html b/packages/metascraper-spotify/test/fixtures/episode.html index e94fcc0e1..39b9af256 100644 --- a/packages/metascraper-spotify/test/fixtures/episode.html +++ b/packages/metascraper-spotify/test/fixtures/episode.html @@ -1,7835 +1,454 @@ - - - - - Hasty Treat - Modules in Node - Syntax - Tasty Web Development Treats | - Podcast on Spotify - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - -
      - -
      - - -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      Hasty Treat - - Modules in Node
      -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
      - 1:16
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - 1:28
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      Hasty Treat - Modules in Node -
      -
      -
      -

      - Podcast Episode

      -

      - Hasty Treat - - Modules in Node

      -
      -

      - Syntax - Tasty - Web Development Treats

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -

      - Jan 2020

      -

      - 18 - min 16 sec

      -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -

      - Episode Description

      -
      -
      -
      In this - Hasty Treat, Scott and Wes talk about - modules in Node — what are they, how they’re - different from browser modules, and more! -
      -
      -
      -

      - Sentry - Sponsor

      -

      - If you want to know what’s happening with - your errors, track them with Sentry. S -

      -
      -
      -
      See all - episodes -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - - - - + } +} +#onetrust-pc-sdk.otPcCenter{overflow:hidden;position:fixed;margin:0 auto;top:5%;right:0;left:0;width:40%;max-width:575px;min-width:575px;border-radius:2.5px;z-index:2147483647;background-color:#fff;-webkit-box-shadow:0px 2px 10px -3px #999;-moz-box-shadow:0px 2px 10px -3px #999;box-shadow:0px 2px 10px -3px #999}#onetrust-pc-sdk.otPcCenter[dir=rtl]{right:0;left:0}#onetrust-pc-sdk.otRelFont{font-size:1rem}#onetrust-pc-sdk .ot-optout-signal{margin-top:.625rem}#onetrust-pc-sdk #ot-addtl-venlst .ot-arw-cntr,#onetrust-pc-sdk #ot-addtl-venlst .ot-plus-minus,#onetrust-pc-sdk .ot-hide-tgl{visibility:hidden}#onetrust-pc-sdk #ot-addtl-venlst .ot-arw-cntr *,#onetrust-pc-sdk #ot-addtl-venlst .ot-plus-minus *,#onetrust-pc-sdk .ot-hide-tgl *{visibility:hidden}#onetrust-pc-sdk #ot-gn-venlst .ot-ven-item .ot-acc-hdr{min-height:40px}#onetrust-pc-sdk .ot-pc-header{height:39px;padding:10px 0 10px 30px;border-bottom:1px solid #e9e9e9}#onetrust-pc-sdk #ot-pc-title,#onetrust-pc-sdk #ot-category-title,#onetrust-pc-sdk .ot-cat-header,#onetrust-pc-sdk #ot-lst-title,#onetrust-pc-sdk .ot-ven-hdr .ot-ven-name,#onetrust-pc-sdk .ot-always-active{font-weight:bold;color:dimgray}#onetrust-pc-sdk .ot-always-active-group .ot-cat-header{width:55%;font-weight:700}#onetrust-pc-sdk .ot-cat-item p{clear:both;float:left;margin-top:10px;margin-bottom:5px;line-height:1.5;font-size:.812em;color:dimgray}#onetrust-pc-sdk .ot-close-icon{height:44px;width:44px;background-size:10px}#onetrust-pc-sdk #ot-pc-title{float:left;font-size:1em;line-height:1.5;margin-bottom:10px;margin-top:10px;width:100%}#onetrust-pc-sdk #accept-recommended-btn-handler{margin-right:10px;margin-bottom:25px;outline-offset:-1px}#onetrust-pc-sdk #ot-pc-desc{clear:both;width:100%;font-size:.812em;line-height:1.5;margin-bottom:25px}#onetrust-pc-sdk #ot-pc-desc a{margin-left:5px}#onetrust-pc-sdk #ot-pc-desc *{font-size:inherit;line-height:inherit}#onetrust-pc-sdk #ot-pc-desc ul li{padding:10px 0px}#onetrust-pc-sdk a{color:#656565;cursor:pointer}#onetrust-pc-sdk a:hover{color:#3860be}#onetrust-pc-sdk label{margin-bottom:0}#onetrust-pc-sdk #vdr-lst-dsc{font-size:.812em;line-height:1.5;padding:10px 15px 5px 15px}#onetrust-pc-sdk button{max-width:394px;padding:12px 30px;line-height:1;word-break:break-word;word-wrap:break-word;white-space:normal;font-weight:bold;height:auto}#onetrust-pc-sdk .ot-link-btn{padding:0;margin-bottom:0;border:0;font-weight:normal;line-height:normal;width:auto;height:auto}#onetrust-pc-sdk #ot-pc-content{position:absolute;overflow-y:scroll;padding-left:0px;padding-right:30px;top:60px;bottom:110px;margin:1px 3px 0 30px;width:calc(100% - 63px)}#onetrust-pc-sdk .ot-vs-list .ot-always-active,#onetrust-pc-sdk .ot-cat-grp .ot-always-active{float:right;clear:none;color:#3860be;margin:0;font-size:.813em;line-height:1.3}#onetrust-pc-sdk .ot-pc-scrollbar::-webkit-scrollbar-track{margin-right:20px}#onetrust-pc-sdk .ot-pc-scrollbar::-webkit-scrollbar{width:11px}#onetrust-pc-sdk .ot-pc-scrollbar::-webkit-scrollbar-thumb{border-radius:10px;background:#d8d8d8}#onetrust-pc-sdk input[type=checkbox]:focus+.ot-acc-hdr{outline:#000 1px solid}#onetrust-pc-sdk .ot-pc-scrollbar{scrollbar-arrow-color:#d8d8d8;scrollbar-darkshadow-color:#d8d8d8;scrollbar-face-color:#d8d8d8;scrollbar-shadow-color:#d8d8d8}#onetrust-pc-sdk .save-preference-btn-handler{margin-right:20px}#onetrust-pc-sdk .ot-pc-refuse-all-handler{margin-right:10px}#onetrust-pc-sdk #ot-pc-desc .privacy-notice-link{margin-left:0;margin-right:8px}#onetrust-pc-sdk #ot-pc-desc .ot-imprint-handler{margin-left:0;margin-right:8px}#onetrust-pc-sdk .ot-subgrp-cntr{display:inline-block;clear:both;width:100%;padding-top:15px}#onetrust-pc-sdk .ot-switch+.ot-subgrp-cntr{padding-top:10px}#onetrust-pc-sdk ul.ot-subgrps{margin:0;font-size:initial}#onetrust-pc-sdk ul.ot-subgrps li p,#onetrust-pc-sdk ul.ot-subgrps li h5{font-size:.813em;line-height:1.4;color:dimgray}#onetrust-pc-sdk ul.ot-subgrps .ot-switch{min-height:auto}#onetrust-pc-sdk ul.ot-subgrps .ot-switch-nob{top:0}#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr{display:inline-block;width:100%}#onetrust-pc-sdk ul.ot-subgrps .ot-acc-txt{margin:0}#onetrust-pc-sdk ul.ot-subgrps li{padding:0;border:none}#onetrust-pc-sdk ul.ot-subgrps li h5{position:relative;top:5px;font-weight:bold;margin-bottom:0;float:left}#onetrust-pc-sdk li.ot-subgrp{margin-left:20px;overflow:auto}#onetrust-pc-sdk li.ot-subgrp>h5{width:calc(100% - 100px)}#onetrust-pc-sdk .ot-cat-item p>ul,#onetrust-pc-sdk li.ot-subgrp p>ul{margin:0px;list-style:disc;margin-left:15px;font-size:inherit}#onetrust-pc-sdk .ot-cat-item p>ul li,#onetrust-pc-sdk li.ot-subgrp p>ul li{font-size:inherit;padding-top:10px;padding-left:0px;padding-right:0px;border:none}#onetrust-pc-sdk .ot-cat-item p>ul li:last-child,#onetrust-pc-sdk li.ot-subgrp p>ul li:last-child{padding-bottom:10px}#onetrust-pc-sdk .ot-pc-logo{height:40px;width:120px}#onetrust-pc-sdk .ot-pc-footer{position:absolute;bottom:0px;width:100%;max-height:160px;border-top:1px solid #d8d8d8}#onetrust-pc-sdk.ot-ftr-stacked .ot-pc-refuse-all-handler{margin-bottom:0px}#onetrust-pc-sdk.ot-ftr-stacked #ot-pc-content{bottom:160px}#onetrust-pc-sdk.ot-ftr-stacked .ot-pc-footer button{width:100%;max-width:none}#onetrust-pc-sdk.ot-ftr-stacked .ot-btn-container{margin:0 30px;width:calc(100% - 60px);padding-right:0}#onetrust-pc-sdk .ot-pc-footer-logo{height:30px;width:100%;text-align:right;background:#f4f4f4}#onetrust-pc-sdk .ot-pc-footer-logo a{display:inline-block;margin-top:5px;margin-right:10px}#onetrust-pc-sdk[dir=rtl] .ot-pc-footer-logo{direction:rtl}#onetrust-pc-sdk[dir=rtl] .ot-pc-footer-logo a{margin-right:25px}#onetrust-pc-sdk .ot-tgl{float:right;position:relative;z-index:1}#onetrust-pc-sdk .ot-tgl input:checked+.ot-switch .ot-switch-nob{background-color:#cddcf2;border:1px solid #3860be}#onetrust-pc-sdk .ot-tgl input:checked+.ot-switch .ot-switch-nob:before{-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px);background-color:#3860be;border-color:#3860be}#onetrust-pc-sdk .ot-tgl input:focus+.ot-switch{outline:#000 solid 1px}#onetrust-pc-sdk .ot-switch{position:relative;display:inline-block;width:45px;height:25px}#onetrust-pc-sdk .ot-switch-nob{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#f2f1f1;border:1px solid #ddd;transition:all .2s ease-in 0s;-moz-transition:all .2s ease-in 0s;-o-transition:all .2s ease-in 0s;-webkit-transition:all .2s ease-in 0s;border-radius:20px}#onetrust-pc-sdk .ot-switch-nob:before{position:absolute;content:"";height:21px;width:21px;bottom:1px;background-color:#7d7d7d;-webkit-transition:.4s;transition:.4s;border-radius:20px}#onetrust-pc-sdk .ot-chkbox input:checked~label::before{background-color:#3860be}#onetrust-pc-sdk .ot-chkbox input+label::after{content:none;color:#fff}#onetrust-pc-sdk .ot-chkbox input:checked+label::after{content:""}#onetrust-pc-sdk .ot-chkbox input:focus+label::before{outline-style:solid;outline-width:2px;outline-style:auto}#onetrust-pc-sdk .ot-chkbox label{position:relative;display:inline-block;padding-left:30px;cursor:pointer;font-weight:500}#onetrust-pc-sdk .ot-chkbox label::before,#onetrust-pc-sdk .ot-chkbox label::after{position:absolute;content:"";display:inline-block;border-radius:3px}#onetrust-pc-sdk .ot-chkbox label::before{height:18px;width:18px;border:1px solid #3860be;left:0px;top:auto}#onetrust-pc-sdk .ot-chkbox label::after{height:5px;width:9px;border-left:3px solid;border-bottom:3px solid;transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);left:4px;top:5px}#onetrust-pc-sdk .ot-label-txt{display:none}#onetrust-pc-sdk .ot-chkbox input,#onetrust-pc-sdk .ot-tgl input{position:absolute;opacity:0;width:0;height:0}#onetrust-pc-sdk .ot-arw-cntr{float:right;position:relative;pointer-events:none}#onetrust-pc-sdk .ot-arw-cntr .ot-arw{width:16px;height:16px;margin-left:5px;color:dimgray;display:inline-block;vertical-align:middle;-webkit-transition:all 150ms ease-in 0s;-moz-transition:all 150ms ease-in 0s;-o-transition:all 150ms ease-in 0s;transition:all 150ms ease-in 0s}#onetrust-pc-sdk input:checked~.ot-acc-hdr .ot-arw,#onetrust-pc-sdk button[aria-expanded=true]~.ot-acc-hdr .ot-arw-cntr svg{transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg)}#onetrust-pc-sdk input[type=checkbox]:focus+.ot-acc-hdr{outline:#000 1px solid}#onetrust-pc-sdk .ot-tgl-cntr,#onetrust-pc-sdk .ot-arw-cntr{display:inline-block}#onetrust-pc-sdk .ot-tgl-cntr{width:45px;float:right;margin-top:2px}#onetrust-pc-sdk #ot-lst-cnt .ot-tgl-cntr{margin-top:10px}#onetrust-pc-sdk .ot-always-active-subgroup{width:auto;padding-left:0px !important;top:3px;position:relative}#onetrust-pc-sdk .ot-label-status{padding-left:5px;font-size:.75em;display:none}#onetrust-pc-sdk .ot-arw-cntr{margin-top:-1px}#onetrust-pc-sdk .ot-arw-cntr svg{-webkit-transition:all 300ms ease-in 0s;-moz-transition:all 300ms ease-in 0s;-o-transition:all 300ms ease-in 0s;transition:all 300ms ease-in 0s;height:10px;width:10px}#onetrust-pc-sdk input:checked~.ot-acc-hdr .ot-arw{transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg)}#onetrust-pc-sdk .ot-arw{width:10px;margin-left:15px;transition:all 300ms ease-in 0s;-webkit-transition:all 300ms ease-in 0s;-moz-transition:all 300ms ease-in 0s;-o-transition:all 300ms ease-in 0s}#onetrust-pc-sdk .ot-vlst-cntr{margin-bottom:0}#onetrust-pc-sdk .ot-hlst-cntr{margin-top:5px;display:inline-block;width:100%}#onetrust-pc-sdk .category-vendors-list-handler,#onetrust-pc-sdk .category-vendors-list-handler+a,#onetrust-pc-sdk .category-host-list-handler{clear:both;color:#3860be;margin-left:0;font-size:.813em;text-decoration:none;float:left;overflow:hidden}#onetrust-pc-sdk .category-vendors-list-handler:hover,#onetrust-pc-sdk .category-vendors-list-handler+a:hover,#onetrust-pc-sdk .category-host-list-handler:hover{text-decoration-line:underline}#onetrust-pc-sdk .category-vendors-list-handler+a{clear:none}#onetrust-pc-sdk .ot-vlst-cntr .ot-ext-lnk,#onetrust-pc-sdk .ot-ven-hdr .ot-ext-lnk{display:inline-block;height:13px;width:13px;background-repeat:no-repeat;margin-left:1px;margin-top:6px;cursor:pointer}#onetrust-pc-sdk .ot-ven-hdr .ot-ext-lnk{margin-bottom:-1px}#onetrust-pc-sdk .back-btn-handler{font-size:1em;text-decoration:none}#onetrust-pc-sdk .back-btn-handler:hover{opacity:.6}#onetrust-pc-sdk #ot-lst-title h3{display:inline-block;word-break:break-word;word-wrap:break-word;margin-bottom:0;color:#656565;font-size:1em;font-weight:bold;margin-left:15px}#onetrust-pc-sdk #ot-lst-title{margin:10px 0 10px 0px;font-size:1em;text-align:left}#onetrust-pc-sdk #ot-pc-hdr{margin:0 0 0 30px;height:auto;width:auto}#onetrust-pc-sdk #ot-pc-hdr input::placeholder{color:#d4d4d4;font-style:italic}#onetrust-pc-sdk #vendor-search-handler{height:31px;width:100%;border-radius:50px;font-size:.8em;padding-right:35px;padding-left:15px;float:left;margin-left:15px}#onetrust-pc-sdk .ot-ven-name{display:block;width:auto;padding-right:5px}#onetrust-pc-sdk #ot-lst-cnt{overflow-y:auto;margin-left:20px;margin-right:7px;width:calc(100% - 27px);max-height:calc(100% - 80px);height:100%;transform:translate3d(0, 0, 0)}#onetrust-pc-sdk #ot-pc-lst{width:100%;bottom:100px;position:absolute;top:60px}#onetrust-pc-sdk #ot-pc-lst:not(.ot-enbl-chr) .ot-tgl-cntr .ot-arw-cntr,#onetrust-pc-sdk #ot-pc-lst:not(.ot-enbl-chr) .ot-tgl-cntr .ot-arw-cntr *{visibility:hidden}#onetrust-pc-sdk #ot-pc-lst .ot-tgl-cntr{right:12px;position:absolute}#onetrust-pc-sdk #ot-pc-lst .ot-arw-cntr{float:right;position:relative}#onetrust-pc-sdk #ot-pc-lst .ot-arw{margin-left:10px}#onetrust-pc-sdk #ot-pc-lst .ot-acc-hdr{overflow:hidden;cursor:pointer}#onetrust-pc-sdk .ot-vlst-cntr{overflow:hidden}#onetrust-pc-sdk #ot-sel-blk{overflow:hidden;width:100%;position:sticky;position:-webkit-sticky;top:0;z-index:3}#onetrust-pc-sdk #ot-back-arw{height:12px;width:12px}#onetrust-pc-sdk .ot-lst-subhdr{width:100%;display:inline-block}#onetrust-pc-sdk .ot-search-cntr{float:left;width:78%;position:relative}#onetrust-pc-sdk .ot-search-cntr>svg{width:30px;height:30px;position:absolute;float:left;right:-15px}#onetrust-pc-sdk .ot-fltr-cntr{float:right;right:50px;position:relative}#onetrust-pc-sdk #filter-btn-handler{background-color:#3860be;border-radius:17px;display:inline-block;position:relative;width:32px;height:32px;-moz-transition:.1s ease;-o-transition:.1s ease;-webkit-transition:1s ease;transition:.1s ease;padding:0;margin:0}#onetrust-pc-sdk #filter-btn-handler:hover{background-color:#3860be}#onetrust-pc-sdk #filter-btn-handler svg{width:12px;height:12px;margin:3px 10px 0 10px;display:block;position:static;right:auto;top:auto}#onetrust-pc-sdk .ot-ven-link,#onetrust-pc-sdk .ot-ven-legclaim-link{color:#3860be;text-decoration:none;font-weight:100;display:inline-block;padding-top:10px;transform:translate(0, 1%);-o-transform:translate(0, 1%);-ms-transform:translate(0, 1%);-webkit-transform:translate(0, 1%);position:relative;z-index:2}#onetrust-pc-sdk .ot-ven-link *,#onetrust-pc-sdk .ot-ven-legclaim-link *{font-size:inherit}#onetrust-pc-sdk .ot-ven-link:hover,#onetrust-pc-sdk .ot-ven-legclaim-link:hover{text-decoration:underline}#onetrust-pc-sdk .ot-ven-hdr{width:calc(100% - 160px);height:auto;float:left;word-break:break-word;word-wrap:break-word;vertical-align:middle;padding-bottom:3px}#onetrust-pc-sdk .ot-ven-link,#onetrust-pc-sdk .ot-ven-legclaim-link{letter-spacing:.03em;font-size:.75em;font-weight:400}#onetrust-pc-sdk .ot-ven-dets{border-radius:2px;background-color:#f8f8f8}#onetrust-pc-sdk .ot-ven-dets li:first-child p:first-child{border-top:none}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc:not(:first-child){border-top:1px solid #ddd !important}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc:nth-child(n+3) p{display:inline-block}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc:nth-child(n+3) p:nth-of-type(odd){width:30%}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc:nth-child(n+3) p:nth-of-type(even){width:50%;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc p,#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc h4{padding-top:5px;padding-bottom:5px;display:block}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc h4{display:inline-block}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc p:nth-last-child(-n+1){padding-bottom:10px}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc p:nth-child(-n+2):not(.disc-pur){padding-top:10px}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc .disc-pur-cont{display:inline}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc .disc-pur{position:relative;width:50% !important;word-break:break-word;word-wrap:break-word;left:calc(30% + 17px)}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc .disc-pur:nth-child(-n+1){position:static}#onetrust-pc-sdk .ot-ven-dets p,#onetrust-pc-sdk .ot-ven-dets h4,#onetrust-pc-sdk .ot-ven-dets span{font-size:.69em;text-align:left;vertical-align:middle;word-break:break-word;word-wrap:break-word;margin:0;padding-bottom:10px;padding-left:15px;color:#2e3644}#onetrust-pc-sdk .ot-ven-dets h4{padding-top:5px}#onetrust-pc-sdk .ot-ven-dets span{color:dimgray;padding:0;vertical-align:baseline}#onetrust-pc-sdk .ot-ven-dets .ot-ven-pur h4{border-top:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9;padding-bottom:5px;margin-bottom:5px;font-weight:bold}#onetrust-pc-sdk #ot-host-lst .ot-sel-all{float:right;position:relative;margin-right:42px;top:10px}#onetrust-pc-sdk #ot-host-lst .ot-sel-all input[type=checkbox]{width:auto;height:auto}#onetrust-pc-sdk #ot-host-lst .ot-sel-all label{height:20px;width:20px;padding-left:0px}#onetrust-pc-sdk #ot-host-lst .ot-acc-txt{overflow:hidden;width:95%}#onetrust-pc-sdk .ot-host-hdr{position:relative;z-index:1;pointer-events:none;width:calc(100% - 125px);float:left}#onetrust-pc-sdk .ot-host-name,#onetrust-pc-sdk .ot-host-desc{display:inline-block;width:90%}#onetrust-pc-sdk .ot-host-name{pointer-events:none}#onetrust-pc-sdk .ot-host-hdr>a{text-decoration:underline;font-size:.82em;position:relative;z-index:2;float:left;margin-bottom:5px;pointer-events:initial}#onetrust-pc-sdk .ot-host-name+a{margin-top:5px}#onetrust-pc-sdk .ot-host-name,#onetrust-pc-sdk .ot-host-name a,#onetrust-pc-sdk .ot-host-desc,#onetrust-pc-sdk .ot-host-info{color:dimgray;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk .ot-host-name,#onetrust-pc-sdk .ot-host-name a{font-weight:bold;font-size:.82em;line-height:1.3}#onetrust-pc-sdk .ot-host-name a{font-size:1em}#onetrust-pc-sdk .ot-host-expand{margin-top:3px;margin-bottom:3px;clear:both;display:block;color:#3860be;font-size:.72em;font-weight:normal}#onetrust-pc-sdk .ot-host-expand *{font-size:inherit}#onetrust-pc-sdk .ot-host-desc,#onetrust-pc-sdk .ot-host-info{font-size:.688em;line-height:1.4;font-weight:normal}#onetrust-pc-sdk .ot-host-desc{margin-top:10px}#onetrust-pc-sdk .ot-host-opt{margin:0;font-size:inherit;display:inline-block;width:100%}#onetrust-pc-sdk .ot-host-opt li>div div{font-size:.8em;padding:5px 0}#onetrust-pc-sdk .ot-host-opt li>div div:nth-child(1){width:30%;float:left}#onetrust-pc-sdk .ot-host-opt li>div div:nth-child(2){width:70%;float:left;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk .ot-host-info{border:none;display:inline-block;width:calc(100% - 10px);padding:10px;margin-bottom:10px;background-color:#f8f8f8}#onetrust-pc-sdk .ot-host-info>div{overflow:auto}#onetrust-pc-sdk #no-results{text-align:center;margin-top:30px}#onetrust-pc-sdk #no-results p{font-size:1em;color:#2e3644;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk #no-results p span{font-weight:bold}#onetrust-pc-sdk #ot-fltr-modal{width:100%;height:auto;display:none;-moz-transition:.2s ease;-o-transition:.2s ease;-webkit-transition:2s ease;transition:.2s ease;overflow:hidden;opacity:1;right:0}#onetrust-pc-sdk #ot-fltr-modal .ot-label-txt{display:inline-block;font-size:.85em;color:dimgray}#onetrust-pc-sdk #ot-fltr-cnt{z-index:2147483646;background-color:#fff;position:absolute;height:90%;max-height:300px;width:325px;left:210px;margin-top:10px;margin-bottom:20px;padding-right:10px;border-radius:3px;-webkit-box-shadow:0px 0px 12px 2px #c7c5c7;-moz-box-shadow:0px 0px 12px 2px #c7c5c7;box-shadow:0px 0px 12px 2px #c7c5c7}#onetrust-pc-sdk .ot-fltr-scrlcnt{overflow-y:auto;overflow-x:hidden;clear:both;max-height:calc(100% - 60px)}#onetrust-pc-sdk #ot-anchor{border:12px solid rgba(0,0,0,0);display:none;position:absolute;z-index:2147483647;right:55px;top:75px;transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);background-color:#fff;-webkit-box-shadow:-3px -3px 5px -2px #c7c5c7;-moz-box-shadow:-3px -3px 5px -2px #c7c5c7;box-shadow:-3px -3px 5px -2px #c7c5c7}#onetrust-pc-sdk .ot-fltr-btns{margin-left:15px}#onetrust-pc-sdk #filter-apply-handler{margin-right:15px}#onetrust-pc-sdk .ot-fltr-opt{margin-bottom:25px;margin-left:15px;width:75%;position:relative}#onetrust-pc-sdk .ot-fltr-opt p{display:inline-block;margin:0;font-size:.9em;color:#2e3644}#onetrust-pc-sdk .ot-chkbox label span{font-size:.85em;color:dimgray}#onetrust-pc-sdk .ot-chkbox input[type=checkbox]+label::after{content:none;color:#fff}#onetrust-pc-sdk .ot-chkbox input[type=checkbox]:checked+label::after{content:""}#onetrust-pc-sdk .ot-chkbox input[type=checkbox]:focus+label::before{outline-style:solid;outline-width:2px;outline-style:auto}#onetrust-pc-sdk #ot-selall-vencntr,#onetrust-pc-sdk #ot-selall-adtlvencntr,#onetrust-pc-sdk #ot-selall-hostcntr,#onetrust-pc-sdk #ot-selall-licntr,#onetrust-pc-sdk #ot-selall-gnvencntr{right:15px;position:relative;width:20px;height:20px;float:right}#onetrust-pc-sdk #ot-selall-vencntr label,#onetrust-pc-sdk #ot-selall-adtlvencntr label,#onetrust-pc-sdk #ot-selall-hostcntr label,#onetrust-pc-sdk #ot-selall-licntr label,#onetrust-pc-sdk #ot-selall-gnvencntr label{float:left;padding-left:0}#onetrust-pc-sdk #ot-ven-lst:first-child{border-top:1px solid #e2e2e2}#onetrust-pc-sdk ul{list-style:none;padding:0}#onetrust-pc-sdk ul li{position:relative;margin:0;padding:15px 15px 15px 10px;border-bottom:1px solid #e2e2e2}#onetrust-pc-sdk ul li h3{font-size:.75em;color:#656565;margin:0;display:inline-block;width:70%;height:auto;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk ul li p{margin:0;font-size:.7em}#onetrust-pc-sdk ul li input[type=checkbox]{position:absolute;cursor:pointer;width:100%;height:100%;opacity:0;margin:0;top:0;left:0}#onetrust-pc-sdk .ot-cat-item>button:focus,#onetrust-pc-sdk .ot-acc-cntr>button:focus,#onetrust-pc-sdk li>button:focus{outline:#000 solid 2px}#onetrust-pc-sdk .ot-cat-item>button,#onetrust-pc-sdk .ot-acc-cntr>button,#onetrust-pc-sdk li>button{position:absolute;cursor:pointer;width:100%;height:100%;margin:0;top:0;left:0;z-index:1;max-width:none;border:none}#onetrust-pc-sdk .ot-cat-item>button[aria-expanded=false]~.ot-acc-txt,#onetrust-pc-sdk .ot-acc-cntr>button[aria-expanded=false]~.ot-acc-txt,#onetrust-pc-sdk li>button[aria-expanded=false]~.ot-acc-txt{margin-top:0;max-height:0;opacity:0;overflow:hidden;width:100%;transition:.25s ease-out;display:none}#onetrust-pc-sdk .ot-cat-item>button[aria-expanded=true]~.ot-acc-txt,#onetrust-pc-sdk .ot-acc-cntr>button[aria-expanded=true]~.ot-acc-txt,#onetrust-pc-sdk li>button[aria-expanded=true]~.ot-acc-txt{transition:.1s ease-in;margin-top:10px;width:100%;overflow:auto;display:block}#onetrust-pc-sdk .ot-cat-item>button[aria-expanded=true]~.ot-acc-grpcntr,#onetrust-pc-sdk .ot-acc-cntr>button[aria-expanded=true]~.ot-acc-grpcntr,#onetrust-pc-sdk li>button[aria-expanded=true]~.ot-acc-grpcntr{width:auto;margin-top:0px;padding-bottom:10px}#onetrust-pc-sdk .ot-host-item>button:focus,#onetrust-pc-sdk .ot-ven-item>button:focus{outline:0;border:2px solid #000}#onetrust-pc-sdk .ot-hide-acc>button{pointer-events:none}#onetrust-pc-sdk .ot-hide-acc .ot-plus-minus>*,#onetrust-pc-sdk .ot-hide-acc .ot-arw-cntr>*{visibility:hidden}#onetrust-pc-sdk .ot-hide-acc .ot-acc-hdr{min-height:30px}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt){padding-right:10px;width:calc(100% - 37px);margin-top:10px;max-height:calc(100% - 90px)}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) #ot-sel-blk{background-color:#f9f9fc;border:1px solid #e2e2e2;width:calc(100% - 2px);padding-bottom:5px;padding-top:5px}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) #ot-sel-blk.ot-vnd-list-cnt{border:unset;background-color:unset}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) #ot-sel-blk.ot-vnd-list-cnt .ot-sel-all-hdr{display:none}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) #ot-sel-blk.ot-vnd-list-cnt .ot-sel-all{padding-right:.5rem}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) #ot-sel-blk.ot-vnd-list-cnt .ot-sel-all .ot-chkbox{right:0}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) .ot-sel-all{padding-right:34px}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) .ot-sel-all-chkbox{width:auto}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) ul li{border:1px solid #e2e2e2;margin-bottom:10px}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) .ot-acc-cntr>.ot-acc-hdr{padding:10px 0 10px 15px}#onetrust-pc-sdk.ot-addtl-vendors .ot-sel-all-chkbox{float:right}#onetrust-pc-sdk.ot-addtl-vendors .ot-plus-minus~.ot-sel-all-chkbox{right:34px}#onetrust-pc-sdk.ot-addtl-vendors #ot-ven-lst:first-child{border-top:none}#onetrust-pc-sdk .ot-acc-cntr{position:relative;border-left:1px solid #e2e2e2;border-right:1px solid #e2e2e2;border-bottom:1px solid #e2e2e2}#onetrust-pc-sdk .ot-acc-cntr input{z-index:1}#onetrust-pc-sdk .ot-acc-cntr>.ot-acc-hdr{background-color:#f9f9fc;padding:5px 0 5px 15px;width:auto}#onetrust-pc-sdk .ot-acc-cntr>.ot-acc-hdr .ot-plus-minus{vertical-align:middle;top:auto}#onetrust-pc-sdk .ot-acc-cntr>.ot-acc-hdr .ot-arw-cntr{right:10px}#onetrust-pc-sdk .ot-acc-cntr>.ot-acc-hdr input{z-index:2}#onetrust-pc-sdk .ot-acc-cntr.ot-add-tech .ot-acc-hdr{padding:10px 0 10px 15px}#onetrust-pc-sdk .ot-acc-cntr>input[type=checkbox]:checked~.ot-acc-hdr{border-bottom:1px solid #e2e2e2}#onetrust-pc-sdk .ot-acc-cntr>.ot-acc-txt{padding-left:10px;padding-right:10px}#onetrust-pc-sdk .ot-acc-cntr button[aria-expanded=true]~.ot-acc-txt{width:auto}#onetrust-pc-sdk .ot-acc-cntr .ot-addtl-venbox{display:none}#onetrust-pc-sdk .ot-vlst-cntr{margin-bottom:0;width:100%}#onetrust-pc-sdk .ot-vensec-title{font-size:.813em;vertical-align:middle;display:inline-block}#onetrust-pc-sdk .category-vendors-list-handler,#onetrust-pc-sdk .category-vendors-list-handler+a{margin-left:0;margin-top:10px}#onetrust-pc-sdk #ot-selall-vencntr.line-through label::after,#onetrust-pc-sdk #ot-selall-adtlvencntr.line-through label::after,#onetrust-pc-sdk #ot-selall-licntr.line-through label::after,#onetrust-pc-sdk #ot-selall-hostcntr.line-through label::after,#onetrust-pc-sdk #ot-selall-gnvencntr.line-through label::after{height:auto;border-left:0;transform:none;-o-transform:none;-ms-transform:none;-webkit-transform:none;left:5px;top:9px}#onetrust-pc-sdk #ot-category-title{float:left;padding-bottom:10px;font-size:1em;width:100%}#onetrust-pc-sdk .ot-cat-grp{margin-top:10px}#onetrust-pc-sdk .ot-cat-item{line-height:1.1;margin-top:10px;display:inline-block;width:100%}#onetrust-pc-sdk .ot-btn-container{text-align:right}#onetrust-pc-sdk .ot-btn-container button{display:inline-block;font-size:.75em;letter-spacing:.08em;margin-top:19px}#onetrust-pc-sdk #close-pc-btn-handler.ot-close-icon{position:absolute;top:10px;right:0;z-index:1;padding:0;background-color:rgba(0,0,0,0);border:none}#onetrust-pc-sdk #close-pc-btn-handler.ot-close-icon svg{display:block;height:10px;width:10px}#onetrust-pc-sdk #clear-filters-handler{margin-top:20px;margin-bottom:10px;float:right;max-width:200px;text-decoration:none;color:#3860be;font-size:.9em;font-weight:bold;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);padding:1px}#onetrust-pc-sdk #clear-filters-handler:hover{color:#2285f7}#onetrust-pc-sdk #clear-filters-handler:focus{outline:#000 solid 1px}#onetrust-pc-sdk .ot-enbl-chr h4~.ot-tgl,#onetrust-pc-sdk .ot-enbl-chr h4~.ot-always-active{right:45px}#onetrust-pc-sdk .ot-enbl-chr h4~.ot-tgl+.ot-tgl{right:120px}#onetrust-pc-sdk .ot-enbl-chr .ot-pli-hdr.ot-leg-border-color span:first-child{width:90px}#onetrust-pc-sdk .ot-enbl-chr li.ot-subgrp>h5+.ot-tgl-cntr{padding-right:25px}#onetrust-pc-sdk .ot-plus-minus{width:20px;height:20px;font-size:1.5em;position:relative;display:inline-block;margin-right:5px;top:3px}#onetrust-pc-sdk .ot-plus-minus span{position:absolute;background:#27455c;border-radius:1px}#onetrust-pc-sdk .ot-plus-minus span:first-of-type{top:25%;bottom:25%;width:10%;left:45%}#onetrust-pc-sdk .ot-plus-minus span:last-of-type{left:25%;right:25%;height:10%;top:45%}#onetrust-pc-sdk button[aria-expanded=true]~.ot-acc-hdr .ot-arw,#onetrust-pc-sdk button[aria-expanded=true]~.ot-acc-hdr .ot-plus-minus span:first-of-type,#onetrust-pc-sdk button[aria-expanded=true]~.ot-acc-hdr .ot-plus-minus span:last-of-type{transform:rotate(90deg)}#onetrust-pc-sdk button[aria-expanded=true]~.ot-acc-hdr .ot-plus-minus span:last-of-type{left:50%;right:50%}#onetrust-pc-sdk #ot-selall-vencntr label,#onetrust-pc-sdk #ot-selall-adtlvencntr label,#onetrust-pc-sdk #ot-selall-hostcntr label,#onetrust-pc-sdk #ot-selall-licntr label{position:relative;display:inline-block;width:20px;height:20px}#onetrust-pc-sdk .ot-host-item .ot-plus-minus,#onetrust-pc-sdk .ot-ven-item .ot-plus-minus{float:left;margin-right:8px;top:10px}#onetrust-pc-sdk .ot-ven-item ul{list-style:none inside;font-size:100%;margin:0}#onetrust-pc-sdk .ot-ven-item ul li{margin:0 !important;padding:0;border:none !important}#onetrust-pc-sdk .ot-pli-hdr{color:#77808e;overflow:hidden;padding-top:7.5px;padding-bottom:7.5px;width:calc(100% - 2px);border-top-left-radius:3px;border-top-right-radius:3px}#onetrust-pc-sdk .ot-pli-hdr span:first-child{top:50%;transform:translateY(50%);max-width:90px}#onetrust-pc-sdk .ot-pli-hdr span:last-child{padding-right:10px;max-width:95px;text-align:center}#onetrust-pc-sdk .ot-li-title{float:right;font-size:.813em}#onetrust-pc-sdk .ot-pli-hdr.ot-leg-border-color{background-color:#f4f4f4;border:1px solid #d8d8d8}#onetrust-pc-sdk .ot-pli-hdr.ot-leg-border-color span:first-child{text-align:left;width:70px}#onetrust-pc-sdk li.ot-subgrp>h5,#onetrust-pc-sdk .ot-cat-header{width:calc(100% - 130px)}#onetrust-pc-sdk li.ot-subgrp>h5+.ot-tgl-cntr{padding-left:13px}#onetrust-pc-sdk .ot-acc-grpcntr .ot-acc-grpdesc{margin-bottom:5px}#onetrust-pc-sdk .ot-acc-grpcntr .ot-subgrp-cntr{border-top:1px solid #d8d8d8}#onetrust-pc-sdk .ot-acc-grpcntr .ot-vlst-cntr+.ot-subgrp-cntr{border-top:none}#onetrust-pc-sdk .ot-acc-hdr .ot-arw-cntr+.ot-tgl-cntr,#onetrust-pc-sdk .ot-acc-txt h4+.ot-tgl-cntr{padding-left:13px}#onetrust-pc-sdk .ot-pli-hdr~.ot-cat-item .ot-subgrp>h5,#onetrust-pc-sdk .ot-pli-hdr~.ot-cat-item .ot-cat-header{width:calc(100% - 145px)}#onetrust-pc-sdk .ot-pli-hdr~.ot-cat-item h5+.ot-tgl-cntr,#onetrust-pc-sdk .ot-pli-hdr~.ot-cat-item .ot-cat-header+.ot-tgl{padding-left:28px}#onetrust-pc-sdk .ot-sel-all-hdr,#onetrust-pc-sdk .ot-sel-all-chkbox{display:inline-block;width:100%;position:relative}#onetrust-pc-sdk .ot-sel-all-chkbox{z-index:1}#onetrust-pc-sdk .ot-sel-all{margin:0;position:relative;padding-right:23px;float:right}#onetrust-pc-sdk .ot-consent-hdr,#onetrust-pc-sdk .ot-li-hdr{float:right;font-size:.812em;line-height:normal;text-align:center;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk .ot-li-hdr{max-width:100px;padding-right:10px}#onetrust-pc-sdk .ot-consent-hdr{max-width:55px}#onetrust-pc-sdk #ot-selall-licntr{display:block;width:21px;height:auto;float:right;position:relative;right:80px}#onetrust-pc-sdk #ot-selall-licntr label{position:absolute}#onetrust-pc-sdk .ot-ven-ctgl{margin-left:66px}#onetrust-pc-sdk .ot-ven-litgl+.ot-arw-cntr{margin-left:81px}#onetrust-pc-sdk .ot-enbl-chr .ot-host-cnt .ot-tgl-cntr{width:auto}#onetrust-pc-sdk #ot-lst-cnt:not(.ot-host-cnt) .ot-tgl-cntr{width:auto;top:auto;height:20px}#onetrust-pc-sdk #ot-lst-cnt .ot-chkbox{position:relative;display:inline-block;width:20px;height:20px}#onetrust-pc-sdk #ot-lst-cnt .ot-chkbox label{position:absolute;padding:0;width:20px;height:20px}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info-cntr{border:1px solid #d8d8d8;padding:.75rem 2rem;padding-bottom:0;width:auto;margin-top:.5rem}#onetrust-pc-sdk .ot-acc-grpdesc+.ot-leg-btn-container{padding-left:20px;padding-right:20px;width:calc(100% - 40px);margin-bottom:5px}#onetrust-pc-sdk .ot-subgrp .ot-leg-btn-container{margin-bottom:5px}#onetrust-pc-sdk #ot-ven-lst .ot-leg-btn-container{margin-top:10px}#onetrust-pc-sdk .ot-leg-btn-container{display:inline-block;width:100%;margin-bottom:10px}#onetrust-pc-sdk .ot-leg-btn-container button{height:auto;padding:6.5px 8px;margin-bottom:0;letter-spacing:0;font-size:.75em;line-height:normal}#onetrust-pc-sdk .ot-leg-btn-container svg{display:none;height:14px;width:14px;padding-right:5px;vertical-align:sub}#onetrust-pc-sdk .ot-active-leg-btn{cursor:default;pointer-events:none}#onetrust-pc-sdk .ot-active-leg-btn svg{display:inline-block}#onetrust-pc-sdk .ot-remove-objection-handler{text-decoration:underline;padding:0;font-size:.75em;font-weight:600;line-height:1;padding-left:10px}#onetrust-pc-sdk .ot-obj-leg-btn-handler span{font-weight:bold;text-align:center;font-size:inherit;line-height:1.5}#onetrust-pc-sdk.ot-close-btn-link #close-pc-btn-handler{border:none;height:auto;line-height:1.5;text-decoration:underline;font-size:.69em;background:none;right:15px;top:15px;width:auto;font-weight:normal}#onetrust-pc-sdk .ot-pgph-link{font-size:.813em !important;margin-top:5px;position:relative}#onetrust-pc-sdk .ot-pgph-link.ot-pgph-link-subgroup{margin-bottom:1rem}#onetrust-pc-sdk .ot-pgph-contr{margin:0 2.5rem}#onetrust-pc-sdk .ot-pgph-title{font-size:1.18rem;margin-bottom:2rem}#onetrust-pc-sdk .ot-pgph-desc{font-size:1rem;font-weight:400;margin-bottom:2rem;line-height:1.5rem}#onetrust-pc-sdk .ot-pgph-desc:not(:last-child):after{content:"";width:96%;display:block;margin:0 auto;padding-bottom:2rem;border-bottom:1px solid #e9e9e9}#onetrust-pc-sdk .ot-cat-header{float:left;font-weight:600;font-size:.875em;line-height:1.5;max-width:90%;vertical-align:middle}#onetrust-pc-sdk .ot-vnd-item>button:focus{outline:#000 solid 2px}#onetrust-pc-sdk .ot-vnd-item>button{position:absolute;cursor:pointer;width:100%;height:100%;margin:0;top:0;left:0;z-index:1;max-width:none;border:none}#onetrust-pc-sdk .ot-vnd-item>button[aria-expanded=false]~.ot-acc-txt{margin-top:0;max-height:0;opacity:0;overflow:hidden;width:100%;transition:.25s ease-out;display:none}#onetrust-pc-sdk .ot-vnd-item>button[aria-expanded=true]~.ot-acc-txt{transition:.1s ease-in;margin-top:10px;width:100%;overflow:auto;display:block}#onetrust-pc-sdk .ot-vnd-item>button[aria-expanded=true]~.ot-acc-grpcntr{width:auto;margin-top:0px;padding-bottom:10px}#onetrust-pc-sdk .ot-accordion-layout.ot-cat-item{position:relative;border-radius:2px;margin:0;padding:0;border:1px solid #d8d8d8;border-top:none;width:calc(100% - 2px);float:left}#onetrust-pc-sdk .ot-accordion-layout.ot-cat-item:first-of-type{margin-top:10px;border-top:1px solid #d8d8d8}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-grpdesc{padding-left:20px;padding-right:20px;width:calc(100% - 40px);font-size:.812em;margin-bottom:10px;margin-top:15px}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-grpdesc>ul{padding-top:10px}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-grpdesc>ul li{padding-top:0;line-height:1.5;padding-bottom:10px}#onetrust-pc-sdk .ot-accordion-layout div+.ot-acc-grpdesc{margin-top:5px}#onetrust-pc-sdk .ot-accordion-layout .ot-vlst-cntr:first-child{margin-top:10px}#onetrust-pc-sdk .ot-accordion-layout .ot-vlst-cntr:last-child,#onetrust-pc-sdk .ot-accordion-layout .ot-hlst-cntr:last-child{margin-bottom:5px}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-hdr{padding-top:11.5px;padding-bottom:11.5px;padding-left:20px;padding-right:20px;width:calc(100% - 40px);display:inline-block}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-txt{width:100%;padding:0}#onetrust-pc-sdk .ot-accordion-layout .ot-subgrp-cntr{padding-left:20px;padding-right:15px;padding-bottom:0;width:calc(100% - 35px)}#onetrust-pc-sdk .ot-accordion-layout .ot-subgrp{padding-right:5px}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-grpcntr{z-index:1;position:relative}#onetrust-pc-sdk .ot-accordion-layout .ot-cat-header+.ot-arw-cntr{position:absolute;top:50%;transform:translateY(-50%);right:20px;margin-top:-2px}#onetrust-pc-sdk .ot-accordion-layout .ot-cat-header+.ot-arw-cntr .ot-arw{width:15px;height:20px;margin-left:5px;color:dimgray}#onetrust-pc-sdk .ot-accordion-layout .ot-cat-header{float:none;color:#2e3644;margin:0;display:inline-block;height:auto;word-wrap:break-word;min-height:inherit}#onetrust-pc-sdk .ot-accordion-layout .ot-vlst-cntr,#onetrust-pc-sdk .ot-accordion-layout .ot-hlst-cntr{padding-left:20px;width:calc(100% - 20px);display:inline-block;margin-top:0;padding-bottom:2px}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-hdr{position:relative;min-height:25px}#onetrust-pc-sdk .ot-accordion-layout h4~.ot-tgl,#onetrust-pc-sdk .ot-accordion-layout h4~.ot-always-active{position:absolute;top:50%;transform:translateY(-50%);right:20px}#onetrust-pc-sdk .ot-accordion-layout h4~.ot-tgl+.ot-tgl{right:95px}#onetrust-pc-sdk .ot-accordion-layout .category-vendors-list-handler,#onetrust-pc-sdk .ot-accordion-layout .category-vendors-list-handler+a{margin-top:5px}#onetrust-pc-sdk #ot-lst-cnt{margin-top:1rem;max-height:calc(100% - 96px)}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info-cntr{border:1px solid #d8d8d8;padding:.75rem 2rem;padding-bottom:0;width:auto;margin-top:.5rem}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info{margin-bottom:1rem;padding-left:.75rem;padding-right:.75rem;display:flex;flex-direction:column}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info[data-vnd-info-key*=DPOEmail]{border-top:1px solid #d8d8d8;padding-top:1rem}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info[data-vnd-info-key*=DPOLink]{border-bottom:1px solid #d8d8d8;padding-bottom:1rem}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info .ot-vnd-lbl{font-weight:bold;font-size:.85em;margin-bottom:.5rem}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info .ot-vnd-cnt{margin-left:.5rem;font-weight:500;font-size:.85rem}#onetrust-pc-sdk .ot-vs-list,#onetrust-pc-sdk .ot-vnd-serv{width:auto;padding:1rem 1.25rem;padding-bottom:0}#onetrust-pc-sdk .ot-vs-list .ot-vnd-serv-hdr-cntr,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-serv-hdr-cntr{padding-bottom:.75rem;border-bottom:1px solid #d8d8d8}#onetrust-pc-sdk .ot-vs-list .ot-vnd-serv-hdr-cntr .ot-vnd-serv-hdr,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-serv-hdr-cntr .ot-vnd-serv-hdr{font-weight:600;font-size:.95em;line-height:2;margin-left:.5rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item{border:none;margin:0;padding:0}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item button,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item button{outline:none;border-bottom:1px solid #d8d8d8}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item button[aria-expanded=true],#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item button[aria-expanded=true]{border-bottom:none}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item:first-child,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item:first-child{margin-top:.25rem;border-top:unset}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item:last-child,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item:last-child{margin-bottom:.5rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item:last-child button,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item:last-child button{border-bottom:none}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info-cntr,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info-cntr{border:1px solid #d8d8d8;padding:.75rem 1.75rem;padding-bottom:0;width:auto;margin-top:.5rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info{margin-bottom:1rem;padding-left:.75rem;padding-right:.75rem;display:flex;flex-direction:column}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info[data-vnd-info-key*=DPOEmail],#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info[data-vnd-info-key*=DPOEmail]{border-top:1px solid #d8d8d8;padding-top:1rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info[data-vnd-info-key*=DPOLink],#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info[data-vnd-info-key*=DPOLink]{border-bottom:1px solid #d8d8d8;padding-bottom:1rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info .ot-vnd-lbl,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info .ot-vnd-lbl{font-weight:bold;font-size:.85em;margin-bottom:.5rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info .ot-vnd-cnt,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info .ot-vnd-cnt{margin-left:.5rem;font-weight:500;font-size:.85rem}#onetrust-pc-sdk .ot-vs-list.ot-vnd-subgrp-cnt,#onetrust-pc-sdk .ot-vnd-serv.ot-vnd-subgrp-cnt{padding-left:40px}#onetrust-pc-sdk .ot-vs-list.ot-vnd-subgrp-cnt .ot-vnd-serv-hdr-cntr .ot-vnd-serv-hdr,#onetrust-pc-sdk .ot-vnd-serv.ot-vnd-subgrp-cnt .ot-vnd-serv-hdr-cntr .ot-vnd-serv-hdr{font-size:.8em}#onetrust-pc-sdk .ot-vs-list.ot-vnd-subgrp-cnt .ot-cat-header,#onetrust-pc-sdk .ot-vnd-serv.ot-vnd-subgrp-cnt .ot-cat-header{font-size:.8em}#onetrust-pc-sdk .ot-subgrp-cntr .ot-vnd-serv{margin-bottom:1rem;padding:1rem .95rem}#onetrust-pc-sdk .ot-subgrp-cntr .ot-vnd-serv .ot-vnd-serv-hdr-cntr{padding-bottom:.75rem;border-bottom:1px solid #d8d8d8}#onetrust-pc-sdk .ot-subgrp-cntr .ot-vnd-serv .ot-vnd-serv-hdr-cntr .ot-vnd-serv-hdr{font-weight:700;font-size:.8em;line-height:20px;margin-left:.82rem}#onetrust-pc-sdk .ot-subgrp-cntr .ot-cat-header{font-weight:700;font-size:.8em;line-height:20px}#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-vnd-serv .ot-vnd-lst-cont .ot-accordion-layout .ot-acc-hdr div.ot-chkbox{margin-left:.82rem}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr{padding:.7rem 0;margin:0;display:flex;width:100%;align-items:center;justify-content:space-between}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr div:first-child,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr div:first-child,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr div:first-child,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr div:first-child,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr div:first-child,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr div:first-child,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr div:first-child{margin-left:.5rem}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr div:last-child,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr div:last-child,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr div:last-child,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr div:last-child,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr div:last-child,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr div:last-child,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr div:last-child{margin-right:.5rem;margin-left:.5rem}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-always-active{position:relative;right:unset;top:unset;transform:unset}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-plus-minus{top:0}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-arw-cntr{float:none;top:unset;right:unset;transform:unset;margin-top:-2px;position:relative}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-cat-header{flex:1;margin:0 .5rem}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-tgl{position:relative;transform:none;right:0;top:0;float:none}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-chkbox{position:relative;margin:0 .5rem}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-chkbox label{padding:0}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-chkbox label::before{position:relative}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-chkbox input{position:absolute;cursor:pointer;width:100%;height:100%;opacity:0;margin:0;top:0;left:0;z-index:1}#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps li.ot-subgrp .ot-acc-hdr h5.ot-cat-header,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps li.ot-subgrp .ot-acc-hdr h4.ot-cat-header{margin:0}#onetrust-pc-sdk .ot-vs-config .ot-subgrp-cntr ul.ot-subgrps li.ot-subgrp h5{top:0;line-height:20px}#onetrust-pc-sdk .ot-vs-list{display:flex;flex-direction:column;padding:0;margin:.5rem 4px}#onetrust-pc-sdk .ot-vs-selc-all{display:flex;padding:0;float:unset;align-items:center;justify-content:flex-start}#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf{justify-content:flex-end}#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf.ot-caret-conf .ot-sel-all-chkbox{margin-right:48px}#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf .ot-sel-all-chkbox{margin:0;padding:0;margin-right:14px;justify-content:flex-end}#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf #ot-selall-vencntr.ot-chkbox,#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf #ot-selall-vencntr.ot-tgl{display:inline-block;right:unset;width:auto;height:auto;float:none}#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf #ot-selall-vencntr label{width:45px;height:25px}#onetrust-pc-sdk .ot-vs-selc-all .ot-sel-all-chkbox{margin-right:11px;margin-left:.75rem;display:flex;align-items:center}#onetrust-pc-sdk .ot-vs-selc-all .sel-all-hdr{margin:0 1.25rem;font-size:.812em;line-height:normal;text-align:center;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk .ot-vnd-list-cnt #ot-selall-vencntr.ot-chkbox{float:unset;right:0}#onetrust-pc-sdk[dir=rtl] #ot-back-arw,#onetrust-pc-sdk[dir=rtl] input~.ot-acc-hdr .ot-arw{transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg)}#onetrust-pc-sdk[dir=rtl] input:checked~.ot-acc-hdr .ot-arw{transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);-webkit-transform:rotate(270deg)}#onetrust-pc-sdk[dir=rtl] .ot-chkbox label::after{transform:rotate(45deg);-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);border-left:0;border-right:3px solid}#onetrust-pc-sdk[dir=rtl] .ot-search-cntr>svg{right:0}@media only screen and (max-width: 600px){#onetrust-pc-sdk.otPcCenter{left:0;min-width:100%;height:100%;top:0;border-radius:0}#onetrust-pc-sdk #ot-pc-content,#onetrust-pc-sdk.ot-ftr-stacked .ot-btn-container{margin:1px 3px 0 10px;padding-right:10px;width:calc(100% - 23px)}#onetrust-pc-sdk .ot-btn-container button{max-width:none;letter-spacing:.01em}#onetrust-pc-sdk #close-pc-btn-handler{top:10px;right:17px}#onetrust-pc-sdk p{font-size:.7em}#onetrust-pc-sdk #ot-pc-hdr{margin:10px 10px 0 5px;width:calc(100% - 15px)}#onetrust-pc-sdk .vendor-search-handler{font-size:1em}#onetrust-pc-sdk #ot-back-arw{margin-left:12px}#onetrust-pc-sdk #ot-lst-cnt{margin:0;padding:0 5px 0 10px;min-width:95%}#onetrust-pc-sdk .switch+p{max-width:80%}#onetrust-pc-sdk .ot-ftr-stacked button{width:100%}#onetrust-pc-sdk #ot-fltr-cnt{max-width:320px;width:90%;border-top-right-radius:0;border-bottom-right-radius:0;margin:0;margin-left:15px;left:auto;right:40px;top:85px}#onetrust-pc-sdk .ot-fltr-opt{margin-left:25px;margin-bottom:10px}#onetrust-pc-sdk .ot-pc-refuse-all-handler{margin-bottom:0}#onetrust-pc-sdk #ot-fltr-cnt{right:40px}}@media only screen and (max-width: 476px){#onetrust-pc-sdk .ot-fltr-cntr,#onetrust-pc-sdk #ot-fltr-cnt{right:10px}#onetrust-pc-sdk #ot-anchor{right:25px}#onetrust-pc-sdk button{width:100%}#onetrust-pc-sdk:not(.ot-addtl-vendors) #ot-pc-lst:not(.ot-enbl-chr) .ot-sel-all{padding-right:9px}#onetrust-pc-sdk:not(.ot-addtl-vendors) #ot-pc-lst:not(.ot-enbl-chr) .ot-tgl-cntr{right:0}}@media only screen and (max-width: 896px)and (max-height: 425px)and (orientation: landscape){#onetrust-pc-sdk.otPcCenter{left:0;top:0;min-width:100%;height:100%;border-radius:0}#onetrust-pc-sdk #ot-anchor{left:initial;right:50px}#onetrust-pc-sdk #ot-lst-title{margin-top:12px}#onetrust-pc-sdk #ot-lst-title *{font-size:inherit}#onetrust-pc-sdk #ot-pc-hdr input{margin-right:0;padding-right:45px}#onetrust-pc-sdk .switch+p{max-width:85%}#onetrust-pc-sdk #ot-sel-blk{position:static}#onetrust-pc-sdk #ot-pc-lst{overflow:auto}#onetrust-pc-sdk #ot-lst-cnt{max-height:none;overflow:initial}#onetrust-pc-sdk #ot-lst-cnt.no-results{height:auto}#onetrust-pc-sdk input{font-size:1em !important}#onetrust-pc-sdk p{font-size:.6em}#onetrust-pc-sdk #ot-fltr-modal{width:100%;top:0}#onetrust-pc-sdk ul li p,#onetrust-pc-sdk .category-vendors-list-handler,#onetrust-pc-sdk .category-vendors-list-handler+a,#onetrust-pc-sdk .category-host-list-handler{font-size:.6em}#onetrust-pc-sdk.ot-shw-fltr #ot-anchor{display:none !important}#onetrust-pc-sdk.ot-shw-fltr #ot-pc-lst{height:100% !important;overflow:hidden;top:0px}#onetrust-pc-sdk.ot-shw-fltr #ot-fltr-cnt{margin:0;height:100%;max-height:none;padding:10px;top:0;width:calc(100% - 20px);position:absolute;right:0;left:0;max-width:none}#onetrust-pc-sdk.ot-shw-fltr .ot-fltr-scrlcnt{max-height:calc(100% - 65px)}} + #onetrust-consent-sdk #onetrust-pc-sdk, + #onetrust-consent-sdk #ot-search-cntr, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-switch.ot-toggle, + #onetrust-consent-sdk #onetrust-pc-sdk ot-grp-hdr1 .checkbox, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-title:after + ,#onetrust-consent-sdk #onetrust-pc-sdk #ot-sel-blk, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-fltr-cnt, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-anchor { + background-color: #FFF; + } + + #onetrust-consent-sdk #onetrust-pc-sdk h3, + #onetrust-consent-sdk #onetrust-pc-sdk h4, + #onetrust-consent-sdk #onetrust-pc-sdk h5, + #onetrust-consent-sdk #onetrust-pc-sdk h6, + #onetrust-consent-sdk #onetrust-pc-sdk p, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-ven-lst .ot-ven-opts p, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-desc, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-title, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-li-title, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-sel-all-hdr span, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-host-lst .ot-host-info, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-fltr-modal #modal-header, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-checkbox label span, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-lst #ot-sel-blk p, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-lst #ot-lst-title h3, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-lst .back-btn-handler p, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-lst .ot-ven-name, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-lst #ot-ven-lst .consent-category, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-leg-btn-container .ot-inactive-leg-btn, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-label-status, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-chkbox label span, + #onetrust-consent-sdk #onetrust-pc-sdk #clear-filters-handler, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-optout-signal + { + color: #121212; + } + #onetrust-consent-sdk #onetrust-pc-sdk .privacy-notice-link, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-pgph-link, + #onetrust-consent-sdk #onetrust-pc-sdk .category-vendors-list-handler, + #onetrust-consent-sdk #onetrust-pc-sdk .category-vendors-list-handler + a, + #onetrust-consent-sdk #onetrust-pc-sdk .category-host-list-handler, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-ven-link, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-ven-legclaim-link, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-host-lst .ot-host-name a, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-host-lst .ot-acc-hdr .ot-host-expand, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-host-lst .ot-host-info a, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-content #ot-pc-desc .ot-link-btn, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info a, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info a + { + color: #1DB954; + } + #onetrust-consent-sdk #onetrust-pc-sdk .category-vendors-list-handler:hover { text-decoration: underline;} + #onetrust-consent-sdk #onetrust-pc-sdk .ot-acc-grpcntr.ot-acc-txt, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-acc-txt .ot-subgrp-tgl .ot-switch.ot-toggle + { + background-color: #F8F8F8; + } + #onetrust-consent-sdk #onetrust-pc-sdk #ot-host-lst .ot-host-info, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-acc-txt .ot-ven-dets + { + background-color: #F8F8F8; + } + #onetrust-consent-sdk #onetrust-pc-sdk + button:not(#clear-filters-handler):not(.ot-close-icon):not(#filter-btn-handler):not(.ot-remove-objection-handler):not(.ot-obj-leg-btn-handler):not([aria-expanded]):not(.ot-link-btn), + #onetrust-consent-sdk #onetrust-pc-sdk .ot-leg-btn-container .ot-active-leg-btn { + background-color: #1DB954;border-color: #1DB954; + color: #FFFFFF; + } + #onetrust-consent-sdk #onetrust-pc-sdk .ot-active-menu { + border-color: #1DB954; + } + + #onetrust-consent-sdk #onetrust-pc-sdk .ot-leg-btn-container .ot-remove-objection-handler{ + background-color: transparent; + border: 1px solid transparent; + } + #onetrust-consent-sdk #onetrust-pc-sdk .ot-leg-btn-container .ot-inactive-leg-btn { + background-color: #FFFFFF; + color: #78808E; border-color: #78808E; + } + #onetrust-consent-sdk #onetrust-pc-sdk .ot-tgl input:focus + .ot-switch, .ot-switch .ot-switch-nob, .ot-switch .ot-switch-nob:before, + #onetrust-pc-sdk .ot-checkbox input[type="checkbox"]:focus + label::before, + #onetrust-pc-sdk .ot-chkbox input[type="checkbox"]:focus + label::before { + outline-color: #000000; + outline-width: 1px; + } + #onetrust-pc-sdk .ot-host-item > button:focus, #onetrust-pc-sdk .ot-ven-item > button:focus { + border: 1px solid #000000; + } + #onetrust-consent-sdk #onetrust-pc-sdk *:focus, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-vlst-cntr > a:focus { + outline: 1px solid #000000; + }#onetrust-pc-sdk .ot-vlst-cntr .ot-ext-lnk, #onetrust-pc-sdk .ot-ven-hdr .ot-ext-lnk{ + background-image: url('https://cdn.cookielaw.org/logos/static/ot_external_link.svg'); + } + #onetrust-pc-sdk .pc-logo img, #onetrust-pc-sdk .ot-pc-logo img, #onetrust-pc-sdk .ot-pc-footer-logo { + display: none!important; +} +#onetrust-pc-sdk #accept-recommended-btn-handler, #onetrust-pc-sdk .save-preference-btn-handler, #onetrust-pc-sdk .ot-fltr-btns button{ + border-radius: 100px; + text-transform: uppercase; + font-size: 14px!important; + letter-spacing: 0.1em; +} +#onetrust-pc-sdk .save-preference-btn-handler{ + margin-bottom: 20px; +} +#onetrust-pc-sdk .ot-switch-nob{ + background-color: #D2D2D2!important; + border-color: #D2D2D2!important; +} +#onetrust-pc-sdk .ot-switch-nob:before { + background-color: #FFFFFF!important; + border-color: #FFFFFF!important; +} +#onetrust-pc-sdk .ot-tgl input:checked+.ot-switch .ot-switch-nob{ + background-color: #1DB954!important; + border-color: #1DB954!important; +} +#onetrust-pc-sdk .ot-always-active{ + color: #121212!important; +} +#onetrust-pc-sdk .ot-chkbox label::before{ + border: 1px solid #B3B3B3!important; +} +#onetrust-pc-sdk .ot-chkbox input:checked~label::before{ + background-color: #1DB954!important; + border-color: #1DB954!important; +} +#onetrust-pc-sdk .ot-pur-vdr-count{ + font-size: 10px!important; +} +#onetrust-pc-sdk #ot-desc-id-IAB2V2_1{ + display: none; +} +#onetrust-pc-sdk [data-optanongroupid=i00]{ + margin-left: 0!important; +} +#onetrust-pc-sdk [data-optanongroupid=i00] h5, #onetrust-pc-sdk [data-optanongroupid=i00] .ot-tgl-cntr{ + display: none; +} +#onetrust-pc-sdk .ot-btn-container{ + text-align: center; +} +#onetrust-pc-sdk .ot-sel-all-hdr{ + display: block!important; +} +#onetrust-pc-sdk .ot-li-hdr { + display: none; +} +#onetrust-pc-sdk .ot-sel-all{ + display: flex!important; +} +#onetrust-pc-sdk .ot-sel-all-chkbox{ + width: 45px!important; +} +#onetrust-pc-sdk .ot-consent-hdr{ + text-align: end!important; + margin-right: 10px; +} +#onetrust-pc-sdk #opt-info{ + font-size: 12px; + margin-left: 10px; + margin-top: 10px; +} +#onetrust-pc-sdk #ot-desc-id-IFE2V2_1{ + display: none; +} +#onetrust-pc-sdk [data-optanongroupid=m03]{ + margin-left: 0!important; +} +#onetrust-pc-sdk [data-optanongroupid=m03] h5, #onetrust-pc-sdk [data-optanongroupid=m03] .ot-tgl-cntr{ + display: none; +}.ot-sdk-cookie-policy{font-family:inherit;font-size:16px}.ot-sdk-cookie-policy.otRelFont{font-size:1rem}.ot-sdk-cookie-policy h3,.ot-sdk-cookie-policy h4,.ot-sdk-cookie-policy h6,.ot-sdk-cookie-policy p,.ot-sdk-cookie-policy li,.ot-sdk-cookie-policy a,.ot-sdk-cookie-policy th,.ot-sdk-cookie-policy #cookie-policy-description,.ot-sdk-cookie-policy .ot-sdk-cookie-policy-group,.ot-sdk-cookie-policy #cookie-policy-title{color:dimgray}.ot-sdk-cookie-policy #cookie-policy-description{margin-bottom:1em}.ot-sdk-cookie-policy h4{font-size:1.2em}.ot-sdk-cookie-policy h6{font-size:1em;margin-top:2em}.ot-sdk-cookie-policy th{min-width:75px}.ot-sdk-cookie-policy a,.ot-sdk-cookie-policy a:hover{background:#fff}.ot-sdk-cookie-policy thead{background-color:#f6f6f4;font-weight:bold}.ot-sdk-cookie-policy .ot-mobile-border{display:none}.ot-sdk-cookie-policy section{margin-bottom:2em}.ot-sdk-cookie-policy table{border-collapse:inherit}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy{font-family:inherit;font-size:1rem}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy h3,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy h4,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy h6,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy p,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy li,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy a,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy th,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-description,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-cookie-policy-group,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-title{color:dimgray}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-description{margin-bottom:1em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-subgroup{margin-left:1.5em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-description,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-cookie-policy-group-desc,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-table-header,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy a,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy span,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td{font-size:.9em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td span,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td a{font-size:inherit}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-cookie-policy-group{font-size:1em;margin-bottom:.6em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-cookie-policy-title{margin-bottom:1.2em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy>section{margin-bottom:1em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy th{min-width:75px}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy a,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy a:hover{background:#fff}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy thead{background-color:#f6f6f4;font-weight:bold}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-mobile-border{display:none}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy section{margin-bottom:2em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-subgroup ul li{list-style:disc;margin-left:1.5em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-subgroup ul li h4{display:inline-block}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table{border-collapse:inherit;margin:auto;border:1px solid #d7d7d7;border-radius:5px;border-spacing:initial;width:100%;overflow:hidden}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table th,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table td{border-bottom:1px solid #d7d7d7;border-right:1px solid #d7d7d7}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table tr:last-child td{border-bottom:0px}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table tr th:last-child,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table tr td:last-child{border-right:0px}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table .ot-host,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table .ot-cookies-type{width:25%}.ot-sdk-cookie-policy[dir=rtl]{text-align:left}#ot-sdk-cookie-policy h3{font-size:1.5em}@media only screen and (max-width: 530px){.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) table,.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) thead,.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) tbody,.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) th,.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) td,.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) tr{display:block}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) thead tr{position:absolute;top:-9999px;left:-9999px}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) tr{margin:0 0 1em 0}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) tr:nth-child(odd),.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) tr:nth-child(odd) a{background:#f6f6f4}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) td{border:none;border-bottom:1px solid #eee;position:relative;padding-left:50%}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) td:before{position:absolute;height:100%;left:6px;width:40%;padding-right:10px}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) .ot-mobile-border{display:inline-block;background-color:#e4e4e4;position:absolute;height:100%;top:0;left:45%;width:2px}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) td:before{content:attr(data-label);font-weight:bold}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) li{word-break:break-word;word-wrap:break-word}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table{overflow:hidden}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table td{border:none;border-bottom:1px solid #d7d7d7}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy thead,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy tbody,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy th,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy tr{display:block}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table .ot-host,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table .ot-cookies-type{width:auto}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy tr{margin:0 0 1em 0}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td:before{height:100%;width:40%;padding-right:10px}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td:before{content:attr(data-label);font-weight:bold}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy li{word-break:break-word;word-wrap:break-word}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy thead tr{position:absolute;top:-9999px;left:-9999px;z-index:-9999}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table tr:last-child td{border-bottom:1px solid #d7d7d7;border-right:0px}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table tr:last-child td:last-child{border-bottom:0px}} + + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy h5, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy h6, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy li, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy p, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy a, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy span, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-description { + color: #696969; + } + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy th { + color: #696969; + } + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-cookie-policy-group { + color: #696969; + } + + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-title { + color: #696969; + } + + + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table th { + background-color: #F8F8F8; + } + + .ot-floating-button__front{background-image:url('https://cdn.cookielaw.org/logos/static/ot_persistent_cookie_icon.png')} + @keyframes slide-down-custom { + 0% { + bottom: 823px !important; + } + 100% { + bottom: 0px; + } + } + @-webkit-keyframes slide-down-custom { + 0% { + bottom: 823px !important; + } + 100% { + bottom: 0px; + } + } + @-moz-keyframes slide-down-custom { + 0% { + bottom: 823px !important; + } + 100% { + bottom: 0px; + } + } +

      Preview of Spotify

      Sign up to get unlimited songs and podcasts with occasional ads. No credit card needed.

      -:--
      -:--
      Hasty Treat - Modules in Node
      Podcast Episode

      Hasty Treat - Modules in Node

      Syntax - Tasty Web Development Treats

      Jan 2020

      18 min 16 sec

      Episode Description

      In this Hasty Treat, Scott and Wes talk about modules in Node — what are they, how they’re different from browser modules, and more!

      Sentry - Sponsor

      If you want to know what’s happening with your errors, track them with Sentry.

      See all episodes
      \ No newline at end of file diff --git a/packages/metascraper-spotify/test/fixtures/show.html b/packages/metascraper-spotify/test/fixtures/show.html index cc09e5c64..0cfdf32b8 100644 --- a/packages/metascraper-spotify/test/fixtures/show.html +++ b/packages/metascraper-spotify/test/fixtures/show.html @@ -1,15604 +1,454 @@ - - - - - Syntax - Tasty Web Development Treats | Podcast on Spotify - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - -
      - -
      - - -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      Syntax - Tasty - Web Development Treats
      -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
      - 1:16
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - 1:28
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      Syntax - Tasty Web Development Treats -
      -
      -
      -

      - Podcast

      -

      - Syntax - Tasty - Web Development Treats

      -
      -

      - Wes Bos and Scott Tolinski

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -

      - About

      -
      -
      -
      A Tasty - Treat Podcast for Web Developers
      -
      -
      - -
      -
      -
      Up - next - -
      -

      - In this episode of Syntax, Wes and Scott - talk through their web dev wish list of - things they want to just work already! - Linode - Sponsor Whether you’re working on a - personal project or managing enterprise - infrastructure, you deserve simple, - affordable, and accessible cloud computing - solutions that allow you to take your - project to the next level. Simplify your - cloud infrastructure with Linode’s Linux - virtual machines and develop, deploy, and - scale your modern applications faster and - easier. Get started on Linode today with a - $100 in free credit for listeners of Syntax. - You can find all the details at - linode.com/syntax. Linode has 11 global data - centers and provides 24/7/365 human support - with no tiers or hand-offs regardless of - your plan size. In addition to shared and - dedicated compute instances, you can use - your $100 in credit on S3-compatible object - storage, Managed Kubernetes, and more. Visit - linode.com/syntax and click on the “Create - Free Account” button to get started. Sentry - - Sponsor If you want to know what’s - happening with your code, track errors and - monitor performance with Sentry. Sentry’s - Application Monitoring platform helps - developers see performance issues, fix - errors faster, and optimize their code - health. Cut your time on error resolution - from hours to minutes. It works with any - language and integrates with dozens of other - services. Syntax listeners new to Sentry can - get two months for free by visiting - Sentry.io and using the coupon code - TASTYTREAT during sign up. Freshbooks - - Sponsor Get a 30 day free trial of - Freshbooks at freshbooks.com/syntax Show - Notes 00:11 Welcome 02:20 Write Custom - animation transitions 03:32 date input - translate to JavaScript date 06:48 Smooth - and animated drag and drop 08:35 TypeScript - Interfaces are faster than Types 10:35 - Request animation frame 12:52 Custom - Elements / Web Components 13:52 - Authentication Web Authentication API 16:12 - Sponsor: Linode 17:48 useIsomporphic vs - useLayoutEffect 19:48 useEffect dependency - array 21:27 fragments without fragments - 24:46 Overflow hidden without hiding shadows - 27:11 Fluid text 28:52 Sponsor: Sentry 29:34 - translate3d vs translate 30:59 Gradient - borders 33:33 Independent transforms 36:16 - animate height auto 38:40 Sponsor: - Freshbooks 39:02 Auto synced deps when - changing package file 40:36 Peer - dependencies 42:32 VS Code Reload after - plugins install is kinda annoying 43:04 - Safari updates 44:20 Apps checking for - passwords 45:02 File name casing as changes - 45:56 Better sounding commit names 46:33 - Test runner that is the same and just works - 47:32 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK - ××× PIIIICKS ××× Scott: Arc browser / Video - Wes: Battery powered glue gun Shameless - Plugs Scott: LevelUp Tutorials Wes: Wes Bos - Tutorials Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook Scott’s - Twitter Make sure to include @SyntaxFM in - your tweets

      -
      -
      -
      -
      -

      - Aug 3

      -

      - 54 min - 7 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -

      - All Episodes

      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - talk through their web dev wish list of - things they want to just work already! - Linode - Sponsor Whether you’re working - on a personal project or managing - enterprise infrastructure, you deserve - simple, affordable, and accessible cloud - computing solutions that allow you to - take your project to the next level. - Simplify your cloud infrastructure with - Linode’s Linux virtual machines and - develop, deploy, and scale your modern - applications faster and easier. Get - started on Linode today with a $100 in - free credit for listeners of Syntax. You - can find all the details at - linode.com/syntax. Linode has 11 global - data centers and provides 24/7/365 human - support with no tiers or hand-offs - regardless of your plan size. In - addition to shared and dedicated compute - instances, you can use your $100 in - credit on S3-compatible object storage, - Managed Kubernetes, and more. Visit - linode.com/syntax and click on the - “Create Free Account” button to get - started. Sentry - Sponsor If you want to - know what’s happening with your code, - track errors and monitor performance - with Sentry. Sentry’s Application - Monitoring platform helps developers see - performance issues, fix errors faster, - and optimize their code health. Cut your - time on error resolution from hours to - minutes. It works with any language and - integrates with dozens of other - services. Syntax listeners new to Sentry - can get two months for free by visiting - Sentry.io and using the coupon code - TASTYTREAT during sign up. Freshbooks - - Sponsor Get a 30 day free trial of - Freshbooks at freshbooks.com/syntax Show - Notes 00:11 Welcome 02:20 Write Custom - animation transitions 03:32 date input - translate to JavaScript date 06:48 - Smooth and animated drag and drop 08:35 - TypeScript Interfaces are faster than - Types 10:35 Request animation frame - 12:52 Custom Elements / Web Components - 13:52 Authentication Web Authentication - API 16:12 Sponsor: Linode 17:48 - useIsomporphic vs useLayoutEffect 19:48 - useEffect dependency array 21:27 - fragments without fragments 24:46 - Overflow hidden without hiding shadows - 27:11 Fluid text 28:52 Sponsor: Sentry - 29:34 translate3d vs translate 30:59 - Gradient borders 33:33 Independent - transforms 36:16 animate height auto - 38:40 Sponsor: Freshbooks 39:02 Auto - synced deps when changing package file - 40:36 Peer dependencies 42:32 VS Code - Reload after plugins install is kinda - annoying 43:04 Safari updates 44:20 Apps - checking for passwords 45:02 File name - casing as changes 45:56 Better sounding - commit names 46:33 Test runner that is - the same and just works 47:32 SIIIIICK - ××× PIIIICKS ××× ××× SIIIIICK ××× - PIIIICKS ××× Scott: Arc browser / Video - Wes: Battery powered glue gun Shameless - Plugs Scott: LevelUp Tutorials Wes: Wes - Bos Tutorials Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Aug 3

      -

      - 54 - min 7 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - the appreciation of coding projects that - supposedly serve no purpose, but can be - great ways to learn something new. - LogRocket - Sponsor LogRocket lets you - replay what users do on your site, - helping you reproduce bugs and fix - issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Linode - Sponsor - Whether you’re working on a personal - project or managing enterprise - infrastructure, you deserve simple, - affordable, and accessible cloud - computing solutions that allow you to - take your project to the next level. - Simplify your cloud infrastructure with - Linode’s Linux virtual machines and - develop, deploy, and scale your modern - applications faster and easier. Get - started on Linode today with a $100 in - free credit for listeners of Syntax. You - can find all the details at - linode.com/syntax. Linode has 11 global - data centers and provides 24/7/365 human - support with no tiers or hand-offs - regardless of your plan size. In - addition to shared and dedicated compute - instances, you can use your $100 in - credit on S3-compatible object storage, - Managed Kubernetes, and more. Visit - linode.com/syntax and click on the - “Create Free Account” button to get - started. Show Notes 00:39 I am excited - about coding 02:40 Sponsor: LogRocket - 03:58 Sponsor: Linode 04:24 Projects - that serve no purpose Bookit 05:46 - Scratching your own itch 10:06 Discount - finder 11:20 Webcam or audio - manipulation 12:43 TTFS Parcel Vite - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Aug 1

      -

      - 18 - min 29 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Syed Balkhi - about his experiences blogging and - developing plugins in the WordPress - ecosytem. Hasura - Sponsor With Hasura, - you can get a fully managed, - production-ready GraphQL API as a - service to help you build modern apps - faster. You can get started for free in - 30 seconds, or if you want to try out - the Standard tier for zero cost, use the - code “TryHasura” at this link: - hasura.info. We’ve also got an amazing - selection of GraphQL tutorials at - hasura.io/learn. Sponsorname - Sponsor - Show Notes 00:32 Welcome 01:52 Guest - introduction WPBeginner WP Beginner - YouTube CSS Tricks Smashing Magazine - 04:33 What tips do you have for blogging - and audience building? AnswerthePublic - 09:09 How do you manage so many people? - 13:07 What was your background before - this all got big? 13:43 Sponsor: Hasura - 15:01 How do you design your products? - 18:40 YouTube, TikTok, and video 25:12 - Why the WordPress hate? 29:03 What types - of websites are being created in - WordPress? Easy Digital Downloads - WooCommerce MemberPress 34:13 Sponsor: - Lightstep Incident Response 35:26 What - schools are you building? Balkhi - Foundation Pencils of Promise 40:51 - Supper Club questions Copyhackers Swiped - Uncanny Automator 53:07 SIIIIICK ××× - PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS - ××× Streaks App Ready Player Two WP - Forms AwesomeMotive Tweet us your tasty - treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 29

      -

      - 56 - min 38 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Potluck episode of Syntax, Wes - and Scott answer your questions about - resolving node version errors, using - social media, bundler for building React - component, and how does Syntax get made? - Prismic - Sponsor Prismic is a Headless - CMS that makes it easy to build website - pages as a set of components. Break - pages into sections of components using - React, Vue, or whatever you like. Make - corresponding Slices in Prismic. Start - building pages dynamically in minutes. - Get started at prismic.io/syntax. Sentry - - Sponsor If you want to know what’s - happening with your code, track errors - and monitor performance with Sentry. - Sentry’s Application Monitoring platform - helps developers see performance issues, - fix errors faster, and optimize their - code health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. Freshbooks - Sponsor Get - a 30 day free trial of Freshbooks at - freshbooks.com/syntax Show Notes - OhMyPosh OhMyZ.sh Warp 02:34 How do you - resolve errors when starting up a - project with npm that you haven’t - touched in awhile? 07:50 Any advice for - using social media to network? 16:44 - What bundler are you reaching for when - building a React component library? tsdx - Vite 18:37 Do you have experience with - optimizing third party scripts like - Google Analytics? Partytown 21:37 What’s - your opinion on a “offline-first” - mentality? PouchDB CouchDB Supabase - MongoDB Realm 25:09 Sponsor: Prismic - 26:48 How do you make web components - with Svelte? Build web components in - Svelte Using custom elements in Svelte - 30:35 When talking about “responsive” - web design do people generally mean - using flexbox or grid? Responsive Design - at 10 Responsive Web Design A Book Apart - - Responsive Web Design 35:24 Sponsor: - Sentry 36:53 Do you have any tips for - staying in React-land for just spinning - up a fresh site quickly? 40:47 Who or - what helps you produce and distribute - the podcast? Lemon Productions Chris - Enns on Twitter 46:08 Should a majority - of _lodash functions be considered - deprecated follow up 48:18 Sponsor: - Freshbooks 48:52 Do you have any tips or - tricks to deal with backend data date - issues? 52:23 Is the “col” system the - peak of how we handle CSS, or should we - start using more built-in functions? - 55:25 Why you you need CSS Color - Functions at runtime instead of just - pre-calculating these values once as a - build step using LESS or SASS? 58:58 - SIIIIICK ××× PIIIICKS ××× 03:12 - Shameless Plugs ××× SIIIIICK ××× - PIIIICKS ××× Scott: Can tumbler glasses - Wes: Car Sound Deadener Shameless Plugs - Scott: LevelUp Tutorials Wes: Wes Bos - Tutorials Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 27

      -

      - 1 - hr 4 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about Bun, a new all-in-one JavaScript - runtime. What makes Bun so fast? What’s - on Bun’s roadmap? And why do we need - another JavaScript runtime? Lightstep - Incident Response - Sponsor Streamline - on-call, collaboration, incident - management, and automation with a free - 30-day trial of Lightstep Incident - Response, built on ServiceNow. - Usage-based pricing on active services - promotes collaboration across your - entire team to build a culture of - service ownership. Listeners of Syntax - will also receive a free Lightstep - Incident Response T-shirt after firing - an alert or incident. Pay for the - services you use, not the number of - people on your team with Lightstep - Incident Response, built on ServiceNow. - Streamline on-call, collaboration, - incident management, and automation with - a free 30-day trial. Fire an alert or - incident today and receive a free - Lightstep Incident Response t-shirt. - Freshbooks - Sponsor Get a 30 day free - trial of Freshbooks at - freshbooks.com/syntax Show Notes 00:23 - Welcome 01:21 Sponsor: Freshbooks 02:07 - Sponsor: Lightstep Incident Response - 03:20 What is Bun? Bun Deno 08:20 Why is - Bun so fast? Zig 12:32 Module support - 15:11 What’s not implemented yet in Bun? - What’s not implemented in Bun yet 17:01 - Config file in toml 18:08 Bun roadmap - Bun roadmap 20:27 Why do we need another - JavaScript environment? Tweet us your - tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 25

      -

      - 23 - min 53 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Adam Cowley - about how Neo4j Database can help when - working with data for your next app. - Gatsby - Sponsor Today’s episode was - sponsored by Gatsby, the fastest - frontend for the headless web. Gatsby is - the framework of choice for content-rich - sites backed by a headless CMS as its - GraphQL data layer makes it - straightforward to source website - content from anywhere. Gatsby’s - opinionated, React-based framework makes - the hardest parts of building a - performant website simpler. Visit - gatsby.dev/syntax to get your first - Gatsby site up in minutes and experience - the speed. ⚡️ Lightstep Incident - Response - Sponsor Streamline on-call, - collaboration, incident management, and - automation with a free 30-day trial of - Lightstep Incident Response, built on - ServiceNow. Usage-based pricing on - active services promotes collaboration - across your entire team to build a - culture of service ownership. Listeners - of Syntax will also receive a free - Lightstep Incident Response T-shirt - after firing an alert or incident. Pay - for the services you use, not the number - of people on your team with Lightstep - Incident Response, built on ServiceNow. - Streamline on-call, collaboration, - incident management, and automation with - a free 30-day trial. Fire an alert or - incident today and receive a free - Lightstep Incident Response t-shirt. - Show Notes 00:15 Welcome 01:24 Guest - introduction 03:15 Browser innovation - and testing 05:01 What is a graph - database? Neo4j Cypher Sanity Groq 08:11 - Is there a specific type of data that - works best in a graph database? 11:57 - Sponsor: Lightstep Incident Response - 13:14 What’s AuraDB vs Neo4js? 15:01 - Whiteboard friendly data model 19:52 How - are GraphQL and graph related? 23:08 Can - you sync with MongoDB? 24:41 How do you - pull data into a div on the web? 29:19 - Why are you used for data science a lot? - 30:43 Sponsor: Gatsby 31:51 Is - visualization an important part of - Neo4js? Neo4j Bloom 36:01 Do you have to - think about indexing with graph - databases? 39:43 Are there uses Neo4j - isn’t as good for? 40:22 Do you have to - cache queries? 41:26 Dessert questions - Intellijet Idea Cobalt 2 Theme 50:36 - Shameless Plug Neo4j Desktop Neo4j Cloud - 54:45 ××× SIIIIICK ××× PIIIICKS ××× ××× - SIIIIICK ××× PIIIICKS ××× Hue Lights - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 22

      -

      - 57 - min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - talk about their coding styles - - functional vs object oriented, - interfaces vs types, tabs vs spaces, - should comments exist? And a whole lot - more. Freshbooks - Sponsor Get a 30 day - free trial of Freshbooks at - freshbooks.com/syntax Sentry - Sponsor - If you want to know what’s happening - with your code, track errors and monitor - performance with Sentry. Sentry’s - Application Monitoring platform helps - developers see performance issues, fix - errors faster, and optimize their code - health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. Sanity - Sponsor - Sanity.io is a real-time headless CMS - with a fully customizable Content Studio - built in React. Get a Sanity powered - site up and running in minutes at - sanity.io/create. Get an awesome - supercharged free developer plan on - sanity.io/syntax. Show Notes 00:07 - Welcome 01:56 Functional vs object - oriented 03:49 Interfaces vs types 05:38 - Tabs vs spaces 07:02 Semicolons vs no - semicolons 08:10 Let vs const 09:33 Do - you explicitly type or allow TypeScript - do it’s magic? 11:26 Naming variables - Naming convention for programming 15:13 - Methods of looping 18:03 if statement - curlys 20:57 Naming files 24:46 Inline - testing vs running test as a process - 25:31 Sponsor: Freshbooks 26:37 CSS - property:val; or property: val; 27:40 - CSS nesting? 29:49 Alphabetizing CSS - properties 31:11 Rems, Ems, PX, Etc… - 33:37 How do you center something in - CSS? 35:22 How do you make something - 100% height? 36:52 Sponsor: Sentry 37:30 - Should comments exist? Better Comments - Wes’ custom parser for VS Code Todo Tree - 42:31 Creating HTML 45:28 Components in - app or in isolation? 47:41 Sponsor: - Sanity 48:45 Single component per file - vs multiple Storybook 50:22 Naming - components 51:19 General stuff 53:55 ××× - SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK - ××× PIIIICKS ××× Scott: Scott’s iPad - case for kids Wes: Garbage can with - custom bags. Shameless Plugs Scott: - LevelUp Tutorials Wes: Wes Bos Tutorials - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 20

      -

      - 58 - min 54 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes try - to stump each other with coding - interview questions like what is a - higher order component? What is - functional programming? And more! Sentry - - Sponsor If you want to know what’s - happening with your code, track errors - and monitor performance with Sentry. - Sentry’s Application Monitoring platform - helps developers see performance issues, - fix errors faster, and optimize their - code health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. Lightstep Incident - Response - Sponsor Streamline on-call, - collaboration, incident management, and - automation with a free 30-day trial of - Lightstep Incident Response, built on - ServiceNow. Usage-based pricing on - active services promotes collaboration - across your entire team to build a - culture of service ownership. Listeners - of Syntax will also receive a free - Lightstep Incident Response T-shirt - after firing an alert or incident. Pay - for the services you use, not the number - of people on your team with Lightstep - Incident Response, built on ServiceNow. - Streamline on-call, collaboration, - incident management, and automation with - a free 30-day trial. Fire an alert or - incident today and receive a free - Lightstep Incident Response t-shirt. - Show Notes 00:26 Welcome 01:47 Sponsor: - Lightstep Incident Response 03:00 - Sponsor: Sentry 04:10 What is a higher - order component? 05:34 What is - functional programming? 09:00 What’s the - purpose of cache busting and how do you - achieve it? Wes’ course for Beginner - JavaScript 10:37 What is short circuit - evaluation? 13:19 What is a closure? - 15:49 What is the reason for wrapping - the contents of a JavaScript source file - in a function that is then invoked? - 17:30 Can you describe how CSS - specificity works? 20:15 How does - prototypal inheritance differ from - classical inheritance? 23:56 What is the - difference between a parameter and an - argument? Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 18

      -

      - 25 - min 46 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Kristi Perreault - of Liberty Mutual about why they’re - using serverless functions, what - languages they write in, managing - security and montoring, and Kristi’s - journey into tech as a career. Hasura - - Sponsor With Hasura, you can get a fully - managed, production-ready GraphQL API as - a service to help you build modern apps - faster. You can get started for free in - 30 seconds, or if you want to try out - the Standard tier for zero cost, use the - code “TryHasura” at this link: - hasura.info. We’ve also got an amazing - selection of GraphQL tutorials at - hasura.io/learn. Stack Overflow Podcast - - Sponsor For over a dozen years, the - Stack Overflow Podcast has been - exploring what it means to be a - developer, and how the art and practice - of software programming is changing our - world. Hosted by Ben Popper, Cassidy - Williams, and Ceora Ford, the Stack - Overflow Podcast is your home for all - things code. Listen to new episodes - twice a week, wherever you get your - podcasts. Lightstep Incident Response - - Sponsor Streamline on-call, - collaboration, incident management, and - automation with a free 30-day trial of - Lightstep Incident Response, built on - ServiceNow. Usage-based pricing on - active services promotes collaboration - across your entire team to build a - culture of service ownership. Listeners - of Syntax will also receive a free - Lightstep Incident Response T-shirt - after firing an alert or incident. Pay - for the services you use, not the number - of people on your team with Lightstep - Incident Response, built on ServiceNow. - Streamline on-call, collaboration, - incident management, and automation with - a free 30-day trial. Fire an alert or - incident today and receive a free - Lightstep Incident Response t-shirt. - Show Notes 00:33 Welcome 03:24 Guest - introduction @kperreault95 Kristi - Perreault on Dev.to Kristi Perreault AWS - Hero Liberty Mutual 04:55 Developers at - Mutual Liberty 07:05 What did you do - before serverless functions? 08:36 Why - are you using serverless functions? - 12:39 What languages are you writing for - serverless functions? 15:53 Sponsor: - Hasura 17:22 Where does all the code - live? 20:58 AWS CDK AWS CDK CDK Workshop - 25:55 Sponsor: Lightstep Incident - Response 27:07 How did you get into - tech? 31:44 How do you organize all the - functions? 33:51 How important is - security? 35:23 What are IM roles? 36:16 - How do you deal with spiking and - monitoring? Datadog Splunk 41:20 - Sponsor: Stackoverflow Podcast 42:02 - Have you used Edge functions? 42:50 - Supper Club Questions Off by None - newsletter Ready Set Cloud ××× SIIIIICK - ××× PIIIICKS ××× Loki on Disney+ - Shameless Plugs Real World Serverless - Podcast Serverless Denver Group AWS - Summits @ServerlessCO Kristi Perreault - on Medium Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 15

      -

      - 56 - min 16 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this potluck episode of Syntax, Wes - and Scott answer your questions about - peer dependencies, Vitest, NVM and PNPM, - using sprites for images, common MongoDB - operations, and more! Prismic - Sponsor - Prismic is a Headless CMS that makes it - easy to build website pages as a set of - components. Break pages into sections of - components using React, Vue, or whatever - you like. Make corresponding Slices in - Prismic. Start building pages - dynamically in minutes. Get started at - prismic.io/syntax. Sanity - Sponsor - Sanity.io is a real-time headless CMS - with a fully customizable Content Studio - built in React. Get a Sanity powered - site up and running in minutes at - sanity.io/create. Get an awesome - supercharged free developer plan on - sanity.io/syntax. LogRocket - Sponsor - LogRocket lets you replay what users do - on your site, helping you reproduce bugs - and fix issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Show Notes 00:03 - Welcome 01:53 Configuring home internet - routers 04:42 Scott’s Home Assistant - update Mushroom Theme 07:52 Could you - explain to me peer-dependencies and how - does it work? 13:24 Using Vitest do you - still have to transpile code? 16:14 Can - you talk about helpful and common - MongoDB operations, beyond just CRUD. - 18:49 How can I update the “updatedAt” - field of the document on every save - automatically? 20:40 What is - aggregation, and when do you use it? - 25:33 Sponsor: Prismic 27:27 How does - NVM relate to PNPM? pnpm nvm 30:45 I’m - looking to upskill from front-end - JavaScript? 33:53 Is it possible to have - a private NPM repo I can “npm install” - from, or do I put my components up on - NPM publicly? Creating a private npm - package 37:51 Sponsor: LogRocket 39:14 - Should a majority of lodash functions be - considered deprecated? angus c just - 42:36 Please do an episode on - programming/learning with ADHD. 44:04 - Should I still be putting images in - sprites? 49:20 Does Mux have a simple - mechanism for adding auth to each video - or group of videos? Mux Create playback - restriction 53:48 Sponsor: Sanity.io - 55:02 Is there copyright issues with - using public APIs? Moneypuck 59:38 ××× - SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK - ××× PIIIICKS ××× Scott: Toto Bidet Wes: - Sodastream Shameless Plugs Scott: - LevelUp Tutorials Wes: Wes Bos Tutorials - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 13

      -

      - 1 - hr 6 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about clamp and interpolate and how you - might want to use them in your next - project. Sentry - Sponsor If you want to - know what’s happening with your code, - track errors and monitor performance - with Sentry. Sentry’s Application - Monitoring platform helps developers see - performance issues, fix errors faster, - and optimize their code health. Cut your - time on error resolution from hours to - minutes. It works with any language and - integrates with dozens of other - services. Syntax listeners new to Sentry - can get two months for free by visiting - Sentry.io and using the coupon code - TASTYTREAT during sign up. NAME - - Sponsor There are hundreds of payments - processing companies out there. Hit up - developer.paymentshub.com/syntax to - learn more about how Payments Hub - Developers not only processes ecommerce - and in-person payments, but also boards - and underwrites your merchants in as - little as 90 minutes. We are currently - offering Syntax listeners who become new - partners 6 months free data through our - Business Reporting API! Show Notes 00:25 - Welcome 00:52 Sponsor: Sentry 01:31 - Sponsor: Payments Hub 02:40 Topic - introduction 05:05 What is Clamp? CSS - clamp: font-size: clamp(1rem, 10vw, - 2rem); JavaScript Clamp: const clamp = - (num, min, max) => - Math.min(Math.max(num, min), max) 09:12 - What is Interpolate? D3 Interpolate - 12:56 Interpolate in colors 14:37 - Quantize D3 Quantize Tweet us your tasty - treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 11

      -

      - 19 - min 11 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Pokey Rule about - using his voice to code, and the current - state of voice coding software. - Stackoverflow Podcast - Sponsor For over - a dozen years, the Stack Overflow - Podcast has been exploring what it means - to be a developer, and how the art and - practice of software programming is - changing our world. Hosted by Ben - Popper, Cassidy Williams, and Ceora - Ford, the Stack Overflow Podcast is your - home for all things code. Listen to new - episodes twice a week, wherever you get - your podcasts. directus - Sponsor - Directus is an open-source data platform - that instantly layers on top of any SQL - database. Our Data Engine empowers - engineers with dynamic REST+GraphQL - APIs, workflow automation, built-in - auth, caching, and asset - transformations. And the included Data - Studio democratizes your database, - allowing even non-technical users to - browse, manage, and visualize database - content through a no-code data - collaboration app. Get started in - minutes with a free Directus Community - Cloud project. Show Notes 00:33 Welcome - 01:35 Guest introduction Con 2021 - - Cursorless: keyboards and mice are sooo - last year!! by Pokey Rule Emily Shea - 05:12 How does coding with your voice - work? Talon Voice Cursorless Talon 09:45 - How do you handle triggering wrong - words? 11:41 Sponsor: The Stack Overflow - Podcast 12:26 Example of voice coding - Parrot 14:21 What are the noises you - make for? 24:29 Working on multiple - lines at the same time 27:37 How do you - decide where the hats go? 31:18 Sponsor: - directus 32:59 What is the community of - users like for this? Tree Sitter - “Incremental, zero-config Code Nav using - stack graphs” by Douglas Creager 35:20 - Does eye tracking work? 36:48 What kind - of mic do you use? DPA Microphone The - Voice Book 39:25 Supper Club questions - Dark Abyss VS Code theme Kinesis - Freestyle 2 Charybdis Nano keyboard - Nexstand Arxiv Sanity Subvocal - Recognition Imagen Research Midjourney - 54:11 ××× SIIIIICK ××× PIIIICKS ××× ××× - SIIIIICK ××× PIIIICKS ××× Git Imerge - Shameless Plugs Scott: LevelUp Tutorials - Wes: Wes Bos Tutorials Pokey: YouTube - channel, Sponsor Pokey on GitHub Tweet - us your tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 8

      -

      - 58 - min 6 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - talk about their experiences speaking at - conferences, why they’ve done it, how - they prepare talks, and tips for anyone - interested in wanting to give talks. - Linode - Sponsor Whether you’re working - on a personal project or managing - enterprise infrastructure, you deserve - simple, affordable, and accessible cloud - computing solutions that allow you to - take your project to the next level. - Simplify your cloud infrastructure with - Linode’s Linux virtual machines and - develop, deploy, and scale your modern - applications faster and easier. Get - started on Linode today with a $100 in - free credit for listeners of Syntax. You - can find all the details at - linode.com/syntax. Linode has 11 global - data centers and provides 24/7/365 human - support with no tiers or hand-offs - regardless of your plan size. In - addition to shared and dedicated compute - instances, you can use your $100 in - credit on S3-compatible object storage, - Managed Kubernetes, and more. Visit - linode.com/syntax and click on the - “Create Free Account” button to get - started. Sentry - Sponsor If you want to - know what’s happening with your code, - track errors and monitor performance - with Sentry. Sentry’s Application - Monitoring platform helps developers see - performance issues, fix errors faster, - and optimize their code health. Cut your - time on error resolution from hours to - minutes. It works with any language and - integrates with dozens of other - services. Syntax listeners new to Sentry - can get two months for free by visiting - Sentry.io and using the coupon code - TASTYTREAT during sign up. Freshbooks - - Sponsor Get a 30 day free trial of - Freshbooks at freshbooks.com/syntax Show - Notes 00:02 Welcome 01:38 Stanley Cup - update 03:13 Legoland update 04:09 Topic - introduction Nicole Sullivan Tweet - looking for questions 05:03 Why speak at - conferences? 08:56 Travelling for free - 09:50 Getting paid to speak at - conferences 12:23 Doing in person - workshops 14:55 How do you get into - speaking? 19:25 Meetups 20:30 Sponsor: - Linode 21:15 What should you speak - about? 26:27 Something you did a deep - dive on 29:21 Sponsor: Freshbooks 30:04 - Flight protection and travel insurance - 32:59 Idea: update to a library 33:28 - How to get conferences to invite you to - speak? 36:03 How do you prepare for a - talk? 42:40 How to find conferences - looking for speakers 44:09 How to create - a topic that will get picked 46:59 - Sponsor: Sentry 48:06 Software for your - slides Slides.js Slides.com MDX Deck - Notion Figma Google Slides Lydia Hallie - Keynote 56:28 ××× SIIIIICK ××× PIIIICKS - ××× ××× SIIIIICK ××× PIIIICKS ××× Scott: - Risk for iOS Wes: Barrina LED T5 - Integrated Single Fixture Shameless - Plugs Scott: LevelUp Tutorials Wes: Wes - Bos Tutorials Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 6

      -

      - 1 - hr 1 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about new CSS color functions, and tips - for viewing the different options and - ways of presenting color that are - coming. Linode - Sponsor Whether you’re - working on a personal project or - managing enterprise infrastructure, you - deserve simple, affordable, and - accessible cloud computing solutions - that allow you to take your project to - the next level. Simplify your cloud - infrastructure with Linode’s Linux - virtual machines and develop, deploy, - and scale your modern applications - faster and easier. Get started on Linode - today with a $100 in free credit for - listeners of Syntax. You can find all - the details at linode.com/syntax. Linode - has 11 global data centers and provides - 24/7/365 human support with no tiers or - hand-offs regardless of your plan size. - In addition to shared and dedicated - compute instances, you can use your $100 - in credit on S3-compatible object - storage, Managed Kubernetes, and more. - Visit linode.com/syntax and click on the - “Create Free Account” button to get - started. Show Notes 00:25 Welcome 01:35 - Sponsor: Linode 02:22 Where the CSS spec - for Color functions are at the moment - 05:13 New CSS Color mix function 10:29 - Color for the color challenged 12:53 - Color contrast function 15:06 - Programatically alter colors Anyone have - a really great CSS Variables color - system strategy? Color for the color - challenged Better color tools the - color-contrast() function Benjamin Moore - Paints as CSS Colours Tweet us your - tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 4

      -

      - 24 - min 5 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Shawn Wang about - his thoughts on developer experience, - why DX is important, and the importance - of learning in public. Hasura - Sponsor - With Hasura, you can get a fully - managed, production-ready GraphQL API as - a service to help you build modern apps - faster. You can get started for free in - 30 seconds, or if you want to try out - the Standard tier for zero cost, use the - code “TryHasura” at this link: - hasura.info. We’ve also got an amazing - selection of GraphQL tutorials at - hasura.io/learn. LogRocket - Sponsor - LogRocket lets you replay what users do - on your site, helping you reproduce bugs - and fix issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Show Notes 00:32 - Welcome 01:56 Guest introduction swyx.io - Why Temporal? 06:09 What is Developer - Experience? Sarah Drasner 08:35 Is VS - Code considered DX? 09:28 Why is - internal DX important? Vercel NextJS - 11:44 Is DX helpful to small - organizations as well? 15:27 Parsimony - Parsimony 16:43 Is productivity the main - focus? 21:09 Sponsor: Hasura 22:48 What - are your thoughts on React? 27:31 - Designing for API success 30:44 Sponsor: - LogRocket 32:07 What is external - developer experience? 36:05 Learning in - public 40:46 Supper Club questions - dx.tips Retreon VS Code Theme Agnoster - ZSH Theme freeCodeCamp Frontend Masters - QConf Learn in Public ××× SIIIIICK ××× - PIIIICKS ××× Scott: The Stormlight - Archive Shameless Plugs Scott: LevelUp - Tutorials Wes: Wes Bos Tutorials Tweet - us your tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jul 1

      -

      - 53 - min 30 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - talk about their tips for better - communication in email, Zoom calls, code - reviews, or asking for help. Sentry - - Sponsor If you want to know what’s - happening with your code, track errors - and monitor performance with Sentry. - Sentry’s Application Monitoring platform - helps developers see performance issues, - fix errors faster, and optimize their - code health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. Sanity - Sponsor - Sanity.io is a real-time headless CMS - with a fully customizable Content Studio - built in React. Get a Sanity powered - site up and running in minutes at - sanity.io/create. Get an awesome - supercharged free developer plan on - sanity.io/syntax. Auth0 - Sponsor Auth0 - is the easiest way for developers to add - authentication and secure their - applications. They provides features - like user management, multi-factor - authentication, and you can even enable - users to login with device biometrics - with something like their fingerprint. - Not to mention, Auth0 has SDKs for your - favorite frameworks like React, Next.js, - and Node/Express. Make sure to sign up - for a free account and give Auth0 a try - with the link below. - https://a0.to/syntax Show Notes 00:10 - Welcome 01:39 Furnace wiring fun Ecobee - Tweet asking for communication tips - 05:37 Email communication SavvyCal - Calendly 15:07 Recognizing a big ask - Simeon Griggs - How to ask for things - 24:01 Sponsor: Sentry 25:52 Code review - communication 30:39 Sponsor: Sanity - 32:22 Sharing information with a video - 35:42 In person or one on ones 39:36 - Video calls Storyboard.fm 40:54 Realize - it’s ok to stop talking 42:27 Sponsor: - Auth0 44:13 Tips from Twitter 53:08 ××× - SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK - ××× PIIIICKS ××× Scott: Drachinifel Wes: - Lepy LP-2020A Hi-Fi Stereo Audio - Shameless Plugs Scott: LevelUp Tutorials - on YouTube Wes: Wes Bos Tutorials Tweet - us your tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 29

      -

      - 59 - min 10 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about the new Browser CSS Page - Transitions API proposal and what - features it opens up for developers on - the web. Prismic - Sponsor Prismic is a - Headless CMS that makes it easy to build - website pages as a set of components. - Break pages into sections of components - using React, Vue, or whatever you like. - Make corresponding Slices in Prismic. - Start building pages dynamically in - minutes. Get started at - prismic.io/syntax. LogRocket - Sponsor - LogRocket lets you replay what users do - on your site, helping you reproduce bugs - and fix issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Show Notes WICG - Shared Element Transitions 00:21 Welcome - 01:33 Sponsor: Prismic 02:43 Sponsor: - LogRocket 04:18 Browser animations on - the web vs native apps 06:15 What is the - targeted use case for it? 06:56 Shared - Element to Root Transitions 11:14 Entry - and Exit 17:33 How to enable this in - Chrome Example Code Shared Element - Transition history Sarah Drasner’s demo - async function doTransition() { let - transition = - document.createDocumentTransition(); // - Specify offered elements. The tag below - is used to refer // to the generated - pseudo elemends in script/CSS. - document.querySelector(".old-message").style.pageTransitionTag - = "message"; // The start() call - triggers an async operation to capture - // snapshots for the offered elements, - await transition.start(async () => { - // This callback is invoked by the - browser when the capture // finishes and - the DOM can be switched to the new - state. // No frames are rendered until - this callback returns. // Asynchronously - load the new page. await - coolFramework.changeTheDOMToPageB(); // - Clear the old message if that element is - still in the page - document.querySelector(".old-message").style.pageTransitionTag - = ""; // Set new message as the shared - element 'message' - document.querySelector(".new-message").style.pageTransitionTag - = "message"; // Set up animations using - WA-API on the next frame. - requestAnimationFrame(() => { - document.documentElement.animate(keyframes, - { ...animationOptions, pseudoElement: - "::page-transition-container(message)", - }); }); // Note that when this callback - finishes, the animations will start with - the tagged elements. }); } Tweet us your - tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 27

      -

      - 20 - min 42 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Tim Leland - - developer of browser extensions like - WeatherExtension and Link Shortener - Extension. Postlight Podcast - Sponsor - Postlight is a strategy, design, and - engineering firm that builds platforms - for some of the biggest organizations in - the world. The Postlight Podcast is - hosted by senior leaders Rich Ziade, - Paul Ford, Gina Trapani, and Chris - LoSacco. If you’re looking for answers - to tough leadership questions, the - Postlight Podcast has you covered. - Listen to new episodes every Tuesday, - wherever you get your podcasts. WP Mail - SMTP - Sponsor Did you know that many - WordPress sites are not properly - configured to send emails? With WP Mail - SMTP, you can easily optimize your site - to send emails, avoid the spam folder, - and make sure your emails land in the - inbox every time. WP Mail SMTP comes - with detailed email logs, email - engagement tracking, visual email - reports, weekly email summaries, - integrations with popular email - providers like SendLayer, Gmail, - Outlook, and more! Try WP Mail SMTP Pro - today and get 50% off or start with - their free version by downloading it - from the WordPress plugin directory. - Show Notes 00:33 Welcome 02:21 Guest - introduction @tim_leland TimLeland.com - WeatherExtension Link Shortener - Extension 03:40 Why develop browser - extensions? 07:58 How did you market - your extensions? 09:43 Where is a Chrome - extension running? Caddy 14:29 What’s - your URL shortener extension? 18:50 - OneLink service 20:30 SSL Domains 21:35 - Sponsor: The Postlight Podcast 23:00 - Maliciousness with URL shorteners 28:26 - How do you come up with ideas? 30:03 - Running Chrome extensions as Firefox - extensions 34:03 Does blogging still - work? 36:38 Sponsor: Sendlayer 37:53 - Supper club questions Tim Leland /uses/ - 45:12 ××× SIIIIICK ××× PIIIICKS ××× - Tchibo Coffee machine Shameless Plugs - Scott: LevelUp Tutorials Wes: Wes Bos - Tutorials Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 24

      -

      - 48 - min 8 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Tasty Treat, Scott and Wes talk - about the current state of home - automation, and the kinds of software - and hardware they’re using in their - homes to automate their lives. Sentry - - Sponsor If you want to know what’s - happening with your code, track errors - and monitor performance with Sentry. - Sentry’s Application Monitoring platform - helps developers see performance issues, - fix errors faster, and optimize their - code health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. Auth0 - Sponsor Auth0 is - the easiest way for developers to add - authentication and secure their - applications. They provides features - like user management, multi-factor - authentication, and you can even enable - users to login with device biometrics - with something like their fingerprint. - Not to mention, Auth0 has SDKs for your - favorite frameworks like React, Next.js, - and Node/Express. Make sure to sign up - for a free account and give Auth0 a try - with the link below. - https://a0.to/syntax Freshbooks - - Sponsor Get a 30 day free trial of - Freshbooks at freshbooks.com/syntax Show - Notes 00:11 Welcome Syntax Ep181 - Automating Stuff 02:18 Protocols 07:35 - Software Homebridge Hoobs Home Assistant - 11:28 Using Homebridge 16:51 Home - Assistant vs Homebridge 24:35 Home - Assistant automations 27:26 Wyze cams - 33:13 Sponsor: Sentry 34:31 Hardware - Philips Hue Leviton Synology Node-RED - Docker Wyze Bridge U-Tec 38:00 Bulbs - 40:24 Buttons Lutron Aurora Smart Bulb - Dimmer Switch Flic Button 42:53 IR - Blasters 45:57 Sensors 47:56 Motion - sensors 52:05 Sponsor: Auth0 53:28 - Switched switches 57:36 Sprinklers 58:54 - NFC /r/Homeassistant Shelly 01:04:03 - Sponsor: Freshbooks 01:05:01 ××× - SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK - ××× PIIIICKS ××× Scott: Severence on - Apple TV+ Wes: INKZALL Shameless Plugs - Scott: LevelUp Tutorials Wes: Wes Bos - Beginner JavaScript Tweet us your tasty - treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 22

      -

      - 1 - hr 9 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - talk about the new viewport units coming - to the web - what are they and when can - we use them? LogRocket - Sponsor - LogRocket lets you replay what users do - on your site, helping you reproduce bugs - and fix issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Sanity.io - - Sponsor Sanity.io is a real-time - headless CMS with a fully customizable - Content Studio built in React. Get a - Sanity powered site up and running in - minutes at sanity.io/create. Get an - awesome supercharged free developer plan - on sanity.io/syntax. Show Notes 00:25 - Welcome 01:14 Sponsor: LogRocket 02:24 - Sponsor: Sanity 04:19 What are viewport - units? The Large and small and dynamic - viewports 05:22 What are the new - viewport units? Large small and dyanmic - viewports 07:57 What’s small and large? - 11:52 How do viewport units help - developers? 12:39 What about the - keyboard on mobile? Keycode.info 16:37 - When can we start using new viewport - units? Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 20

      -

      - 19 - min 24 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk edge functions and - Deno with Eduardo Bouças of Netlify. - Hasura - Sponsor With Hasura, you can - get a fully managed, production-ready - GraphQL API as a service to help you - build modern apps faster. You can get - started for free in 30 seconds, or if - you want to try out the Standard tier - for zero cost, use the code “TryHasura” - at this link: hasura.info. We’ve also - got an amazing selection of GraphQL - tutorials at hasura.io/learn. Postlight - Podcast - Sponsor Postlight is a - strategy, design, and engineering firm - that builds platforms for some of the - biggest organizations in the world. The - Postlight Podcast is hosted by senior - leaders Rich Ziade, Paul Ford, Gina - Trapani, and Chris LoSacco. If you’re - looking for answers to tough leadership - questions, the Postlight Podcast has you - covered. Listen to new episodes every - Tuesday, wherever you get your podcasts. - WP Mail SMTP - Sponsor Did you know that - many WordPress sites are not properly - configured to send emails? With WP Mail - SMTP, you can easily optimize your site - to send emails, avoid the spam folder, - and make sure your emails land in the - inbox every time. WP Mail SMTP comes - with detailed email logs, email - engagement tracking, visual email - reports, weekly email summaries, - integrations with popular email - providers like SendLayer, Gmail, - Outlook, and more! Try WP Mail SMTP Pro - today and get 50% off or start with - their free version by downloading it - from the WordPress plugin directory. - Show Notes 00:36 Welcome 02:31 Who is - Eduardo? EduardoBoucas.com - @eduardoboucas 04:29 What is a - serverless function? 06:42 What is the - edge and an edge function? Edge - Functions Explained Deno 08:41 Sponsor: - Hasura 09:18 The internet is global, and - server locations matter 17:09 Chaining - multiple edge functions 20:18 Sponsor: - WP Mail SMTP 21:18 Why use Deno? 25:06 - What are the limitations of using Deno? - 28:12 Why not run NodeJS servers on the - edge? 30:02 Do you see a future where - people are writing packages that work - anywhere? 32:00 Sponsor: Postlight - Podcast 32:53 What about databases and - serverless functions? Planetscale 38:14 - What language does Netlify use to write - apps in? Netlify Edge Handlers 44:08 - Supper Club questions Warp S Town - Podcast Shameless Plugs Scott: LevelUp - Tutorials Wes: Wes Bos Tutorials Tweet - us your tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 17

      -

      - 55 - min 12 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - answer your questions about headless - WordPress, Regex, their health and - fitness, CSS custom properties in media - queries, and more. Sentry - Sponsor If - you want to know what’s happening with - your code, track errors and monitor - performance with Sentry. Sentry’s - Application Monitoring platform helps - developers see performance issues, fix - errors faster, and optimize their code - health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. Sanity - Sponsor - Sanity.io is a real-time headless CMS - with a fully customizable Content Studio - built in React. Get a Sanity powered - site up and running in minutes at - sanity.io/create. Get an awesome - supercharged free developer plan on - sanity.io/syntax. .TECH Domains - - Sponsor .TECH is taking the tech - industry by storm. A domain that shows - the world what you are all about! If - you’re looking for a domain name for - your startup, portfolio, or your own - project like we did with uses.tech, - check out .tech Domains. Syntax - listeners can snap their .TECH Domains - at 80% off on five-year registration by - visiting go.tech/syntaxistech and using - the coupon code “syntax5”. Show Notes - 00:10 Welcome 03:30 If I host a NextJS - app on Digital Ocean, should I use a - Digital Ocean database? 09:14 Will - either of you ever do a regex course? - Regex101 13:58 Is it possible to use the - WordPress users database as the same - database that the app uses? WPGraphQL - 18:46 Sponsor: Sentry 19:43 How is - health and fitness going for the both of - you? 26:08 Does Wes know who Gendo Ikari - is? 27:36 Dart popularity follow up - 29:40 Is it vital that I should learn - another programming language? 33:42 - Sponsor: Sanity 34:54 If I’m trying to - get my first job in web development, do - I need to be familiar with design - software? Figma 40:01 Thank you for the - confidence to apply for a web dev job - Syntax 463 with Tom Preston-Werner 41:55 - What advice will you give in terms of - setting up core important things around - network, state management, folder - structure? 45:37 .TECH Domain Names - 46:22 I just had an interview with a - “major tech company” and your article on - using string templates was really - helpful. Template Strings 48:43 If 80% - of the time ew need to use - preventDefault on form submission, why - don’t the simply change the HTML spec? - 50:01 What’s the rationale for not - supporting CSS custom properties in - media queries when using max/min width? - CSS Env MDN CSS Env 55:37 ××× SIIIIICK - ××× PIIIICKS ××× ××× SIIIIICK ××× - PIIIICKS ××× Scott: * You Must Remember - This Podcast Wes: Tools Shameless Plugs - Scott: LevelUp Tutorials Wes: Wes Bos - Tutorials Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 15

      -

      - 1 - hr

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about new CSS selectors :has, :where, - and :is. MagicBell - Sponsor MagicBell - is the the notification inbox for your - product. Add a MagicBell to your product - for announcements, billing, workflow, - and other notifications. The free plan - supports up to 100 Monthly Active Users - - use the coupon code SYNTAXFM for 10% - off the first 12 months. LogRocket - - Sponsor LogRocket lets you replay what - users do on your site, helping you - reproduce bugs and fix issues faster. - It’s an exception tracker, a session - re-player and a performance monitor. Get - 14 days free at logrocket.com/syntax. - Show Notes 00:25 Welcome 01:19 Sponsor: - MagicBell 02:31 Sponsor: LogRocket 03:40 - Don’t say stupid 05:03 :Has MDN :Has // - Finds all p tags that have an anchor tag - as a child p:has(a) {} // Can find - children of parent as well // Finds the - button of a paragraph that contains an a - tag p:has(a) button {} // Finds all p - tags that don't have an anchor tag as a - child p:not(:has(a)) {} // Finds all p - tags where a is a direct sibling - p:has(> a) {} // would find Hi // - would not find hi 06:13 Jargon check - 11:01 Some examples 13:25 Nest - navigations 13:51 Can I use it? 15:52 Is - and Where MDN :where In the past we - would write header p:hover, main - p:hover, footer p:hover { color: red; - cursor: pointer; } :where is essentially - a short had for making this easier - considering the 2nd half of these - selectors is the same. Will make your - css dryer :where(header, main, footer) - p:hover {} Also super handy in avoiding - css blocks being ignored for unsupported - features. // Doesn't work div:has(p), - div:some_new_selector(p) // Will still - work for :has if has is supported - :where(div:has(p), - div:some_new_selector(p)) When to use - :Where Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 13

      -

      - 25 - min 22 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Connor Finlayson - about his experience building and - teaching no code projects. Postlight - Podcast - Sponsor Postlight is a - strategy, design, and engineering firm - that builds platforms for some of the - biggest organizations in the world. The - Postlight Podcast is hosted by senior - leaders Rich Ziade, Paul Ford, Gina - Trapani, and Chris LoSacco. If you’re - looking for answers to tough leadership - questions, the Postlight Podcast has you - covered. Listen to new episodes every - Tuesday, wherever you get your podcasts. - SeedProd - Sponsor Our Sponsor for - today’s episode is a popular WordPress - plugin, SeedProd, a fast growing drag - & drop WordPress website builder - that helps you create custom WordPress - themes & page layouts without any - code. Over 1 million websites are using - SeedProd to build WordPress sites - faster. You can start with one of their - hundreds of pre-made website templates - to save time or use the blank canvas to - build a no-code website. It has built-in - email marketing integrations, dynamic - personalization, and many other powerful - features to help you build a fast - WordPress website without writing code. - Try SeedProd Pro today and get 50% off - or start with their free version by - downloading it from the WordPress plugin - directory. Strapi - Sponsor Strapi - enables developers to build projects - faster by providing a customizable API - out of the box and giving them the - freedom to use their favorite tool as it - has both REST and GraphQL endpoints. - Strapi is extensible and frontend - agnostic, built to cover all your - content use cases. Give Strapi a try at - Strapi.io/demo, find your missing - content workflow piece on our - marketplace, and learn more about Strapi - and how it help you on our Youtube. Show - Notes 00:38 Welcome to Syntax 01:54 - Guest introduction Unicorn Factory - ConnorFinlayson.com Connor’s YouTube - channel 04:49 What is no code? 10:57 Is - no code going to replace programmers? - 14:57 Sponsor: Postlight Podcast 15:59 - What are your favorite tools for no - code? Zapier Webflow Make.com Airtable - Memberstack Jetboost Bubble 19:23 When - do you need to use real JavaScript? - 23:23 Where do you find information - about no code? 25:26 Sponsor: SeedProd - 39:25 How do you handle version control? - 43:26 Are there native apps in no code - land? Notion Editor X 46:16 What is - AirTable? 49:36 Cost of no code tools - 52:45 Sponsor: Strapi 53:45 Supperclub - Questions 06:42 Shameless Plugs - CodeMeetsNoCode 09:49 Sick Picks - Flowbase Relume Shameless Plugs Scott: - LevelUp Tutorials Wes: Wes Bos Tutorials - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 10

      -

      - 1 - hr 1 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - are live from Reactathon 2022! Sentry - - Sponsor If you want to know what’s - happening with your code, track errors - and monitor performance with Sentry. - Sentry’s Application Monitoring platform - helps developers see performance issues, - fix errors faster, and optimize their - code health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. Payments Hub - Sponsor - There are hundreds of payments - processing companies out there. Hit up - developer.paymentshub.com/syntax to - learn more about how Payments Hub - Developers not only processes ecommerce - and in-person payments, but also boards - and underwrites your merchants in as - little as 90 minutes. We are currently - offering Syntax listeners who become new - partners 6 months free data through our - Business Reporting API! Freshbooks - - Sponsor Get a 30 day free trial of - Freshbooks at freshbooks.com/syntax Show - Notes Live video version 00:32 Welcome - 04:10 Hot Take Tweets What is your - JavaScript Hot Take or unpopular - opinion? 05:42 Semi colons are not - optional 06:11 For loops are not needed - 07:19 People forget about ES Harmony - 08:11 Sponsor: Sentry 09:23 A good - website should function without - JavaScript 10:28 Classes were a mistake - 10:54 Stay as close to the platform - primatives 11:36 TypeScript is overrated - and overhyped 11:50 Kickin it old school - PNG Fix MM Swap image Rounded Corner - images (sliding Doors) var that = this; - IE CSS Hack Test for Opera var test = - /^function \(/.test([].sort); 25:09 - Sponsor: Payments Hub 26:29 Syntax Error - Mercurius Library 31:19 JS or NAY-S - 39:02 Sponsor: Freshbooks 39:23 Q&A - Syntax episode with Josh Wardle 39:57 - Using Array methods or for loops 41:12 - What web tech is overhyped and what’s - under hyped? 43:01 Would you rather use - Dvorak or Mac butterfly keyboard? 43:41 - Name all provinces and territories in - Canada 44:39 Fav Syntax.fm episode 45:38 - How did Wes and Josh meet? 46:52 What’s - your favorite Trader Joes snack? 47:29 - Would you hire a European or American - developer? 49:04 How would you validate - a product idea for Saas business? 49:48 - What podcasts do you listen to? Steve O - Podcast Shameless Plugs Scott: LevelUp - Tutorials Wes: Wes Bos Tutorials Tweet - us your tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 8

      -

      - 51 - min 15 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about ways to prevent malicious people - from using or abusing your app. Linode - - Sponsor Whether you’re working on a - personal project or managing enterprise - infrastructure, you deserve simple, - affordable, and accessible cloud - computing solutions that allow you to - take your project to the next level. - Simplify your cloud infrastructure with - Linode’s Linux virtual machines and - develop, deploy, and scale your modern - applications faster and easier. Get - started on Linode today with a $100 in - free credit for listeners of Syntax. You - can find all the details at - linode.com/syntax. Linode has 11 global - data centers and provides 24/7/365 human - support with no tiers or hand-offs - regardless of your plan size. In - addition to shared and dedicated compute - instances, you can use your $100 in - credit on S3-compatible object storage, - Managed Kubernetes, and more. Visit - linode.com/syntax and click on the - “Create Free Account” button to get - started. Sentry - Sponsor If you want to - know what’s happening with your code, - track errors and monitor performance - with Sentry. Sentry’s Application - Monitoring platform helps developers see - performance issues, fix errors faster, - and optimize their code health. Cut your - time on error resolution from hours to - minutes. It works with any language and - integrates with dozens of other - services. Syntax listeners new to Sentry - can get two months for free by visiting - Sentry.io and using the coupon code - TASTYTREAT during sign up. Show Notes - 00:26 Welcome 01:04 Sponsor: Linode - 02:06 Sponsor: Sentry 02:59 What kind of - bad things can happen to your - application? 06:24 How do you stop bad - actors? 12:20 Nonce tokens 14:10 CSRF - CSRF Explained 14:50 Captcha hCaptcha - 17:06 DDOS Cloudlfare DDOS 17:38 Ban - known bad ASNS Tweet us your tasty - treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 6

      -

      - 21 - min 37 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Anselm Hannemann - about burning out, trying out gardening, - and how getting away from the screen can - help restore your creative energy. - Hasura - Sponsor With Hasura, you can - get a fully managed, production-ready - GraphQL API as a service to help you - build modern apps faster. You can get - started for free in 30 seconds, or if - you want to try out the Standard tier - for zero cost, use the code “TryHasura” - at this link: hasura.info. We’ve also - got an amazing selection of GraphQL - tutorials at hasura.io/learn. Strapi - - Sponsor Strapi enables developers to - build projects faster by providing a - customizable API out of the box and - giving them the freedom to use their - favorite tool as it has both REST and - GraphQL endpoints. Strapi is extensible - and frontend agnostic, built to cover - all your content use cases. Give Strapi - a try at Strapi.io/demo, find your - missing content workflow piece on our - marketplace, and learn more about Strapi - and how it help you on our Youtube. - SeedProd - Sponsor Our Sponsor for - today’s episode is a popular WordPress - plugin, SeedProd, a fast growing drag - & drop WordPress website builder - that helps you create custom WordPress - themes & page layouts without any - code. Over 1 million websites are using - SeedProd to build WordPress sites - faster. You can start with one of their - hundreds of pre-made website templates - to save time or use the blank canvas to - build a no-code website. It has built-in - email marketing integrations, dynamic - personalization, and many other powerful - features to help you build a fast - WordPress website without writing code. - Try SeedProd Pro today and get 50% off - or start with their free version by - downloading it from the WordPress plugin - directory. Show Notes 00:39 Welcome - 01:58 Guest introduction HelloAnselm.com - Anselm on Twitter Web Development - Reading List Newsletter 10:04 Doing - things yourself as a form of therapy - 14:33 Sponsor: Hasura 16:34 Rules for - digital usage? 19:25 How do you learn - you’re burned out? 26:30 Sponsor: Strapi - 28:10 Gardening Gardening site Garden on - Instagram The Post Apocalyptic Inventor - 29:46 What do you feed your plants? - 34:09 Irrigation issues 35:52 Sponsor: - SeedProd 38:03 Dealing with weeds 40:54 - What about chickens? 44:20 Farming as a - business 45:39 Incorporating tech into - the gardening 54:06 Supper Club - Questions Today I Learned Stefan Judis - Web Design Weekly 59:09 ××× SIIIIICK ××× - PIIIICKS ××× Shameless Plugs Scott: - LevelUp Tutorials Wes: Wes Bos Tutorials - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 3

      -

      - 1 - hr 1 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - talk all about how they use Git inside - of VS Code, extensions they use, and the - various ways to interact with Git in VS - Code. Linode - Sponsor Whether you’re - working on a personal project or - managing enterprise infrastructure, you - deserve simple, affordable, and - accessible cloud computing solutions - that allow you to take your project to - the next level. Simplify your cloud - infrastructure with Linode’s Linux - virtual machines and develop, deploy, - and scale your modern applications - faster and easier. Get started on Linode - today with a $100 in free credit for - listeners of Syntax. You can find all - the details at linode.com/syntax. Linode - has 11 global data centers and provides - 24/7/365 human support with no tiers or - hand-offs regardless of your plan size. - In addition to shared and dedicated - compute instances, you can use your $100 - in credit on S3-compatible object - storage, Managed Kubernetes, and more. - Visit linode.com/syntax and click on the - “Create Free Account” button to get - started. SPONSOR - Sponsor LogRocket - lets you replay what users do on your - site, helping you reproduce bugs and fix - issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. SPONSOR - Sponsor - Get a 30 day free trial of Freshbooks at - freshbooks.com/syntax Show Notes 00:21 - Recording Syntax in Riverside Riverside - 01:22 Welcome 04:57 CLI vs VS Code VS - Code 07:27 Git Jargon 11:50 UI tools - we’ve used Git Tower Git Kraken GitHub - for Desktop iTerm Warp Git SCM 14:09 - Ways to interact with Git in VS Code - 19:41 Source control tab 26:28 Sponsor: - Linode 27:47 File History 30:29 Diffing - or Compare 36:24 Conflict resolution - 42:56 Automation with post-commit - commands 46:10 Sponsor: LogRocket 47:14 - Extensions GitLens Git History Git Graph - Conventional Commits 53:59 Git config - tip 55:24 Sponsor: Freshbooks 56:02 ××× - SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK - ××× PIIIICKS ××× Scott: Espanso Wes: - AirPod cleaning kit Shameless Plugs - Scott: LevelUp Tutorials Wes: Wes Bos - Tutorials Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Jun 1

      -

      - 1 - hr 2 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes - answer a question about caching, cache - control headers, an explanation of the - fields for caching. Sentry - Sponsor If - you want to know what’s happening with - your code, track errors and monitor - performance with Sentry. Sentry’s - Application Monitoring platform helps - developers see performance issues, fix - errors faster, and optimize their code - health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. LogRocket - Sponsor - LogRocket lets you replay what users do - on your site, helping you reproduce bugs - and fix issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Show Notes Time to - live calculator Reminx Conf Opera The - United States of Insanity - Official - Trailer 00:24 Welcome 01:11 Sponsor: - Sentry 02:28 Sponsor: LogRocket 03:08 My - struggle has been with caching, cache - control headers and would love a better - explanation on some of the fields? 04:48 - What is a header? 06:05 What is caching? - 08:21 Time to live (TTL) 09:08 Benefits - of a cache 10:03 Specifying how long to - cache 11:06 max-age 12:45 - stale-while-revalidate 16:17 - stale-if-error 16:54 must-revalidate - 17:21 private 18:03 immutable 19:29 - no-transform 20:45 Cache Control Request - Directives Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 30

      -

      - 25 - min 57 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Tom - Pretson-Werner about his work on - RedwoodJS, the importance of - documentation, and the new Redwood - Startup Fund. AIOSEO - Sponsor Our - Sponsor for today’s episode is a popular - WordPress plugin, AIOSEO, also known as - All in One SEO for WordPress. It’s - becoming one of the most powerful SEO - toolkit and is now used by over 3 - million websites to improve search - rankings. Shipshape (Whiskey, Web and - Whatnot) - Sponsor Whiskey Web and - Whatnot is different than your typical - dev podcast. We show a lighter, more - human side of developers you know and - love, like a fireside chat with your - favorite devs. Past guests include Tom - Preston-Werner, Kent C. Dodds, Charlie - Gerard, and of course Wes Bos! We have - discussed everything from Next.js and - TypeScript to Chuck’s past life as a - blackjack dealer, Cincinnati Chili, the - best casseroles, and of course whiskey! - Show Notes 00:34 Welcome 01:36 Guest - introduction Tom Preston-Werner on - Twitter Kai’s Power Tools 04:23 Math is - weird 07:21 User interface design 08:53 - Sponsor: AIOSEO 10:24 What is RedwoodJS? - RedwoodJS Chatterbug 15:31 Is JavaScript - the stack you should be using these - days? 18:40 Freedom vs decisions in - software Where Good Ideas Come From - 23:10 RedwoodJS docs and video strategy - RedwoodJS Docs Readme Driven Development - 29:13 The tech behind RedwoodJS Apollo - Storybook 36:20 Sponsor: Shipshape - (Whiskey, Web and Whatnot) 36:58 Redwood - Startup Fund The Redwood Startup Fund - 42:28 Supper club questions VS Code - Netlify Hacker News RedwoodJS on Discord - RedwoodJS Discourse RedwoodJS on Twitter - Shameless Plugs Scott: LevelUp Tutorials - Wes: Wes Bos Tutorials Tweet us your - tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 27

      -

      - 58 - min 6 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - talk through TypeScript tooling, build - tools, configs, and editors. LogRocket - - Sponsor LogRocket lets you replay what - users do on your site, helping you - reproduce bugs and fix issues faster. - It’s an exception tracker, a session - re-player and a performance monitor. Get - 14 days free at logrocket.com/syntax. - MagicBell - Sponsor MagicBell is the The - notification inbox for your product. Add - a MagicBell to your product for - announcements, billing, workflow, and - other notifications. The free plan - supports up to 100 Monthly Active Users - - use the coupon code SYNTAXFM for 10% - off the first 12 months. Freshbooks - - Sponsor Get a 30 day free trial of - Freshbooks at freshbooks.com/syntax Show - Notes 00:08 Welcome 01:57 Tooling tsc - esbuild swc bun Zig 13:45 LogRocket - 15:01 Server side or node-ish Deno - ts-node wds 26:09 MagicBell 27:42 Build - tools Vite Parcel Nextjs Svelte Kit Rome - 33:25 Configs tsconfig typescript-eslint - 39:08 Sponsor: Freshbooks 40:00 Editors - VS Code Webstorm 44:58 ××× SIIIIICK ××× - PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS - ××× Scott: Tonie Wes: Burst Toothbrush - Shameless Plugs Scott: LevelUp Tutorials - Wes: Wes Bos Tutorials Tweet us your - tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 25

      -

      - 52 - min 42 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Scott talks - about his new office setup where he - records videos and podcasts, writes - codes, and gets his steps in. Sentry - - Sponsor If you want to know what’s - happening with your code, track errors - and monitor performance with Sentry. - Sentry’s Application Monitoring platform - helps developers see performance issues, - fix errors faster, and optimize their - code health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. Sanity - Sponsor - Sanity.io is a real-time headless CMS - with a fully customizable Content Studio - built in React. Get a Sanity powered - site up and running in minutes at - sanity.io/create. Get an awesome - supercharged free developer plan on - sanity.io/syntax. Show Notes 00:15 - Welcome 01:24 Office ideas Heat pumps on - Technology Connections Neewer lighting - 05:00 Sponsor: Sanity 06:10 Sponsor: - Sentry 07:37 Levelup Lodge tour 09:40 - Lighting 13:57 The desk Karlby - Countertop Fully Jarvis legs Desk Haus - 19:32 Audio gear M-Audio BX8 Gik - Acoustics Nero Scarlett 2i2 Caldigit TS3 - Plus Electrovoice RE20 Cloudlifter cL1 - DBX 286s Sony Alpha 7 III Audeze LCD 1 - 25:25 Tech setup 33:00 Misc items 35:43 - Movie posters Shaw Brothers posters - Shameless Plugs Scott: LevelUp Tutorials - Wes: Wes Bos Tutorials Tweet us your - tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 23

      -

      - 40 - min 17 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Jared Palmer - about Turbo Repo, how it fits in your - tech stack, and what it was like being - acquired by Vercel. Whiskey Web and - Whatnot - Sponsor Whiskey Web and - Whatnot is different than your typical - dev podcast. We show a lighter, more - human side of developers you know and - love, like a fireside chat with your - favorite devs. Past guests include Tom - Preston-Werner, Kent C. Dodds, Charlie - Gerard, and of course Wes Bos! We have - discussed everything from Next.js and - TypeScript to Chuck’s past life as a - blackjack dealer, Cincinnati Chili, the - best casseroles, and of course whiskey! - Show Notes 00:35 Welcome Jared Palmer - 02:15 What is Turbo Repo? Turbo Repo - Vercel tsdx 03:27 Where does Turbo Repo - fit in your stack? 06:04 What are - Google, Meta, or Twitter doing? 15:35 - Sponsor: Whiskey, Web and Whatnot 16:45 - What’s the cost of adding Turbo Repo to - a project? 21:19 Changing based on - environmental variables 23:18 Does this - replace how you define your workplace? - 24:08 How do you share the cache? 25:25 - What don’t you cache? 27:35 What about - Gatsby images? 28:44 Can Turbo Repo help - with re-running compiles? 36:54 Supper - Rapid Fire Questions Oceanic Next GitHub - Dark Kotlin 52:47 Selling Turbo Repo to - Vercel 55:49 Shameless Plugs Shameless - Plugs Scott: LevelUp Tutorials Wes: Wes - Bos Tutorials Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 20

      -

      - 58 - min 1 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this potluck episode of Syntax, Wes - and Scott answer your questions about - protestware, NoSQL, Next.js, the - Syntax.fm website, ESM, Jest, and more! - Prismic - Sponsor Prismic is a Headless - CMS that makes it easy to build website - pages as a set of components. Break - pages into sections of components using - React, Vue, or whatever you like. Make - corresponding Slices in Prismic. Start - building pages dynamically in minutes. - Get started at prismic.io/syntax. - LogRocket - Sponsor LogRocket lets you - replay what users do on your site, - helping you reproduce bugs and fix - issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Auth0 - Sponsor - Auth0 is the easiest way for developers - to add authentication and secure their - applications. They provides features - like user management, multi-factor - authentication, and you can even enable - users to login with device biometrics - with something like their fingerprint. - Not to mention, Auth0 has SDKs for your - favorite frameworks like React, Next.js, - and Node/Express. Make sure to sign up - for a free account and give Auth0 a try - with the link below. - https://a0.to/syntax Show Notes 00:10 - Welcome 01:30 What are the good reasons - to use nextjs apart from personal - preference? 05:15 How did you decide to - build Syntax.fm? Uses.tech 09:09 Why - does my M1 Mac feel slower than my Intel - Mac? 14:44 Do you alphabetize your - larger javascript objects by key name? - 17:14 Sponsor: Prismic 19:06 Why did you - choose noSQL database over SQL databse? - 25:13 What does it mean to support ESM? - 30:23 Sponsor: LogRocket 31:35 Are open - source maintainers doing harm by - inserting protestware into packages? - Protestware found lurking in popular npm - package 40:30 Should I write the game - logic on the backend or on the frontend? - 46:30 Sponsor: Auth0 48:20 Sick Picks - ××× SIIIIICK ××× PIIIICKS ××× Scott: - Eons Mysteries of Time podcast Wes: Mr - Bio Multi cable Shameless Plugs Scott: - LevelUp Tutorials Wes: Wes Bos Tutorials - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 18

      -

      - 53 - min 43 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about why we need Web Interop? Yet - another standards body? Our thoughts on - Serverless, Edge Compute, and more. - Sentry - Sponsor If you want to know - what’s happening with your code, track - errors and monitor performance with - Sentry. Sentry’s Application Monitoring - platform helps developers see - performance issues, fix errors faster, - and optimize their code health. Cut your - time on error resolution from hours to - minutes. It works with any language and - integrates with dozens of other - services. Syntax listeners new to Sentry - can get two months for free by visiting - Sentry.io and using the coupon code - TASTYTREAT during sign up. Sanity - - Sponsor Sanity.io is a real-time - headless CMS with a fully customizable - Content Studio built in React. Get a - Sanity powered site up and running in - minutes at sanity.io/create. Get an - awesome supercharged free developer plan - on sanity.io/syntax. Show Notes 00:23 - Welcome 01:25 Sponsor: Sentry 02:25 - Sponsor: Sanity 04:10 The Syntax Lift - adventure 06:04 A new Community Group - for Web-interoperable JavaScript - runtimes. 07:07 JavaScript environments - 09:19 What’s bun? Bun 13:28 Are we - excited about this? 16:27 What’s the - future of this? Tweet us your tasty - treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 16

      -

      - 21 - min 47 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this supper club episode of Syntax, - Wes and Scott talk with Victor Savkin - about NX Monorepo development. Whiskey - Web and Whatnot - Sponsor Whiskey Web - and Whatnot is different than your - typical dev podcast. We show a lighter, - more human side of developers you know - and love, like a fireside chat with your - favorite devs. Past guests include Tom - Preston-Werner, Kent C. Dodds, Charlie - Gerard, and of course Wes Bos! We have - discussed everything from Next.js and - TypeScript to Chuck’s past life as a - blackjack dealer, Cincinnati Chili, the - best casseroles, and of course whiskey! - Visit whiskeywebandwhatnot.fm or find - them wherever you listen to podcasts. - Strapi - Sponsor Strapi enables - developers to build projects faster by - providing a customizable API out of the - box and giving them the freedom to use - their favorite tool as it has both REST - and GraphQL endpoints. Strapi is - extensible and frontend agnostic, built - to cover all your content use cases. - Give Strapi a try at strapi.io/demo, - find your missing content workflow piece - on our marketplace,and learn more about - Strapi and how it help you on our - Youtube channel. Show Notes 00:29 - Welcome 02:42 Guest introduction 04:07 - What tools did Google use? 10:49 What do - bigger companies use for version - control? 14:40 What is Nx? Nx 21:02 How - does Nx help you upgrade projects? 27:42 - Sponsor: Whiskey Web and Whatnot 28:33 - How does Nx fit into the existing - tooling? 37:27 Sponsor: Strapi 39:02 - Caching and skipping builds 44:50 The - problem with caching 48:44 Is it used - for images or video? 51:40 Small - projects can benefit as well 53:13 - Lightning questions Happy Hacking KB - IntelliJ LunarVim VS Code 02:23 - Shameless Plugs Shameless Plugs Scott: - LevelUp Tutorials Wes: Wes Bos Tutorials - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 13

      -

      - 1 - hr 3 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - talk about 10 browser API’s you might - not be familiar with including - getUserMedia, Resize Observer, - SpeechRecognition, and more! Prismic - - Sponsor Prismic is a Headless CMS that - makes it easy to build website pages as - a set of components. Break pages into - sections of components using React, Vue, - or whatever you like. Make corresponding - Slices in Prismic. Start building pages - dynamically in minutes. Get started at - prismic.io/syntax. LogRocket - Sponsor - LogRocket lets you replay what users do - on your site, helping you reproduce bugs - and fix issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Freshbooks - - Sponsor Get a 30 day free trial of - Freshbooks at freshbooks.com/syntax Show - Notes 00:13 Welcome 01:05 Dishwasher - talk 04:30 getUserMedia Hair.WesBos.com - Javascript 30 07:22 FileSystem Level Up - Tutorials: Browser APIs Electron 12:50 - Geolocation 15:07 Sponsor: Prismic 16:41 - Permissions 22:36 Web Animations Web - Animations API Framer Motion Motion One - 26:31 Resize Observer Resize Observer - API 29:33 Sponsor: LogRocket 30:45 - Clipboard Clipboard API 34:10 Web - storage Web storage 37:11 Sponsor: - Freshbooks 38:09 SpeechSynthesis 41:32 - SpeechRecognition 46:14 ××× SIIIIICK ××× - PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS - ××× Scott: RCA to HDMI adapter Wes: - SlimLED Shameless Plugs Scott: LevelUp - Tutorials Wes: Wes Bos Tutorials Tweet - us your tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 11

      -

      - 1 - hr

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about TypeScript Fundamentals, including - narrowing, discriminating unions, and - type guards. Sentry - Sponsor If you - want to know what’s happening with your - code, track errors and monitor - performance with Sentry. Sentry’s - Application Monitoring platform helps - developers see performance issues, fix - errors faster, and optimize their code - health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. Payments Hub - Sponsor - There are hundreds of payments - processing companies out there. Hit up - developer.paymentshub.com/syntax to - learn more about how Payments Hub - Developers not only processes ecommerce - and in-person payments, but also boards - and underwrites your merchants in as - little as 90 minutes. We are currently - offering Syntax listeners who become new - partners 6 months free data through our - Business Reporting API! Show Notes 00:24 - Welcome 01:35 Sponsor: Sentry 02:23 - Sponsor: Payments Hub 05:21 Intro to - TypeScript fundamentals 06:28 What is - Type Narrowing? 09:32 typeof 11:58 - instanceof 13:29 Custom typeguards 16:12 - this is 17:59 discriminated unions Tweet - us your tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 9

      -

      - 22 - min 36 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - talk about what edge functions are, the - upsides and downsides of edge functions, - and what they’re used for. Linode - - Sponsor Whether you’re working on a - personal project or managing enterprise - infrastructure, you deserve simple, - affordable, and accessible cloud - computing solutions that allow you to - take your project to the next level. - Simplify your cloud infrastructure with - Linode’s Linux virtual machines and - develop, deploy, and scale your modern - applications faster and easier. Get - started on Linode today with a $100 in - free credit for listeners of Syntax. You - can find all the details at - linode.com/syntax. Linode has 11 global - data centers and provides 24/7/365 human - support with no tiers or hand-offs - regardless of your plan size. In - addition to shared and dedicated compute - instances, you can use your $100 in - credit on S3-compatible object storage, - Managed Kubernetes, and more. Visit - linode.com/syntax and click on the - “Create Free Account” button to get - started. LogRocket - Sponsor LogRocket - lets you replay what users do on your - site, helping you reproduce bugs and fix - issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Freshbooks - - Sponsor Get a 30 day free trial of - Freshbooks at freshbooks.com/syntax. - Show Notes 00:10 Welcome 01:56 A big - announcement 04:33 What is the Edge? - 08:27 The upsides of edge functions - 12:13 Cold start 18:21 Sponsor: Linode - 19:24 What are downsides of edge - functions? 27:27 Sponsor: LogRocket - 28:35 What is the use case for an edge - function? 34:52 Authentication 37:23 - Caching 40:51 Are there flavors of edge - functions? 44:00 Sponsor: Freshbooks - 46:06 What are edge functions not used - for? 47:39 What companies offer this? - 50:58 Sick Picks Netlify announcing - serverless compute with edge functions - Syntax 310 Serverless, Deno and - TypeScript with Brian Leroux Vercel - Middleware AWS Lambda ××× SIIIIICK ××× - PIIIICKS ××× Scott: Patented History of - Innovations Wes: Fastmov Precut - Parchment Paper Shameless Plugs Scott: - LevelUp Tutorials Wes: Wes Bos Tutorials - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 4

      -

      - 56 - min 47 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about why people still use Axios over - Fetch, and why people wouldn’t use - Axios. Linode - Sponsor Whether you’re - working on a personal project or - managing enterprise infrastructure, you - deserve simple, affordable, and - accessible cloud computing solutions - that allow you to take your project to - the next level. Simplify your cloud - infrastructure with Linode’s Linux - virtual machines and develop, deploy, - and scale your modern applications - faster and easier. Get started on Linode - today with a $100 in free credit for - listeners of Syntax. You can find all - the details at linode.com/syntax. Linode - has 11 global data centers and provides - 24/7/365 human support with no tiers or - hand-offs regardless of your plan size. - In addition to shared and dedicated - compute instances, you can use your $100 - in credit on S3-compatible object - storage, Managed Kubernetes, and more. - Visit linode.com/syntax and click on the - “Create Free Account” button to get - started. Sentry - Sponsor If you want to - know what’s happening with your code, - track errors and monitor performance - with Sentry. Sentry’s Application - Monitoring platform helps developers see - performance issues, fix errors faster, - and optimize their code health. Cut your - time on error resolution from hours to - minutes. It works with any language and - integrates with dozens of other - services. Syntax listeners new to Sentry - can get two months for free by visiting - Sentry.io and using the coupon code - TASTYTREAT during sign up. Show Notes - 00:22 Welcome Twitter thread of - questions from listeners 01:25 Sponsor: - Linode 02:07 Sponsor: Sentry 03:04 - What’s Axios? Syntax 224 - Serverless - Cloud Functions 04:10 Why someone - wouldn’t use Axios? 07:06 Interceptors - 09:30 Catching expired JWT and renewing - it 10:26 Upload or download progress - events 12:03 Valid status API 13:45 - Defaults 15:32 Custom timeouts Tweet us - your tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - May 2

      -

      - 19 - min 14 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - ask each other hiring questions asked of - JavaScript developers in job interviews. - Kontent by Kentico - Sponsor Kontent by - Kentico is a headless CMS that provides - live editing experience to non-technical - users and hands you the technical tools - to build websites, mobile apps, voice - assistants, or anything else where you - need content. Use REST API or GraphQL - and get your content via the global - Fastly CDN. Designed to unify all your - content and operations, in compliance - with ISO27001 and SOC2Type2 - certifications.Spin up a new project - today and discover Kontent. LogRocket - - Sponsor LogRocket lets you replay what - users do on your site, helping you - reproduce bugs and fix issues faster. - It’s an exception tracker, a session - re-player and a performance monitor. Get - 14 days free at logrocket.com/syntax. - Freshbooks - Sponsor Get a 30 day free - trial of Freshbooks at - freshbooks.com/syntax Show Notes - JavaScript Interview Questions 00:13 - Let’s get STUMP’d 01:08 Cleaning out the - garage 05:05 What are 4 methods - available on weakmap? 07:07 How do you - make an object iterable in JavaScript? - 09:29 How do you make the first letter - of a string into uppercase? 10:26 What - is the typeof operator? 11:53 What are - classes in ES6? 13:21 How do you - enumerate key and value pairs of an - object? 15:44 Kontent by Kentico 17:08 - What is an event queue? 21:05 Why do you - need JSON? 24:49 Why do you need a - promise? 25:45 Explain the range - overflow property 28:21 How do you - return all matching strings against a - matching expression? 30:14 Sponsor: - LogRocket 30:51 What is a thunk - function? 33:46 Can you redeclare let or - const variables? 34:17 What are enhanced - object literals? 35:56 What is the - difference between call, apply, and - bind? 38:52 Sponsor: Freshbooks 39:57 - What are benefits of modules and why - would you need them? 43:50 ××× SIIIIICK - ××× PIIIICKS ××× 48:47 Shameless Plugs - ××× SIIIIICK ××× PIIIICKS ××× Scott: Who - ARTed Podcast Wes: Patio furniture - Shameless Plugs Scott: LevelUp Tutorials - Wes: Wes Bos Tutorials Tweet us your - tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Apr 27

      -

      - 50 - min 41 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about the coupon engines they’ve built - and use on their courses. Prismic - - Sponsor Prismic is a Headless CMS that - makes it easy to build website pages as - a set of components. Break pages into - sections of components using React, Vue, - or whatever you like. Make corresponding - Slices in Prismic. Start building pages - dynamically in minutes. Get started at - prismic.io/syntax. LogRocket - Sponsor - LogRocket lets you replay what users do - on your site, helping you reproduce bugs - and fix issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Show Notes 00:26 - Welcome 01:12 Sponsor: Prismic 02:32 - Sponsor: LogRocket 04:06 What we use for - coupons Stripe Braintree 06:27 Structure - of our coupons 10:43 Products and carts - 13:59 Country validation 15:11 Affiliate - codes 16:36 Chaining rules together - 19:41 Tracking coupons 20:54 - Automatically applied coupons 22:12 - Quick tips for coupons Tweet us your - tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Apr 25

      -

      - 26 - min 18 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this potluck episode of Syntax, Wes - and Scott answer your questions about - working on a team, dealing with imposter - syndrome, animating on the web, using - the table element, landing pages for - apps, and building full stack apps with - NextJS. Sentry - Sponsor If you want to - know what’s happening with your code, - track errors and monitor performance - with Sentry. Sentry’s Application - Monitoring platform helps developers see - performance issues, fix errors faster, - and optimize their code health. Cut your - time on error resolution from hours to - minutes. It works with any language and - integrates with dozens of other - services. Syntax listeners new to Sentry - can get two months for free by visiting - Sentry.io and using the coupon code - TASTYTREAT during sign up. Sanity - - Sponsor Sanity.io is a real-time - headless CMS with a fully customizable - Content Studio built in React. Get a - Sanity powered site up and running in - minutes at sanity.io/create. Get an - awesome supercharged free developer plan - on sanity.io/syntax. Freshbooks - - Sponsor Get a 30 day free trial of - Freshbooks at freshbooks.com/syntax. - Show Notes 00:10 Welcome 01:05 The - mustard bandit podcast 02:54 How can - Developers work with designers and - Product managers seamlessly? 06:37 How - do I deal with imposter syndrome? 10:46 - Any good coffee shops in Denver? 17 of - Denver’s Best Coffee Shops 11:38 Do you - use Table element or CSS Grid for - tabular data? 13:18 How do you manage - animations without a library? Greensock - 17:05 Sponsor: Sentry 18:01 What do you - use for icon libraries? Icons8 Font - Awesome Icons React Icons Flat Icons - 25:10 How do you unregister the service - worker to clear site data? Syntax 346 - - Selling T Shirts 29:15 Sponsor: - Sanity.io 30:47 Since NextJS has API - routes, could you build a full-stack - application using just NextJS? 35:41 Do - you keep your landing pages and home - pages seperate from your app? 37:35 - Where’s the line for moving something - hosted on a developer server to moving - it to production? CodePen Replit Netlify - 41:44 How do you deal with ignorant or - demanding clients? 45:54 As a JS/TS - developer, which other language should I - learn to compliment my skills? Rust PHP - 50:58 Sponsor: Freshbooks 51:49 ××× - SIIIIICK ××× PIIIICKS ××× 58:41 - Shameless Plugs ××× SIIIIICK ××× - PIIIICKS ××× Scott: Glass Drinking - Straws Wes: Lawn Lift Shameless Plugs - Scott: LevelUp Tutorials Wes: Beginner - Javascript Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Apr 20

      -

      - 1 - hr 1 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about Svelte Cubed and working in 3D in - the browser. Prismic - Sponsor Prismic - is a Headless CMS that makes it easy to - build website pages as a set of - components. Break pages into sections of - components using React, Vue, or whatever - you like. Make corresponding Slices in - Prismic. Start building pages - dynamically in minutes. Get started at - prismic.io/syntax. LogRocket - Sponsor - LogRocket lets you replay what users do - on your site, helping you reproduce bugs - and fix issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Show Notes 00:21 - Welcome 01:00 Sponsor: LogRocket 01:41 - Sponsor: Prismic 02:45 Intro to 3D in - the browser Svelte Cubed Getting started - with Svelte Cubed 03:49 Declarative vs - imperative 07:43 How does Three.JS work? - ThreeJS 12:28 Orbit controls 15:47 - Svelte Cannon Svelte Cannon Blender - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Apr 18

      -

      - 20 - min 20 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - answer your questions about multi tenant - apps, JS sprinkles, kids coding, server - error handling, and more. Sentry - - Sponsor If you want to know what’s - happening with your code, track errors - and monitor performance with Sentry. - Sentry’s Application Monitoring platform - helps developers see performance issues, - fix errors faster, and optimize their - code health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. Sanity - Sponsor - Sanity.io is a real-time headless CMS - with a fully customizable Content Studio - built in React. Get a Sanity powered - site up and running in minutes at - sanity.io/create. Get an awesome - supercharged free developer plan on - sanity.io/syntax. Freshbooks - Sponsor - Get a 30 day free trial of Freshbooks at - freshbooks.com/syntax Show Notes 00:26 - Welcome 01:01 Buying a new car Hyundai - Ioniq 5 08:20 What would you recommend - old-school jQuery folks, external agency - vendors, and modern devs that want to - work together? 11:59 Are React - dumb/presentational components only - possible at the leaf components of an - application? 15:35 How old should a kid - be to learn programming? Scratch - Minecraft 20:28 Sponsor: Sentry 21:34 - Without pointing me to a paid error - program like sentry, how do you guys - manage this rabbit hole? 27:05 How do - you judge how much server you need? - MongoDB Atlas Google Pagespeed 31:57 For - websites that aren’t applications how - would you best organize your JavaScript? - 35:17 How do you diagnose slowdowns and - bad user experience? 41:31 Sponsor: - Sanity 43:13 Do you default export your - React components when using TypeScript? - 47:42 Besides web sockets or polling at - a predefined interval and refreshing the - page to fetch new data, can you think of - any Next-specific solutions or recommend - any packages that could help make this - relatively simple? Supabase Firebase - Meteor 52:13 We should look into - ‘tunneling’. 56:42 How do I build a - multi-tenant app? Caddy Server nginx - Approximated.app Vercel offers this via - a middleware Cloudflare SSL for SaaS - 00:56 Sponsor: Freshbooks 01:34 SIIIIICK - ××× PIIIICKS ××× SIIIIICK ××× PIIIICKS - ××× Scott: Vivid Wes: Right angle - Lightning cables Shameless Plugs Scott: - LevelUp Tutorials Wes: Wes Bos Tutorials - Tweet us your tasty treats Scott’s - Instagram LevelUpTutorials Instagram - Wes’ Instagram Wes’ Twitter Wes’ - Facebook Scott’s Twitter Make sure to - include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Apr 13

      -

      - 1 - hr 10 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about their tips and tricks for being - consistent if you’re trying to create. - Sentry - Sponsor If you want to know - what’s happening with your code, track - errors and monitor performance with - Sentry. Sentry’s Application Monitoring - platform helps developers see - performance issues, fix errors faster, - and optimize their code health. Cut your - time on error resolution from hours to - minutes. It works with any language and - integrates with dozens of other - services. Syntax listeners new to Sentry - can get two months for free by visiting - Sentry.io and using the coupon code - TASTYTREAT during sign up. MagicBell - - Sponsor MagicBell is the The - notification inbox for your product. Add - a MagicBell to your product for - announcements, billing, workflow, and - other notifications. The free plan - supports up to 100 Monthly Active Users - - use the coupon code SYNTAXFM for 10% - off the first 12 months. Show Notes - 00:44 String cheese theory 01:49 - Sponsor: Sentry 03:41 Sponsor: MagicBell - 05:26 Being consistent is the key to - success 07:12 Commit to it 09:13 Plan - and schedule 13:42 Being accountable to - someone 18:11 Break things down into - smaller tasks 20:25 Measure goals 22:14 - Revise the plan Tweet us your tasty - treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Apr 11

      -

      - 24 - min 9 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - talk through their process for making - content on the internet for their - YouTube channels, blog posts, courses, - conference talks, and podcasts. Linode - - Sponsor Whether you’re working on a - personal project or managing enterprise - infrastructure, you deserve simple, - affordable, and accessible cloud - computing solutions that allow you to - take your project to the next level. - Simplify your cloud infrastructure with - Linode’s Linux virtual machines and - develop, deploy, and scale your modern - applications faster and easier. Get - started on Linode today with a $100 in - free credit for listeners of Syntax. You - can find all the details at - linode.com/syntax. Linode has 11 global - data centers and provides 24/7/365 human - support with no tiers or hand-offs - regardless of your plan size. In - addition to shared and dedicated compute - instances, you can use your $100 in - credit on S3-compatible object storage, - Managed Kubernetes, and more. Visit - linode.com/syntax and click on the - “Create Free Account” button to get - started. Sanity - Sponsor Sanity.io is a - real-time headless CMS with a fully - customizable Content Studio built in - React. Get a Sanity powered site up and - running in minutes at sanity.io/create. - Get an awesome supercharged free - developer plan on sanity.io/syntax. - LogRocket - Sponsor LogRocket lets you - replay what users do on your site, - helping you reproduce bugs and fix - issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Show Notes 00:09 - Welcome 03:02 Creating YouTube videos - Scott’s YouTube channel 09:42 Conference - talks Notion Stackblitz Reactathon - Raycast 17:05 Sponsor: Linode 17:32 Tech - for making slides 19:37 Courses - how to - decide what to do? 26:44 How Wes breaks - down a course topic 30:00 Arranging a - course layout 33:19 Sponsor: LogRocket - 34:17 Writing blog posts 41:58 Sponsor: - Sanity 43:32 How we organize the podcast - 51:10 SIIIIICK ××× PIIIICKS ××× SIIIIICK - ××× PIIIICKS ××× Scott: ZENOVA Under - Desk Treadmill Walking Pad Wes: Trader - Joe’s Hot Sauce with Yuzu Shameless - Plugs Scott: LevelUp Tutorials Wes: Wes - Bos Tutorials Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Apr 6

      -

      - 58 - min 10 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about a proposal for type syntax in - JavaScript. Linode - Sponsor Whether - you’re working on a personal project or - managing enterprise infrastructure, you - deserve simple, affordable, and - accessible cloud computing solutions - that allow you to take your project to - the next level. Simplify your cloud - infrastructure with Linode’s Linux - virtual machines and develop, deploy, - and scale your modern applications - faster and easier. Get started on Linode - today with a $100 in free credit for - listeners of Syntax. You can find all - the details at linode.com/syntax. Linode - has 11 global data centers and provides - 24/7/365 human support with no tiers or - hand-offs regardless of your plan size. - In addition to shared and dedicated - compute instances, you can use your $100 - in credit on S3-compatible object - storage, Managed Kubernetes, and more. - Visit linode.com/syntax and click on the - “Create Free Account” button to get - started. Sentry - Sponsor If you want to - know what’s happening with your code, - track errors and monitor performance - with Sentry. Sentry’s Application - Monitoring platform helps developers see - performance issues, fix errors faster, - and optimize their code health. Cut your - time on error resolution from hours to - minutes. It works with any language and - integrates with dozens of other - services. Syntax listeners new to Sentry - can get two months for free by visiting - Sentry.io and using the coupon code - TASTYTREAT during sign up. Show Notes - 00:25 Welcome 01:13 Sponsor: Sentry - 02:03 Sponsor: Sentry 02:44 The proposal - announced A proposal for type syntax in - JavaScript Proposal types as comments - 03:24 What are types? 08:33 Types as - comments 10:51 Why not JS Doc? 13:39 - What it looks like 19:02 Possible - downsides 21:37 Why not define a type - system for JS in TC39 instead? Why not - define a type system for JS in TC39 - instead? 22:41 The Proposal vs - Typescript Tweet us your tasty treats - Scott’s Instagram LevelUpTutorials - Instagram Wes’ Instagram Wes’ Twitter - Wes’ Facebook Scott’s Twitter Make sure - to include @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Apr 4

      -

      - 25 - min 33 sec

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this episode of Syntax, Wes and Scott - review your websites that you submitted - including bald.design, Anh Hoang Nguyen, - bradleyshellnut.com, and more. Prismic - - Sponsor NEEDS AUDIO RECORDING FIRST - Prismic is a Headless CMS that makes it - easy to build website pages as a set of - components. Break pages into sections of - components using React, Vue, or whatever - you like. Make corresponding Slices in - Prismic. Start building pages - dynamically in minutes. Get started at - prismic.io/syntax. LogRocket - Sponsor - LogRocket lets you replay what users do - on your site, helping you reproduce bugs - and fix issues faster. It’s an exception - tracker, a session re-player and a - performance monitor. Get 14 days free at - logrocket.com/syntax. Freshbooks - - Sponsor Get a 30 day free trial of - Freshbooks at freshbooks.com/syntax Show - Notes Uses.tech 00:10 Welcome 03:35 How - to submit your site for highlight 04:11 - bald.design https://www.bald.design - 10:38 Anh Hoang Nguyen - https://www.hoanganh.dev 15:08 - kennytye.com https://www.kennytye.com - 22:42 Sponsor: Freshbooks 24:10 - rubenoliveira.tech - http://rubenoliveira.tech 28:47 abgn.me - https://abgn.me 32:02 Sponsor: LogRocket - 33:19 bradleyshellnut.com - https://bradleyshellnut.com 41:11 - hunterjennings.dev - https://www.hunterjennings.dev 46:19:16 - Sponsor: Prismic 47:42:19 - matthewfarlymn.com - https://matthewfarlymn.com 55:00:01 - SIIIIICK ××× PIIIICKS ××× SIIIIICK ××× - PIIIICKS ××× Scott: Bad Vegan Wes: - Shameless Plugs Scott: LevelUp Tutorials - Wes: Wes Bos Tutorials Tweet us your - tasty treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Mar 30

      -

      - 1 - hr 1 min

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      -

      - In this Hasty Treat, Scott and Wes talk - about Vitest, how testing is handled, - how code coverage works, and whether - they think they’ll use it. Sentry - - Sponsor If you want to know what’s - happening with your code, track errors - and monitor performance with Sentry. - Sentry’s Application Monitoring platform - helps developers see performance issues, - fix errors faster, and optimize their - code health. Cut your time on error - resolution from hours to minutes. It - works with any language and integrates - with dozens of other services. Syntax - listeners new to Sentry can get two - months for free by visiting Sentry.io - and using the coupon code TASTYTREAT - during sign up. MagicBell - Sponsor - MagicBell is the The notification inbox - for your product. Add a MagicBell to - your product for announcements, billing, - workflow, and other notifications. The - free plan supports up to 100 Monthly - Active Users - use the coupon code - SYNTAXFM for 10% off the first 12 - months. Show Notes 00:21 Welcome 02:47 - Sponsor: Sentry 03:48 Sponsor: MagicBell - 04:55 What’s is Vitest? 09:06 How is - testing handled? 10:59 HappyDOM 14:13 - Code coverage baked in 16:25 Files - acting as folders Tweet us your tasty - treats Scott’s Instagram - LevelUpTutorials Instagram Wes’ - Instagram Wes’ Twitter Wes’ Facebook - Scott’s Twitter Make sure to include - @SyntaxFM in your tweets

      -
      -
      -
      -
      -

      - Mar 28

      -
      -

      - - 21 min 22 sec left

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - - - - + } +} +#onetrust-pc-sdk.otPcCenter{overflow:hidden;position:fixed;margin:0 auto;top:5%;right:0;left:0;width:40%;max-width:575px;min-width:575px;border-radius:2.5px;z-index:2147483647;background-color:#fff;-webkit-box-shadow:0px 2px 10px -3px #999;-moz-box-shadow:0px 2px 10px -3px #999;box-shadow:0px 2px 10px -3px #999}#onetrust-pc-sdk.otPcCenter[dir=rtl]{right:0;left:0}#onetrust-pc-sdk.otRelFont{font-size:1rem}#onetrust-pc-sdk .ot-optout-signal{margin-top:.625rem}#onetrust-pc-sdk #ot-addtl-venlst .ot-arw-cntr,#onetrust-pc-sdk #ot-addtl-venlst .ot-plus-minus,#onetrust-pc-sdk .ot-hide-tgl{visibility:hidden}#onetrust-pc-sdk #ot-addtl-venlst .ot-arw-cntr *,#onetrust-pc-sdk #ot-addtl-venlst .ot-plus-minus *,#onetrust-pc-sdk .ot-hide-tgl *{visibility:hidden}#onetrust-pc-sdk #ot-gn-venlst .ot-ven-item .ot-acc-hdr{min-height:40px}#onetrust-pc-sdk .ot-pc-header{height:39px;padding:10px 0 10px 30px;border-bottom:1px solid #e9e9e9}#onetrust-pc-sdk #ot-pc-title,#onetrust-pc-sdk #ot-category-title,#onetrust-pc-sdk .ot-cat-header,#onetrust-pc-sdk #ot-lst-title,#onetrust-pc-sdk .ot-ven-hdr .ot-ven-name,#onetrust-pc-sdk .ot-always-active{font-weight:bold;color:dimgray}#onetrust-pc-sdk .ot-always-active-group .ot-cat-header{width:55%;font-weight:700}#onetrust-pc-sdk .ot-cat-item p{clear:both;float:left;margin-top:10px;margin-bottom:5px;line-height:1.5;font-size:.812em;color:dimgray}#onetrust-pc-sdk .ot-close-icon{height:44px;width:44px;background-size:10px}#onetrust-pc-sdk #ot-pc-title{float:left;font-size:1em;line-height:1.5;margin-bottom:10px;margin-top:10px;width:100%}#onetrust-pc-sdk #accept-recommended-btn-handler{margin-right:10px;margin-bottom:25px;outline-offset:-1px}#onetrust-pc-sdk #ot-pc-desc{clear:both;width:100%;font-size:.812em;line-height:1.5;margin-bottom:25px}#onetrust-pc-sdk #ot-pc-desc a{margin-left:5px}#onetrust-pc-sdk #ot-pc-desc *{font-size:inherit;line-height:inherit}#onetrust-pc-sdk #ot-pc-desc ul li{padding:10px 0px}#onetrust-pc-sdk a{color:#656565;cursor:pointer}#onetrust-pc-sdk a:hover{color:#3860be}#onetrust-pc-sdk label{margin-bottom:0}#onetrust-pc-sdk #vdr-lst-dsc{font-size:.812em;line-height:1.5;padding:10px 15px 5px 15px}#onetrust-pc-sdk button{max-width:394px;padding:12px 30px;line-height:1;word-break:break-word;word-wrap:break-word;white-space:normal;font-weight:bold;height:auto}#onetrust-pc-sdk .ot-link-btn{padding:0;margin-bottom:0;border:0;font-weight:normal;line-height:normal;width:auto;height:auto}#onetrust-pc-sdk #ot-pc-content{position:absolute;overflow-y:scroll;padding-left:0px;padding-right:30px;top:60px;bottom:110px;margin:1px 3px 0 30px;width:calc(100% - 63px)}#onetrust-pc-sdk .ot-vs-list .ot-always-active,#onetrust-pc-sdk .ot-cat-grp .ot-always-active{float:right;clear:none;color:#3860be;margin:0;font-size:.813em;line-height:1.3}#onetrust-pc-sdk .ot-pc-scrollbar::-webkit-scrollbar-track{margin-right:20px}#onetrust-pc-sdk .ot-pc-scrollbar::-webkit-scrollbar{width:11px}#onetrust-pc-sdk .ot-pc-scrollbar::-webkit-scrollbar-thumb{border-radius:10px;background:#d8d8d8}#onetrust-pc-sdk input[type=checkbox]:focus+.ot-acc-hdr{outline:#000 1px solid}#onetrust-pc-sdk .ot-pc-scrollbar{scrollbar-arrow-color:#d8d8d8;scrollbar-darkshadow-color:#d8d8d8;scrollbar-face-color:#d8d8d8;scrollbar-shadow-color:#d8d8d8}#onetrust-pc-sdk .save-preference-btn-handler{margin-right:20px}#onetrust-pc-sdk .ot-pc-refuse-all-handler{margin-right:10px}#onetrust-pc-sdk #ot-pc-desc .privacy-notice-link{margin-left:0;margin-right:8px}#onetrust-pc-sdk #ot-pc-desc .ot-imprint-handler{margin-left:0;margin-right:8px}#onetrust-pc-sdk .ot-subgrp-cntr{display:inline-block;clear:both;width:100%;padding-top:15px}#onetrust-pc-sdk .ot-switch+.ot-subgrp-cntr{padding-top:10px}#onetrust-pc-sdk ul.ot-subgrps{margin:0;font-size:initial}#onetrust-pc-sdk ul.ot-subgrps li p,#onetrust-pc-sdk ul.ot-subgrps li h5{font-size:.813em;line-height:1.4;color:dimgray}#onetrust-pc-sdk ul.ot-subgrps .ot-switch{min-height:auto}#onetrust-pc-sdk ul.ot-subgrps .ot-switch-nob{top:0}#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr{display:inline-block;width:100%}#onetrust-pc-sdk ul.ot-subgrps .ot-acc-txt{margin:0}#onetrust-pc-sdk ul.ot-subgrps li{padding:0;border:none}#onetrust-pc-sdk ul.ot-subgrps li h5{position:relative;top:5px;font-weight:bold;margin-bottom:0;float:left}#onetrust-pc-sdk li.ot-subgrp{margin-left:20px;overflow:auto}#onetrust-pc-sdk li.ot-subgrp>h5{width:calc(100% - 100px)}#onetrust-pc-sdk .ot-cat-item p>ul,#onetrust-pc-sdk li.ot-subgrp p>ul{margin:0px;list-style:disc;margin-left:15px;font-size:inherit}#onetrust-pc-sdk .ot-cat-item p>ul li,#onetrust-pc-sdk li.ot-subgrp p>ul li{font-size:inherit;padding-top:10px;padding-left:0px;padding-right:0px;border:none}#onetrust-pc-sdk .ot-cat-item p>ul li:last-child,#onetrust-pc-sdk li.ot-subgrp p>ul li:last-child{padding-bottom:10px}#onetrust-pc-sdk .ot-pc-logo{height:40px;width:120px}#onetrust-pc-sdk .ot-pc-footer{position:absolute;bottom:0px;width:100%;max-height:160px;border-top:1px solid #d8d8d8}#onetrust-pc-sdk.ot-ftr-stacked .ot-pc-refuse-all-handler{margin-bottom:0px}#onetrust-pc-sdk.ot-ftr-stacked #ot-pc-content{bottom:160px}#onetrust-pc-sdk.ot-ftr-stacked .ot-pc-footer button{width:100%;max-width:none}#onetrust-pc-sdk.ot-ftr-stacked .ot-btn-container{margin:0 30px;width:calc(100% - 60px);padding-right:0}#onetrust-pc-sdk .ot-pc-footer-logo{height:30px;width:100%;text-align:right;background:#f4f4f4}#onetrust-pc-sdk .ot-pc-footer-logo a{display:inline-block;margin-top:5px;margin-right:10px}#onetrust-pc-sdk[dir=rtl] .ot-pc-footer-logo{direction:rtl}#onetrust-pc-sdk[dir=rtl] .ot-pc-footer-logo a{margin-right:25px}#onetrust-pc-sdk .ot-tgl{float:right;position:relative;z-index:1}#onetrust-pc-sdk .ot-tgl input:checked+.ot-switch .ot-switch-nob{background-color:#cddcf2;border:1px solid #3860be}#onetrust-pc-sdk .ot-tgl input:checked+.ot-switch .ot-switch-nob:before{-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px);background-color:#3860be;border-color:#3860be}#onetrust-pc-sdk .ot-tgl input:focus+.ot-switch{outline:#000 solid 1px}#onetrust-pc-sdk .ot-switch{position:relative;display:inline-block;width:45px;height:25px}#onetrust-pc-sdk .ot-switch-nob{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#f2f1f1;border:1px solid #ddd;transition:all .2s ease-in 0s;-moz-transition:all .2s ease-in 0s;-o-transition:all .2s ease-in 0s;-webkit-transition:all .2s ease-in 0s;border-radius:20px}#onetrust-pc-sdk .ot-switch-nob:before{position:absolute;content:"";height:21px;width:21px;bottom:1px;background-color:#7d7d7d;-webkit-transition:.4s;transition:.4s;border-radius:20px}#onetrust-pc-sdk .ot-chkbox input:checked~label::before{background-color:#3860be}#onetrust-pc-sdk .ot-chkbox input+label::after{content:none;color:#fff}#onetrust-pc-sdk .ot-chkbox input:checked+label::after{content:""}#onetrust-pc-sdk .ot-chkbox input:focus+label::before{outline-style:solid;outline-width:2px;outline-style:auto}#onetrust-pc-sdk .ot-chkbox label{position:relative;display:inline-block;padding-left:30px;cursor:pointer;font-weight:500}#onetrust-pc-sdk .ot-chkbox label::before,#onetrust-pc-sdk .ot-chkbox label::after{position:absolute;content:"";display:inline-block;border-radius:3px}#onetrust-pc-sdk .ot-chkbox label::before{height:18px;width:18px;border:1px solid #3860be;left:0px;top:auto}#onetrust-pc-sdk .ot-chkbox label::after{height:5px;width:9px;border-left:3px solid;border-bottom:3px solid;transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);left:4px;top:5px}#onetrust-pc-sdk .ot-label-txt{display:none}#onetrust-pc-sdk .ot-chkbox input,#onetrust-pc-sdk .ot-tgl input{position:absolute;opacity:0;width:0;height:0}#onetrust-pc-sdk .ot-arw-cntr{float:right;position:relative;pointer-events:none}#onetrust-pc-sdk .ot-arw-cntr .ot-arw{width:16px;height:16px;margin-left:5px;color:dimgray;display:inline-block;vertical-align:middle;-webkit-transition:all 150ms ease-in 0s;-moz-transition:all 150ms ease-in 0s;-o-transition:all 150ms ease-in 0s;transition:all 150ms ease-in 0s}#onetrust-pc-sdk input:checked~.ot-acc-hdr .ot-arw,#onetrust-pc-sdk button[aria-expanded=true]~.ot-acc-hdr .ot-arw-cntr svg{transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg)}#onetrust-pc-sdk input[type=checkbox]:focus+.ot-acc-hdr{outline:#000 1px solid}#onetrust-pc-sdk .ot-tgl-cntr,#onetrust-pc-sdk .ot-arw-cntr{display:inline-block}#onetrust-pc-sdk .ot-tgl-cntr{width:45px;float:right;margin-top:2px}#onetrust-pc-sdk #ot-lst-cnt .ot-tgl-cntr{margin-top:10px}#onetrust-pc-sdk .ot-always-active-subgroup{width:auto;padding-left:0px !important;top:3px;position:relative}#onetrust-pc-sdk .ot-label-status{padding-left:5px;font-size:.75em;display:none}#onetrust-pc-sdk .ot-arw-cntr{margin-top:-1px}#onetrust-pc-sdk .ot-arw-cntr svg{-webkit-transition:all 300ms ease-in 0s;-moz-transition:all 300ms ease-in 0s;-o-transition:all 300ms ease-in 0s;transition:all 300ms ease-in 0s;height:10px;width:10px}#onetrust-pc-sdk input:checked~.ot-acc-hdr .ot-arw{transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg)}#onetrust-pc-sdk .ot-arw{width:10px;margin-left:15px;transition:all 300ms ease-in 0s;-webkit-transition:all 300ms ease-in 0s;-moz-transition:all 300ms ease-in 0s;-o-transition:all 300ms ease-in 0s}#onetrust-pc-sdk .ot-vlst-cntr{margin-bottom:0}#onetrust-pc-sdk .ot-hlst-cntr{margin-top:5px;display:inline-block;width:100%}#onetrust-pc-sdk .category-vendors-list-handler,#onetrust-pc-sdk .category-vendors-list-handler+a,#onetrust-pc-sdk .category-host-list-handler{clear:both;color:#3860be;margin-left:0;font-size:.813em;text-decoration:none;float:left;overflow:hidden}#onetrust-pc-sdk .category-vendors-list-handler:hover,#onetrust-pc-sdk .category-vendors-list-handler+a:hover,#onetrust-pc-sdk .category-host-list-handler:hover{text-decoration-line:underline}#onetrust-pc-sdk .category-vendors-list-handler+a{clear:none}#onetrust-pc-sdk .ot-vlst-cntr .ot-ext-lnk,#onetrust-pc-sdk .ot-ven-hdr .ot-ext-lnk{display:inline-block;height:13px;width:13px;background-repeat:no-repeat;margin-left:1px;margin-top:6px;cursor:pointer}#onetrust-pc-sdk .ot-ven-hdr .ot-ext-lnk{margin-bottom:-1px}#onetrust-pc-sdk .back-btn-handler{font-size:1em;text-decoration:none}#onetrust-pc-sdk .back-btn-handler:hover{opacity:.6}#onetrust-pc-sdk #ot-lst-title h3{display:inline-block;word-break:break-word;word-wrap:break-word;margin-bottom:0;color:#656565;font-size:1em;font-weight:bold;margin-left:15px}#onetrust-pc-sdk #ot-lst-title{margin:10px 0 10px 0px;font-size:1em;text-align:left}#onetrust-pc-sdk #ot-pc-hdr{margin:0 0 0 30px;height:auto;width:auto}#onetrust-pc-sdk #ot-pc-hdr input::placeholder{color:#d4d4d4;font-style:italic}#onetrust-pc-sdk #vendor-search-handler{height:31px;width:100%;border-radius:50px;font-size:.8em;padding-right:35px;padding-left:15px;float:left;margin-left:15px}#onetrust-pc-sdk .ot-ven-name{display:block;width:auto;padding-right:5px}#onetrust-pc-sdk #ot-lst-cnt{overflow-y:auto;margin-left:20px;margin-right:7px;width:calc(100% - 27px);max-height:calc(100% - 80px);height:100%;transform:translate3d(0, 0, 0)}#onetrust-pc-sdk #ot-pc-lst{width:100%;bottom:100px;position:absolute;top:60px}#onetrust-pc-sdk #ot-pc-lst:not(.ot-enbl-chr) .ot-tgl-cntr .ot-arw-cntr,#onetrust-pc-sdk #ot-pc-lst:not(.ot-enbl-chr) .ot-tgl-cntr .ot-arw-cntr *{visibility:hidden}#onetrust-pc-sdk #ot-pc-lst .ot-tgl-cntr{right:12px;position:absolute}#onetrust-pc-sdk #ot-pc-lst .ot-arw-cntr{float:right;position:relative}#onetrust-pc-sdk #ot-pc-lst .ot-arw{margin-left:10px}#onetrust-pc-sdk #ot-pc-lst .ot-acc-hdr{overflow:hidden;cursor:pointer}#onetrust-pc-sdk .ot-vlst-cntr{overflow:hidden}#onetrust-pc-sdk #ot-sel-blk{overflow:hidden;width:100%;position:sticky;position:-webkit-sticky;top:0;z-index:3}#onetrust-pc-sdk #ot-back-arw{height:12px;width:12px}#onetrust-pc-sdk .ot-lst-subhdr{width:100%;display:inline-block}#onetrust-pc-sdk .ot-search-cntr{float:left;width:78%;position:relative}#onetrust-pc-sdk .ot-search-cntr>svg{width:30px;height:30px;position:absolute;float:left;right:-15px}#onetrust-pc-sdk .ot-fltr-cntr{float:right;right:50px;position:relative}#onetrust-pc-sdk #filter-btn-handler{background-color:#3860be;border-radius:17px;display:inline-block;position:relative;width:32px;height:32px;-moz-transition:.1s ease;-o-transition:.1s ease;-webkit-transition:1s ease;transition:.1s ease;padding:0;margin:0}#onetrust-pc-sdk #filter-btn-handler:hover{background-color:#3860be}#onetrust-pc-sdk #filter-btn-handler svg{width:12px;height:12px;margin:3px 10px 0 10px;display:block;position:static;right:auto;top:auto}#onetrust-pc-sdk .ot-ven-link,#onetrust-pc-sdk .ot-ven-legclaim-link{color:#3860be;text-decoration:none;font-weight:100;display:inline-block;padding-top:10px;transform:translate(0, 1%);-o-transform:translate(0, 1%);-ms-transform:translate(0, 1%);-webkit-transform:translate(0, 1%);position:relative;z-index:2}#onetrust-pc-sdk .ot-ven-link *,#onetrust-pc-sdk .ot-ven-legclaim-link *{font-size:inherit}#onetrust-pc-sdk .ot-ven-link:hover,#onetrust-pc-sdk .ot-ven-legclaim-link:hover{text-decoration:underline}#onetrust-pc-sdk .ot-ven-hdr{width:calc(100% - 160px);height:auto;float:left;word-break:break-word;word-wrap:break-word;vertical-align:middle;padding-bottom:3px}#onetrust-pc-sdk .ot-ven-link,#onetrust-pc-sdk .ot-ven-legclaim-link{letter-spacing:.03em;font-size:.75em;font-weight:400}#onetrust-pc-sdk .ot-ven-dets{border-radius:2px;background-color:#f8f8f8}#onetrust-pc-sdk .ot-ven-dets li:first-child p:first-child{border-top:none}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc:not(:first-child){border-top:1px solid #ddd !important}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc:nth-child(n+3) p{display:inline-block}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc:nth-child(n+3) p:nth-of-type(odd){width:30%}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc:nth-child(n+3) p:nth-of-type(even){width:50%;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc p,#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc h4{padding-top:5px;padding-bottom:5px;display:block}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc h4{display:inline-block}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc p:nth-last-child(-n+1){padding-bottom:10px}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc p:nth-child(-n+2):not(.disc-pur){padding-top:10px}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc .disc-pur-cont{display:inline}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc .disc-pur{position:relative;width:50% !important;word-break:break-word;word-wrap:break-word;left:calc(30% + 17px)}#onetrust-pc-sdk .ot-ven-dets .ot-ven-disc .disc-pur:nth-child(-n+1){position:static}#onetrust-pc-sdk .ot-ven-dets p,#onetrust-pc-sdk .ot-ven-dets h4,#onetrust-pc-sdk .ot-ven-dets span{font-size:.69em;text-align:left;vertical-align:middle;word-break:break-word;word-wrap:break-word;margin:0;padding-bottom:10px;padding-left:15px;color:#2e3644}#onetrust-pc-sdk .ot-ven-dets h4{padding-top:5px}#onetrust-pc-sdk .ot-ven-dets span{color:dimgray;padding:0;vertical-align:baseline}#onetrust-pc-sdk .ot-ven-dets .ot-ven-pur h4{border-top:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9;padding-bottom:5px;margin-bottom:5px;font-weight:bold}#onetrust-pc-sdk #ot-host-lst .ot-sel-all{float:right;position:relative;margin-right:42px;top:10px}#onetrust-pc-sdk #ot-host-lst .ot-sel-all input[type=checkbox]{width:auto;height:auto}#onetrust-pc-sdk #ot-host-lst .ot-sel-all label{height:20px;width:20px;padding-left:0px}#onetrust-pc-sdk #ot-host-lst .ot-acc-txt{overflow:hidden;width:95%}#onetrust-pc-sdk .ot-host-hdr{position:relative;z-index:1;pointer-events:none;width:calc(100% - 125px);float:left}#onetrust-pc-sdk .ot-host-name,#onetrust-pc-sdk .ot-host-desc{display:inline-block;width:90%}#onetrust-pc-sdk .ot-host-name{pointer-events:none}#onetrust-pc-sdk .ot-host-hdr>a{text-decoration:underline;font-size:.82em;position:relative;z-index:2;float:left;margin-bottom:5px;pointer-events:initial}#onetrust-pc-sdk .ot-host-name+a{margin-top:5px}#onetrust-pc-sdk .ot-host-name,#onetrust-pc-sdk .ot-host-name a,#onetrust-pc-sdk .ot-host-desc,#onetrust-pc-sdk .ot-host-info{color:dimgray;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk .ot-host-name,#onetrust-pc-sdk .ot-host-name a{font-weight:bold;font-size:.82em;line-height:1.3}#onetrust-pc-sdk .ot-host-name a{font-size:1em}#onetrust-pc-sdk .ot-host-expand{margin-top:3px;margin-bottom:3px;clear:both;display:block;color:#3860be;font-size:.72em;font-weight:normal}#onetrust-pc-sdk .ot-host-expand *{font-size:inherit}#onetrust-pc-sdk .ot-host-desc,#onetrust-pc-sdk .ot-host-info{font-size:.688em;line-height:1.4;font-weight:normal}#onetrust-pc-sdk .ot-host-desc{margin-top:10px}#onetrust-pc-sdk .ot-host-opt{margin:0;font-size:inherit;display:inline-block;width:100%}#onetrust-pc-sdk .ot-host-opt li>div div{font-size:.8em;padding:5px 0}#onetrust-pc-sdk .ot-host-opt li>div div:nth-child(1){width:30%;float:left}#onetrust-pc-sdk .ot-host-opt li>div div:nth-child(2){width:70%;float:left;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk .ot-host-info{border:none;display:inline-block;width:calc(100% - 10px);padding:10px;margin-bottom:10px;background-color:#f8f8f8}#onetrust-pc-sdk .ot-host-info>div{overflow:auto}#onetrust-pc-sdk #no-results{text-align:center;margin-top:30px}#onetrust-pc-sdk #no-results p{font-size:1em;color:#2e3644;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk #no-results p span{font-weight:bold}#onetrust-pc-sdk #ot-fltr-modal{width:100%;height:auto;display:none;-moz-transition:.2s ease;-o-transition:.2s ease;-webkit-transition:2s ease;transition:.2s ease;overflow:hidden;opacity:1;right:0}#onetrust-pc-sdk #ot-fltr-modal .ot-label-txt{display:inline-block;font-size:.85em;color:dimgray}#onetrust-pc-sdk #ot-fltr-cnt{z-index:2147483646;background-color:#fff;position:absolute;height:90%;max-height:300px;width:325px;left:210px;margin-top:10px;margin-bottom:20px;padding-right:10px;border-radius:3px;-webkit-box-shadow:0px 0px 12px 2px #c7c5c7;-moz-box-shadow:0px 0px 12px 2px #c7c5c7;box-shadow:0px 0px 12px 2px #c7c5c7}#onetrust-pc-sdk .ot-fltr-scrlcnt{overflow-y:auto;overflow-x:hidden;clear:both;max-height:calc(100% - 60px)}#onetrust-pc-sdk #ot-anchor{border:12px solid rgba(0,0,0,0);display:none;position:absolute;z-index:2147483647;right:55px;top:75px;transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);background-color:#fff;-webkit-box-shadow:-3px -3px 5px -2px #c7c5c7;-moz-box-shadow:-3px -3px 5px -2px #c7c5c7;box-shadow:-3px -3px 5px -2px #c7c5c7}#onetrust-pc-sdk .ot-fltr-btns{margin-left:15px}#onetrust-pc-sdk #filter-apply-handler{margin-right:15px}#onetrust-pc-sdk .ot-fltr-opt{margin-bottom:25px;margin-left:15px;width:75%;position:relative}#onetrust-pc-sdk .ot-fltr-opt p{display:inline-block;margin:0;font-size:.9em;color:#2e3644}#onetrust-pc-sdk .ot-chkbox label span{font-size:.85em;color:dimgray}#onetrust-pc-sdk .ot-chkbox input[type=checkbox]+label::after{content:none;color:#fff}#onetrust-pc-sdk .ot-chkbox input[type=checkbox]:checked+label::after{content:""}#onetrust-pc-sdk .ot-chkbox input[type=checkbox]:focus+label::before{outline-style:solid;outline-width:2px;outline-style:auto}#onetrust-pc-sdk #ot-selall-vencntr,#onetrust-pc-sdk #ot-selall-adtlvencntr,#onetrust-pc-sdk #ot-selall-hostcntr,#onetrust-pc-sdk #ot-selall-licntr,#onetrust-pc-sdk #ot-selall-gnvencntr{right:15px;position:relative;width:20px;height:20px;float:right}#onetrust-pc-sdk #ot-selall-vencntr label,#onetrust-pc-sdk #ot-selall-adtlvencntr label,#onetrust-pc-sdk #ot-selall-hostcntr label,#onetrust-pc-sdk #ot-selall-licntr label,#onetrust-pc-sdk #ot-selall-gnvencntr label{float:left;padding-left:0}#onetrust-pc-sdk #ot-ven-lst:first-child{border-top:1px solid #e2e2e2}#onetrust-pc-sdk ul{list-style:none;padding:0}#onetrust-pc-sdk ul li{position:relative;margin:0;padding:15px 15px 15px 10px;border-bottom:1px solid #e2e2e2}#onetrust-pc-sdk ul li h3{font-size:.75em;color:#656565;margin:0;display:inline-block;width:70%;height:auto;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk ul li p{margin:0;font-size:.7em}#onetrust-pc-sdk ul li input[type=checkbox]{position:absolute;cursor:pointer;width:100%;height:100%;opacity:0;margin:0;top:0;left:0}#onetrust-pc-sdk .ot-cat-item>button:focus,#onetrust-pc-sdk .ot-acc-cntr>button:focus,#onetrust-pc-sdk li>button:focus{outline:#000 solid 2px}#onetrust-pc-sdk .ot-cat-item>button,#onetrust-pc-sdk .ot-acc-cntr>button,#onetrust-pc-sdk li>button{position:absolute;cursor:pointer;width:100%;height:100%;margin:0;top:0;left:0;z-index:1;max-width:none;border:none}#onetrust-pc-sdk .ot-cat-item>button[aria-expanded=false]~.ot-acc-txt,#onetrust-pc-sdk .ot-acc-cntr>button[aria-expanded=false]~.ot-acc-txt,#onetrust-pc-sdk li>button[aria-expanded=false]~.ot-acc-txt{margin-top:0;max-height:0;opacity:0;overflow:hidden;width:100%;transition:.25s ease-out;display:none}#onetrust-pc-sdk .ot-cat-item>button[aria-expanded=true]~.ot-acc-txt,#onetrust-pc-sdk .ot-acc-cntr>button[aria-expanded=true]~.ot-acc-txt,#onetrust-pc-sdk li>button[aria-expanded=true]~.ot-acc-txt{transition:.1s ease-in;margin-top:10px;width:100%;overflow:auto;display:block}#onetrust-pc-sdk .ot-cat-item>button[aria-expanded=true]~.ot-acc-grpcntr,#onetrust-pc-sdk .ot-acc-cntr>button[aria-expanded=true]~.ot-acc-grpcntr,#onetrust-pc-sdk li>button[aria-expanded=true]~.ot-acc-grpcntr{width:auto;margin-top:0px;padding-bottom:10px}#onetrust-pc-sdk .ot-host-item>button:focus,#onetrust-pc-sdk .ot-ven-item>button:focus{outline:0;border:2px solid #000}#onetrust-pc-sdk .ot-hide-acc>button{pointer-events:none}#onetrust-pc-sdk .ot-hide-acc .ot-plus-minus>*,#onetrust-pc-sdk .ot-hide-acc .ot-arw-cntr>*{visibility:hidden}#onetrust-pc-sdk .ot-hide-acc .ot-acc-hdr{min-height:30px}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt){padding-right:10px;width:calc(100% - 37px);margin-top:10px;max-height:calc(100% - 90px)}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) #ot-sel-blk{background-color:#f9f9fc;border:1px solid #e2e2e2;width:calc(100% - 2px);padding-bottom:5px;padding-top:5px}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) #ot-sel-blk.ot-vnd-list-cnt{border:unset;background-color:unset}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) #ot-sel-blk.ot-vnd-list-cnt .ot-sel-all-hdr{display:none}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) #ot-sel-blk.ot-vnd-list-cnt .ot-sel-all{padding-right:.5rem}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) #ot-sel-blk.ot-vnd-list-cnt .ot-sel-all .ot-chkbox{right:0}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) .ot-sel-all{padding-right:34px}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) .ot-sel-all-chkbox{width:auto}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) ul li{border:1px solid #e2e2e2;margin-bottom:10px}#onetrust-pc-sdk.ot-addtl-vendors #ot-lst-cnt:not(.ot-host-cnt) .ot-acc-cntr>.ot-acc-hdr{padding:10px 0 10px 15px}#onetrust-pc-sdk.ot-addtl-vendors .ot-sel-all-chkbox{float:right}#onetrust-pc-sdk.ot-addtl-vendors .ot-plus-minus~.ot-sel-all-chkbox{right:34px}#onetrust-pc-sdk.ot-addtl-vendors #ot-ven-lst:first-child{border-top:none}#onetrust-pc-sdk .ot-acc-cntr{position:relative;border-left:1px solid #e2e2e2;border-right:1px solid #e2e2e2;border-bottom:1px solid #e2e2e2}#onetrust-pc-sdk .ot-acc-cntr input{z-index:1}#onetrust-pc-sdk .ot-acc-cntr>.ot-acc-hdr{background-color:#f9f9fc;padding:5px 0 5px 15px;width:auto}#onetrust-pc-sdk .ot-acc-cntr>.ot-acc-hdr .ot-plus-minus{vertical-align:middle;top:auto}#onetrust-pc-sdk .ot-acc-cntr>.ot-acc-hdr .ot-arw-cntr{right:10px}#onetrust-pc-sdk .ot-acc-cntr>.ot-acc-hdr input{z-index:2}#onetrust-pc-sdk .ot-acc-cntr.ot-add-tech .ot-acc-hdr{padding:10px 0 10px 15px}#onetrust-pc-sdk .ot-acc-cntr>input[type=checkbox]:checked~.ot-acc-hdr{border-bottom:1px solid #e2e2e2}#onetrust-pc-sdk .ot-acc-cntr>.ot-acc-txt{padding-left:10px;padding-right:10px}#onetrust-pc-sdk .ot-acc-cntr button[aria-expanded=true]~.ot-acc-txt{width:auto}#onetrust-pc-sdk .ot-acc-cntr .ot-addtl-venbox{display:none}#onetrust-pc-sdk .ot-vlst-cntr{margin-bottom:0;width:100%}#onetrust-pc-sdk .ot-vensec-title{font-size:.813em;vertical-align:middle;display:inline-block}#onetrust-pc-sdk .category-vendors-list-handler,#onetrust-pc-sdk .category-vendors-list-handler+a{margin-left:0;margin-top:10px}#onetrust-pc-sdk #ot-selall-vencntr.line-through label::after,#onetrust-pc-sdk #ot-selall-adtlvencntr.line-through label::after,#onetrust-pc-sdk #ot-selall-licntr.line-through label::after,#onetrust-pc-sdk #ot-selall-hostcntr.line-through label::after,#onetrust-pc-sdk #ot-selall-gnvencntr.line-through label::after{height:auto;border-left:0;transform:none;-o-transform:none;-ms-transform:none;-webkit-transform:none;left:5px;top:9px}#onetrust-pc-sdk #ot-category-title{float:left;padding-bottom:10px;font-size:1em;width:100%}#onetrust-pc-sdk .ot-cat-grp{margin-top:10px}#onetrust-pc-sdk .ot-cat-item{line-height:1.1;margin-top:10px;display:inline-block;width:100%}#onetrust-pc-sdk .ot-btn-container{text-align:right}#onetrust-pc-sdk .ot-btn-container button{display:inline-block;font-size:.75em;letter-spacing:.08em;margin-top:19px}#onetrust-pc-sdk #close-pc-btn-handler.ot-close-icon{position:absolute;top:10px;right:0;z-index:1;padding:0;background-color:rgba(0,0,0,0);border:none}#onetrust-pc-sdk #close-pc-btn-handler.ot-close-icon svg{display:block;height:10px;width:10px}#onetrust-pc-sdk #clear-filters-handler{margin-top:20px;margin-bottom:10px;float:right;max-width:200px;text-decoration:none;color:#3860be;font-size:.9em;font-weight:bold;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);padding:1px}#onetrust-pc-sdk #clear-filters-handler:hover{color:#2285f7}#onetrust-pc-sdk #clear-filters-handler:focus{outline:#000 solid 1px}#onetrust-pc-sdk .ot-enbl-chr h4~.ot-tgl,#onetrust-pc-sdk .ot-enbl-chr h4~.ot-always-active{right:45px}#onetrust-pc-sdk .ot-enbl-chr h4~.ot-tgl+.ot-tgl{right:120px}#onetrust-pc-sdk .ot-enbl-chr .ot-pli-hdr.ot-leg-border-color span:first-child{width:90px}#onetrust-pc-sdk .ot-enbl-chr li.ot-subgrp>h5+.ot-tgl-cntr{padding-right:25px}#onetrust-pc-sdk .ot-plus-minus{width:20px;height:20px;font-size:1.5em;position:relative;display:inline-block;margin-right:5px;top:3px}#onetrust-pc-sdk .ot-plus-minus span{position:absolute;background:#27455c;border-radius:1px}#onetrust-pc-sdk .ot-plus-minus span:first-of-type{top:25%;bottom:25%;width:10%;left:45%}#onetrust-pc-sdk .ot-plus-minus span:last-of-type{left:25%;right:25%;height:10%;top:45%}#onetrust-pc-sdk button[aria-expanded=true]~.ot-acc-hdr .ot-arw,#onetrust-pc-sdk button[aria-expanded=true]~.ot-acc-hdr .ot-plus-minus span:first-of-type,#onetrust-pc-sdk button[aria-expanded=true]~.ot-acc-hdr .ot-plus-minus span:last-of-type{transform:rotate(90deg)}#onetrust-pc-sdk button[aria-expanded=true]~.ot-acc-hdr .ot-plus-minus span:last-of-type{left:50%;right:50%}#onetrust-pc-sdk #ot-selall-vencntr label,#onetrust-pc-sdk #ot-selall-adtlvencntr label,#onetrust-pc-sdk #ot-selall-hostcntr label,#onetrust-pc-sdk #ot-selall-licntr label{position:relative;display:inline-block;width:20px;height:20px}#onetrust-pc-sdk .ot-host-item .ot-plus-minus,#onetrust-pc-sdk .ot-ven-item .ot-plus-minus{float:left;margin-right:8px;top:10px}#onetrust-pc-sdk .ot-ven-item ul{list-style:none inside;font-size:100%;margin:0}#onetrust-pc-sdk .ot-ven-item ul li{margin:0 !important;padding:0;border:none !important}#onetrust-pc-sdk .ot-pli-hdr{color:#77808e;overflow:hidden;padding-top:7.5px;padding-bottom:7.5px;width:calc(100% - 2px);border-top-left-radius:3px;border-top-right-radius:3px}#onetrust-pc-sdk .ot-pli-hdr span:first-child{top:50%;transform:translateY(50%);max-width:90px}#onetrust-pc-sdk .ot-pli-hdr span:last-child{padding-right:10px;max-width:95px;text-align:center}#onetrust-pc-sdk .ot-li-title{float:right;font-size:.813em}#onetrust-pc-sdk .ot-pli-hdr.ot-leg-border-color{background-color:#f4f4f4;border:1px solid #d8d8d8}#onetrust-pc-sdk .ot-pli-hdr.ot-leg-border-color span:first-child{text-align:left;width:70px}#onetrust-pc-sdk li.ot-subgrp>h5,#onetrust-pc-sdk .ot-cat-header{width:calc(100% - 130px)}#onetrust-pc-sdk li.ot-subgrp>h5+.ot-tgl-cntr{padding-left:13px}#onetrust-pc-sdk .ot-acc-grpcntr .ot-acc-grpdesc{margin-bottom:5px}#onetrust-pc-sdk .ot-acc-grpcntr .ot-subgrp-cntr{border-top:1px solid #d8d8d8}#onetrust-pc-sdk .ot-acc-grpcntr .ot-vlst-cntr+.ot-subgrp-cntr{border-top:none}#onetrust-pc-sdk .ot-acc-hdr .ot-arw-cntr+.ot-tgl-cntr,#onetrust-pc-sdk .ot-acc-txt h4+.ot-tgl-cntr{padding-left:13px}#onetrust-pc-sdk .ot-pli-hdr~.ot-cat-item .ot-subgrp>h5,#onetrust-pc-sdk .ot-pli-hdr~.ot-cat-item .ot-cat-header{width:calc(100% - 145px)}#onetrust-pc-sdk .ot-pli-hdr~.ot-cat-item h5+.ot-tgl-cntr,#onetrust-pc-sdk .ot-pli-hdr~.ot-cat-item .ot-cat-header+.ot-tgl{padding-left:28px}#onetrust-pc-sdk .ot-sel-all-hdr,#onetrust-pc-sdk .ot-sel-all-chkbox{display:inline-block;width:100%;position:relative}#onetrust-pc-sdk .ot-sel-all-chkbox{z-index:1}#onetrust-pc-sdk .ot-sel-all{margin:0;position:relative;padding-right:23px;float:right}#onetrust-pc-sdk .ot-consent-hdr,#onetrust-pc-sdk .ot-li-hdr{float:right;font-size:.812em;line-height:normal;text-align:center;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk .ot-li-hdr{max-width:100px;padding-right:10px}#onetrust-pc-sdk .ot-consent-hdr{max-width:55px}#onetrust-pc-sdk #ot-selall-licntr{display:block;width:21px;height:auto;float:right;position:relative;right:80px}#onetrust-pc-sdk #ot-selall-licntr label{position:absolute}#onetrust-pc-sdk .ot-ven-ctgl{margin-left:66px}#onetrust-pc-sdk .ot-ven-litgl+.ot-arw-cntr{margin-left:81px}#onetrust-pc-sdk .ot-enbl-chr .ot-host-cnt .ot-tgl-cntr{width:auto}#onetrust-pc-sdk #ot-lst-cnt:not(.ot-host-cnt) .ot-tgl-cntr{width:auto;top:auto;height:20px}#onetrust-pc-sdk #ot-lst-cnt .ot-chkbox{position:relative;display:inline-block;width:20px;height:20px}#onetrust-pc-sdk #ot-lst-cnt .ot-chkbox label{position:absolute;padding:0;width:20px;height:20px}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info-cntr{border:1px solid #d8d8d8;padding:.75rem 2rem;padding-bottom:0;width:auto;margin-top:.5rem}#onetrust-pc-sdk .ot-acc-grpdesc+.ot-leg-btn-container{padding-left:20px;padding-right:20px;width:calc(100% - 40px);margin-bottom:5px}#onetrust-pc-sdk .ot-subgrp .ot-leg-btn-container{margin-bottom:5px}#onetrust-pc-sdk #ot-ven-lst .ot-leg-btn-container{margin-top:10px}#onetrust-pc-sdk .ot-leg-btn-container{display:inline-block;width:100%;margin-bottom:10px}#onetrust-pc-sdk .ot-leg-btn-container button{height:auto;padding:6.5px 8px;margin-bottom:0;letter-spacing:0;font-size:.75em;line-height:normal}#onetrust-pc-sdk .ot-leg-btn-container svg{display:none;height:14px;width:14px;padding-right:5px;vertical-align:sub}#onetrust-pc-sdk .ot-active-leg-btn{cursor:default;pointer-events:none}#onetrust-pc-sdk .ot-active-leg-btn svg{display:inline-block}#onetrust-pc-sdk .ot-remove-objection-handler{text-decoration:underline;padding:0;font-size:.75em;font-weight:600;line-height:1;padding-left:10px}#onetrust-pc-sdk .ot-obj-leg-btn-handler span{font-weight:bold;text-align:center;font-size:inherit;line-height:1.5}#onetrust-pc-sdk.ot-close-btn-link #close-pc-btn-handler{border:none;height:auto;line-height:1.5;text-decoration:underline;font-size:.69em;background:none;right:15px;top:15px;width:auto;font-weight:normal}#onetrust-pc-sdk .ot-pgph-link{font-size:.813em !important;margin-top:5px;position:relative}#onetrust-pc-sdk .ot-pgph-link.ot-pgph-link-subgroup{margin-bottom:1rem}#onetrust-pc-sdk .ot-pgph-contr{margin:0 2.5rem}#onetrust-pc-sdk .ot-pgph-title{font-size:1.18rem;margin-bottom:2rem}#onetrust-pc-sdk .ot-pgph-desc{font-size:1rem;font-weight:400;margin-bottom:2rem;line-height:1.5rem}#onetrust-pc-sdk .ot-pgph-desc:not(:last-child):after{content:"";width:96%;display:block;margin:0 auto;padding-bottom:2rem;border-bottom:1px solid #e9e9e9}#onetrust-pc-sdk .ot-cat-header{float:left;font-weight:600;font-size:.875em;line-height:1.5;max-width:90%;vertical-align:middle}#onetrust-pc-sdk .ot-vnd-item>button:focus{outline:#000 solid 2px}#onetrust-pc-sdk .ot-vnd-item>button{position:absolute;cursor:pointer;width:100%;height:100%;margin:0;top:0;left:0;z-index:1;max-width:none;border:none}#onetrust-pc-sdk .ot-vnd-item>button[aria-expanded=false]~.ot-acc-txt{margin-top:0;max-height:0;opacity:0;overflow:hidden;width:100%;transition:.25s ease-out;display:none}#onetrust-pc-sdk .ot-vnd-item>button[aria-expanded=true]~.ot-acc-txt{transition:.1s ease-in;margin-top:10px;width:100%;overflow:auto;display:block}#onetrust-pc-sdk .ot-vnd-item>button[aria-expanded=true]~.ot-acc-grpcntr{width:auto;margin-top:0px;padding-bottom:10px}#onetrust-pc-sdk .ot-accordion-layout.ot-cat-item{position:relative;border-radius:2px;margin:0;padding:0;border:1px solid #d8d8d8;border-top:none;width:calc(100% - 2px);float:left}#onetrust-pc-sdk .ot-accordion-layout.ot-cat-item:first-of-type{margin-top:10px;border-top:1px solid #d8d8d8}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-grpdesc{padding-left:20px;padding-right:20px;width:calc(100% - 40px);font-size:.812em;margin-bottom:10px;margin-top:15px}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-grpdesc>ul{padding-top:10px}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-grpdesc>ul li{padding-top:0;line-height:1.5;padding-bottom:10px}#onetrust-pc-sdk .ot-accordion-layout div+.ot-acc-grpdesc{margin-top:5px}#onetrust-pc-sdk .ot-accordion-layout .ot-vlst-cntr:first-child{margin-top:10px}#onetrust-pc-sdk .ot-accordion-layout .ot-vlst-cntr:last-child,#onetrust-pc-sdk .ot-accordion-layout .ot-hlst-cntr:last-child{margin-bottom:5px}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-hdr{padding-top:11.5px;padding-bottom:11.5px;padding-left:20px;padding-right:20px;width:calc(100% - 40px);display:inline-block}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-txt{width:100%;padding:0}#onetrust-pc-sdk .ot-accordion-layout .ot-subgrp-cntr{padding-left:20px;padding-right:15px;padding-bottom:0;width:calc(100% - 35px)}#onetrust-pc-sdk .ot-accordion-layout .ot-subgrp{padding-right:5px}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-grpcntr{z-index:1;position:relative}#onetrust-pc-sdk .ot-accordion-layout .ot-cat-header+.ot-arw-cntr{position:absolute;top:50%;transform:translateY(-50%);right:20px;margin-top:-2px}#onetrust-pc-sdk .ot-accordion-layout .ot-cat-header+.ot-arw-cntr .ot-arw{width:15px;height:20px;margin-left:5px;color:dimgray}#onetrust-pc-sdk .ot-accordion-layout .ot-cat-header{float:none;color:#2e3644;margin:0;display:inline-block;height:auto;word-wrap:break-word;min-height:inherit}#onetrust-pc-sdk .ot-accordion-layout .ot-vlst-cntr,#onetrust-pc-sdk .ot-accordion-layout .ot-hlst-cntr{padding-left:20px;width:calc(100% - 20px);display:inline-block;margin-top:0;padding-bottom:2px}#onetrust-pc-sdk .ot-accordion-layout .ot-acc-hdr{position:relative;min-height:25px}#onetrust-pc-sdk .ot-accordion-layout h4~.ot-tgl,#onetrust-pc-sdk .ot-accordion-layout h4~.ot-always-active{position:absolute;top:50%;transform:translateY(-50%);right:20px}#onetrust-pc-sdk .ot-accordion-layout h4~.ot-tgl+.ot-tgl{right:95px}#onetrust-pc-sdk .ot-accordion-layout .category-vendors-list-handler,#onetrust-pc-sdk .ot-accordion-layout .category-vendors-list-handler+a{margin-top:5px}#onetrust-pc-sdk #ot-lst-cnt{margin-top:1rem;max-height:calc(100% - 96px)}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info-cntr{border:1px solid #d8d8d8;padding:.75rem 2rem;padding-bottom:0;width:auto;margin-top:.5rem}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info{margin-bottom:1rem;padding-left:.75rem;padding-right:.75rem;display:flex;flex-direction:column}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info[data-vnd-info-key*=DPOEmail]{border-top:1px solid #d8d8d8;padding-top:1rem}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info[data-vnd-info-key*=DPOLink]{border-bottom:1px solid #d8d8d8;padding-bottom:1rem}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info .ot-vnd-lbl{font-weight:bold;font-size:.85em;margin-bottom:.5rem}#onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info .ot-vnd-cnt{margin-left:.5rem;font-weight:500;font-size:.85rem}#onetrust-pc-sdk .ot-vs-list,#onetrust-pc-sdk .ot-vnd-serv{width:auto;padding:1rem 1.25rem;padding-bottom:0}#onetrust-pc-sdk .ot-vs-list .ot-vnd-serv-hdr-cntr,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-serv-hdr-cntr{padding-bottom:.75rem;border-bottom:1px solid #d8d8d8}#onetrust-pc-sdk .ot-vs-list .ot-vnd-serv-hdr-cntr .ot-vnd-serv-hdr,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-serv-hdr-cntr .ot-vnd-serv-hdr{font-weight:600;font-size:.95em;line-height:2;margin-left:.5rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item{border:none;margin:0;padding:0}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item button,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item button{outline:none;border-bottom:1px solid #d8d8d8}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item button[aria-expanded=true],#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item button[aria-expanded=true]{border-bottom:none}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item:first-child,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item:first-child{margin-top:.25rem;border-top:unset}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item:last-child,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item:last-child{margin-bottom:.5rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item:last-child button,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item:last-child button{border-bottom:none}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info-cntr,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info-cntr{border:1px solid #d8d8d8;padding:.75rem 1.75rem;padding-bottom:0;width:auto;margin-top:.5rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info{margin-bottom:1rem;padding-left:.75rem;padding-right:.75rem;display:flex;flex-direction:column}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info[data-vnd-info-key*=DPOEmail],#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info[data-vnd-info-key*=DPOEmail]{border-top:1px solid #d8d8d8;padding-top:1rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info[data-vnd-info-key*=DPOLink],#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info[data-vnd-info-key*=DPOLink]{border-bottom:1px solid #d8d8d8;padding-bottom:1rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info .ot-vnd-lbl,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info .ot-vnd-lbl{font-weight:bold;font-size:.85em;margin-bottom:.5rem}#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-vnd-info .ot-vnd-cnt,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info .ot-vnd-cnt{margin-left:.5rem;font-weight:500;font-size:.85rem}#onetrust-pc-sdk .ot-vs-list.ot-vnd-subgrp-cnt,#onetrust-pc-sdk .ot-vnd-serv.ot-vnd-subgrp-cnt{padding-left:40px}#onetrust-pc-sdk .ot-vs-list.ot-vnd-subgrp-cnt .ot-vnd-serv-hdr-cntr .ot-vnd-serv-hdr,#onetrust-pc-sdk .ot-vnd-serv.ot-vnd-subgrp-cnt .ot-vnd-serv-hdr-cntr .ot-vnd-serv-hdr{font-size:.8em}#onetrust-pc-sdk .ot-vs-list.ot-vnd-subgrp-cnt .ot-cat-header,#onetrust-pc-sdk .ot-vnd-serv.ot-vnd-subgrp-cnt .ot-cat-header{font-size:.8em}#onetrust-pc-sdk .ot-subgrp-cntr .ot-vnd-serv{margin-bottom:1rem;padding:1rem .95rem}#onetrust-pc-sdk .ot-subgrp-cntr .ot-vnd-serv .ot-vnd-serv-hdr-cntr{padding-bottom:.75rem;border-bottom:1px solid #d8d8d8}#onetrust-pc-sdk .ot-subgrp-cntr .ot-vnd-serv .ot-vnd-serv-hdr-cntr .ot-vnd-serv-hdr{font-weight:700;font-size:.8em;line-height:20px;margin-left:.82rem}#onetrust-pc-sdk .ot-subgrp-cntr .ot-cat-header{font-weight:700;font-size:.8em;line-height:20px}#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-vnd-serv .ot-vnd-lst-cont .ot-accordion-layout .ot-acc-hdr div.ot-chkbox{margin-left:.82rem}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr{padding:.7rem 0;margin:0;display:flex;width:100%;align-items:center;justify-content:space-between}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr div:first-child,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr div:first-child,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr div:first-child,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr div:first-child,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr div:first-child,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr div:first-child,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr div:first-child{margin-left:.5rem}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr div:last-child,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr div:last-child,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr div:last-child,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr div:last-child,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr div:last-child,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr div:last-child,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr div:last-child{margin-right:.5rem;margin-left:.5rem}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-always-active,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-always-active{position:relative;right:unset;top:unset;transform:unset}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-plus-minus,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-plus-minus{top:0}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-arw-cntr,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-arw-cntr{float:none;top:unset;right:unset;transform:unset;margin-top:-2px;position:relative}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-cat-header,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-cat-header{flex:1;margin:0 .5rem}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-tgl,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-tgl{position:relative;transform:none;right:0;top:0;float:none}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-chkbox{position:relative;margin:0 .5rem}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox label,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-chkbox label{padding:0}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox label::before,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-chkbox label::before{position:relative}#onetrust-pc-sdk .ot-vs-config .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk ul.ot-subgrps .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk #ot-pc-lst .ot-vs-list .ot-vnd-item .ot-acc-hdr .ot-chkbox input,#onetrust-pc-sdk .ot-accordion-layout.ot-checkbox-consent .ot-acc-hdr .ot-chkbox input{position:absolute;cursor:pointer;width:100%;height:100%;opacity:0;margin:0;top:0;left:0;z-index:1}#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps li.ot-subgrp .ot-acc-hdr h5.ot-cat-header,#onetrust-pc-sdk .ot-subgrp-cntr ul.ot-subgrps li.ot-subgrp .ot-acc-hdr h4.ot-cat-header{margin:0}#onetrust-pc-sdk .ot-vs-config .ot-subgrp-cntr ul.ot-subgrps li.ot-subgrp h5{top:0;line-height:20px}#onetrust-pc-sdk .ot-vs-list{display:flex;flex-direction:column;padding:0;margin:.5rem 4px}#onetrust-pc-sdk .ot-vs-selc-all{display:flex;padding:0;float:unset;align-items:center;justify-content:flex-start}#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf{justify-content:flex-end}#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf.ot-caret-conf .ot-sel-all-chkbox{margin-right:48px}#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf .ot-sel-all-chkbox{margin:0;padding:0;margin-right:14px;justify-content:flex-end}#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf #ot-selall-vencntr.ot-chkbox,#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf #ot-selall-vencntr.ot-tgl{display:inline-block;right:unset;width:auto;height:auto;float:none}#onetrust-pc-sdk .ot-vs-selc-all.ot-toggle-conf #ot-selall-vencntr label{width:45px;height:25px}#onetrust-pc-sdk .ot-vs-selc-all .ot-sel-all-chkbox{margin-right:11px;margin-left:.75rem;display:flex;align-items:center}#onetrust-pc-sdk .ot-vs-selc-all .sel-all-hdr{margin:0 1.25rem;font-size:.812em;line-height:normal;text-align:center;word-break:break-word;word-wrap:break-word}#onetrust-pc-sdk .ot-vnd-list-cnt #ot-selall-vencntr.ot-chkbox{float:unset;right:0}#onetrust-pc-sdk[dir=rtl] #ot-back-arw,#onetrust-pc-sdk[dir=rtl] input~.ot-acc-hdr .ot-arw{transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg)}#onetrust-pc-sdk[dir=rtl] input:checked~.ot-acc-hdr .ot-arw{transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);-webkit-transform:rotate(270deg)}#onetrust-pc-sdk[dir=rtl] .ot-chkbox label::after{transform:rotate(45deg);-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);border-left:0;border-right:3px solid}#onetrust-pc-sdk[dir=rtl] .ot-search-cntr>svg{right:0}@media only screen and (max-width: 600px){#onetrust-pc-sdk.otPcCenter{left:0;min-width:100%;height:100%;top:0;border-radius:0}#onetrust-pc-sdk #ot-pc-content,#onetrust-pc-sdk.ot-ftr-stacked .ot-btn-container{margin:1px 3px 0 10px;padding-right:10px;width:calc(100% - 23px)}#onetrust-pc-sdk .ot-btn-container button{max-width:none;letter-spacing:.01em}#onetrust-pc-sdk #close-pc-btn-handler{top:10px;right:17px}#onetrust-pc-sdk p{font-size:.7em}#onetrust-pc-sdk #ot-pc-hdr{margin:10px 10px 0 5px;width:calc(100% - 15px)}#onetrust-pc-sdk .vendor-search-handler{font-size:1em}#onetrust-pc-sdk #ot-back-arw{margin-left:12px}#onetrust-pc-sdk #ot-lst-cnt{margin:0;padding:0 5px 0 10px;min-width:95%}#onetrust-pc-sdk .switch+p{max-width:80%}#onetrust-pc-sdk .ot-ftr-stacked button{width:100%}#onetrust-pc-sdk #ot-fltr-cnt{max-width:320px;width:90%;border-top-right-radius:0;border-bottom-right-radius:0;margin:0;margin-left:15px;left:auto;right:40px;top:85px}#onetrust-pc-sdk .ot-fltr-opt{margin-left:25px;margin-bottom:10px}#onetrust-pc-sdk .ot-pc-refuse-all-handler{margin-bottom:0}#onetrust-pc-sdk #ot-fltr-cnt{right:40px}}@media only screen and (max-width: 476px){#onetrust-pc-sdk .ot-fltr-cntr,#onetrust-pc-sdk #ot-fltr-cnt{right:10px}#onetrust-pc-sdk #ot-anchor{right:25px}#onetrust-pc-sdk button{width:100%}#onetrust-pc-sdk:not(.ot-addtl-vendors) #ot-pc-lst:not(.ot-enbl-chr) .ot-sel-all{padding-right:9px}#onetrust-pc-sdk:not(.ot-addtl-vendors) #ot-pc-lst:not(.ot-enbl-chr) .ot-tgl-cntr{right:0}}@media only screen and (max-width: 896px)and (max-height: 425px)and (orientation: landscape){#onetrust-pc-sdk.otPcCenter{left:0;top:0;min-width:100%;height:100%;border-radius:0}#onetrust-pc-sdk #ot-anchor{left:initial;right:50px}#onetrust-pc-sdk #ot-lst-title{margin-top:12px}#onetrust-pc-sdk #ot-lst-title *{font-size:inherit}#onetrust-pc-sdk #ot-pc-hdr input{margin-right:0;padding-right:45px}#onetrust-pc-sdk .switch+p{max-width:85%}#onetrust-pc-sdk #ot-sel-blk{position:static}#onetrust-pc-sdk #ot-pc-lst{overflow:auto}#onetrust-pc-sdk #ot-lst-cnt{max-height:none;overflow:initial}#onetrust-pc-sdk #ot-lst-cnt.no-results{height:auto}#onetrust-pc-sdk input{font-size:1em !important}#onetrust-pc-sdk p{font-size:.6em}#onetrust-pc-sdk #ot-fltr-modal{width:100%;top:0}#onetrust-pc-sdk ul li p,#onetrust-pc-sdk .category-vendors-list-handler,#onetrust-pc-sdk .category-vendors-list-handler+a,#onetrust-pc-sdk .category-host-list-handler{font-size:.6em}#onetrust-pc-sdk.ot-shw-fltr #ot-anchor{display:none !important}#onetrust-pc-sdk.ot-shw-fltr #ot-pc-lst{height:100% !important;overflow:hidden;top:0px}#onetrust-pc-sdk.ot-shw-fltr #ot-fltr-cnt{margin:0;height:100%;max-height:none;padding:10px;top:0;width:calc(100% - 20px);position:absolute;right:0;left:0;max-width:none}#onetrust-pc-sdk.ot-shw-fltr .ot-fltr-scrlcnt{max-height:calc(100% - 65px)}} + #onetrust-consent-sdk #onetrust-pc-sdk, + #onetrust-consent-sdk #ot-search-cntr, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-switch.ot-toggle, + #onetrust-consent-sdk #onetrust-pc-sdk ot-grp-hdr1 .checkbox, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-title:after + ,#onetrust-consent-sdk #onetrust-pc-sdk #ot-sel-blk, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-fltr-cnt, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-anchor { + background-color: #FFF; + } + + #onetrust-consent-sdk #onetrust-pc-sdk h3, + #onetrust-consent-sdk #onetrust-pc-sdk h4, + #onetrust-consent-sdk #onetrust-pc-sdk h5, + #onetrust-consent-sdk #onetrust-pc-sdk h6, + #onetrust-consent-sdk #onetrust-pc-sdk p, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-ven-lst .ot-ven-opts p, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-desc, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-title, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-li-title, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-sel-all-hdr span, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-host-lst .ot-host-info, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-fltr-modal #modal-header, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-checkbox label span, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-lst #ot-sel-blk p, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-lst #ot-lst-title h3, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-lst .back-btn-handler p, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-lst .ot-ven-name, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-lst #ot-ven-lst .consent-category, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-leg-btn-container .ot-inactive-leg-btn, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-label-status, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-chkbox label span, + #onetrust-consent-sdk #onetrust-pc-sdk #clear-filters-handler, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-optout-signal + { + color: #121212; + } + #onetrust-consent-sdk #onetrust-pc-sdk .privacy-notice-link, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-pgph-link, + #onetrust-consent-sdk #onetrust-pc-sdk .category-vendors-list-handler, + #onetrust-consent-sdk #onetrust-pc-sdk .category-vendors-list-handler + a, + #onetrust-consent-sdk #onetrust-pc-sdk .category-host-list-handler, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-ven-link, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-ven-legclaim-link, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-host-lst .ot-host-name a, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-host-lst .ot-acc-hdr .ot-host-expand, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-host-lst .ot-host-info a, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-pc-content #ot-pc-desc .ot-link-btn, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-vnd-serv .ot-vnd-item .ot-vnd-info a, + #onetrust-consent-sdk #onetrust-pc-sdk #ot-lst-cnt .ot-vnd-info a + { + color: #1DB954; + } + #onetrust-consent-sdk #onetrust-pc-sdk .category-vendors-list-handler:hover { text-decoration: underline;} + #onetrust-consent-sdk #onetrust-pc-sdk .ot-acc-grpcntr.ot-acc-txt, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-acc-txt .ot-subgrp-tgl .ot-switch.ot-toggle + { + background-color: #F8F8F8; + } + #onetrust-consent-sdk #onetrust-pc-sdk #ot-host-lst .ot-host-info, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-acc-txt .ot-ven-dets + { + background-color: #F8F8F8; + } + #onetrust-consent-sdk #onetrust-pc-sdk + button:not(#clear-filters-handler):not(.ot-close-icon):not(#filter-btn-handler):not(.ot-remove-objection-handler):not(.ot-obj-leg-btn-handler):not([aria-expanded]):not(.ot-link-btn), + #onetrust-consent-sdk #onetrust-pc-sdk .ot-leg-btn-container .ot-active-leg-btn { + background-color: #1DB954;border-color: #1DB954; + color: #FFFFFF; + } + #onetrust-consent-sdk #onetrust-pc-sdk .ot-active-menu { + border-color: #1DB954; + } + + #onetrust-consent-sdk #onetrust-pc-sdk .ot-leg-btn-container .ot-remove-objection-handler{ + background-color: transparent; + border: 1px solid transparent; + } + #onetrust-consent-sdk #onetrust-pc-sdk .ot-leg-btn-container .ot-inactive-leg-btn { + background-color: #FFFFFF; + color: #78808E; border-color: #78808E; + } + #onetrust-consent-sdk #onetrust-pc-sdk .ot-tgl input:focus + .ot-switch, .ot-switch .ot-switch-nob, .ot-switch .ot-switch-nob:before, + #onetrust-pc-sdk .ot-checkbox input[type="checkbox"]:focus + label::before, + #onetrust-pc-sdk .ot-chkbox input[type="checkbox"]:focus + label::before { + outline-color: #000000; + outline-width: 1px; + } + #onetrust-pc-sdk .ot-host-item > button:focus, #onetrust-pc-sdk .ot-ven-item > button:focus { + border: 1px solid #000000; + } + #onetrust-consent-sdk #onetrust-pc-sdk *:focus, + #onetrust-consent-sdk #onetrust-pc-sdk .ot-vlst-cntr > a:focus { + outline: 1px solid #000000; + }#onetrust-pc-sdk .ot-vlst-cntr .ot-ext-lnk, #onetrust-pc-sdk .ot-ven-hdr .ot-ext-lnk{ + background-image: url('https://cdn.cookielaw.org/logos/static/ot_external_link.svg'); + } + #onetrust-pc-sdk .pc-logo img, #onetrust-pc-sdk .ot-pc-logo img, #onetrust-pc-sdk .ot-pc-footer-logo { + display: none!important; +} +#onetrust-pc-sdk #accept-recommended-btn-handler, #onetrust-pc-sdk .save-preference-btn-handler, #onetrust-pc-sdk .ot-fltr-btns button{ + border-radius: 100px; + text-transform: uppercase; + font-size: 14px!important; + letter-spacing: 0.1em; +} +#onetrust-pc-sdk .save-preference-btn-handler{ + margin-bottom: 20px; +} +#onetrust-pc-sdk .ot-switch-nob{ + background-color: #D2D2D2!important; + border-color: #D2D2D2!important; +} +#onetrust-pc-sdk .ot-switch-nob:before { + background-color: #FFFFFF!important; + border-color: #FFFFFF!important; +} +#onetrust-pc-sdk .ot-tgl input:checked+.ot-switch .ot-switch-nob{ + background-color: #1DB954!important; + border-color: #1DB954!important; +} +#onetrust-pc-sdk .ot-always-active{ + color: #121212!important; +} +#onetrust-pc-sdk .ot-chkbox label::before{ + border: 1px solid #B3B3B3!important; +} +#onetrust-pc-sdk .ot-chkbox input:checked~label::before{ + background-color: #1DB954!important; + border-color: #1DB954!important; +} +#onetrust-pc-sdk .ot-pur-vdr-count{ + font-size: 10px!important; +} +#onetrust-pc-sdk #ot-desc-id-IAB2V2_1{ + display: none; +} +#onetrust-pc-sdk [data-optanongroupid=i00]{ + margin-left: 0!important; +} +#onetrust-pc-sdk [data-optanongroupid=i00] h5, #onetrust-pc-sdk [data-optanongroupid=i00] .ot-tgl-cntr{ + display: none; +} +#onetrust-pc-sdk .ot-btn-container{ + text-align: center; +} +#onetrust-pc-sdk .ot-sel-all-hdr{ + display: block!important; +} +#onetrust-pc-sdk .ot-li-hdr { + display: none; +} +#onetrust-pc-sdk .ot-sel-all{ + display: flex!important; +} +#onetrust-pc-sdk .ot-sel-all-chkbox{ + width: 45px!important; +} +#onetrust-pc-sdk .ot-consent-hdr{ + text-align: end!important; + margin-right: 10px; +} +#onetrust-pc-sdk #opt-info{ + font-size: 12px; + margin-left: 10px; + margin-top: 10px; +} +#onetrust-pc-sdk #ot-desc-id-IFE2V2_1{ + display: none; +} +#onetrust-pc-sdk [data-optanongroupid=m03]{ + margin-left: 0!important; +} +#onetrust-pc-sdk [data-optanongroupid=m03] h5, #onetrust-pc-sdk [data-optanongroupid=m03] .ot-tgl-cntr{ + display: none; +}.ot-sdk-cookie-policy{font-family:inherit;font-size:16px}.ot-sdk-cookie-policy.otRelFont{font-size:1rem}.ot-sdk-cookie-policy h3,.ot-sdk-cookie-policy h4,.ot-sdk-cookie-policy h6,.ot-sdk-cookie-policy p,.ot-sdk-cookie-policy li,.ot-sdk-cookie-policy a,.ot-sdk-cookie-policy th,.ot-sdk-cookie-policy #cookie-policy-description,.ot-sdk-cookie-policy .ot-sdk-cookie-policy-group,.ot-sdk-cookie-policy #cookie-policy-title{color:dimgray}.ot-sdk-cookie-policy #cookie-policy-description{margin-bottom:1em}.ot-sdk-cookie-policy h4{font-size:1.2em}.ot-sdk-cookie-policy h6{font-size:1em;margin-top:2em}.ot-sdk-cookie-policy th{min-width:75px}.ot-sdk-cookie-policy a,.ot-sdk-cookie-policy a:hover{background:#fff}.ot-sdk-cookie-policy thead{background-color:#f6f6f4;font-weight:bold}.ot-sdk-cookie-policy .ot-mobile-border{display:none}.ot-sdk-cookie-policy section{margin-bottom:2em}.ot-sdk-cookie-policy table{border-collapse:inherit}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy{font-family:inherit;font-size:1rem}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy h3,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy h4,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy h6,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy p,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy li,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy a,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy th,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-description,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-cookie-policy-group,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-title{color:dimgray}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-description{margin-bottom:1em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-subgroup{margin-left:1.5em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-description,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-cookie-policy-group-desc,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-table-header,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy a,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy span,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td{font-size:.9em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td span,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td a{font-size:inherit}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-cookie-policy-group{font-size:1em;margin-bottom:.6em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-cookie-policy-title{margin-bottom:1.2em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy>section{margin-bottom:1em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy th{min-width:75px}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy a,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy a:hover{background:#fff}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy thead{background-color:#f6f6f4;font-weight:bold}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-mobile-border{display:none}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy section{margin-bottom:2em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-subgroup ul li{list-style:disc;margin-left:1.5em}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-subgroup ul li h4{display:inline-block}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table{border-collapse:inherit;margin:auto;border:1px solid #d7d7d7;border-radius:5px;border-spacing:initial;width:100%;overflow:hidden}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table th,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table td{border-bottom:1px solid #d7d7d7;border-right:1px solid #d7d7d7}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table tr:last-child td{border-bottom:0px}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table tr th:last-child,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table tr td:last-child{border-right:0px}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table .ot-host,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table .ot-cookies-type{width:25%}.ot-sdk-cookie-policy[dir=rtl]{text-align:left}#ot-sdk-cookie-policy h3{font-size:1.5em}@media only screen and (max-width: 530px){.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) table,.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) thead,.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) tbody,.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) th,.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) td,.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) tr{display:block}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) thead tr{position:absolute;top:-9999px;left:-9999px}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) tr{margin:0 0 1em 0}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) tr:nth-child(odd),.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) tr:nth-child(odd) a{background:#f6f6f4}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) td{border:none;border-bottom:1px solid #eee;position:relative;padding-left:50%}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) td:before{position:absolute;height:100%;left:6px;width:40%;padding-right:10px}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) .ot-mobile-border{display:inline-block;background-color:#e4e4e4;position:absolute;height:100%;top:0;left:45%;width:2px}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) td:before{content:attr(data-label);font-weight:bold}.ot-sdk-cookie-policy:not(#ot-sdk-cookie-policy-v2) li{word-break:break-word;word-wrap:break-word}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table{overflow:hidden}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table td{border:none;border-bottom:1px solid #d7d7d7}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy thead,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy tbody,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy th,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy tr{display:block}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table .ot-host,#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table .ot-cookies-type{width:auto}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy tr{margin:0 0 1em 0}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td:before{height:100%;width:40%;padding-right:10px}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td:before{content:attr(data-label);font-weight:bold}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy li{word-break:break-word;word-wrap:break-word}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy thead tr{position:absolute;top:-9999px;left:-9999px;z-index:-9999}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table tr:last-child td{border-bottom:1px solid #d7d7d7;border-right:0px}#ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table tr:last-child td:last-child{border-bottom:0px}} + + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy h5, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy h6, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy li, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy p, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy a, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy span, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy td, + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-description { + color: #696969; + } + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy th { + color: #696969; + } + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy .ot-sdk-cookie-policy-group { + color: #696969; + } + + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy #cookie-policy-title { + color: #696969; + } + + + #ot-sdk-cookie-policy-v2.ot-sdk-cookie-policy table th { + background-color: #F8F8F8; + } + + .ot-floating-button__front{background-image:url('https://cdn.cookielaw.org/logos/static/ot_persistent_cookie_icon.png')} + @keyframes slide-down-custom { + 0% { + bottom: 420px !important; + } + 100% { + bottom: 0px; + } + } + @-webkit-keyframes slide-down-custom { + 0% { + bottom: 420px !important; + } + 100% { + bottom: 0px; + } + } + @-moz-keyframes slide-down-custom { + 0% { + bottom: 420px !important; + } + 100% { + bottom: 0px; + } + } +

      Preview of Spotify

      Sign up to get unlimited songs and podcasts with occasional ads. No credit card needed.

      -:--
      -:--
      Syntax - Tasty Web Development Treats
      Syntax - Tasty Web Development Treats
      Podcast

      Syntax - Tasty Web Development Treats

      Wes Bos and Scott Tolinski

      About

      A Tasty Treat Podcast for Web Developers

      All Episodes

      In this supper club episode of Syntax, Wes and Scott talk with Eric Meyer about his start on the web, the early days of CSS, where CSS is headed, are we going to lose a browser, and more! Show Notes 00:32 Welcome 01:26 Who is Eric Meyer? 05:44 In the earliest days, what browsers supported CSS? 10:23 The current web platform test suite web-platform-tests 17:59 Are CSS features shipping faster these days? 20:45 CSS learning from preprocessors 26:24 What do you think about Tailwind and inline CSS? 33:26 Alternative spaces where CSS may be used CSS Speech Module Level 1 The World Wide Web Consortium Issues CSS2 as a W3C Recommendation 37:17 Do companies push CSS forward for a business use case? 44:06 Trying to keep up with all the things is difficult 48:19 What’s on Eric Meyer’s CSS wishlist? 54:35 Supper Club Questions Bruce Lawson Firefox Nightly desktop, Android and iOS. SerenityOS The Ladybird browser project Thunderbird — Free Your Inbox. — Thunderbird Arc from The Browser Company Mozilla Foundation - Homepage 01:58 Sick Picks Sick Picks Polypane Shameless Plugs Igalia - Open Source Consultancy and Development meyerweb.com Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott:X Instagram Tiktok LinkedIn Threads

      Jan 5

      1 hr 5 min

      Wes and Scott give their predictions for 2024 in JavaScript, frameworks, server-side JS, tooling, CSS, developer ecosystem, and AI tooling. Show Notes 00:10 Welcome 01:10 Syntax Brought to you by Sentry 02:00 Types in JS will have real movement 05:10 Temporal API will ship in 1 browser 06:38 Perf tooling gets easy for everyone to understand 07:32 CSS continues to get better where you need less JS 08:35 The year of the server in frameworks 10:32 Svelte v5 is very fast SvelteKit • Web development, streamlined 12:04 Astro is going to have a good year Astro 4 Web Devs, 1 App Idea (Salma Alam-Naylor, Scott Tolinski, Eve Porcello) 14:22 React server components dai-shi/waku: ⛩️ The minimal React framework Waku 19:45 Remix moves away from page-based loaders, to component loaders 20:52 Hono will become more ubiquitous Hono - Ultrafast web framework for the Edges 23:23 Node will introduce TypeScript support via loaders 24:48 We will see a route matching Proposal move ahead URL Pattern Standard 26:34 Bun releases full node compat 27:34 We will see a new Linter + formatter entirely replace Language support | Biome HTML support · Issue #1326 · oxc-project/oxc Prettier · Opinionated Code Formatter 31:44 New TypeScript typechecker 32:42 Lightning CSS pops - or does it? 34:37 You’ll hear more about Rspack and Turbopack 35:55 Vite isn’t going to release anything big in 2024 Vite | Next Generation Frontend Tooling 36:55 CSS contrast-color will land in chrome 37:27 Relative color will land in all major browsers 37:48 Scroll animation landing in 2 browsers 38:40 The year of CSS discovery 41:20 Safari will Ship 3 missing PWA Support 44:10 Firefox usage will continue to slip 47:43 Paid Arc features 47:55 More XR web experiences as Apple releases in Vision Pro 49:07 AI Tooling Galileo AI v0 by Vercel Transformers.js 51:07 Small Models that run in the browser 52:08 Apps get sherlocked by OpenAI 53:24 On prem corporate AI 54:15 Sick Picks Sick Picks Scott: ISO100 protein power, Weekend at Bernie’s Wes: Roborock S8 Pro Ultra Vaccum + Mop Shameless Plugs Scott: Syntax Newsletter Wes: Wes Bos Courses Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Jan 3

      1 hr 3 min

      In this episode of Syntax, Wes and Scott talk about things to consider when printing something from your website or app including loading CSS only for printing, using units in CSS, CSS counters, creating a PDF, naming pages when printing, and more. Show Notes 00:25:15 Welcome 01:27:04 Syntax Brought to you by Sentry 01:52:00 Examples of how Wes uses print CSS 03:42:16 Using it for invoices or receipts 05:08:24 Delivering a book as a PDF 05:42:16 How do you load CSS only for printing? 10:41:08 Using units in CSS 11:29:15 CSS Counters MDN: CSS Counters body { counter-reset: chapter; /* create a chapter counter scope */ } h1:before { content: "Section " counter(chapter) " "; counter-increment: chapter; /* add 1 to chapter */ } h1 { counter-reset: subchapter; /* set section to 0 */ } h2:before { content: counter(chapter) "." counter(subchapter) " "; counter-increment: subchapter; } h2 { counter-reset: section; font-size: 23px; } 14:31:10 Named Pages @page title { @top { /* no header for title pages */ content: “”; } } @page chapter { @top { content: “This is a chapter page”; } } 15:27:09 Margins, Headers + footers, Page Numbers 18:01:18 Debugging Print CSS 19:57:18 Getting into a PDF Docraptor Playwright Puppeteer JSPdf 24:45:04 Other Things to consider Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Jan 1

      32 min 12 sec

      In this supper club episode of Syntax, Wes and Scott talk with Anna Pobletts of Passage about passkeys, how passkeys work, how to implement passkeys on your website or app, what the recommended UI is for passkeys, what happens to your passkey if you lose your phone, and more. Show Notes 00:32 Welcome 01:36 Why do we need something like Passkeys? 03:34 What are Passkeys for? 10:04 What took us so long to get to Passkeys? 11:07 Where’s the two factor part of Passkeys? 13:08 How are Passkeys phishing resistant? 14:44 What happens to your Passkey if you lose your phone? 18:40 What’s the password recovery workflow like with Passkeys? 23:08 Having a backup device helps a lot with Passkeys 24:58 Why companies should use two factor or Passkeys 29:26 What are the standards and tech behind Passkeys? 32:38 What kinds of companies are implementing Passkeys? 34:34 What is the recommended UI for telling users about Passkeys? 39:17 How do you implement Passkeys on your app or website? 41:47 1Password open sourced low level libraries 47:34 What does the future look like for Passkeys? 51:07 Supper Club questions 53:44 Sick Picks 1Password Have I Been Pwned 1Password Watchtower Passkeys.directory passkeys.dev FIDO Alliance - Open Authentication Standards More Secure than Passwords Sick Picks Cascadia Shameless Plugs Passage by 1Password Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott:X Instagram Tiktok LinkedIn Threads

      Dec 2023

      55 min 33 sec

      In this potluck episode of Syntax, Wes and Scott answer your questions about naming things in programming, use case for generators, CSS @Layers follow up, database prefixes, generalist vs specialist, where’s the sick pick page, and more! Show Notes 00:08 Welcome 01:20 Syntax Brought to you by Sentry 01:48 How much of programming is genuine advanced technical stuff vs just fancy complex sounding names for things? 05:10 I found a non-trivial use case for GENERATORS! 11:05 CSS @Layers follow up from 668 Hacking the Tonal - Proxying, Intercepting + Debugging Traffic? - Syntax #668 Allow authors to apply new css features (like cascade layers) while linking stylesheets · Issue #7540 · whatwg/html 15:37 On a previous episode, what did you mention regarding database-prefix? 18:20 Is it better to be a generalist or specialist as a front end dev? 23:20 I can’t find the sick picks page on the new site. Any plans to bring that back? Filtering and Discovery Notes · Issue #935 · syntaxfm/website 24:25 Can you guys give some advice about how to grow and improve as developers while struggling with ADHD? Supper Club × Coding with ADHD with Dr. Courtney Tolinski - Syntax #532 29:55 Any chance you could make an embeddable player? 31:32 Could you have the people behind Cards Against Humanity on a future supper club episode? Cards Against Humanity Poor Charlie’s Almanack: The Essential Wit and Wisdom of Charles T. Munger Cards Against Humanity 99% Sale Warehouse | Blackbox Yowza 34:50 What are some of the differences between being a professional developer in Canada versus the United States? 40:58 Is HTML Over The Wire awesome, or super awesome? 42:52 How can I develop locally with a postgres database and Prisma / Vercel for hosting? Env Variables and Modes | Vite 46:23 Sick Picks Sick Picks Scott: Mother In Law’s Gochujang Fermented Chile Sauce, MIL Kimchi Gochujang and Gochugaru Wes: SEOUL SISTERS Korean Kimchi Powder Shameless Plugs Scott: Sentry Wes: Wes Bos Courses Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Dec 2023

      52 min 58 sec

      In this episode of Syntax, Wes and Scott talk through the ways they improved performance on the Syntax.fm website, how they knew it was slow to begin with, and the various changes they made to caching, and loading transcripts to improve the speed of the site. Show Notes 00:25 Welcome 01:32 Adding a database requires queries 03:32 How did we know the site was slow? 04:25 Syntax Brought to you by Sentry 07:45 Changing the way transcripts are being loaded 13:41 Caching 21:16 Caching Headers Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Dec 2023

      27 min 35 sec

      In this episode of Syntax, Wes and Scott review their 2023 predictions and see how they did on ideas like Deno getting hotter, new JS APIs, WASM, Houdini, CSS Container Queries, and more! Show Notes 00:24 Welcome 01:18 Syntax Brought to you by Sentry 02:05 SSR JS sites more the norm solidjs.com Remix - Build Better Websites Next.js by Vercel - The React Framework SvelteKit • Web development, streamlined Astro 04:14 TypeScript Inferred becomes hot 05:20 Types In JS? ECMAScript proposal for type syntax that is erased - Stage 1 07:55 Deno gets hotter 11:12 JS runtimes mature htmx 11:50 We will see a new TS Type Checker written in Rust 14:06 New JS APIs What’s the status of this project? · Issue #1101 · dudykr/stc Wes Bos on X: "Pretty excited about the new JavaScript non-mutating array methods. Currently in stage 3 tc39/proposals: Tracking ECMAScript Proposals JS Fundamentals - Decorators - Syntax #653 16:29 Writing towards Winter CG Spec Popular. WinterCG 17:09 Edge Rendering More Common Prettier on X: "We setup a $20k bounty for a rust-based compatible printer with prettier. $20k Bounty was Claimed! · Prettier 18:09 A new JS framework 19:05 Page Transitions API 19:51 Rust becomes more popular 24:00 More WASM Supper Club × WASM, Fastly Edge, and Polyfill.io with Jake Champion - Syntax #643 FFmpeg Fastly 25:11 React Beta Docs launch after 5 year dev cycle 26:47 We start to see CSS Container Queries in production 29:05 CanIUse issues? 31:20 CSS Subgrid 32:56 More AI 34:06 Tooling Vite | Next Generation Frontend Tooling Announcing Biome | Biome Lightning CSS Rspack Turbopack 36:08 People sour on React 36:47 People sour on eslint 37:16 Houdini does nothing CSS Houdini| MDN Is Houdini Ready Yet? 39:57 How’d we do? 40:40 Sick picks Sick Picks Scott: Super Mario Bros.™ Wonder Wes: Tineco Pure ONE S11 Cordless Vacuum Cleaner Shameless Plugs Scott: Sentry Wes: Wes Bos Courses Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Dec 2023

      47 min 44 sec

      In this episode of Syntax, Wes and Scott talk about understanding the integration of different components in AI models, the choice between traditional models and Language Learning Models (LLM), the relevance of the Hugging Face library, demystify Llama, discuss spaces in AI, and highlight available services. Show Notes 00:25:20 Welcome 00:55:00 Syntax Brought to you by Sentry 01:17:00 Understanding how the pieces fit together 02:31:18 Models or LLM? 04:43:22 What about Hugging Face? 08:05:18 What’s Llama? 08:51:15 What are spaces? 09:29:06 Services available to you 12:26:16 What are tokens in AI? 17:38:18 What is temperature with AI? 20:33:08 Using top_p 21:06:00 Using fine-tuning to extend existing models 22:11:19 Prompts are what you send to the model 23:17:00 Streaming 24:48:17 Embeddings 27:34:17 OpenAI maintains Evals 28:40:14 Different libraries for working with AI Hugging Face Creator of Swift, Tesla Autopilot & Tensorflow. New AI language Mojo with Chris Lattner LLaMA Spaces - Hugging Face OpenAI Anthropic \ Introducing Claude Replicate Fireworks Console gpt-tokenizer playground openai/tiktoken: tiktoken is a fast BPE tokeniser for use with OpenAI’s models. Supper Club × OpenAI, Future of programming, LLMs, and Math with Andrey Mishchenko Raycast Pro Amazon SageMaker (AMS SSPS) openai/evals LangChain PyTorch TensorFlow ai - npm Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Dec 2023

      33 min 1 sec

      In this Supper Club episode of Syntax, Wes and Scott talk with Feross Aboukhadijeh about his work on Socket which helps to make sure the code you get from npm is safe and secure. They also touch on his work on Wormhole and Web Torrent. Show Notes 00:30 Welcome 00:57 Who is Feross Aboukhadijeh? 01:33 What is Socket? [Socket.dev](https://socket.dev dominictarr (Dominic Tarr) pull-stream/pull-stream: minimal streams 03:59 Introducing AI package summaries Example of the AI summaries Introducing AI Package Summaries 07:04 Is Socket’s focus on visibility of a open source project? 10:01 What was the inspiration for Socket? Introducing “safe npm”, a Socket npm Wrapper - Socket 16:22 How does Socket detect possible security issues? Removed packages event-source-polyfill protestware attack john wick spam attack 18:55 How many projects are you injesting for Socket to scan? 26:00 What kinds of things are people trying to inject in code? CS253 Web Security 29:54 How do I hook Socket up to my project or GitHub? 32:08 Do we still need to use shrink wrap? 36:34 How did you implement the torrent spec in JavaScript for WebTorrent? WebTorrent Desktop WebTorrent FAQ 43:11 Why did you build Wormhole? Wormhole 47:33 How expensive is it to maintain Wormhole? Riverside.fm - Record Podcasts And Videos From Anywhere 50:37 What do you think of decentralized code repos? Radicle Project Fugu Fugu Tracker 54:29 Understanding passkeys 56:15 Supper Club questions GitHub Theme - Visual Studio Marketplace Web Serial API - Web APIs | MDN 01:03:04 Sick Picks Sick Picks Harry Potter audio books Shameless Plugs ChatGPT Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Dec 2023

      1 hr 7 min

      In this episode of Syntax, Wes and Scott try to stump each other with JavaScript and CSS interview style questions including CSS contain, naming the 7 parts of Houdini, what ARIA stands for, 5 limitations of serverless, and more. Show Notes 00:25 Welcome 01:31 Syntax Brought to you by Sentry 02:01 Explain CSS Contain and why it exists? 07:27 In CSS Grid, how would I make a grid of 3 equal columns with 20 pixels between them? Wes Bos on X: 🔥 A visual guide to getting equal width columns in CSS Grid / X 10:31 Which of the following elements are fake? 13:00 Which of the following HTML tags are deprecated? 16:38 What is the samp element? 17:27 Name the 7 parts of CSS Houdini 21:07 In JavaScript for loop with 10 items, how can you exit a loop early? 22:34 What is the difference between a pseudo element and a pseudo class? 25:59 How could you implement CSS :has with JavaScript? 27:56 What are two attributes that would make an SVG more accessible? 29:43 How can you stop your process from exiting if you have an unhandled rejection? 32:27 How do you prevent flex children from getting squished? 34:40 In TypeScript, what does using keyof and typeof together do? 37:19 What does ARIA stand for? 37:39 Name 5 limitations that a serverless or edge function have over tradtional long running server? 40:38 Write an item using Flex code, not grow to fill it’s container, or shrink, and the item will take up only the space based on it’s content size. 42:03 If I’m building an application that needs to announce a change to the user, how would I do that? 43:46 Name the 5 different Git elements methods on a document? 45:39 What does the CSS prospective property do? 48:23 Sick picks Sick Picks Scott: Pushpin hangers Wes: Niimbot Label Maker, Bearclaw Screws) Shameless Plugs Scott: Sentry Wes: Wes Bos Courses Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Dec 2023

      57 min 41 sec

      In this episode of Syntax, Wes and Scott give a high level overview of the observer pattern, what is the observer, what are downsides to too many observers, and more. Show Notes 00:25 Welcome 01:42 Syntax Brought to you by Sentry 02:16 High level overview Syntax 694: What’s Up With Angular with Mark Techson Godot Engine 03:36 What might you observe in game development? 06:50 What is the observer? 08:11 What are some downsides to too many observers? 10:17 IntersectionObserver, MutationObserver, and PerformanceObserver 12:25 ResizeObserver 13:04 What about addEventListener? @BenLesh on Callbacks being faster than observables 16:13 Signals are becoming a big thing Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Dec 2023

      19 min 22 sec

      In this episode of Syntax, Wes and Scott talk through new and proposed JavaScript APIs including ones related to regex, sourcemaps, structured clone, temporal, JSON modules, and more! Show Notes 00:10 Welcome 01:26 Syntax Brought to you by Sentry 02:55 RegExp Escaping Proposal tc39/proposal-regex-escaping: Proposal for investigating RegExp escaping for the ECMAScript standard 05:25 Intl.DurationFormat tc39/proposal-intl-duration-format 07:55 Standardized Sourcemaps tc39/source-map-rfc: RFCs for the source map debug format. 10:43 Structured Clone structuredClone() global function - Web APIs | MDN 12:54 Temporal Hasty Treat - Temporal Date Objects in JavaScript Tracking issue for syncing with IETF standardization work (req’d before implementers can ship unflagged) · Issue #1450 · tc39/proposal-temporal 20:59 FindLast and findLastIndex tc39/proposal-array-find-from-last: Proposal for Array.prototype.findLast and Array.prototype.findLastIndex. 22:27 JSON modules tc39/proposal-json-modules: Proposal to import JSON files as modules 24:46 Regex Modifiers RegExp Modifiers - June 2022.pptx - Microsoft PowerPoint Online 26:50 Array Grouping tc39/proposal-array-grouping: A proposal to make grouping of array items easier 30:48 Array Methods tc39/proposal-change-array-by-copy: Provides additional methods on Array.prototype and TypedArray.prototype to enable changes on the array by returning a new copy of it with the change. 6 or so New Approved and Proposed JavaScript APIs 32:12 Promise.withResolvers 35:08 Function.prototype.memo tc39/proposal-function-memo: A TC39 proposal for function memoization in the JavaScript language. 37:48 Node has a Proposed ESM Detection flag 39:54 Node has navigator.userAgent 41:29 Built in .env support 42:52 Permissions model & test runner continues to be worked on 44:06 HTML Web charts Proposal: Web Charts · Issue #9295 · whatwg/html 45:39 autopause Add autopause attribute to media elements to allow automatic pausing of media · Issue #9793 · whatwg/html 46:30 Meta Tag for AI generated content Proposal: Meta Tag for AI Generated Content · Issue #9479 · whatwg/html Schema.org - Schema.org Syntax × Sentry Swag Store – Syntax × Sentry Shop Syntax - A Tasty Treats Podcast for Web Developers. 50:13 Poster frame HTML Video Element: Proposal for adding [srcset] + [posterset] + [sizes] on video element as well [posterset] on source elements · Issue #9812 · whatwg/html 50:57 Popover invoker Popover does not know what triggered it · Issue #9111 · whatwg/html 51:25 Autocomplete on ‘contenteditable’ Elements Autocomplete on ‘contenteditable’ Elements · Issue #9065 · whatwg/html 52:17 Sick Picks Sick Picks Scott: Escaping Twin Flames cult documentary Wes: Lao Gan Ma spicy Chili Oil Shameless Plugs Scott: Sentry Wes: Wes Bos Courses Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Dec 2023

      55 min 51 sec

      In this episode of Syntax, Wes and Scott explain ARIA, aria-label, Roles, and the overall importance of accessibility in your web projects. Show Notes 00:25 Welcome 01:18 Syntax Brought to you by Sentry 01:44 What is ARIA? WAI-ARIA Roles | MDN An in-depth guide to ARIA roles - The A11Y Project 02:48 What is aria-label? // A button with an ARIA role and label 06:36 What’s the difference between a title and aria-label on a button? 08:34 Are you really going to get sued if your website isn’t accessible? 11:53 What are Roles for? 16:33 6 different types of Roles 21:25 What is aria-labelledby? I agree to the Terms and Conditions. 23:13 Checking your code for accessibility eslint-plugin-jsx-a11y - npm WAVE Web Accessibility Evaluation Tools Polypane 24:31 Feedback and future show ideas Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Dec 2023

      27 min 29 sec

      In this supper club episode of Syntax, Wes and Scott talk with James Mikrut about Payload, how Payload isn’t just a CMS, where Payload fits in a tech stack, why they picked Drizzle for an ORM, what Payload Cloud is, and where’s the Rails for JavaScript? Show Notes 00:31 Welcome 02:00 Who is James Mikrut and what’s the idea behind Payload? 05:22 Payload isn’t just a CMS Payload Payload on GitHub Payload on Twitter Payload on YouTube 09:08 Where does Payload fit in the tech stack? KeystoneJS Supabase Retool 11:22 Is Payload using TypeScript? 13:44 Why did you pick Drizzle? Drizzle ORM 18:08 Do you have to maintain MongoDB and Drizzle? SvelteKit 26:31 Does Payload have visual editing elements? 30:34 Do you build a custom UI for users? 35:10 What is Payload Cloud? 38:12 Where is the Rails for JavaScript? Next.js by Vercel Laravel Spark Deploy your Laravel PHP application painlessly RedwoodJS: The App Framework for Startups | RedwoodJS.com 41:39 How do you manage contributions from open source? 43:46 GitHub + AI 48:18 Syntax Brought to you by Sentry Error Management Magic: Introducing the Sentry Plugin for Payload 50:26 Supper Club questions Shameless Plugs Payload on GitHub Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Dec 2023

      55 min 12 sec

      In this potluck episode of Syntax, Wes and Scott answer your questions, including: Will TypeScript ever go away? Should I write canvas-rendered web apps? How can I execute untrusted JS code in node? How can I use continuous integration with WordPress? Any advice for learning Rust? Show Notes 00:09 Welcome 01:16 How to ask questions for potluck episodes Ask a question for Syntax potluck episodes 02:19 Syntax Brought to you by Sentry 04:34 Will TypeScript ever go away? Migrating millions of lines of code to TypeScript 08:12 What is your opinion on entirely canvas-rendered web apps, such as those built with Flutter? Flutter on the Web Flutter Gallery html2canvas - Screenshots with JavaScript 13:43 Tailscale VPN is cool Tailscale · Best VPN Service for Secure Networks Tunnel | Zero Trust App Connector | Cloudflare 16:36 What is Bandcamp? Bandcamp Stream and listen to music online for free with SoundCloud 18:56 How can I execute untrusted JS code with node? WebAssembly Cloudflare Workers® Deno, The next-generation JavaScript runtime Fastly 23:46 I’d love to get your thoughts on modern devops and continuous integration for building out WordPress websites. Supper Club × Fabian Kägy - Modern WordPress - Blocks, Page builders, Headless, Custom Fields Vite | Next Generation Frontend Tooling Alpine.js 30:39 How do I orchestrate color adapting icons for use inline and in background images? svg.wesbos.com svg.wesbos.com/cat.svg 35:53 Are there any publicly available libraries for web components? Shoelace: A forward-thinking library of web components. Open UI 40:20 What’s a good project idea for learning Rust? Tauri Apps 45:17 Do you ever plan to do more podcasts with Scott’s wife or another psychologist / psychiatrist? 47:02 Have you tried MongoDB vector search for AI embeddings? Atlas Vector Search | MongoDB Vector Database for Vector Search | Pinecone Xata 49:44 Syntax highlighting in VS Code Comment tagged templates - Visual Studio Marketplace 52:38 Sick Picks Sick Picks Scott: The Spider-Man of Paris (2023) - IMDb Wes: Amazon.ca : instant read digital thermometer Shameless Plugs Scott: Sentry Wes: Wes Bos Courses Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      56 min 46 sec

      What are @Layers in CSS, when and where should you be using them, how do you write them, and who’s using them already? Show Notes 00:23 Welcome 01:49 Syntax Brought to you by Sentry 02:55 Where is this supported? 07:21 How do we write layers? 10:47 How do you write your CSS? 16:20 Nesting 20:35 Who else is using @Layer? Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      26 min 22 sec

      In this supper club episode of Syntax, Wes and Scott talk with Salma Alam-Naylor all about her role in DevRel, what’s involved in working in DevRel, avoiding burnout, which platforms to focus on, and so much more. Show Notes 00:31 Welcome 01:07 Syntax Brought to you by Sentry 01:52 New jobs and onboarding 03:34 What is Devrel? 11:34 How much of devrel is using your own product? Dogfooding the service? 14:49 What are things devrel people do? 20:32 Devrel burnout issues 24:53 Once you put a number on something, you’re measuring that number 29:31 Is there any way to know if devrel is working? 33:47 How could someone get into devrel? 37:37 What platforms should you focus on? 44:12 What’s something devrel gets wrong? 47:50 What do you think about speaking at conferences? 51:58 What do you use to stay up on with tech? 53:59 Sick picks Sick Picks Wikipedia on Hell.com Web Archive of Hell.com Fffffound https://twitter.com/webdesignmuseum Shameless Plugs Follow Salma on Twitch Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      59 min 41 sec

      In this episode of Syntax, Wes and Scott answer a listener’s question about their process for building a website in 2023. Do you start with design? With code? How do you decide on which CMS or if you need a CMS? How do you choose a backend framework? And where do you host it? Show Notes 00:10 Welcome 02:12 Syntax Brought to you by Sentry 03:06 How do you build a website? 04:57 Start with the design Figma Design Systems with Brad Frost 11:12 Choose a Frontend / Components Pug EJS React Svelte Remix Storybook 25:16 Real data or fake data? Polypane DrizzleORM 29:34 Do you need a CMS or not? Statamic Syntax 254: Headless CMS Break Down & Roundup WordPress.org Astro 35:16 Choosing a backend language or framework 39:56 Testing 44:50 Where do you host your website? Vercel Netlify Drop Glitch CodePen 50:04 Sick Picks Sick Picks Scott: Chip clips Wes: Soft close used toilet seat Amazon Warehouse Deals Shameless Plugs Scott: Sentry Wes: Wes Bos Courses Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      55 min 3 sec

      In this episode of Syntax, Wes and Scott talk about 5 new CSS features :nth-child(4 of .neat), CSS Motion Path, Scroll Snap, Scroll Driven Animations, and Margin Trim. Show Notes 00:25 Welcome 01:10 :nth-child(4 of .neat) selector list argument of :nth-child and :nth-last-child CSS pseudo-classes | Can I use 06:43 CSS Motion Path 10:38 Scroll Snap Practical CSS Scroll Snapping 14:36 Scroll Driven Animations Scroll-driven Animations Supper Club × Bramus Van Damme on CSS 16:58 Margin Trim Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      24 min 29 sec

      In this supper club episode of Syntax, Wes and Scott talk with Mark Techson about the recent Angular announcements and updates. How did Angular implement signals? What’s new in Angular 17? How does Angular handle CSS or UI component libraries? Show Notes 00:30 Welcome 01:11 Syntax Brought to you by Sentry 01:39 What’s changing with Angular? Special Angular Event Angular 03:19 What happened to Angular.js, and what’s happening now? StackBlitz Analog | Analog Supper Club × Self Hosted Backend-as-a-service with Brandon Roberts 08:19 What makes Angular special? 13:21 How did Angular implement signals? 17:17 What is a computed value? 18:54 What’s new in Angular 17? 25:10 What’s the meta framework story with Angular? Angular Material UI component library CDK | Angular Material Angular - Angular elements overview 27:40 Adding close to the metal if statements 31:03 View transitions 32:34 How does Angular handle CSS? 39:31 How does Angular integrate with UI component libraries? 41:07 What are headless components? 41:45 Does Angular work well with web components? 42:43 Supper Club Questions Accessibility in Visual Studio Code Technology Radar Thoughtworks RedMonk – The developer-focused analyst firm Mermaid | Diagramming and charting tool 49:38 Sick Picks Sick Picks Godot Engine - Free and open source 2D and 3D game engine Shameless Plugs #goodmorningwithmark on Twitter #goodmorningwithmark on YouTube Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      55 min 35 sec

      In this episode of Syntax, Wes and Scott talk about the lessons they learned while launching the new Syntax website including launching now, transcription bugs, error monitoring, black text on black backgrounds, and more. Show Notes 00:10 Welcome to Syntax 01:41 Syntax Brought to you by Sentry 02:43 Don’t wait. Launch! 04:28 Transcript bug Most Powerful Speech-to-Text API | Deepgram 09:01 Error monitoring is a must 12:36 Timestamp error 16:20 Black text on black background might hide things 17:33 WASM Vercel file system 21:18 Things have gotten easier to launch PlanetScale: The world’s most advanced database platform — PlanetScale 23:36 Switching from OpenAI to Anthropic Claude and AI Responses aren’t always JSON 25:34 Local dev is fast Navigation API 31:37 Mind your payloads 32:41 GitHub Milestones 33:57 Almost forgot the Robots.txt 36:17 Chron job timeout Inngest 40:06 TypeScript errors don’t need to be zero to launch 42:25 GitHub Actions pipeline bug 43:23 Basic testing will do Playwright 44:56 Have a designer to work with Airbase 52:07 Sick Picks Sick Picks Scott: Dog Poop Bags With Dispenser Wes: Resistance band Shameless Plugs Scott: Sentry Wes: Wes Bos Courses Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      56 min 54 sec

      In this episode of Syntax, Wes and Scott explain what Stale While Revalidate is, why you should use it, and explore whether you should use it all the time on all the things. Show Notes 00:25 Welcome 01:05 Syntax Brought to you by Sentry 01:34 What is Stale While Revalidate? 03:13 Why is caching important? Max age calculator Can I Use 05:09 Where does a cache live? 07:05 Limit how often an API is being hit 11:51 What about Stale while Revalidate? 18:30 Why wouldn’t you just use Stale While Invalidate on everything? Syntax 484: Cache Control Headers Explained Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      22 min 28 sec

      In this supper club episode of Syntax, Wes and Scott talk with Rita Kozlov And Brendan Irvine-Broque about Cloudflare Workers, Cloudflare AI, browser rendering API, Cloudflare’s D1 database, WinterCG, miniflare, and more! Show Notes 00:32 Welcome 01:53 Syntax Brought to you by Sentry 02:20 What are Cloudflare Workers? Announcing WinterJS Cloudflare Workers® Puppeteer | Puppeteer 06:23 How long did Workers take to ship? 07:31 Can you run your entire business on Cloudflare Workers? 10:52 Interesting use cases for Cloudflare Workers 12:33 What makes the edge important? 18:05 Managing GDPR compliance 19:02 What are the tradeoffs of building with Cloudflare Workers? Cloudflare Queues 20:22 How does Workers pricing work? 26:54 What are situations where you might need longer times? 28:50 Browser rendering API Browser Rendering docs 29:43 What is Cloudflare D1 database product? Cloudflare D1 31:05 Cloudflare Hyperdrive Hyperdrive “Serverless” Databases 34:27 Cloudflare Workers don’t use a Node.js runtime Introducing workerd: the Open Source Workers runtime 37:13 What is WinterCG? WinterCG 45:09 Will we ever see a standard for server routing? TCP sockets · Cloudflare Workers docs 49:30 What is miniflare? 🔥 Miniflare · Miniflare 54:05 Can I run Python on Cloudflare? 55:49 Cloudflare AI Partnering with Hugging Face to make deploying AI easier Cloudflare + AI WebGPU API Cache · Cloudflare Workers docs 57:04 Supper Club questions 59:38 Sick Picks Sick Picks Get a bench scrape Shameless Plugs Cloudflare Discord Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      1 hr 4 min

      In this episode of Syntax, Wes and Scott talk about the process they are using for extending the Syntax website with themes, including a dark mode and secret custom themes. They also talk about issues encountered with theming and CSS, including flashes of un-themed content. Show Notes 00:00 Syntax + Sentry Announcement! 01:35 Welcome 02:23 Syntax Brought to you by Sentry 03:16 How to implement a theme 10:27 Writing the CSS 11:38 Glasses wearers protip 13:02 Class on the body and server side rendering issue 14:02 CSS Variables 15:05 Color variables in CSS 21:07 Working in half pixel sizes 22:40 Variable usage 25:23 Naming variables after what they style 30:42 Component level variables 33:27 Using zones 38:41 Themes should be defined as light or dark 39:20 Issues: Moving from light to dark 42:29 Issues: Drop shadow in dark mode 44:00 Issues: Flash of unthemed content 44:40 Issues: Opacity values 49:45 Issues: SVG need change color 55:56 Help is on the way! 59:57 SIIIIICK ××× PIIIICKS ××× website/src/styles/themes/level-up.css at v2 The 2023 State of CSS Survey Part 2 × CSS Frameworks × Tooling × Browser Usage “color-contrast” | Can I use… Support tables for HTML5, CSS3, etc The Future of CSS: Easy Light-Dark Mode Color Switching with light-dark() – Bram.us ××× SIIIIICK ××× PIIIICKS ××× Scott: Kala (@engineer.everything) Shameless Plugs Scott: Sentry Wes: Wes Bos Tutorials Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      1 hr 4 min

      In this episode of Syntax, Wes and Scott talk about why you should be using JavaScript maps sets, whether you can access them directly, what makes them great, and what weak versions of both are. Show Notes 00:26 Welcome 01:34 Syntax Brought to you by Sentry 01:54 What makes Maps a spicy buffalo object? 07:46 API of Map 08:51 Looping over items in a Map 09:27 Can you change the size of a map after it’s been created? 10:07 Can you access properties directly? 12:13 Where have we used a map as a cache? 13:32 What makes a set an array honey garlic array? 17:28 When should you be using sets instead of an array? Proposed Highlight API is built on Sets 21:47 Can you spread sets like an array? 22:40 Weak versions of map and set WeakMap and Garbage collection Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      28 min 16 sec

      In this supper club episode of Syntax, Wes and Scott talk with Darcy Clarke about his career path in tech, working with Wes back in the day, why he decided to build vlt volt, and the biggest sick pick list yet! Show Notes 00:32 Welcome 01:38 Building a tweet wall back in the day 08:54 How did you land at npm? npm 19:40 Why do we need another package manager and registry? 22:11 What is vlt volt? vlt: a new home for open source vlt /vōlt/ (@vltpkg) / X Shipping ESM with Mark Erikson Bun Yarn Nx 27:18 Do you see a future where we don’t pre-compile before shipping? 29:32 Why would pnpm be faster than npm? 31:14 What are the problems with symlinking? 33:08 What’s happening with Yarn? Verdaccio Cloudsmith jfrong Sonatype socket.dev Snyk.io Dependency Confusion 37:42 What do you think about config files? antfu Config of File Nesting for VS Code The massive bug at the heart of the npm ecosystem WebTorrent 41:02 VS Code tip - file nesting patterns 41:59 How does on-prem registry work? 47:29 Where does Socket.dev and Snyk security fit? 52:46 Sick Picks 04:41 How did you get vlt.sh? 05:30 How did you get @Darcy? Sick Picks Flat Coat Goldendoodle Scientific American Nespresso BlackBerry (2023) - IMDb BlackBerry (2023) Letterboxd Matthias Wandel Blink-182 Official Site Moneen Bring Me The Horizon Shameless Plugs vlt: a new home for open source Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Nov 2023

      1 hr 9 min

      In this potluck episode of Syntax, Wes and Scott answer your questions about hosting NextJS, spicy sidedishes, putting forms in modern websites, why is everyone abandoning TypeScript, CSS Survey follow up, do devs need to be into CSS, and more! Show Notes 00:10 How to submit a question to Syntax Syntax Potluck Listener Questions 00:45 Syntax meet up in Toronto 02:11 Syntax Brought to you by Sentry 02:36 Vendor lock in with NextJS? Next.js by Vercel Vercel SST Supper Club × Next.js on AWS + Serverless with Dax Raad — Syntax Podcast 589 Cloudflare Pages Netlify Open source Next.js serverless adapter 09:48 🌶️ Spicy Sidedish: Stop calling Firefox the new IE Jen Simmons 16:40 Can you compare Database as a service and provide your recommendation and suggestions? “Serverless” Databases — Syntax Podcast 551 PlanetScale Firebase 20:00 How do I do native forms outside of CMS like WordPress? Builder.io 28:01 Why have Svelte and Turbo abandoned Typescript? 32:17 Why are companies hesitant to migrate to Next? 33:36 Is React Native dead? 38:33 Do I use the keyword “new” when throwing an Error or not? 41:59 touch-action use case Announcing Quina Quina - Menu Announcing Hondo Hondo - a word game in 100 words or less 42:57 Subgrid and the :has selector usage 46:02 Is it okay to be a front end developer and not be as interested in CSS? Tool Academy (American TV series) 51:12 Could you explain what are workers, processes, jobs, tasks, and deamons? 56:29 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Scott: Infamous International: The Pink Panthers Story Wes: PowerBlock Adjustable Dumbbells For Home Gym & Commercial Use Syntax episode 3 Shameless Plugs Scott: Syntax on TikTok Wes: Wes Bos Tutorials Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Nov 2023

      1 hr

      In this Hasty Treat, Scott and Wes talk about the secret sauce that’s going into the creation of the new Syntax.fm website including the styling, search, tooling, database, hosting, and more. Show Notes 00:21:15 Welcome 01:10:11 Where did the name “Secret Sauce” come from? 03:16:00 Syntax Brought to you by Sentry 04:32:11 What Syntax.fm is built in? SvelteKit • Web development, streamlined muxinc/media-chrome: Custom elements (web components) for making audio and video player controls that look great in your website or app. Media Chrome Docs 07:24:01 How we’re doing search flexsearch - npm 12:22:20 Styling Prettier · Opinionated Code Formatter PostCSS - a tool for transforming CSS with JavaScript 16:00:05 Tooling Fast, disk space efficient package manager | pnpm 18:55:11 Database Prisma | Next-generation ORM for Node.js & TypeScript 21:11:11 Services Deepgram OpenAI Anthropic \ Introducing Claude 24:34:11 Hosting Vercel: Develop. Preview. Ship. For the best frontend teams PlanetScale: The world’s most advanced database platform — PlanetScale Cloudflare - The Web Performance & Security Company | Cloudflare Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      28 min 24 sec

      In this supper club episode of Syntax, Wes and Scott talk with Jason Lengstorf about his journey in video creation, live streaming, and tech education. What’s up with Jason’s new studio? How does he prep for a live stream? Show Notes 00:32 Welcome 02:21 Syntax Brought to you by Sentry 02:39 Who is Jason Lengstorf? 05:43 Why did you decide to go full time on Learn with Jason? 10:04 Jason’s new YouTube series idea 13:36 Jason gets a special delivery 14:30 What’s in Jason’s new studio? 20:14 What’s the ideal medium for content in 2023? 24:28 Treat decisions as forever, for now. 26:01 Is live streaming as difficult to get into as it seems? 29:21 How do you prepare for a live stream? 32:58 How do you decide what to create? 38:23 How do you feel about React? 40:21 What are your thoughts on AI? 49:08 Supper Club questions 56:25 Sick Picks Sarah Drasner’s Site Animation With Svelte (with Scott Tolinski) — Learn With Jason Gatsby Netlify Jessica Kobeissi ANDREW HUANG Theo Browne Cassidy Williams Bytes - The Best JavaScript Newsletter ZSA Moonlander: ErgoDox EZ Operator Fonts Night Owl SyntaxFM by SyntaxFM MD IO ILME-FX3 | Interchangeable-lens Cameras FE 24-70 mm F2.8 GM Sick Picks Synergy - Share one mouse & keyboard across computers Shameless Plugs LearnWithJason.dev: Learn. Build. Grow. Together. Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads

      Oct 2023

      58 min 27 sec

      In this episode of Syntax, Wes and Scott relate even more spooky listener submitted coding horrors including crypto copy paste, Big Brother bug, losing $50,000, 2,000 SMS, a $20,000 hour, and more. Show Notes 00:09 Velcome to Synax 01:09 Syntax Brought to you by Sentry 01:36 Stories are anonymous! 01:57 Crypto copy + paste 03:48 Big Brother Bug 07:00 One of 6 laptops that can fix npm 07:57 Auto-submitting payments 09:42 40,000 orders shipped and refunded 11:16 Dropping the analytics database 11:40 dev was actually production 12:40 Updating the DNS 13:40 Losing ~$50,000 15:30 Clearing 80 million records 16:21 Web chat DDoS 18:00 URL Shortener #$@%# Ontario’s rejected licence plates for 2022 | CP24.com Boonta Vista: A “political” podcast for “smart” people 21:12 Sending an email to 20,000 users 21:42 Moving code to GitHub 23:32 “Lorem sale” 26:08 2,000 SMS messages 27:00 International shipment of kiosks 28:19 Crashing production Slow DB Queries | Sentry Documentation 31:01 Hitting customers credit card limit 32:01 Infinite redirect loop 32:53 My first commit 33:23 Augmented reality game prize mistakes 35:15 A $20,000 hour 35:57 Site went down for 3 days 37:42 Accidentally truncated the prod database 38:48 Off by one error 40:05 Exposing database credentials 42:08 Delete a temp directory on prod 44:51 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Scott: Race to the Summit Wes: 100LBS Strong Magnetic Hooks Shameless Plugs Scott: Sentry Wes: Wes Bos Tutorials Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      50 min 29 sec

      In this Hasty Treat, Scott and Wes relate some spooky listener submitted coding horrors including updates for a large furniture retailer, pull request oversights, disallowing everything in a robots.txt, massive email fail, and more. Show Notes 00:21 Welcome 01:22 Whetting your whistle 01:52 Syntax Brought to you by Sentry 02:13 Site updates for one of the largest furniture retailers in my country 04:18 The Embarrassing Test Page Incident 05:54 The Pull Request Oversight 08:02 Making changes to a JSON file 13:11 Deploying a “disallow everything” robots.txt 14:45 GDPR Deletion 16:11 Dropping the backing disk for the production postgres 17:05 Accidentally pushing staging code as an update 18:34 Email fail 19:25 Hot mobile app prayers 22:28 Bogus ACH info 23:51 Wiring money error 26:44 Payment gateway test not production Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      31 min 52 sec

      In this supper club episode of Syntax, Wes and Scott talk with Brad Frost about how to implement design systems in small and large scale projects, best practices around naming things, keeping everything in sync across different codebases, and how design systems help projects. Show Notes 00:32 Welcome 01:02 Syntax Brought to you by Sentry 01:34 Introducing Brad Frost Brad Frost.com Atomic Design by Brad Frost Brad (@brad_frost) on Twitter Brad on LinkedIn Brad on Mastodon Brad on YouTube Brad on GitHub Brad Frost on CodePen Big Medium | Design for What’s Next 06:43 What is a design system? 12:12 How do you keep design and code in sync? Material Design Shopify Polaris Carbon Design System The Design System Ecosystem | Brad Frost 16:13 How do you use Shopify, WordPress, React, etc. through a design system? 19:41 How is CSS handled? 25:40 What’s the benefit of going all in on web components? 29:13 Do small startups need to worry about design systems? 33:03 How do design tokens work? 38:17 How do you deal with pushback on design systems? 41:46 How do you go outside the guidelines? 45:24 What system do you use for naming things? 49:34 How do you best document your language choices? 51:09 Supper Club questions Thinking in Systems: International Bestseller: Donella H. Meadows, Diana Wright: 9781603580557: Amazon.com: Books Miriam Eric Suzanne Zeldman on Web and Interaction Design - Famous for stating the obvious. 57:54 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Rubblebucket Shameless Plugs Frostapalooza! | Brad Frost FROSTAPALOOZA - A Concert Party Happening On August 17th 2024 Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      59 min 43 sec

      In this episode of Syntax, Wes and Scott talk through recent developments in AI and how they might be useful for developers, whether AI is still worthy of the hype, and whether developer jobs are at risk from AI. Show Notes 00:10 Welcome 03:10 Syntax Brought to you by Sentry 03:49 v0.dev v0 by Vercel 09:28 Anthropic and Claude Claude Syntax Listener Survey 18:02 Facebook’s Meta AI AI at Meta 18:48 Cloudflare AI Large language model (LLM) Speech to text Translation Sentiment Analysis Image classification Embedding 27:24 AI Hardware announced Rewind 29:39 Cloudflare Hugging face Hugging Face – The AI community building the future. StarCoder: A State-of-the-Art LLM for Code Vectorize: a vector database for shipping AI-powered applications 36:28 OpenAI Function calling Function calling and other API updates 38:55 GPT-4V GPT-4V(ision) system card 42:36 GitHub CoPilot 44:03 Are we still on the AI hype train? 48:27 Are our jobs at risk as developers? 52:24 Spotify DJ AI Spotify Debuts a New AI DJ 53:29 ChatGPT plugins ChatGPT plugins 55:19 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Scott: Coding App for Kids | codeSpark Academy Wes: Peter Santenello, Roblox Shameless Plugs Scott: Sentry Wes: Wes Bos Tutorials Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      1 hr

      In this Hasty Treat, Scott and Wes talk about all the libraries we don’t need to use anymore thanks to their features being built into the browsers now. Show Notes 00:24 Welcome 01:55 Syntax Brought to you by Sentry 02:17 Why did people use jQuery? jQuery lukeed/polka: A micro web server so fast, it’ll make you dance! 05:12 Writing our own jQuery plugins 07:23 AJAX requests jQuery.ajax() 08:29 Express Migrating to Express 5 14:58 Underscore.JS Underscore.js 19:27 Require.js RequireJS 21:06 LeftPad Coder unpublished 17 lines of JavaScript and “broke the Internet” | Ars Technica 23:13 Grid systems 960 Grid System Susy | OddBird 26:24 Sass, Less, etc. Can Vanilla CSS Replace Sass Yet? — Syntax Podcast 603 26:58 Sockets.io Socket.IO 29:50 What else is going to get jQuery’d? Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      32 min 15 sec

      In this supper club episode of Syntax, Wes and Scott talk with Chris Lattner about Mojo, a new programming language for AI developers. Should developers learn Python? Where does Mojo run? What is Chris excited about in AI’s future? Show Notes 00:31 Welcome 01:05 Introducing Chris Lattner Chris Lattner’s Homepage Chris Lattner on Wikipedia Chris Lattner on GitHub Chris Lattner on Twitter Modular (@Modular_AI) / X Modular: AI development starts here Swift.org - Welcome to Swift.org 03:50 What’s the history behind the hardware? 08:10 What’s the difference between a compiled language vs an interpreted language? 12:13 Is Mojo a programming language? Mojo 🔥: Programming language for all of AI 15:12 Are Python libraries compatible with Mojo? 15:26 Why did you choose Python? 16:49 Why is AI so Python focused? 19:19 Should web developers learn Python? 21:40 Where does Mojo run? 25:05 How did you use the flame emoji for the Mojo file extension? 29:05 How does machine learning actually work? 37:36 Will Mojo be open source in some way? 39:16 How do you start developing a new programming language? 43:14 What is the future of developer jobs? 45:30 What are you excited about with AI in the future? 47:24 Supper Club questions Welcome to a World of OCaml 52:59 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Exercise Shameless Plugs Mojo 🔥: Programming language for all of AI Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      55 min 32 sec

      In this episode of Syntax, it’s part 2 of Wes and Scott’s reactions to the 2023 State of CSS survey including CSS frameworks, tooling, browser usage, SVG and CSS, and the CSS Awards. Show Notes 00:10 Welcome Reacting to State of CSS Survey — Syntax Podcast 672 State of CSS 2023 01:15 Syntax Brought to you by Sentry 01:29 CSS Frameworks Bootstrap · The most popular HTML, CSS, and JS library in the world. Open Props: sub-atomic styles Lightning CSS 10:57 How happy are you with CSS frameworks? 17:21 Other tools CSS Analytics - Project Wallace 19:34 Top utilities in use 24:48 Browser usage 29:01 CSS usage 33:25 Browser incompatibilities 36:42 SVG and CSS 44:28 Resources for learning CSS Kevin Powell | CSS Evangelist Fireship - Learn to Code Faster LeveUp Tutorials 46:55 Awards Panda CSS - Build modern websites using build time and type-safe CSS-in-JS 50:48 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Scott: A Timeline of the 1970s Heavyweight Boxing Division (Boxing Documentary) / Full Boxing Timelines Wes: NEIKO 10181A Step Drill Bit Set Shameless Plugs Scott: Sentry Wes: Wes Bos Tutorials Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      56 min 26 sec

      In this Hasty Treat, Scott and Wes talk through tips for upping your home office vibe, including cable management, lighting, ergonomics, and even roller blade wheels. Show Notes 00:18 Welcome 00:46 Syntax Brought to you by Sentry 01:13 Creating a great home office Scott’s New Office × The Levelup Lodge — Syntax Podcast 461 Wes’ New Soundproof Office — Syntax Podcast 516 03:22 Lighting 06:08 Clutter and cords Alex Tech 25ft - 1/2 inch Cord Protector Wire D-Line CC-1 Light Duty Floor Cord Cover/Cable Protector Cable Clips WireRun Under Desk Cable Manager 14" 10:33 Clean 13:42 Sound absorption Bose QuietComfort 35 II review Wyze Noise-Cancelling Headphones 19:26 Ergonomics VIVO Single Monitor Height Adjustable Counterbalance Pneumatic Arm Desk Mount Stand 23:17 Roller blade wheels for your chair Office Owl Caster Wheels Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      26 min 49 sec

      In this episode of Syntax, Wes and Scott talk with David East about Google’s new cloud based full-stack, multiplatform app development workflow, Project IDX. Show Notes 00:22 Welcome 01:31 Browser in the car 02:16 Syntax Brought to you by Sentry 02:24 Who is David East? David East David East David East (@_davideast) / X Learn from David East’s courses | Frontend Masters Firebase | Google’s Mobile and Web App Development Platform 04:32 What is IDX? Project IDX Flutter - Build apps for any screen Welcome to nix.dev — nix.dev documentation 13:15 What’s the experience of IDX? Nx: Smart, Fast and Extensible Build System 16:42 IDX isn’t just a toy - it’s a dev machine 20:29 What’s the offline mode like? 23:30 How are VS Code extensions handled? 27:03 Is multiplayer or project sharing on the road map? 28:45 How is latency taken care of? 31:43 This could be faster than local dev environment 36:18 Portability of your projects 42:25 What do you think about iPad coding? 44:28 Phone testing with IDX Firebase Test Lab 46:59 How is AI being integrated? 50:23 Supper Club questions Introducing Operator | Fonts by Hoefler&Co. MD IO by Mass-Driver - Future Fonts 55:25 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× CSS Shameless Plugs The Bad At Css Podcast Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      58 min 48 sec

      In this episode of Syntax, Wes and Scott answer your questions about Bun, using custom auth headers, the difference between trpc, REST, or GraphQL, documenting your code, why learn Rust, and more! Show Notes Take the Syntax Survey Attend the Syntax Meetup Oct 10th in Toronto 00:00 Syntax Survey 00:24 Syntax Meetup 01:02 Welcome 01:24 Scott’s macOS bug Tauri Apps 02:19 Syntax Brought to you by Sentry 02:40 What are your thoughts on Bun? Bun — A fast all-in-one JavaScript runtime Zig Programming Language Deno, The next-generation JavaScript runtime Cloudflare Workers Netlify Connect Storybook Histoire 11:25 How can I add custom auth header for image requests done by the browser? 17:32 What are the differences between trpc, REST, and graphql? 24:48 What kind of teams would use trpc, REST, or graphql? 27:12 Are there any podcast guest opportunities on Syntax? 32:21 With no initial documentation, how do you suggest we document our intricate code, business logic, and integrations? 38:53 Rust didn’t invent this, they’re common paradigms in languages 41:05 Why Rust? Rust Programming Language 43:52 Is Scott still using his Tonal? Tonal 44:42 What did I do to make Fetch rebel against me? Proxyman 50:40 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Scott: Glow Up Wes: SendCutSend Shameless Plugs Scott: Syntax on TikTok Wes: Wes Bos Tutorials Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      56 min 50 sec

      In this Hasty Treat, Scott and Wes talk about headings on your website, why you should care, how to structure your headings, and what tooling is there for testing your website? Show Notes 00:26 Welcome 01:21 Syntax Brought to you by Sentry 01:41 Why do we care about Headings? How-to: Accessible heading structure - The A11Y Project 03:12 Heading design provides an outline for your website 08:45 Using H1 classes? 10:28 Is the logo an H1? 13:03 Giving an ARIA level 17:14 Can headings be visually hidden? 21:00 Benefits of good heading design 22:27 Tooling Heading outlines - ADG HTML Standard Polypane, The browser for ambitious web developers HeadingsMap - Chrome Web Store HeadingsMap – Get this Extension for 🦊 Firefox (en-US) Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Oct 2023

      28 min 6 sec

      In this supper club episode of Syntax, Wes and Scott talk with Taylor Desseyn about his work as a job recruiter, how hiring has changed over the last few years, what soft and tech skills developers need, what not to do when applying, and how AI is affecting the hiring process. Show Notes 00:35 Welcome 01:10 Syntax Brought to you by Sentry 01:35 Who is Taylor Desseyn? taylor desseyn (/tdesseyn) Taylor Desseyn on LinkedIn World-class technical talent on tap | Gun.io taylor desseyn (@tdesseyn) / X Taylor Desseyn 03:49 Why are recruiters just sending emails? 05:26 How much does a recruiter make? 06:44 How have things changed in the last couple of years? 09:22 How can developers stand out when applying? 13:52 What do developers do that cost them jobs? 28:46 What soft skills are employers looking for? 32:01 What tech skills are showing up in job postings? 34:57 Are resumes dead? 40:16 How does Gun.io vet people? World-class technical talent on tap | Gun.io 43:15 How is AI changing hiring? 46:03 What’s working on social media marketing in hiring? 48:33 Supper Club questions 53:39 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Group Chat - Dee Murthy - Watch Painkiller | Netflix Official Site Shameless Plugs Guidance Counselor 2.0 | Podcast on Spotify The Unicorn Finders | Podcast on Spotify Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Sep 2023

      56 min 18 sec

      In this episode of Syntax, Wes and Scott go over some of the results the State of CSS survey for 2023, including drop-shadow, subgrid, logical properties, media range, and more! Show Notes 00:25:21 Welcome 01:31:22 Soccer update 03:52:05 Syntax Brought to you by Sentry 04:03:18 StateOfCSS.com State of CSS 2023 04:21:11 Top 5 Most Used Features 09:13:09 Drop-shadow 13:00:11 Subgrid 18:31:21 Logical properties 20:11:20 Media range 20:52:11 Object view box 23:10:14 Anchor positioning 28:21:09 Intrinsic sizing keywords 29:32:00 View Transitions API Can I use… Support tables for HTML5, CSS3, etc Astro Supper Club × Astro 2.0 with Fred Schott — Syntax Podcast 580 31:43:18 Updates to colors in CSS 35:07:05 Accent color, current color 36:36:11 Scroll snap and overscroll behaviour 39:04:22 Touch action 40:16:01 Line clamp or variable font Variable Fonts 45:28:11 Accessibility features 48:33:12 :Has has jumped 49:32:11 @Property 53:52:13 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Scott: Kodiak Cakes Strawberries & Cream Oatmeal Packets (Pack of 6) Wes: Food Storage Containers, Baby Food Storage Containers with Lid, Baby Food and Toddler Snack Containers Shameless Plugs Scott: Syntax Podcast (@syntaxfm) | TikTok Wes: Web Unleashed 2023 - FITC Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Sep 2023

      1 hr

      In this Hasty Treat, Scott and Wes talk about the building desktop apps using Electron vs Tauri. Show Notes 00:26 Welcome 00:55 Syntax Brought to you by Sentry 01:15 Check my hair app Tauri Apps Electron Hand Mirror on the Mac App Store SoFriendly/2fhey 04:19 What is Tauri? 08:23 The experience of writing apps in Electron vs Tauri 16:17 Electron Forge 20:02 Building the same app in Electron vs Tauri Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Sep 2023

      28 min 45 sec

      In this supper club episode of Syntax, Wes and Scott talk with Dr. Courtney Tolinski about signs and symptoms of anxiety, what the long term effects are of anxiety, how to know if you need help, and what kinds of things you can do to deal with anxiety and uncertainty. Show Notes 00:35 Welcome 01:11 Syntax Brought to you by Sentry 02:23 Introducing Dr. Courtney Tolinski Mental Health and Dev ft Dr. Courtney Tolinski - Depression, Anxiety, Imposter Syndrome, Focus, Motivation, Burnout — Syntax Podcast 236 Supper Club × Coding with ADHD with Dr. Courtney Tolinski — Syntax Podcast 532 04:13 What is anxiety? 06:44 Is there a difference between anxiety and just not wanting to do something? 08:58 What kinds of physical symptoms are there? 15:43 What are the longer term effects of anxiety? 17:34 How do you know if you need help with anxiety? 21:05 What can I do to solve my anxiety? Psychology Today Canada: Health, Help, Happiness + Find a Therapist Obsidian - Sharpen your thinking How We Feel Apple Reveals More iOS 17 Features Not Available Until Later This Year - MacRumors Meditation and Sleep Made Simple - Headspace Bearable Symptom Tracker, Mood Journal, & Health App BreathingApp — Personal breathing trainer for a better health 30:15 How can we recognize anxiety triggers? 33:26 What advice do you have for dealing with uncertainty? 37:54 How can I deal with keeping up with everything and feeling like I’m falling behind? 43:02 Navigating big life decisions 51:39 Supper Club questions Being Well Podcast with Dr. Rick Hanson and Forrest Hanson Celebrity Book Club with Steven & Lily on Apple Podcasts Criminality 58:01 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Fullstar Compact Vegetable Chopper - Vegetable Cutter, Food Chopper, Veggie Chopper, Onion Chopper, Vegetable Chopper With Container, Vegetable Slicer, Vegetable Cutter, Mandoline Slicer (6 Inserts): Home & Kitchen Shameless Plugs Learning Differently (@learning.differently) • Instagram photos and videos Zarlengo Foundation Learning Evaluation Center| Denver, Colorado Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Sep 2023

      1 hr 1 min

      In this episode of Syntax, Wes reviews his experience building with Svelte and SvelteKit including templating, data fetching, actions, managing state, request handlers, and more. Show Notes 00:10 Welcome 01:12 Syntax Brought to you by Sentry 02:11 What is Svelte vs SvelteKit From React To SvelteKit — Syntax Podcast 390 Hasty Treat - Wes & Scott Look At Svelte 3 — Syntax Podcast 173 Svelte • Cybernetically enhanced web apps SvelteKit • Web development, streamlined 05:59 Templating in Svelte 18:20 Data fetching in SvelteKit 25:23 Actions 28:58 State 32:41 Binding values 36:18 Hooks 37:25 Request handlers Special elements • Docs • Svelte website/src/actions/anchor.ts at v2 · syntaxfm/website website/src/actions/click_outside.ts at v2 · syntaxfm/website 39:23 Svelte Actions 42:26 Popover API 45:33 Routing 47:22 Layouts 50:08 Styling 57:09 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Scott: Aqara Smart Lock U100 Wes: Headphones Replacement Ear Pads,Compatible for Bose Quietcomfort QC15 QC25 QC35 35 ii-(Black Floral) Shameless Plugs Scott: Sentry Wes: Wes Bos Tutorials Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Sep 2023

      1 hr 2 min

      In this Hasty Treat, Scott and Wes talk about how you can intercept and debug traffic going out from your computer or other internet connected devices in your home, or your garage! Show Notes 00:25 Welcome 01:55 Syntax Brought to you by Sentry 02:17 Scott’s story of wanting to intercept data Tonal 06:36 Other examples 08:38 Different types of traffic 14:52 TCP vs UDP 16:07 Why would you want to run a proxy? 24:20 Applications to use Charles Web Debugging Proxy • HTTP Monitor / HTTP Proxy / HTTPS & SSL Proxy / Reverse Proxy Proxyman · Native, Modern Web Debugging Proxy · Inspect network traffic from Mac, iOS, Android devices with ease Intercept, debug & mock HTTP with HTTP Toolkit mitmproxy - an interactive HTTPS proxy Wireshark · Go Deep Little Snitch Capturing Modes - Fiddler Everywhere Hacksore on Twitter How I Hacked my Car :: Programming With Style Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Sep 2023

      35 min 31 sec

      In this supper club episode of Syntax, Wes and Scott talk with Stuart Bloxham about how he learned to code, what his interview process was like when applying for a job, how he found the time to make it all work, and his thoughts on bootcamps and ways to learn. Show Notes 00:36 Welcome Stuart Bloxham on GitHub Stuart Bloxham on LinkedIn 02:09 How did you decide to be a web developer? 08:22 Did you have clarity when your kid was born? 10:20 What was the interview process like? 18:25 What and how did you learn? 20:28 What’s the state of bootcamps in 2023? 22:03 How important have soft skills been? 25:14 How do you know when you’re ready to apply for a job? 35:24 Do you like coding? 37:49 How did you find the time to make it all work? 41:42 How did you deal with burnout? 43:06 Supper Club questions 45:34 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Flowerhorn cichlid Shameless Plugs Stuart Bloxham’s Portfolio Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Sep 2023

      48 min 26 sec

      In this episode of Syntax, Wes and Scott review the projects they built during Sentry’s Hackweek: a realtime Markdown multiplayer editor, and a hardware recording button. Show Notes 00:11 Welcome 00:57 What is a hack week? 01:55 Syntax Brought to you by Sentry 03:42 Scott’s project: a multiplayer editor Liveblocks | Collaborative experiences in days, not months PartyKit | Everything is better with friends BlockNote - Javascript Block-Based text editor | BlockNote Dev toolkit for building collaborative editors – Tiptap microsoft/monaco-editor: A browser based code editor syntaxfm/hackweek-md-multiplayer-editor: Sentry.io Hackweek Submisison - A multiplayer editor for .md files that comits directly to GitHub Convex | The fullstack TypeScript development platform The Everything App 13:57 Multiplayer is so much easier 19:56 Wes’ project: A recording button Oracle VM VirtualBox Run Windows on Mac – Parallels Desktop 19 Virtual Machine for Mac Karabiner-Elements folivora.ai - Great Tools for your Mac! Home Assistant The World’s Leading 2D and 3D Platform | Unity Pro Free Trial SendCutSend | Online Laser Cutting and Waterjet Cutting blender.org - Home of the Blender project - Free and Open 3D Creation Software 42:31 Learning to skateboard 43:59 F1 documentary follow up 45:30 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Scott: BetterDisplay: Unlock your displays on your Mac! Wes: LOVIMAG Magnetic Hooks Heavy Duty Shameless Plugs Scott: Syntax on TikTok Wes: @WesBos on X.com Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Sep 2023

      51 min 25 sec

      In this Hasty Treat, Scott and Wes talk about the arrival of CSS nesting. What is CSS nesting? How does CSS nesting work? And does it work in all browsers? Show Notes 00:24 Welcome 02:31 What’s up with CSS nesting? "CSS Nesting just landed in Firefox 117 which puts it at 100% browser support! You can start using it today — here are 11 examples on how it works 👇 04:10 How does CSS nesting work? 09:23 What the ampersand does in nesting 21:05 It works with media queries 25:29 How does it work on all the browsers? 29:32 Lightning CSS Lightning CSS Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Sep 2023

      31 min 6 sec

      In this supper club episode of Syntax, Wes and Scott talk with Fred Schott all things Astro with the announcement of Astro version 3, marketing open source projects, Starlight docs, keeping up to date, and making major version numbers less scary. Show Notes 00:35 Welcome 3x guest Fred Schott! Supper Club × Astro 2.0 with Fred Schott — Syntax Podcast 580 Pika Pkg — Syntax Podcast 212 05:11 What is Astro? 07:37 What’s new in Astro v3? Astro 3.0 | Astro 14:18 Behind the scenes improvements in Astro v3 18:17 HMR Enhancements 20:10 What’s the hosting partner deal with Vercel? Vercel: Our Official Hosting Partner | Astro 28:04 Docs template Starlight announcement Starlight 🌟 Build documentation sites with Astro 31:28 How often do you release updates? 33:47 Marketing open source Time to suit up | Astro Shop SvelteKit • Web development, streamlined 36:18 Making major version numbers less scary 40:04 Does Astro use Vite? Vite | Next Generation Frontend Tooling 42:01 Is it different working on a framework than a tool like Snowpack? 43:53 Thoughts on cloud text editors Project IDX 47:02 How do you keep up to date? 48:43 Do you write in TypeScript? 51:31 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Factorio Shameless Plugs Astro (@astrodotbuild) Tweet us your tasty treats Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

      Sep 2023

      55 min 12 sec

      \ No newline at end of file diff --git a/packages/metascraper-spotify/test/fixtures/track.html b/packages/metascraper-spotify/test/fixtures/track.html index 4b3b0790f..ad7ba0ec7 100644 --- a/packages/metascraper-spotify/test/fixtures/track.html +++ b/packages/metascraper-spotify/test/fixtures/track.html @@ -1,8 +1,5 @@ -Spotify – Canon - Live / AAA - song and lyrics by Justice
      Canon - Live / AAA

      Preview of Spotify

      Sign up to get unlimited songs and podcasts with occasional ads. No credit card needed.

      0:00
      0:00
      Canon - Live / AAA

      Song

      Canon - Live / AAA

      4:11
      Sign in to see lyrics and listen to the full track
      Artist
      Justice
      Popular Tracks by

      Justice

      From the album
      Access All Arenas

      © 2013 Ed Banger Records under exclusive license to Because Music

      ℗ 2013 Ed Banger Records under exclusive license to Because Music

      - + + .ot-floating-button__front{background-image:url('https://cdn.cookielaw.org/logos/static/ot_persistent_cookie_icon.png')} + @keyframes slide-down-custom { + 0% { + bottom: 420px !important; + } + 100% { + bottom: 0px; + } + } + @-webkit-keyframes slide-down-custom { + 0% { + bottom: 420px !important; + } + 100% { + bottom: 0px; + } + } + @-moz-keyframes slide-down-custom { + 0% { + bottom: 420px !important; + } + 100% { + bottom: 0px; + } + } +

      Preview of Spotify

      Sign up to get unlimited songs and podcasts with occasional ads. No credit card needed.

      -:--
      -:--
      Canon (Live / AAA)
      Canon (Live / AAA)
      Song

      Canon (Live / AAA)

      Access All Arenas20134:101,096,378

      May 6, 2013

      © 2013 Ed Banger Records under exclusive licence to Because Music

      ℗ 2013 Ed Banger Records under exclusive licence to Because Music

      \ No newline at end of file diff --git a/packages/metascraper-spotify/test/snapshots/index.js.snap b/packages/metascraper-spotify/test/snapshots/index.js.snap index 501079d67..04f2b1348 100644 Binary files a/packages/metascraper-spotify/test/snapshots/index.js.snap and b/packages/metascraper-spotify/test/snapshots/index.js.snap differ diff --git a/packages/metascraper-telegram/test/fixtures/no-iframe.html b/packages/metascraper-telegram/test/fixtures/no-iframe.html index ce48ba501..297426e33 100644 --- a/packages/metascraper-telegram/test/fixtures/no-iframe.html +++ b/packages/metascraper-telegram/test/fixtures/no-iframe.html @@ -1,797 +1,152 @@ - - - + Telegram: Contact @DiaboxApp + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - + + - -
      - -
      -
      +
      + +
      +
      - -
      -
      - DiaBox -
      -
      2 875 subscribers
      -
      DiaBox App Official Channel
      - - - -
      - If you have Telegram, you can view and join
      DiaBox - right away. -
      + +
      +
      +DiaBox +
      +
      5 012 subscribers
      +
      DiaBox App Official Channel
      + + + +
      +If you have Telegram, you can view and join
      DiaBox right away. +
      -
      +
      - + - - - + diff --git a/packages/metascraper-telegram/test/fixtures/post-full-image.html b/packages/metascraper-telegram/test/fixtures/post-full-image.html index 760971a73..a785a0fe1 100644 --- a/packages/metascraper-telegram/test/fixtures/post-full-image.html +++ b/packages/metascraper-telegram/test/fixtures/post-full-image.html @@ -1,11 +1,12 @@ - + Telegram: Contact @chollometro + - + - + @@ -50,64 +51,76 @@ - - + + + + + + + - - - - + + + +
      + +
      +
      - - Don't have Telegram yet? Try it now! - -
      -
      - +
      +
      +
      +
      + +
      +
      +
      -
      -
      - -
      -
      -
      - Embed +
      + -
      - -
      - -
      - Copy +
      +
      + Embed +
      +
      + +
      + +
      + Copy +
      +
      + + - +} else { +document.body.classList.add('sticky_actions'); +var observer = new IntersectionObserver(function(records, observer) { + for (var i = 0; i < records.length; i++) { + var record = records[i]; + var widget_actions_wrap = document.getElementById('widget_actions_wrap'); + var widget_actions = document.getElementById('widget_actions'); + if (widget_actions_wrap) { + pauseWallpaper(widget_actions); + widget_actions_wrap.classList.toggle('stuck', !record.isIntersecting); + } + } +}, {threshold: [0], root: document}); +observer.observe(document.getElementById('widget_actions_helper')); +} + + + - - + diff --git a/packages/metascraper-telegram/test/fixtures/post-link-image.html b/packages/metascraper-telegram/test/fixtures/post-link-image.html index 20bab828d..e91c69ddb 100644 --- a/packages/metascraper-telegram/test/fixtures/post-link-image.html +++ b/packages/metascraper-telegram/test/fixtures/post-link-image.html @@ -1,11 +1,12 @@ - + Telegram: Contact @teslahunt + - + - + @@ -44,64 +45,76 @@ - - + + + + + + + - - - - + + + +
      + +
      +
      - - Don't have Telegram yet? Try it now! - -
      -
      - +
      +
      +
      +
      + +
      +
      +
      -
      -
      - -
      -
      -
      - Embed +
      + -
      - -
      - -
      - Copy +
      +
      + Embed +
      +
      + +
      + +
      + Copy +
      +
      + + - +} else { +document.body.classList.add('sticky_actions'); +var observer = new IntersectionObserver(function(records, observer) { + for (var i = 0; i < records.length; i++) { + var record = records[i]; + var widget_actions_wrap = document.getElementById('widget_actions_wrap'); + var widget_actions = document.getElementById('widget_actions'); + if (widget_actions_wrap) { + pauseWallpaper(widget_actions); + widget_actions_wrap.classList.toggle('stuck', !record.isIntersecting); + } + } +}, {threshold: [0], root: document}); +observer.observe(document.getElementById('widget_actions_helper')); +} + + + - - + diff --git a/packages/metascraper-telegram/test/fixtures/post-right-preview.html b/packages/metascraper-telegram/test/fixtures/post-right-preview.html index ea3adaec4..57aaf568e 100644 --- a/packages/metascraper-telegram/test/fixtures/post-right-preview.html +++ b/packages/metascraper-telegram/test/fixtures/post-right-preview.html @@ -1,11 +1,12 @@ - + Telegram: Contact @teslahunt + - + - + @@ -54,34 +55,12 @@ - + - - - + + +
      @@ -96,7 +75,7 @@ - + Download for Mac
      @@ -105,7 +84,7 @@
      - +
      @@ -113,9 +92,7 @@
      @@ -126,7 +103,7 @@ View In Channel
      - + @@ -284,5 +261,5 @@ - + diff --git a/packages/metascraper-telegram/test/snapshots/index.js.md b/packages/metascraper-telegram/test/snapshots/index.js.md index ce084ed2e..353f2251b 100644 --- a/packages/metascraper-telegram/test/snapshots/index.js.md +++ b/packages/metascraper-telegram/test/snapshots/index.js.md @@ -15,7 +15,7 @@ Generated by [AVA](https://avajs.dev). ⬩ 54,700 €␊ ⬩ 65,544 kms en Francia Primera aparición hace 31 días, última rebaja hace 12 días`, lang: null, - logo: 'https://cdn4.telegram-cdn.org/file/QufEVXh5pk_-hdh_IxHzKWtjavJ3BAEfMr65OC4m6qMlTCJhWoYQh2nvhso1IAN0-ja8sLYxVuuoE1hM8KL6cHxim3pFlVgpWeveJ2mUk7bi_8EgzDdi6GFvIISWjKQEQ5W1RY9CVK0rMQCsXAjJHsuVskuQKsP2g67nfXm1woGP_0IAIc_oOMeqlr4sNoOmHNpm97HgvKUPCQUeCyycZkb1R21GYvRrfcFQndHlQLqMHr_UgTn_sjoqVuIVoTUcIc6RReZFe-MIRJXV9lSgKN58N6Lp6toDb0oaBHiiWVAYeMcLfrP4DnAG89fJEe4tX5qLJugEP0_8Cw5LQlwVKw.jpg', + logo: 'https://cdn4.cdn-telegram.org/file/hrcPWkJ3aSu2eVcXMTj9_ujDeZKPJOI0Eq8jF9SXLPQ1Qih0s3UqH9adZljdQ7YZiY8TMgg7nHczGrg61j0mWcWWWT5FJf5CoJyBo21df9HYO0lmF4maT4Y9LJD4HTsUhK7rK-FThweVCfP-qsrQmhxJj1c6CcL-knkm8Q2sd-EoWBlmA8dR_OElqAtPe6C0Z7d93E3ekuZCxruTByb72IRqHERABI_a2ND5BNghd_Ews1Qxr-KiNkOSN9mnBhhGgpdlvIcmqdmOswsnxl_vKN1ss92iOPQeuByn4D5iWrCW5Ob7hSLgMpdLQ69fajTXf3IO0V1ufQxeZGcLze970w.jpg', publisher: 'Telegram', title: 'Tesla Hunt', url: 'https://t.me/teslahunt/2351', @@ -31,7 +31,7 @@ Generated by [AVA](https://avajs.dev). description: `CHOLLO COMPARTIDO❗️🔥#Amazon 🔹Lámpara de pie LED regulable con mando a distancia 39.07€ ❗️🔥(PVP: 73€) 🛒https://chollo.to/pj4t0 🗣Compartido por Mankyky␊ 🔥Más chollos: @chollos / @descuentos`, lang: null, - logo: 'https://cdn4.telesco.pe/file/vxBnkS57l7uz2DCihAieucBbqIMQgu6PUrnoYCzPZJBXGnd3esoGPCsOum6YAH3zzscQuUfZ6QW0sTJsiND1bokir51pYvVHQmfW8uyqltJC_V5UYmZhbJJbdN4HLa6ioz1vIgdj0fPlIradlC5_LcKgz8A2FmqxwJdiuKH9wGM1vAmLOnUZi9xdZFsXp4KBw7zzAP234MomPpsQ2tgxKbhg-mLfmytiY9Ra5WZByAk-XgyQ_L7UwAFrpruEQTB26x41WkBCOmgD7mC8_uWDXS4rzkPkFWrIELfNarxqBQIs5kc8kLYSZp8BRVqrNQZx4OtBNbqC39e4R4DSvr4DPA.jpg', + logo: 'https://cdn4.cdn-telegram.org/file/TCxq-MH8MaWFvsSAU2I5i2B0vcuZ1oqhSfbj8XZDPQYPOGF0JcyWP4KTQIw3H7ilmw-w1rknHU1hS5CG6rTqp36X6wzPK_M9_6kSZv_1eBV4TR60tGdvIEDJtphfJDz22MdGpXffrgVV3I6VUREZ8AZJoQi6bB2wuF5gqh2H9I2RFvOgP6N7FQq-siy0fPP_mMLL9Vew1FqdDyiwVUf20OXHzCPZFDJn3dVuiwI1ORAl506nz1GCa5o8__Qs50U1dPaY8LJVZt556PQjYRgU00eGIdBWSyQt2vo1utR-7WXtClwPYt1S1r-lhbyqt7e0Kzz4bcDVi2_u_LNJrU7Arg.jpg', publisher: 'Telegram', title: 'Chollometro', url: 'https://t.me/chollometro/28542', @@ -48,7 +48,7 @@ Generated by [AVA](https://avajs.dev). ⬩ 51,500 € (VAT not refundable)␊ ⬩ 16,047 kms in Österreich`, lang: null, - logo: 'https://cdn4.telesco.pe/file/rU_V1ymivNyN1lwCRyPJ1x9hRS-32vNneloINHfC-K8LZV7z_YbgdFs0gmw-rM7zV5pPE7Qxv_nYup1wkrb__DUZ5RnsoC_auUAo4uKByZSvPwHQfYKx27V9XERZYDqNKDF3u3xG-LdYYxKdHFdkQFkDYuugj3xjEvsAvJTyVekrIIJiHbgd4jfGlYwWjH5chPRnRGNNen-bpdyHkcpJUB3vyfhRnryBtfUVEQYWy4lhuzV4UXgGFX-sdebWsudhO5HasJVCbhYslOVxK3OfiV1xG2bVO8B64rBmeoTsDBo0_wKLOofJX87ZUYfvifD_EboW7B73-473lmvMpoMUDw.jpg', + logo: 'https://cdn4.cdn-telegram.org/file/hrcPWkJ3aSu2eVcXMTj9_ujDeZKPJOI0Eq8jF9SXLPQ1Qih0s3UqH9adZljdQ7YZiY8TMgg7nHczGrg61j0mWcWWWT5FJf5CoJyBo21df9HYO0lmF4maT4Y9LJD4HTsUhK7rK-FThweVCfP-qsrQmhxJj1c6CcL-knkm8Q2sd-EoWBlmA8dR_OElqAtPe6C0Z7d93E3ekuZCxruTByb72IRqHERABI_a2ND5BNghd_Ews1Qxr-KiNkOSN9mnBhhGgpdlvIcmqdmOswsnxl_vKN1ss92iOPQeuByn4D5iWrCW5Ob7hSLgMpdLQ69fajTXf3IO0V1ufQxeZGcLze970w.jpg', publisher: 'Telegram', title: 'Tesla Hunt', url: 'https://t.me/teslahunt/15513', diff --git a/packages/metascraper-telegram/test/snapshots/index.js.snap b/packages/metascraper-telegram/test/snapshots/index.js.snap index 0d4bbec9b..02464cf50 100644 Binary files a/packages/metascraper-telegram/test/snapshots/index.js.snap and b/packages/metascraper-telegram/test/snapshots/index.js.snap differ diff --git a/packages/metascraper-twitter/src/index.js b/packages/metascraper-twitter/src/index.js index 7259dd5d5..eb7754b09 100644 --- a/packages/metascraper-twitter/src/index.js +++ b/packages/metascraper-twitter/src/index.js @@ -34,12 +34,10 @@ module.exports = () => { toAuthor($jsonld('author.givenName')), toAuthor($ => { const author = $('meta[property="og:title"]').attr('content') - return author?.includes(' on Twitter') - ? author.split(' on Twitter')[0] - : author + return author?.includes(' on X') ? author.split(' on X')[0] : author }) ], - title: [toTitle(($, url) => `@${url.split('/')[3]} on Twitter`)], + title: [toTitle(($, url) => `@${url.split('/')[3]} on X`)], date: [ toDate(($, url) => { const id = url.replace('https://twitter.com', '') @@ -56,7 +54,7 @@ module.exports = () => { toImage($ => avatarUrl($('article img[src]').attr('src'))) ], video: [toVideo(($, url) => isTweet(url) && $('video').attr('src'))], - publisher: () => 'Twitter' + publisher: () => 'X' } rules.test = ({ url }) => test(url) diff --git a/packages/metascraper-twitter/test/fixtures/profile-video.html b/packages/metascraper-twitter/test/fixtures/profile-video.html index 611e98983..bd68cdde4 100644 --- a/packages/metascraper-twitter/test/fixtures/profile-video.html +++ b/packages/metascraper-twitter/test/fixtures/profile-video.html @@ -93,7 +93,7 @@ @ladyCircus and me. https://t.co/M5v7b5owoD" property="og:description" data-rh="true"> + + + + + + + + - -
      Don’t miss what’s happening
      People on Twitter are the first to know.
      Did someone say … cookies?
      Twitter and its partners use cookies to provide you with a better, safer and faster service and to support our business. Some cookies are necessary to use our services, improve our services, and make sure they work properly. Show more about your choices.
      Accept all cookies
      Refuse non-essential cookies

      #!/kiko/beats

      23.1K Tweets
      Opens profile photo
      Follow
      Click to Follow Kikobeats
      #!/kiko/beats
      @Kikobeats
      PORT_ALREADY_USEDkikobeats.comJoined January 2010

      #!/kiko/beats’s Tweets

      New to Twitter?

      Sign up now to get your own personalized timeline!
      Sign up with Apple
      Sign up with phone or email
      By signing up, you agree to the Terms of Service and Privacy Policy, including Cookie Use.

      Trending now

      What’s happening

      Trending in Spain
      D.E.P
      27.3K Tweets
      Trending in Spain
      Benedicto XVI
      Trending with Vaticano, Iglesia
      Entertainment · Trending
      Pedroche
      2,676 Tweets
      Trending in Spain
      Juan Pablo II
      1,574 Tweets
      Trending in Spain
      Militao
      3,286 Tweets
      +https://t.co/PAq3eTEhmI" + name="description" + /> + + + +
      + + diff --git a/packages/metascraper-twitter/test/fixtures/tweet-gif.html b/packages/metascraper-twitter/test/fixtures/tweet-gif.html index bc1b220e0..421975a15 100644 --- a/packages/metascraper-twitter/test/fixtures/tweet-gif.html +++ b/packages/metascraper-twitter/test/fixtures/tweet-gif.html @@ -1,98 +1,458 @@ - - - - - - -#!/kiko/beats on Twitter: "Experimenting with Clearbit API + Apple TV 3D Parallax https://t.co/Qsm163k4mJ https://t.co/5bcuqoEyAa" / Twitter - -
      - -
      -
      -
      -
      - -
      -
      -
      - -
      -
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -
      -
      -

      - - - - - Star Wars 8 THE LAST JEDI Official TRAILER (2017) Daisy Ridley, Disney Movie HD - - -

      -
      -
      - - -
      - - - - -
      -
      1.076.353 visualizaciones
      -
      -
      -
      -
      -
      - - - - - -
      -
      - - - -
      -
      -
      -
      -

      - - - -Cargando... - -

      - -
      -
      -
      - -
      - -
      -
      -
      -

      - - - -Cargando... - -

      - -
      -
      -
      -

      -Transcripción -

      -
      - -
      - - - -
      -
      -La transcripción interactiva no se ha podido cargar. -
      - - -
      -
      - -
      - -
      -
      -

      - - - -Cargando... - -

      - -
      -
      - - -
      -
      - Se podrá valorar cuando se haya alquilado el vídeo. -
      - -
      - -
      -
      - Esta función no está disponible en este momento. Vuelve a intentarlo más tarde. -
      -
      - - -
      - - -
      - - -
      Publicado el 14 abr. 2017

      Star Wars 8 THE LAST JEDI Official TRAILER (2017) Daisy Ridley, Disney Movie HD
      © 2017 - Disney

      - -
      -
      - -
      - - -
      -
      -

      - - - -Cargando... - -

      - -
      - -
      - - -
      -
      -
      - - - -
      -
      - -
      - -
      -
      -
      -Anuncio -
      -
      -
      -
      - - -
      -
      -
      -
      -
      - - - -Si la reproducción automática está habilitada, se reproducirá automáticamente un vídeo a continuación. - - - -
      -

      - Siguiente -

      - - -
      -
      - - -
      -
      -
      - -
      -
      - -
      -
      - -
      -
      -
      - - -
      - -
      - -
      -
      - - -
      -
      - - -
      - para añadir este vídeo a la lista Ver más tarde. - -
      -
      -

      -Añadir a -

      -
      -
      -

      - - - - Cargando listas de reproducción... - -

      - -
      -
      - - - - - - - - \ No newline at end of file + Copyright The Closure Library Authors. + SPDX-License-Identifier: Apache-2.0 + */ + var x=this||self;function y(a,b){a=a.split(".");var c=x;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b} + function ea(a){return Object.prototype.hasOwnProperty.call(a,z)&&a[z]||(a[z]=++fa)} + var z="closure_uid_"+(1E9*Math.random()>>>0),fa=0;var A,B;a:{for(var C=["CLOSURE_FLAGS"],D=x,E=0;E=1550-X()&&800<=a.height)e=!Z(b)||1550<=a.width?e-432:e-382,Z(b)&&(e-=X());else if(1E3<=a.width){var g=474;1140>=a.width&&Z(b)?g=357:W("kevlar_watch_feed_big_thumbs")&&(g=382);e-=g;Z(b)&&(e-=X())}else e-=48;e=Math.min(e,1280);var h=e*b;g=240;c&&(g=380);if(!(.5624>b)){var m=1327;W("kevlar_watch_split_pane")&&(m+=X());!W("kevlar_watch_flexy_disable_small_window_sizing")&& + (630>a.height&&657<=a.width||630<=a.height&&1E3<=a.width&&a.width=m&&(g=480)}d=void 0===d?NaN:d;d=Math.min(h,a.height-(80+(isNaN(d)?Y:d)));d=Math.max(d,g);1>b?e=d/b:1E3<=a.width&&(e=ja(a,.5625,c).width);return new M(Math.round(e),Math.round(d))} + function ka(a){if(a){var b=.5625,c=a.querySelector(".html5-video-player");c&&"function"===typeof c.getVideoAspectRatio&&(b=1/c.getVideoAspectRatio());c=window.document;c="CSS1Compat"==c.compatMode?c.documentElement:c.body;b=ja(new M(c.clientWidth,c.clientHeight),b);P(a,b)}} + function Z(a){return W("kevlar_watch_split_pane")&&!(.5624>a)} + ;y("yt.flexy.setPlayerlikeElementSize",ka);W("desktop_delay_player_resizing")||ka(document.querySelector("#player.skeleton #player-api"));}).call(this); +
      InformaciónPrensaDerechos de autorContactarCreadoresPublicidadDesarrolladoresTérminosPrivacidadPolítica y seguridadCómo funciona YouTubeProbar funciones nuevas
      \ No newline at end of file diff --git a/packages/metascraper-youtube/test/index.js b/packages/metascraper-youtube/test/index.js index be2a99918..a5479ac6a 100644 --- a/packages/metascraper-youtube/test/index.js +++ b/packages/metascraper-youtube/test/index.js @@ -8,7 +8,7 @@ const { metascraper } = require('./helpers') test('get the high image size', async t => { const html = await readFile(resolve(__dirname, 'fixtures/image-size.html')) - const url = 'https://www.youtube.com/watch?v=rXyKq7izYCQ' + const url = 'https://www.youtube.com/watch?v=A0FZIwabctw' const { date, ...metadata } = await metascraper({ html, url }) t.is(typeof date, 'string') t.snapshot(metadata) @@ -39,7 +39,6 @@ test('youtube channel', async t => { const url = 'https://www.youtube.com/channel/UCzcRQ3vRNr6fJ1A9rqFn7QA' const { date, ...metadata } = await metascraper({ html, url }) - t.is(typeof date, 'string') t.snapshot(metadata) }) diff --git a/packages/metascraper-youtube/test/snapshots/index.js.md b/packages/metascraper-youtube/test/snapshots/index.js.md index 26d9e4bbb..3afa7c27f 100644 --- a/packages/metascraper-youtube/test/snapshots/index.js.md +++ b/packages/metascraper-youtube/test/snapshots/index.js.md @@ -9,14 +9,14 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 { - author: 'Elon Musk Viral Videos', - description: 'Subscribe for daily Elon Musk videos.', - image: 'https://i.ytimg.com/vi/rXyKq7izYCQ/hqdefault.jpg', + author: 'SpaceX', + description: 'When Falcon Heavy lifted off, it became the most powerful operational rocket in the world by a factor of two. With the ability to lift into orbit nearly 64…', + image: 'https://img.youtube.com/vi/A0FZIwabctw/maxresdefault.jpg', lang: 'es', - logo: 'https://www.youtube.com/yts/img/favicon_144-vfliLAfaB.png', + logo: 'https://www.youtube.com/s/desktop/375de707/img/favicon_144x144.png', publisher: 'YouTube', - title: 'Neil DeGrasse Tyson Comments on SpaceXs Falcon Heavy Launch', - url: 'https://www.youtube.com/watch?v=rXyKq7izYCQ', + title: 'Falcon Heavy & Starman', + url: 'https://www.youtube.com/watch?v=A0FZIwabctw', } ## youtube video @@ -25,13 +25,13 @@ Generated by [AVA](https://avajs.dev). { author: 'ONE Media', - date: '2017-04-14T00:00:00.000Z', - description: 'Star Wars 8 El Ultimo JEDI Trailer Espanol (Subtitulado) - 2017 © 2017 - Disney', + date: '2017-04-14T16:02:38.000Z', + description: 'Star Wars 8 THE LAST JEDI Official TRAILER (2017) Daisy Ridley, Disney Movie HD© 2017 - Disney', image: 'https://img.youtube.com/vi/hwMkbaS_M_c/maxresdefault.jpg', lang: 'es', - logo: 'https://www.youtube.com/yts/img/favicon_144-vfliLAfaB.png', + logo: 'https://www.youtube.com/s/desktop/375de707/img/favicon_144x144.png', publisher: 'YouTube', - title: 'Star Wars 8 El Ultimo JEDI Trailer Espanol (Subtitulado) - 2017', + title: 'Star Wars 8 THE LAST JEDI Official TRAILER (2017) Daisy Ridley, Disney Movie HD', url: 'https://www.youtube.com/watch?v=hwMkbaS_M_c', } @@ -40,12 +40,12 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 { - author: 'Andrew JRT', - date: '2017-07-07T00:00:00.000Z', - description: '👍 Subscribe - http://bit.do/AndrewJRT 🐦 Twitter - https://twitter.com/andrew_jrt 🎮 Twitch - https://twitch.tv/andrewjrt ❤ Patreon - https://www.patreon.com/a…', + author: 'Andrewjrt', + date: '2017-07-07T16:05:11.000Z', + description: '►DISCORD: https://discord.gg/BW5QyUG►TWITCH: https://www.twitch.tv/andrew_jrt►PATREON: https://www.patreon.com/andrewjrt►TWITTER: https://twitter.com/andrew_…', image: 'https://img.youtube.com/vi/GDRd-BFTYIg/maxresdefault.jpg', - lang: 'en', - logo: 'https://www.youtube.com/yts/img/favicon_144-vflWmzoXw.png', + lang: 'es', + logo: 'https://www.youtube.com/s/desktop/375de707/img/favicon_144x144.png', publisher: 'YouTube', title: 'Overwatch - Huge Massive Fist Punch Man', url: 'https://www.youtube.com/watch?v=GDRd-BFTYIg', @@ -57,12 +57,12 @@ Generated by [AVA](https://avajs.dev). { author: 'ONE Media', - description: 'Thor 3, Star Wars, Valerian, Transformers 5, Baywatch, Despicable Me 3, Fast and Furious 8, Wonder Woman, Justice League... ALL The Must See Movie Trailer, F…', - image: 'https://yt3.ggpht.com/-q3yclmvjVzk/AAAAAAAAAAI/AAAAAAAAAAA/jVaGJKJjUps/s200-c-k-no-mo-rj-c0xffffff/photo.jpg', - lang: null, - logo: 'https://www.youtube.com/yts/img/favicon_144-vfliLAfaB.png', + description: 'ALL the Must See Movie Trailers, Film Clips & Videos are here! Blockbusters, Action Movies, Dramas, Thrillers, Horror, Scifi & Fantasy Flicks... Don’t miss the latest movie and blockbuster trailers.', + image: 'https://yt3.googleusercontent.com/ytc/AIf8zZSIo7x4j4eJ6Q52j5i0sgrfxfVCvz4wwkk7VEcA=s900-c-k-c0x00ffffff-no-rj', + lang: 'es', + logo: 'https://www.youtube.com/s/desktop/375de707/img/favicon_144x144.png', publisher: 'YouTube', - title: 'ONE Media - YouTube', + title: 'ONE Media', url: 'https://www.youtube.com/channel/UCzcRQ3vRNr6fJ1A9rqFn7QA', } @@ -72,12 +72,12 @@ Generated by [AVA](https://avajs.dev). { author: 'USAGov', - date: '2014-06-10T00:00:00.000Z', + date: '2014-06-10T19:23:32.000Z', description: 'Meet Chris Meyer, a marine biologist and scientist from the National Museum of Natural History. He talks about the ocean and his favorite animal the cowrie…', image: 'https://img.youtube.com/vi/EAZvxukW8kY/sddefault.jpg', - lang: 'en', - logo: 'https://www.youtube.com/s/desktop/d8e1215c/img/favicon_144x144.png', + lang: 'es', + logo: 'https://www.youtube.com/s/desktop/375de707/img/favicon_144x144.png', publisher: 'YouTube', title: 'Marine Biologist - Career Spotlight', - url: 'https://www.youtube.com/watch?v=EAZvxukW8kY', + url: 'https://www.youtube.com/watch?v=EAZvxukW8kY&list=PLDB4BCE9817AE7B43&index=11', } diff --git a/packages/metascraper-youtube/test/snapshots/index.js.snap b/packages/metascraper-youtube/test/snapshots/index.js.snap index 3474386fd..e08fdf1c8 100644 Binary files a/packages/metascraper-youtube/test/snapshots/index.js.snap and b/packages/metascraper-youtube/test/snapshots/index.js.snap differ diff --git a/packages/metascraper/test/integration/twitter-gif/input.html b/packages/metascraper/test/integration/twitter-gif/input.html index 54c9eb504..ef328aa86 100644 --- a/packages/metascraper/test/integration/twitter-gif/input.html +++ b/packages/metascraper/test/integration/twitter-gif/input.html @@ -1,215 +1,51 @@ - - - - - - - -#!/kiko/beats on Twitter: "Experimenting with Clearbit API + Apple TV 3D Parallax https://t.co/Qsm163k4mJ https://t.co/5bcuqoEyAa" / Twitter - -
      Don’t miss what’s happening
      People on Twitter are the first to know.

      New to Twitter?

      Sign up now to get your own personalized timeline!
      Sign up with Apple
      Create account
      By signing up, you agree to the Terms of Service and Privacy Policy, including Cookie Use.

      Trending now

      What’s happening

      Premier League
      Last night
      Newcastle United vs Wolverhampton Wanderers
      Trending in Spain
      Ibai
      9,984 Tweets
      Entertainment · Trending
      Ana de Armas
      27.6K Tweets
      Business & finance · Trending
      Goldman Sachs
      17.4K Tweets
      Entertainment · Trending
      Cate Blanchett
      54.4K Tweets
      + + + +
      diff --git a/packages/metascraper/test/integration/twitter-gif/snapshots/index.js.md b/packages/metascraper/test/integration/twitter-gif/snapshots/index.js.md index 6f70c8c68..1d11d8497 100644 --- a/packages/metascraper/test/integration/twitter-gif/snapshots/index.js.md +++ b/packages/metascraper/test/integration/twitter-gif/snapshots/index.js.md @@ -10,14 +10,14 @@ Generated by [AVA](https://avajs.dev). { audio: null, - author: '#!/kiko/beats', - date: '2017-06-28T19:01:34.000Z', - description: '“Experimenting with Clearbit API + Apple TV 3D Parallax https://t.co/Qsm163k4mJ”', + author: '#!/kiko/beats (Kikobeats)', + date: null, + description: 'Experimenting with Clearbit API + Apple TV 3D Parallax https://t.co/Qsm163k4mJ', image: 'https://pbs.twimg.com/tweet_video_thumb/DDbh3WCXYAAZfz9.jpg:large', lang: 'en', - logo: 'https://abs.twimg.com/responsive-web/client-web/icon-ios.b1fc727a.png', - publisher: 'Twitter', - title: '@Kikobeats on Twitter', + logo: 'https://abs.twimg.com/favicons/twitter.3.ico', + publisher: 'X', + title: '@Kikobeats on X', url: 'https://twitter.com/Kikobeats/status/880139124791029763', - video: 'https://video.twimg.com/tweet_video/DDbh3WCXYAAZfz9.mp4', + video: null, } diff --git a/packages/metascraper/test/integration/twitter-gif/snapshots/index.js.snap b/packages/metascraper/test/integration/twitter-gif/snapshots/index.js.snap index 27ecbe31e..cc9a45bca 100644 Binary files a/packages/metascraper/test/integration/twitter-gif/snapshots/index.js.snap and b/packages/metascraper/test/integration/twitter-gif/snapshots/index.js.snap differ diff --git a/packages/metascraper/test/integration/twitter-image/input.html b/packages/metascraper/test/integration/twitter-image/input.html index bed32bb9a..703901e78 100644 --- a/packages/metascraper/test/integration/twitter-image/input.html +++ b/packages/metascraper/test/integration/twitter-image/input.html @@ -1,214 +1,6 @@ - - - - - - - -Brad, what are you gonna do? on Twitter: "Lo mejor de @codemotion_es #codemotionMadrid es estar con la gente que quieres 😍@ladyCircus https://t.co/NQCYS8Yjt1" / Twitter - -
      Don’t miss what’s happening
      People on Twitter are the first to know.

      Thread

      See new Tweets

      Conversation

      Show replies

      New to Twitter?

      Sign up now to get your own personalized timeline!
      Sign up with Apple
      Create account
      By signing up, you agree to the Terms of Service and Privacy Policy, including Cookie Use.

      Trending now

      What’s happening

      Premier League
      Last night
      Newcastle United vs Wolverhampton Wanderers
      Business & finance · Trending
      Goldman Sachs
      17.4K Tweets
      Trending in Spain
      Ibai
      9,984 Tweets
      Entertainment · Trending
      Ana de Armas
      27.6K Tweets
      Trending in Spain
      Toni Cantó
      + + + +
      diff --git a/packages/metascraper/test/integration/twitter-image/snapshots/index.js.md b/packages/metascraper/test/integration/twitter-image/snapshots/index.js.md index 94c6c1f13..709967e26 100644 --- a/packages/metascraper/test/integration/twitter-image/snapshots/index.js.md +++ b/packages/metascraper/test/integration/twitter-image/snapshots/index.js.md @@ -10,14 +10,14 @@ Generated by [AVA](https://avajs.dev). { audio: null, - author: 'Brad, what are you gonna do?', - date: '2017-11-25T18:04:12.000Z', - description: '“Lo mejor de @codemotion_es #codemotionMadrid es estar con la gente que quieres 😍@ladyCircus”', + author: 'I don’t know, but I’ll find out. - Marty Sklar (k4rliky)', + date: null, + description: 'Lo mejor de @codemotion_es #codemotionMadrid es estar con la gente que quieres 😍@ladyCircus', image: 'https://pbs.twimg.com/media/DPfzNMGXUAESoL3.jpg:large', lang: 'en', - logo: 'https://abs.twimg.com/responsive-web/client-web/icon-ios.b1fc727a.png', - publisher: 'Twitter', - title: '@k4rliky on Twitter', + logo: 'https://abs.twimg.com/favicons/twitter.3.ico', + publisher: 'X', + title: '@k4rliky on X', url: 'https://twitter.com/k4rliky/status/934482867480121345', video: null, } diff --git a/packages/metascraper/test/integration/twitter-image/snapshots/index.js.snap b/packages/metascraper/test/integration/twitter-image/snapshots/index.js.snap index 672778c08..71ddf38fd 100644 Binary files a/packages/metascraper/test/integration/twitter-image/snapshots/index.js.snap and b/packages/metascraper/test/integration/twitter-image/snapshots/index.js.snap differ