@gem-sdk/core 12.0.0-staging.8 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";var jsxRuntime=require("react/jsx-runtime"),react=require("react"),zustand=require("zustand");const PageContext=react.createContext(null),createPageStoreProvider=e=>zustand.createStore(t=>({...e,setDynamicProduct:e=>{t({dynamicProduct:e})},setDynamicCollection:e=>{t({dynamicCollection:e})},setPostPurchaseProductOffers:e=>{t({productOffers:e})},setDynamicDiscountOffer:e=>{t({dynamicDiscountOffer:e})},setSalePageProductId:e=>{t({salePageProductId:e})},setPublicStoreFrontData:e=>{t({publicStoreFrontData:e})},setInteractionIsSelectOnPage:e=>{t(t=>({interactionData:{...t.interactionData,isSelectOnPage:e}}))},setInteractionItem:e=>{t(t=>({interactionData:{...t.interactionData,item:e,isSelectOnPage:t.interactionData?.isSelectOnPage||!1}}))},setInteractionSelectType:e=>{t(t=>({interactionData:{...t.interactionData,selectType:e}}))},setInteractionSettingType:e=>{t(t=>({interactionData:{...t.interactionData,settingType:e}}))},setSidebarMode:e=>{t(()=>({sidebarMode:e}))}})),PageProvider=({children:e,dynamicProduct:t,dynamicCollection:a,productOffers:r,dynamicDiscountOffer:n,publicStoreFrontData:i,...o})=>{let c=react.useMemo(()=>createPageStoreProvider({dynamicProduct:t,dynamicCollection:a,productOffers:r,dynamicDiscountOffer:n,publicStoreFrontData:i,interactionData:{selectType:"ELEMENT"}}),[t,a,r,n,i]);return jsxRuntime.jsx(PageContext.Provider,{...o,value:c,children:e})},usePageStore=(e,t)=>{let a=react.useContext(PageContext);if(!a)throw Error("usePageStore must be used within a PageProvider");return zustand.useStore(a,e,t)};exports.PageProvider=PageProvider,exports.usePageStore=usePageStore;
2
+ "use strict";var jsxRuntime=require("react/jsx-runtime"),react=require("react"),zustand=require("zustand");const PageContext=react.createContext(null),createPageStoreProvider=e=>zustand.createStore(t=>({...e,setAssignedProductIds:e=>{t({assignedProductIds:e})},setIsApplyAllProducts:e=>{t({isApplyAllProducts:e})},setDynamicProduct:e=>{t({dynamicProduct:e})},setDynamicCollection:e=>{t({dynamicCollection:e})},setPostPurchaseProductOffers:e=>{t({productOffers:e})},setDynamicDiscountOffer:e=>{t({dynamicDiscountOffer:e})},setSalePageProductId:e=>{t({salePageProductId:e})},setPublicStoreFrontData:e=>{t({publicStoreFrontData:e})},setInteractionIsSelectOnPage:e=>{t(t=>({interactionData:{...t.interactionData,isSelectOnPage:e}}))},setInteractionItem:e=>{t(t=>({interactionData:{...t.interactionData,item:e,isSelectOnPage:t.interactionData?.isSelectOnPage||!1}}))},setInteractionSelectType:e=>{t(t=>({interactionData:{...t.interactionData,selectType:e}}))},setInteractionSettingType:e=>{t(t=>({interactionData:{...t.interactionData,settingType:e}}))},setSidebarMode:e=>{t(()=>({sidebarMode:e}))}})),PageProvider=({children:e,dynamicProduct:t,dynamicCollection:r,productOffers:a,dynamicDiscountOffer:n,publicStoreFrontData:i,assignedProductIds:o,isApplyAllProducts:s,...c})=>{let u=react.useMemo(()=>createPageStoreProvider({dynamicProduct:t,dynamicCollection:r,productOffers:a,assignedProductIds:o,isApplyAllProducts:s,dynamicDiscountOffer:n,publicStoreFrontData:i,interactionData:{selectType:"ELEMENT"}}),[t,r,a,n,i,o,s]);return jsxRuntime.jsx(PageContext.Provider,{...c,value:u,children:e})},usePageStore=(e,t)=>{let r=react.useContext(PageContext);if(!r)throw Error("usePageStore must be used within a PageProvider");return zustand.useStore(r,e,t)};exports.PageProvider=PageProvider,exports.usePageStore=usePageStore;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{jsx as e}from"react/jsx-runtime";import{useMemo as t,useContext as a,createContext as r}from"react";import{useStore as i,createStore as o}from"zustand";let PageContext=r(null),createPageStoreProvider=e=>o(t=>({...e,setDynamicProduct:e=>{t({dynamicProduct:e})},setDynamicCollection:e=>{t({dynamicCollection:e})},setPostPurchaseProductOffers:e=>{t({productOffers:e})},setDynamicDiscountOffer:e=>{t({dynamicDiscountOffer:e})},setSalePageProductId:e=>{t({salePageProductId:e})},setPublicStoreFrontData:e=>{t({publicStoreFrontData:e})},setInteractionIsSelectOnPage:e=>{t(t=>({interactionData:{...t.interactionData,isSelectOnPage:e}}))},setInteractionItem:e=>{t(t=>({interactionData:{...t.interactionData,item:e,isSelectOnPage:t.interactionData?.isSelectOnPage||!1}}))},setInteractionSelectType:e=>{t(t=>({interactionData:{...t.interactionData,selectType:e}}))},setInteractionSettingType:e=>{t(t=>({interactionData:{...t.interactionData,settingType:e}}))},setSidebarMode:e=>{t(()=>({sidebarMode:e}))}})),PageProvider=({children:a,dynamicProduct:r,dynamicCollection:i,productOffers:o,dynamicDiscountOffer:n,publicStoreFrontData:c,...s})=>{let P=t(()=>createPageStoreProvider({dynamicProduct:r,dynamicCollection:i,productOffers:o,dynamicDiscountOffer:n,publicStoreFrontData:c,interactionData:{selectType:"ELEMENT"}}),[r,i,o,n,c]);return e(PageContext.Provider,{...s,value:P,children:a})},usePageStore=(e,t)=>{let r=a(PageContext);if(!r)throw Error("usePageStore must be used within a PageProvider");return i(r,e,t)};export{PageProvider,usePageStore};
2
+ import{jsx as e}from"react/jsx-runtime";import{useMemo as t,useContext as a,createContext as r}from"react";import{useStore as o,createStore as i}from"zustand";let PageContext=r(null),createPageStoreProvider=e=>i(t=>({...e,setAssignedProductIds:e=>{t({assignedProductIds:e})},setIsApplyAllProducts:e=>{t({isApplyAllProducts:e})},setDynamicProduct:e=>{t({dynamicProduct:e})},setDynamicCollection:e=>{t({dynamicCollection:e})},setPostPurchaseProductOffers:e=>{t({productOffers:e})},setDynamicDiscountOffer:e=>{t({dynamicDiscountOffer:e})},setSalePageProductId:e=>{t({salePageProductId:e})},setPublicStoreFrontData:e=>{t({publicStoreFrontData:e})},setInteractionIsSelectOnPage:e=>{t(t=>({interactionData:{...t.interactionData,isSelectOnPage:e}}))},setInteractionItem:e=>{t(t=>({interactionData:{...t.interactionData,item:e,isSelectOnPage:t.interactionData?.isSelectOnPage||!1}}))},setInteractionSelectType:e=>{t(t=>({interactionData:{...t.interactionData,selectType:e}}))},setInteractionSettingType:e=>{t(t=>({interactionData:{...t.interactionData,settingType:e}}))},setSidebarMode:e=>{t(()=>({sidebarMode:e}))}})),PageProvider=({children:a,dynamicProduct:r,dynamicCollection:o,productOffers:i,dynamicDiscountOffer:n,publicStoreFrontData:c,assignedProductIds:s,isApplyAllProducts:P,...d})=>{let l=t(()=>createPageStoreProvider({dynamicProduct:r,dynamicCollection:o,productOffers:i,assignedProductIds:s,isApplyAllProducts:P,dynamicDiscountOffer:n,publicStoreFrontData:c,interactionData:{selectType:"ELEMENT"}}),[r,o,i,n,c,s,P]);return e(PageContext.Provider,{...d,value:l,children:a})},usePageStore=(e,t)=>{let r=a(PageContext);if(!r)throw Error("usePageStore must be used within a PageProvider");return o(r,e,t)};export{PageProvider,usePageStore};
@@ -34168,6 +34168,8 @@ type ImageShape$1 = {
34168
34168
  };
34169
34169
  type SizeSettingGlobal = {
34170
34170
  shape?: 'square' | 'vertical' | 'horizontal' | 'custom' | 'original';
34171
+ shapeVideo?: string;
34172
+ enableVideoShape?: boolean;
34171
34173
  shapeLinked?: boolean;
34172
34174
  disableShapeLinked?: boolean;
34173
34175
  shapeValue?: string;
@@ -34918,6 +34920,8 @@ declare const useShopStore: <U>(selector: (state: ExtractState<StoreApi<ShopCont
34918
34920
  type PageContextProps = {
34919
34921
  dynamicProduct?: DynamicProduct;
34920
34922
  dynamicCollection?: DynamicCollection;
34923
+ assignedProductIds?: string[];
34924
+ isApplyAllProducts?: boolean;
34921
34925
  productOffers?: ProductOffer[];
34922
34926
  dynamicDiscountOffer?: OfferDynamicDiscount;
34923
34927
  salePageProductId?: string;
@@ -34930,6 +34934,8 @@ type PageContextProps = {
34930
34934
  };
34931
34935
  sidebarMode?: string;
34932
34936
  setDynamicProduct: (data: DynamicProduct) => void;
34937
+ setAssignedProductIds: (assignedIds: string[]) => void;
34938
+ setIsApplyAllProducts: (isApplyAllProducts: boolean) => void;
34933
34939
  setDynamicCollection: (data: DynamicCollection) => void;
34934
34940
  setPostPurchaseProductOffers: (productOffers: ProductOffer[]) => void;
34935
34941
  setDynamicDiscountOffer: (dynamicDiscountOffer: OfferDynamicDiscount) => void;
@@ -34941,7 +34947,7 @@ type PageContextProps = {
34941
34947
  setInteractionSettingType: (settingType?: 'TRIGGER' | 'TARGET') => void;
34942
34948
  setSidebarMode: (mode: string) => void;
34943
34949
  };
34944
- type PageProviderProps = Pick<PageContextProps, 'dynamicProduct' | 'dynamicCollection' | 'productOffers' | 'dynamicDiscountOffer'> & {
34950
+ type PageProviderProps = Pick<PageContextProps, 'dynamicProduct' | 'dynamicCollection' | 'productOffers' | 'dynamicDiscountOffer' | 'assignedProductIds' | 'isApplyAllProducts'> & {
34945
34951
  children: React.ReactNode;
34946
34952
  key?: React.Key;
34947
34953
  publicStoreFrontData?: PublicStoreFrontData | null;
@@ -36532,6 +36538,11 @@ type Background = {
36532
36538
  videoType?: 'youtube' | 'html5';
36533
36539
  loop?: boolean;
36534
36540
  lazyLoad?: boolean;
36541
+ videoCustomRatio?: {
36542
+ width?: string | number;
36543
+ height?: string | number;
36544
+ };
36545
+ videoAlign?: 'top' | 'center' | 'bottom';
36535
36546
  };
36536
36547
  type BgSize = 'cover' | 'contain' | '100% 100%';
36537
36548
  type BgRepeat$2 = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';
@@ -36854,10 +36865,10 @@ type GridArrange<T> = SharedControlType<T> & {
36854
36865
  readonly?: boolean;
36855
36866
  };
36856
36867
 
36857
- type SettingID = 'shape' | 'width' | 'height' | 'gap' | 'padding' | 'proportion';
36868
+ type SettingID = 'shape' | 'width' | 'height' | 'gap' | 'padding' | 'proportion' | 'shapeVideo';
36858
36869
  type ShapeOptionKeyword = 'original' | 'square' | 'vertical' | 'horizontal' | 'custom';
36859
36870
  type HeightOptionKeyword = 'fit-content' | 'fit-screen';
36860
- type OptionKeyword = 'default' | 'auto' | 'full' | 'equal' | 'small' | 'medium' | 'large' | HeightOptionKeyword | ShapeOptionKeyword | string;
36871
+ type OptionKeyword = 'default' | 'auto' | 'full' | 'equal' | 'small' | 'medium' | 'large' | '1/1' | '16/9' | '21/9' | '3/2' | '4/3' | '3/4' | '9/16' | '2/3' | HeightOptionKeyword | ShapeOptionKeyword | string;
36861
36872
  type PaddingOptions = 'small' | 'medium' | 'large' | 'custom';
36862
36873
  type ShapeOptions = 'square' | 'vertical' | 'horizontal' | 'custom' | 'original';
36863
36874
  type ShapeConfig = Partial<Record<ShapeOptions, string>>;
@@ -36868,6 +36879,7 @@ type PaddingConfig = Partial<Record<PaddingOptions, {
36868
36879
  type SettingConfig = {
36869
36880
  sizeConfig?: Partial<Record<'small' | 'medium' | 'large' | 'full', string>>;
36870
36881
  displayOptions?: OptionKeyword[];
36882
+ displayVideoOptions?: OptionKeyword[];
36871
36883
  paddingConfig?: PaddingConfig;
36872
36884
  shapeConfig?: ShapeConfig;
36873
36885
  shapeTitleConfig?: ShapeConfig;
@@ -37299,6 +37311,7 @@ type BackgroundMediaControlType<T> = SharedControlType<T> & {
37299
37311
  type: 'background-media';
37300
37312
  value?: BackgroundMedia;
37301
37313
  showVideo?: boolean;
37314
+ showRatioVideo?: boolean;
37302
37315
  showDeviceControl?: boolean;
37303
37316
  hideImage?: boolean;
37304
37317
  };
@@ -37325,6 +37338,7 @@ type BackgroundMedia = {
37325
37338
  loop?: boolean;
37326
37339
  lazyLoad?: boolean;
37327
37340
  preload?: boolean;
37341
+ videoAlign?: 'top' | 'center' | 'bottom';
37328
37342
  fallbackVideo?: Record<string, any> | undefined;
37329
37343
  fallbackImage?: FallbackImageProps | undefined;
37330
37344
  };
@@ -38373,6 +38387,15 @@ declare const filterAttrInStyle: (style?: React.CSSProperties, filterKeys?: stri
38373
38387
  '--objf-mobile'?: csstype.Property.ObjectFit | undefined;
38374
38388
  '--hvr-objf-mobile'?: csstype.Property.ObjectFit | undefined;
38375
38389
  '--focus-objf-mobile'?: csstype.Property.ObjectFit | undefined;
38390
+ '--objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
38391
+ '--hvr-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
38392
+ '--focus-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
38393
+ '--objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
38394
+ '--hvr-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
38395
+ '--focus-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
38396
+ '--objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
38397
+ '--hvr-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
38398
+ '--focus-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
38376
38399
  '--op'?: csstype.Property.Opacity | undefined;
38377
38400
  '--hvr-op'?: csstype.Property.Opacity | undefined;
38378
38401
  '--focus-op'?: csstype.Property.Opacity | undefined;
@@ -40011,6 +40034,15 @@ declare const removeAttrInStyle: (style?: React.CSSProperties, filterKeys?: stri
40011
40034
  '--objf-mobile'?: csstype.Property.ObjectFit | undefined;
40012
40035
  '--hvr-objf-mobile'?: csstype.Property.ObjectFit | undefined;
40013
40036
  '--focus-objf-mobile'?: csstype.Property.ObjectFit | undefined;
40037
+ '--objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
40038
+ '--hvr-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
40039
+ '--focus-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
40040
+ '--objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
40041
+ '--hvr-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
40042
+ '--focus-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
40043
+ '--objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
40044
+ '--hvr-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
40045
+ '--focus-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
40014
40046
  '--op'?: csstype.Property.Opacity | undefined;
40015
40047
  '--hvr-op'?: csstype.Property.Opacity | undefined;
40016
40048
  '--focus-op'?: csstype.Property.Opacity | undefined;
@@ -41650,6 +41682,15 @@ declare const removePaddingYInStyle: (style?: React.CSSProperties) => {
41650
41682
  '--objf-mobile'?: csstype.Property.ObjectFit | undefined;
41651
41683
  '--hvr-objf-mobile'?: csstype.Property.ObjectFit | undefined;
41652
41684
  '--focus-objf-mobile'?: csstype.Property.ObjectFit | undefined;
41685
+ '--objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
41686
+ '--hvr-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
41687
+ '--focus-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
41688
+ '--objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
41689
+ '--hvr-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
41690
+ '--focus-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
41691
+ '--objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
41692
+ '--hvr-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
41693
+ '--focus-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
41653
41694
  '--op'?: csstype.Property.Opacity | undefined;
41654
41695
  '--hvr-op'?: csstype.Property.Opacity | undefined;
41655
41696
  '--focus-op'?: csstype.Property.Opacity | undefined;
@@ -43394,6 +43435,15 @@ declare const getResponsiveStyleShadow: (value?: any, styleAppliedFor?: ShadowSt
43394
43435
  '--objf-mobile'?: csstype.Property.ObjectFit | undefined;
43395
43436
  '--hvr-objf-mobile'?: csstype.Property.ObjectFit | undefined;
43396
43437
  '--focus-objf-mobile'?: csstype.Property.ObjectFit | undefined;
43438
+ '--objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
43439
+ '--hvr-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
43440
+ '--focus-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
43441
+ '--objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
43442
+ '--hvr-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
43443
+ '--focus-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
43444
+ '--objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
43445
+ '--hvr-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
43446
+ '--focus-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
43397
43447
  '--op'?: csstype.Property.Opacity | undefined;
43398
43448
  '--hvr-op'?: csstype.Property.Opacity | undefined;
43399
43449
  '--focus-op'?: csstype.Property.Opacity | undefined;
@@ -45035,6 +45085,15 @@ declare const composeShadow: (shadowInput?: ObjectDevices<StateProp<ShadowProps>
45035
45085
  '--objf-mobile'?: csstype.Property.ObjectFit | undefined;
45036
45086
  '--hvr-objf-mobile'?: csstype.Property.ObjectFit | undefined;
45037
45087
  '--focus-objf-mobile'?: csstype.Property.ObjectFit | undefined;
45088
+ '--objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
45089
+ '--hvr-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
45090
+ '--focus-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
45091
+ '--objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
45092
+ '--hvr-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
45093
+ '--focus-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
45094
+ '--objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
45095
+ '--hvr-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
45096
+ '--focus-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
45038
45097
  '--op'?: csstype.Property.Opacity | undefined;
45039
45098
  '--hvr-op'?: csstype.Property.Opacity | undefined;
45040
45099
  '--focus-op'?: csstype.Property.Opacity | undefined;
@@ -46731,6 +46790,15 @@ declare const composeTypographyStyle: (typo?: TypographySettingV2, typography?:
46731
46790
  '--objf-mobile'?: csstype.Property.ObjectFit | undefined;
46732
46791
  '--hvr-objf-mobile'?: csstype.Property.ObjectFit | undefined;
46733
46792
  '--focus-objf-mobile'?: csstype.Property.ObjectFit | undefined;
46793
+ '--objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
46794
+ '--hvr-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
46795
+ '--focus-objp'?: csstype.Property.ObjectPosition<string | number> | undefined;
46796
+ '--objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
46797
+ '--hvr-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
46798
+ '--focus-objp-tablet'?: csstype.Property.ObjectPosition<string | number> | undefined;
46799
+ '--objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
46800
+ '--hvr-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
46801
+ '--focus-objp-mobile'?: csstype.Property.ObjectPosition<string | number> | undefined;
46734
46802
  '--op'?: csstype.Property.Opacity | undefined;
46735
46803
  '--hvr-op'?: csstype.Property.Opacity | undefined;
46736
46804
  '--focus-op'?: csstype.Property.Opacity | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/core",
3
- "version": "12.0.0-staging.8",
3
+ "version": "13.1.0",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",
@@ -27,8 +27,8 @@
27
27
  "type-check": "yarn tsc --noEmit"
28
28
  },
29
29
  "devDependencies": {
30
- "@gem-sdk/adapter-shopify": "12.0.0-staging.0",
31
- "@gem-sdk/styles": "12.0.0-staging.0",
30
+ "@gem-sdk/adapter-shopify": "13.1.0",
31
+ "@gem-sdk/styles": "13.1.0",
32
32
  "@types/classnames": "^2.3.1"
33
33
  },
34
34
  "dependencies": {