@shopnex/cj-plugin 1.0.4 → 1.0.6

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.
@@ -52,9 +52,9 @@ const sharedFields = [
52
52
  ];
53
53
  // Shared hooks definition
54
54
  const sharedHooks = {
55
- afterChange: [
56
- async ({ doc, req })=>{
57
- const productIds = doc.items.map((item)=>{
55
+ beforeChange: [
56
+ async ({ data, req })=>{
57
+ const productIds = data.items.map((item)=>{
58
58
  const match = item.productUrl.match(/(?<=-p-)([0-9A-Fa-f-]+)(?=\.html)/);
59
59
  return match ? match[0] : null;
60
60
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cj-settings.ts"],"sourcesContent":["import type { CollectionConfig, Field, GlobalConfig } from \"payload\";\nimport { syncProducts } from \"./service/sync-products\";\n\n// Collection Config\nexport type CjCollectionProps = {\n overrides?: Partial<CollectionConfig>;\n};\n\nexport type CjGlobalProps = {\n overrides?: Partial<GlobalConfig>;\n};\n\n// Shared fields definition\nconst sharedFields: Field[] = [\n // {\n // label: \"Credentials\",\n // type: \"collapsible\",\n // fields: [\n // {\n // type: \"row\",\n // fields: [\n // {\n // name: \"emailAddress\",\n // type: \"text\",\n // },\n // {\n // name: \"apiToken\",\n // type: \"text\",\n // admin: {\n // components: {\n // Field: \"@shopnex/cj-plugin/rsc#ApiToken\",\n // },\n // },\n // },\n // ],\n // },\n // ],\n // },\n // {\n // label: \"Logo Area POD\",\n // name: \"pod\",\n // type: \"upload\",\n // relationTo: \"media\",\n // },\n {\n name: \"items\",\n type: \"array\",\n admin: {\n description: \"A list of product URLs to sync with CJ Dropshipping\",\n },\n fields: [\n {\n name: \"productUrl\",\n type: \"text\",\n },\n ],\n label: \"Products\",\n labels: {\n plural: \"Product URLs\",\n singular: \"Product URL\",\n },\n },\n];\n\n// Shared hooks definition\nconst sharedHooks = {\n afterChange: [\n async ({ doc, req }) => {\n const productIds = doc.items.map((item: any) => {\n const match = item.productUrl.match(/(?<=-p-)([0-9A-Fa-f-]+)(?=\\.html)/);\n return match ? match[0] : null;\n });\n const shopId = req.user?.shops?.[0]?.shop?.id;\n await syncProducts(productIds, req.payload, shopId);\n },\n ],\n};\n\n// Global Config\nexport const CjSettings = ({ overrides }: CjGlobalProps): GlobalConfig => ({\n slug: \"cj-settings\",\n access: {\n ...overrides?.access,\n },\n admin: {\n group: \"Plugins\",\n ...overrides?.admin,\n },\n fields: sharedFields,\n hooks: sharedHooks,\n label: \"CJ Dropshipping\",\n ...(overrides || {}),\n});\n\nexport const CjConfigCollection = ({ overrides }: CjCollectionProps): CollectionConfig => ({\n slug: \"cj-settings\",\n access: {\n ...overrides?.access,\n },\n admin: {\n group: \"Plugins\",\n ...overrides?.admin,\n },\n fields: sharedFields,\n hooks: sharedHooks,\n labels: {\n singular: \"CJ Dropshipping\",\n plural: \"CJ Configs\",\n },\n ...(overrides || {}),\n});\n"],"names":["syncProducts","sharedFields","name","type","admin","description","fields","label","labels","plural","singular","sharedHooks","afterChange","doc","req","productIds","items","map","item","match","productUrl","shopId","user","shops","shop","id","payload","CjSettings","overrides","slug","access","group","hooks","CjConfigCollection"],"mappings":"AACA,SAASA,YAAY,QAAQ,0BAA0B;AAWvD,2BAA2B;AAC3B,MAAMC,eAAwB;IAC1B,IAAI;IACJ,4BAA4B;IAC5B,2BAA2B;IAC3B,gBAAgB;IAChB,YAAY;IACZ,2BAA2B;IAC3B,wBAAwB;IACxB,oBAAoB;IACpB,4CAA4C;IAC5C,oCAAoC;IACpC,qBAAqB;IACrB,oBAAoB;IACpB,wCAAwC;IACxC,oCAAoC;IACpC,+BAA+B;IAC/B,wCAAwC;IACxC,wEAAwE;IACxE,6BAA6B;IAC7B,yBAAyB;IACzB,qBAAqB;IACrB,iBAAiB;IACjB,aAAa;IACb,SAAS;IACT,KAAK;IACL,IAAI;IACJ,8BAA8B;IAC9B,mBAAmB;IACnB,sBAAsB;IACtB,2BAA2B;IAC3B,KAAK;IACL;QACIC,MAAM;QACNC,MAAM;QACNC,OAAO;YACHC,aAAa;QACjB;QACAC,QAAQ;YACJ;gBACIJ,MAAM;gBACNC,MAAM;YACV;SACH;QACDI,OAAO;QACPC,QAAQ;YACJC,QAAQ;YACRC,UAAU;QACd;IACJ;CACH;AAED,0BAA0B;AAC1B,MAAMC,cAAc;IAChBC,aAAa;QACT,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAE;YACf,MAAMC,aAAaF,IAAIG,KAAK,CAACC,GAAG,CAAC,CAACC;gBAC9B,MAAMC,QAAQD,KAAKE,UAAU,CAACD,KAAK,CAAC;gBACpC,OAAOA,QAAQA,KAAK,CAAC,EAAE,GAAG;YAC9B;YACA,MAAME,SAASP,IAAIQ,IAAI,EAAEC,OAAO,CAAC,EAAE,EAAEC,MAAMC;YAC3C,MAAMzB,aAAae,YAAYD,IAAIY,OAAO,EAAEL;QAChD;KACH;AACL;AAEA,gBAAgB;AAChB,OAAO,MAAMM,aAAa,CAAC,EAAEC,SAAS,EAAiB,GAAoB,CAAA;QACvEC,MAAM;QACNC,QAAQ;YACJ,GAAGF,WAAWE,MAAM;QACxB;QACA1B,OAAO;YACH2B,OAAO;YACP,GAAGH,WAAWxB,KAAK;QACvB;QACAE,QAAQL;QACR+B,OAAOrB;QACPJ,OAAO;QACP,GAAIqB,aAAa,CAAC,CAAC;IACvB,CAAA,EAAG;AAEH,OAAO,MAAMK,qBAAqB,CAAC,EAAEL,SAAS,EAAqB,GAAwB,CAAA;QACvFC,MAAM;QACNC,QAAQ;YACJ,GAAGF,WAAWE,MAAM;QACxB;QACA1B,OAAO;YACH2B,OAAO;YACP,GAAGH,WAAWxB,KAAK;QACvB;QACAE,QAAQL;QACR+B,OAAOrB;QACPH,QAAQ;YACJE,UAAU;YACVD,QAAQ;QACZ;QACA,GAAImB,aAAa,CAAC,CAAC;IACvB,CAAA,EAAG"}
1
+ {"version":3,"sources":["../src/cj-settings.ts"],"sourcesContent":["import type { CollectionConfig, Field, GlobalConfig } from \"payload\";\nimport { syncProducts } from \"./service/sync-products\";\nimport { before } from \"lodash\";\n\n// Collection Config\nexport type CjCollectionProps = {\n overrides?: Partial<CollectionConfig>;\n};\n\nexport type CjGlobalProps = {\n overrides?: Partial<GlobalConfig>;\n};\n\n// Shared fields definition\nconst sharedFields: Field[] = [\n // {\n // label: \"Credentials\",\n // type: \"collapsible\",\n // fields: [\n // {\n // type: \"row\",\n // fields: [\n // {\n // name: \"emailAddress\",\n // type: \"text\",\n // },\n // {\n // name: \"apiToken\",\n // type: \"text\",\n // admin: {\n // components: {\n // Field: \"@shopnex/cj-plugin/rsc#ApiToken\",\n // },\n // },\n // },\n // ],\n // },\n // ],\n // },\n // {\n // label: \"Logo Area POD\",\n // name: \"pod\",\n // type: \"upload\",\n // relationTo: \"media\",\n // },\n {\n name: \"items\",\n type: \"array\",\n admin: {\n description: \"A list of product URLs to sync with CJ Dropshipping\",\n },\n fields: [\n {\n name: \"productUrl\",\n type: \"text\",\n },\n ],\n label: \"Products\",\n labels: {\n plural: \"Product URLs\",\n singular: \"Product URL\",\n },\n },\n];\n\n// Shared hooks definition\nconst sharedHooks = {\n beforeChange: [\n async ({ data, req }) => {\n const productIds = data.items.map((item: any) => {\n const match = item.productUrl.match(/(?<=-p-)([0-9A-Fa-f-]+)(?=\\.html)/);\n return match ? match[0] : null;\n });\n const shopId = req.user?.shops?.[0]?.shop?.id;\n await syncProducts(productIds, req.payload, shopId);\n },\n ],\n};\n\n// Global Config\nexport const CjSettings = ({ overrides }: CjGlobalProps): GlobalConfig => ({\n slug: \"cj-settings\",\n access: {\n ...overrides?.access,\n },\n admin: {\n group: \"Plugins\",\n ...overrides?.admin,\n },\n fields: sharedFields,\n hooks: sharedHooks,\n label: \"CJ Dropshipping\",\n ...(overrides || {}),\n});\n\nexport const CjConfigCollection = ({ overrides }: CjCollectionProps): CollectionConfig => ({\n slug: \"cj-settings\",\n access: {\n ...overrides?.access,\n },\n admin: {\n group: \"Plugins\",\n ...overrides?.admin,\n },\n fields: sharedFields,\n hooks: sharedHooks,\n labels: {\n singular: \"CJ Dropshipping\",\n plural: \"CJ Configs\",\n },\n ...(overrides || {}),\n});\n"],"names":["syncProducts","sharedFields","name","type","admin","description","fields","label","labels","plural","singular","sharedHooks","beforeChange","data","req","productIds","items","map","item","match","productUrl","shopId","user","shops","shop","id","payload","CjSettings","overrides","slug","access","group","hooks","CjConfigCollection"],"mappings":"AACA,SAASA,YAAY,QAAQ,0BAA0B;AAYvD,2BAA2B;AAC3B,MAAMC,eAAwB;IAC1B,IAAI;IACJ,4BAA4B;IAC5B,2BAA2B;IAC3B,gBAAgB;IAChB,YAAY;IACZ,2BAA2B;IAC3B,wBAAwB;IACxB,oBAAoB;IACpB,4CAA4C;IAC5C,oCAAoC;IACpC,qBAAqB;IACrB,oBAAoB;IACpB,wCAAwC;IACxC,oCAAoC;IACpC,+BAA+B;IAC/B,wCAAwC;IACxC,wEAAwE;IACxE,6BAA6B;IAC7B,yBAAyB;IACzB,qBAAqB;IACrB,iBAAiB;IACjB,aAAa;IACb,SAAS;IACT,KAAK;IACL,IAAI;IACJ,8BAA8B;IAC9B,mBAAmB;IACnB,sBAAsB;IACtB,2BAA2B;IAC3B,KAAK;IACL;QACIC,MAAM;QACNC,MAAM;QACNC,OAAO;YACHC,aAAa;QACjB;QACAC,QAAQ;YACJ;gBACIJ,MAAM;gBACNC,MAAM;YACV;SACH;QACDI,OAAO;QACPC,QAAQ;YACJC,QAAQ;YACRC,UAAU;QACd;IACJ;CACH;AAED,0BAA0B;AAC1B,MAAMC,cAAc;IAChBC,cAAc;QACV,OAAO,EAAEC,IAAI,EAAEC,GAAG,EAAE;YAChB,MAAMC,aAAaF,KAAKG,KAAK,CAACC,GAAG,CAAC,CAACC;gBAC/B,MAAMC,QAAQD,KAAKE,UAAU,CAACD,KAAK,CAAC;gBACpC,OAAOA,QAAQA,KAAK,CAAC,EAAE,GAAG;YAC9B;YACA,MAAME,SAASP,IAAIQ,IAAI,EAAEC,OAAO,CAAC,EAAE,EAAEC,MAAMC;YAC3C,MAAMzB,aAAae,YAAYD,IAAIY,OAAO,EAAEL;QAChD;KACH;AACL;AAEA,gBAAgB;AAChB,OAAO,MAAMM,aAAa,CAAC,EAAEC,SAAS,EAAiB,GAAoB,CAAA;QACvEC,MAAM;QACNC,QAAQ;YACJ,GAAGF,WAAWE,MAAM;QACxB;QACA1B,OAAO;YACH2B,OAAO;YACP,GAAGH,WAAWxB,KAAK;QACvB;QACAE,QAAQL;QACR+B,OAAOrB;QACPJ,OAAO;QACP,GAAIqB,aAAa,CAAC,CAAC;IACvB,CAAA,EAAG;AAEH,OAAO,MAAMK,qBAAqB,CAAC,EAAEL,SAAS,EAAqB,GAAwB,CAAA;QACvFC,MAAM;QACNC,QAAQ;YACJ,GAAGF,WAAWE,MAAM;QACxB;QACA1B,OAAO;YACH2B,OAAO;YACP,GAAGH,WAAWxB,KAAK;QACvB;QACAE,QAAQL;QACR+B,OAAOrB;QACPH,QAAQ;YACJE,UAAU;YACVD,QAAQ;QACZ;QACA,GAAImB,aAAa,CAAC,CAAC;IACvB,CAAA,EAAG"}
package/dist/index.js CHANGED
@@ -56,8 +56,8 @@ export const cjPlugin = (pluginOptions)=>(config)=>{
56
56
  }
57
57
  cjSettingsDocs.forEach((config)=>{
58
58
  setTenantCredentials(config?.shop?.slug || "1", {
59
- emailAddress: config.email,
60
- password: config.apiToken
59
+ emailAddress: config.email || process.env.CJ_EMAIL_ADDRESS,
60
+ password: config.apiToken || process.env.CJ_PASSWORD
61
61
  });
62
62
  });
63
63
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Config, SelectField } from \"payload\";\nimport { setTenantCredentials } from \"./sdk/access-token\";\nimport { createOrderHook } from \"./service/create-order.hook\";\nimport { CjCollectionProps, CjConfigCollection, CjGlobalProps, CjSettings } from \"./cj-settings\";\n\ninterface PluginOptions {\n isEnabled?: boolean;\n cjApiKey: string;\n cjEmailAddress: string;\n cjRefreshToken?: string;\n isGlobal?: boolean;\n collectionOverrides?: CjCollectionProps[\"overrides\"];\n globalOverrides?: CjGlobalProps[\"overrides\"];\n orderCollectionSlug?: string;\n}\n\nexport const cjPlugin =\n (pluginOptions: PluginOptions) =>\n (config: Config): Config => {\n const isGlobal = pluginOptions.isGlobal ?? true;\n\n const isEnabled = pluginOptions.isEnabled ?? true;\n\n const ordersCollection = config.collections?.find(\n (collection) => collection.slug === (pluginOptions.orderCollectionSlug || \"orders\"),\n );\n\n if (!ordersCollection) {\n throw new Error(\"No orders collection found\");\n }\n\n if (!ordersCollection.hooks) {\n ordersCollection.hooks = {};\n }\n\n if (!ordersCollection.hooks?.afterChange?.length) {\n ordersCollection.hooks.afterChange = [];\n }\n\n if (isGlobal) {\n config.globals?.push(CjSettings({ overrides: pluginOptions.globalOverrides }));\n } else {\n config.collections?.push(\n CjConfigCollection({ overrides: pluginOptions.collectionOverrides }),\n );\n }\n const productCollection = config.collections?.find(\n (collection) => collection.slug === \"products\",\n );\n\n const sourceField = productCollection?.fields?.find(\n (field) => (field as SelectField).name === \"source\",\n ) as SelectField;\n\n sourceField.options.push({\n label: \"CJ\",\n value: \"cj\",\n });\n\n if (!isEnabled) {\n return config;\n }\n if (ordersCollection.hooks?.afterChange) {\n ordersCollection.hooks.afterChange.push(createOrderHook);\n }\n\n const incomingOnInit = config.onInit;\n\n config.onInit = async (payload) => {\n if (incomingOnInit) {\n await incomingOnInit(payload);\n }\n\n const cjSettingsDocs: any = [];\n\n if (isGlobal) {\n setTenantCredentials(\"1\", {\n emailAddress: pluginOptions.cjEmailAddress,\n password: pluginOptions.cjApiKey,\n refreshToken: pluginOptions.cjRefreshToken,\n });\n return;\n } else {\n const cjSettings = await payload.find({\n collection: \"cj-settings\",\n });\n\n cjSettingsDocs.push(...cjSettings?.docs);\n }\n\n cjSettingsDocs.forEach((config: any) => {\n setTenantCredentials(config?.shop?.slug || \"1\", {\n emailAddress: config.email,\n password: config.apiToken,\n });\n });\n };\n\n return config;\n };\n"],"names":["setTenantCredentials","createOrderHook","CjConfigCollection","CjSettings","cjPlugin","pluginOptions","config","isGlobal","isEnabled","ordersCollection","collections","find","collection","slug","orderCollectionSlug","Error","hooks","afterChange","length","globals","push","overrides","globalOverrides","collectionOverrides","productCollection","sourceField","fields","field","name","options","label","value","incomingOnInit","onInit","payload","cjSettingsDocs","emailAddress","cjEmailAddress","password","cjApiKey","refreshToken","cjRefreshToken","cjSettings","docs","forEach","shop","email","apiToken"],"mappings":"AACA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,SAA4BC,kBAAkB,EAAiBC,UAAU,QAAQ,gBAAgB;AAajG,OAAO,MAAMC,WACT,CAACC,gBACD,CAACC;QACG,MAAMC,WAAWF,cAAcE,QAAQ,IAAI;QAE3C,MAAMC,YAAYH,cAAcG,SAAS,IAAI;QAE7C,MAAMC,mBAAmBH,OAAOI,WAAW,EAAEC,KACzC,CAACC,aAAeA,WAAWC,IAAI,KAAMR,CAAAA,cAAcS,mBAAmB,IAAI,QAAO;QAGrF,IAAI,CAACL,kBAAkB;YACnB,MAAM,IAAIM,MAAM;QACpB;QAEA,IAAI,CAACN,iBAAiBO,KAAK,EAAE;YACzBP,iBAAiBO,KAAK,GAAG,CAAC;QAC9B;QAEA,IAAI,CAACP,iBAAiBO,KAAK,EAAEC,aAAaC,QAAQ;YAC9CT,iBAAiBO,KAAK,CAACC,WAAW,GAAG,EAAE;QAC3C;QAEA,IAAIV,UAAU;YACVD,OAAOa,OAAO,EAAEC,KAAKjB,WAAW;gBAAEkB,WAAWhB,cAAciB,eAAe;YAAC;QAC/E,OAAO;YACHhB,OAAOI,WAAW,EAAEU,KAChBlB,mBAAmB;gBAAEmB,WAAWhB,cAAckB,mBAAmB;YAAC;QAE1E;QACA,MAAMC,oBAAoBlB,OAAOI,WAAW,EAAEC,KAC1C,CAACC,aAAeA,WAAWC,IAAI,KAAK;QAGxC,MAAMY,cAAcD,mBAAmBE,QAAQf,KAC3C,CAACgB,QAAU,AAACA,MAAsBC,IAAI,KAAK;QAG/CH,YAAYI,OAAO,CAACT,IAAI,CAAC;YACrBU,OAAO;YACPC,OAAO;QACX;QAEA,IAAI,CAACvB,WAAW;YACZ,OAAOF;QACX;QACA,IAAIG,iBAAiBO,KAAK,EAAEC,aAAa;YACrCR,iBAAiBO,KAAK,CAACC,WAAW,CAACG,IAAI,CAACnB;QAC5C;QAEA,MAAM+B,iBAAiB1B,OAAO2B,MAAM;QAEpC3B,OAAO2B,MAAM,GAAG,OAAOC;YACnB,IAAIF,gBAAgB;gBAChB,MAAMA,eAAeE;YACzB;YAEA,MAAMC,iBAAsB,EAAE;YAE9B,IAAI5B,UAAU;gBACVP,qBAAqB,KAAK;oBACtBoC,cAAc/B,cAAcgC,cAAc;oBAC1CC,UAAUjC,cAAckC,QAAQ;oBAChCC,cAAcnC,cAAcoC,cAAc;gBAC9C;gBACA;YACJ,OAAO;gBACH,MAAMC,aAAa,MAAMR,QAAQvB,IAAI,CAAC;oBAClCC,YAAY;gBAChB;gBAEAuB,eAAef,IAAI,IAAIsB,YAAYC;YACvC;YAEAR,eAAeS,OAAO,CAAC,CAACtC;gBACpBN,qBAAqBM,QAAQuC,MAAMhC,QAAQ,KAAK;oBAC5CuB,cAAc9B,OAAOwC,KAAK;oBAC1BR,UAAUhC,OAAOyC,QAAQ;gBAC7B;YACJ;QACJ;QAEA,OAAOzC;IACX,EAAE"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Config, SelectField } from \"payload\";\nimport { setTenantCredentials } from \"./sdk/access-token\";\nimport { createOrderHook } from \"./service/create-order.hook\";\nimport { CjCollectionProps, CjConfigCollection, CjGlobalProps, CjSettings } from \"./cj-settings\";\n\ninterface PluginOptions {\n isEnabled?: boolean;\n cjApiKey: string;\n cjEmailAddress: string;\n cjRefreshToken?: string;\n isGlobal?: boolean;\n collectionOverrides?: CjCollectionProps[\"overrides\"];\n globalOverrides?: CjGlobalProps[\"overrides\"];\n orderCollectionSlug?: string;\n}\n\nexport const cjPlugin =\n (pluginOptions: PluginOptions) =>\n (config: Config): Config => {\n const isGlobal = pluginOptions.isGlobal ?? true;\n\n const isEnabled = pluginOptions.isEnabled ?? true;\n\n const ordersCollection = config.collections?.find(\n (collection) => collection.slug === (pluginOptions.orderCollectionSlug || \"orders\"),\n );\n\n if (!ordersCollection) {\n throw new Error(\"No orders collection found\");\n }\n\n if (!ordersCollection.hooks) {\n ordersCollection.hooks = {};\n }\n\n if (!ordersCollection.hooks?.afterChange?.length) {\n ordersCollection.hooks.afterChange = [];\n }\n\n if (isGlobal) {\n config.globals?.push(CjSettings({ overrides: pluginOptions.globalOverrides }));\n } else {\n config.collections?.push(\n CjConfigCollection({ overrides: pluginOptions.collectionOverrides }),\n );\n }\n const productCollection = config.collections?.find(\n (collection) => collection.slug === \"products\",\n );\n\n const sourceField = productCollection?.fields?.find(\n (field) => (field as SelectField).name === \"source\",\n ) as SelectField;\n\n sourceField.options.push({\n label: \"CJ\",\n value: \"cj\",\n });\n\n if (!isEnabled) {\n return config;\n }\n if (ordersCollection.hooks?.afterChange) {\n ordersCollection.hooks.afterChange.push(createOrderHook);\n }\n\n const incomingOnInit = config.onInit;\n\n config.onInit = async (payload) => {\n if (incomingOnInit) {\n await incomingOnInit(payload);\n }\n\n const cjSettingsDocs: any = [];\n\n if (isGlobal) {\n setTenantCredentials(\"1\", {\n emailAddress: pluginOptions.cjEmailAddress,\n password: pluginOptions.cjApiKey,\n refreshToken: pluginOptions.cjRefreshToken,\n });\n return;\n } else {\n const cjSettings = await payload.find({\n collection: \"cj-settings\" as any,\n });\n\n cjSettingsDocs.push(...cjSettings?.docs);\n }\n\n cjSettingsDocs.forEach((config: any) => {\n setTenantCredentials(config?.shop?.slug || \"1\", {\n emailAddress: config.email || process.env.CJ_EMAIL_ADDRESS,\n password: config.apiToken || process.env.CJ_PASSWORD,\n });\n });\n };\n\n return config;\n };\n"],"names":["setTenantCredentials","createOrderHook","CjConfigCollection","CjSettings","cjPlugin","pluginOptions","config","isGlobal","isEnabled","ordersCollection","collections","find","collection","slug","orderCollectionSlug","Error","hooks","afterChange","length","globals","push","overrides","globalOverrides","collectionOverrides","productCollection","sourceField","fields","field","name","options","label","value","incomingOnInit","onInit","payload","cjSettingsDocs","emailAddress","cjEmailAddress","password","cjApiKey","refreshToken","cjRefreshToken","cjSettings","docs","forEach","shop","email","process","env","CJ_EMAIL_ADDRESS","apiToken","CJ_PASSWORD"],"mappings":"AACA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,SAA4BC,kBAAkB,EAAiBC,UAAU,QAAQ,gBAAgB;AAajG,OAAO,MAAMC,WACT,CAACC,gBACD,CAACC;QACG,MAAMC,WAAWF,cAAcE,QAAQ,IAAI;QAE3C,MAAMC,YAAYH,cAAcG,SAAS,IAAI;QAE7C,MAAMC,mBAAmBH,OAAOI,WAAW,EAAEC,KACzC,CAACC,aAAeA,WAAWC,IAAI,KAAMR,CAAAA,cAAcS,mBAAmB,IAAI,QAAO;QAGrF,IAAI,CAACL,kBAAkB;YACnB,MAAM,IAAIM,MAAM;QACpB;QAEA,IAAI,CAACN,iBAAiBO,KAAK,EAAE;YACzBP,iBAAiBO,KAAK,GAAG,CAAC;QAC9B;QAEA,IAAI,CAACP,iBAAiBO,KAAK,EAAEC,aAAaC,QAAQ;YAC9CT,iBAAiBO,KAAK,CAACC,WAAW,GAAG,EAAE;QAC3C;QAEA,IAAIV,UAAU;YACVD,OAAOa,OAAO,EAAEC,KAAKjB,WAAW;gBAAEkB,WAAWhB,cAAciB,eAAe;YAAC;QAC/E,OAAO;YACHhB,OAAOI,WAAW,EAAEU,KAChBlB,mBAAmB;gBAAEmB,WAAWhB,cAAckB,mBAAmB;YAAC;QAE1E;QACA,MAAMC,oBAAoBlB,OAAOI,WAAW,EAAEC,KAC1C,CAACC,aAAeA,WAAWC,IAAI,KAAK;QAGxC,MAAMY,cAAcD,mBAAmBE,QAAQf,KAC3C,CAACgB,QAAU,AAACA,MAAsBC,IAAI,KAAK;QAG/CH,YAAYI,OAAO,CAACT,IAAI,CAAC;YACrBU,OAAO;YACPC,OAAO;QACX;QAEA,IAAI,CAACvB,WAAW;YACZ,OAAOF;QACX;QACA,IAAIG,iBAAiBO,KAAK,EAAEC,aAAa;YACrCR,iBAAiBO,KAAK,CAACC,WAAW,CAACG,IAAI,CAACnB;QAC5C;QAEA,MAAM+B,iBAAiB1B,OAAO2B,MAAM;QAEpC3B,OAAO2B,MAAM,GAAG,OAAOC;YACnB,IAAIF,gBAAgB;gBAChB,MAAMA,eAAeE;YACzB;YAEA,MAAMC,iBAAsB,EAAE;YAE9B,IAAI5B,UAAU;gBACVP,qBAAqB,KAAK;oBACtBoC,cAAc/B,cAAcgC,cAAc;oBAC1CC,UAAUjC,cAAckC,QAAQ;oBAChCC,cAAcnC,cAAcoC,cAAc;gBAC9C;gBACA;YACJ,OAAO;gBACH,MAAMC,aAAa,MAAMR,QAAQvB,IAAI,CAAC;oBAClCC,YAAY;gBAChB;gBAEAuB,eAAef,IAAI,IAAIsB,YAAYC;YACvC;YAEAR,eAAeS,OAAO,CAAC,CAACtC;gBACpBN,qBAAqBM,QAAQuC,MAAMhC,QAAQ,KAAK;oBAC5CuB,cAAc9B,OAAOwC,KAAK,IAAIC,QAAQC,GAAG,CAACC,gBAAgB;oBAC1DX,UAAUhC,OAAO4C,QAAQ,IAAIH,QAAQC,GAAG,CAACG,WAAW;gBACxD;YACJ;QACJ;QAEA,OAAO7C;IACX,EAAE"}
@@ -2,6 +2,7 @@ type Credentials = {
2
2
  emailAddress: string;
3
3
  password: string;
4
4
  refreshToken?: string;
5
+ accessToken?: string;
5
6
  };
6
7
  export declare const getCurrentAccessToken: () => Promise<string>;
7
8
  export declare const setTenantCredentials: (shopId: string, creds: Credentials) => void;
@@ -9,7 +9,14 @@ export const setTenantCredentials = (shopId, creds)=>{
9
9
  tenantCredentialsMap.set(shopId, creds);
10
10
  };
11
11
  export const getTenantAccessToken = async (shopId)=>{
12
- const creds = tenantCredentialsMap.get(shopId);
12
+ const creds = tenantCredentialsMap.get(shopId) || {
13
+ emailAddress: process.env.CJ_EMAIL_ADDRESS || "",
14
+ password: process.env.CJ_PASSWORD || "",
15
+ refreshToken: process.env.CJ_REFRESH_TOKEN || ""
16
+ };
17
+ if (creds.accessToken) {
18
+ return creds.accessToken;
19
+ }
13
20
  if (!creds?.emailAddress || !creds?.password) {
14
21
  throw new Error(`Credentials for tenant ${shopId} are missing or incomplete`);
15
22
  }
@@ -20,19 +27,16 @@ export const getTenantAccessToken = async (shopId)=>{
20
27
  const result = await cjSdk.getAccessToken(emailAddress, password);
21
28
  newAccessToken = result.accessToken;
22
29
  newRefreshToken = result.refreshToken;
23
- tenantCredentialsMap.set(shopId, {
24
- ...creds,
25
- refreshToken: newRefreshToken
26
- });
27
30
  } else {
28
31
  const result = await cjSdk.refreshAccessToken(refreshToken);
29
32
  newAccessToken = result.accessToken;
30
33
  newRefreshToken = result.refreshToken;
31
- tenantCredentialsMap.set(shopId, {
32
- ...creds,
33
- refreshToken: newRefreshToken
34
- });
35
34
  }
35
+ tenantCredentialsMap.set(shopId, {
36
+ ...creds,
37
+ accessToken: newAccessToken,
38
+ refreshToken: newRefreshToken
39
+ });
36
40
  return newAccessToken;
37
41
  };
38
42
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sdk/access-token.ts"],"sourcesContent":["import * as cjSdk from \"./cj-sdk\";\n\ntype Credentials = {\n emailAddress: string;\n password: string;\n refreshToken?: string;\n};\n\nconst tenantCredentialsMap = new Map<string, Credentials>();\n\nexport const getCurrentAccessToken = async () => {\n const shopId = \"1\";\n const accessToken = await getTenantAccessToken(shopId);\n return accessToken;\n};\n\nexport const setTenantCredentials = (shopId: string, creds: Credentials) => {\n tenantCredentialsMap.set(shopId, creds);\n};\n\nexport const getTenantAccessToken = async (shopId: string) => {\n const creds = tenantCredentialsMap.get(shopId);\n\n if (!creds?.emailAddress || !creds?.password) {\n throw new Error(`Credentials for tenant ${shopId} are missing or incomplete`);\n }\n\n const { emailAddress, password, refreshToken } = creds;\n\n let newAccessToken: string;\n let newRefreshToken: string | undefined;\n\n if (!refreshToken) {\n const result = await cjSdk.getAccessToken(emailAddress, password);\n newAccessToken = result.accessToken;\n newRefreshToken = result.refreshToken;\n\n tenantCredentialsMap.set(shopId, {\n ...creds,\n refreshToken: newRefreshToken,\n });\n } else {\n const result = await cjSdk.refreshAccessToken(refreshToken);\n newAccessToken = result.accessToken;\n newRefreshToken = result.refreshToken;\n\n tenantCredentialsMap.set(shopId, {\n ...creds,\n refreshToken: newRefreshToken,\n });\n }\n\n return newAccessToken;\n};\n"],"names":["cjSdk","tenantCredentialsMap","Map","getCurrentAccessToken","shopId","accessToken","getTenantAccessToken","setTenantCredentials","creds","set","get","emailAddress","password","Error","refreshToken","newAccessToken","newRefreshToken","result","getAccessToken","refreshAccessToken"],"mappings":"AAAA,YAAYA,WAAW,WAAW;AAQlC,MAAMC,uBAAuB,IAAIC;AAEjC,OAAO,MAAMC,wBAAwB;IACjC,MAAMC,SAAS;IACf,MAAMC,cAAc,MAAMC,qBAAqBF;IAC/C,OAAOC;AACX,EAAE;AAEF,OAAO,MAAME,uBAAuB,CAACH,QAAgBI;IACjDP,qBAAqBQ,GAAG,CAACL,QAAQI;AACrC,EAAE;AAEF,OAAO,MAAMF,uBAAuB,OAAOF;IACvC,MAAMI,QAAQP,qBAAqBS,GAAG,CAACN;IAEvC,IAAI,CAACI,OAAOG,gBAAgB,CAACH,OAAOI,UAAU;QAC1C,MAAM,IAAIC,MAAM,CAAC,uBAAuB,EAAET,OAAO,0BAA0B,CAAC;IAChF;IAEA,MAAM,EAAEO,YAAY,EAAEC,QAAQ,EAAEE,YAAY,EAAE,GAAGN;IAEjD,IAAIO;IACJ,IAAIC;IAEJ,IAAI,CAACF,cAAc;QACf,MAAMG,SAAS,MAAMjB,MAAMkB,cAAc,CAACP,cAAcC;QACxDG,iBAAiBE,OAAOZ,WAAW;QACnCW,kBAAkBC,OAAOH,YAAY;QAErCb,qBAAqBQ,GAAG,CAACL,QAAQ;YAC7B,GAAGI,KAAK;YACRM,cAAcE;QAClB;IACJ,OAAO;QACH,MAAMC,SAAS,MAAMjB,MAAMmB,kBAAkB,CAACL;QAC9CC,iBAAiBE,OAAOZ,WAAW;QACnCW,kBAAkBC,OAAOH,YAAY;QAErCb,qBAAqBQ,GAAG,CAACL,QAAQ;YAC7B,GAAGI,KAAK;YACRM,cAAcE;QAClB;IACJ;IAEA,OAAOD;AACX,EAAE"}
1
+ {"version":3,"sources":["../../src/sdk/access-token.ts"],"sourcesContent":["import * as cjSdk from \"./cj-sdk\";\n\ntype Credentials = {\n emailAddress: string;\n password: string;\n refreshToken?: string;\n accessToken?: string;\n};\n\nconst tenantCredentialsMap = new Map<string, Credentials>();\n\nexport const getCurrentAccessToken = async () => {\n const shopId = \"1\";\n const accessToken = await getTenantAccessToken(shopId);\n return accessToken;\n};\n\nexport const setTenantCredentials = (shopId: string, creds: Credentials) => {\n tenantCredentialsMap.set(shopId, creds);\n};\n\nexport const getTenantAccessToken = async (shopId: string) => {\n const creds = tenantCredentialsMap.get(shopId) || {\n emailAddress: process.env.CJ_EMAIL_ADDRESS || \"\",\n password: process.env.CJ_PASSWORD || \"\",\n refreshToken: process.env.CJ_REFRESH_TOKEN || \"\",\n };\n\n if (creds.accessToken) {\n return creds.accessToken;\n }\n\n if (!creds?.emailAddress || !creds?.password) {\n throw new Error(`Credentials for tenant ${shopId} are missing or incomplete`);\n }\n\n const { emailAddress, password, refreshToken } = creds;\n\n let newAccessToken: string;\n let newRefreshToken: string | undefined;\n\n if (!refreshToken) {\n const result = await cjSdk.getAccessToken(emailAddress, password);\n newAccessToken = result.accessToken;\n newRefreshToken = result.refreshToken;\n } else {\n const result = await cjSdk.refreshAccessToken(refreshToken);\n newAccessToken = result.accessToken;\n newRefreshToken = result.refreshToken;\n }\n\n tenantCredentialsMap.set(shopId, {\n ...creds,\n accessToken: newAccessToken,\n refreshToken: newRefreshToken,\n });\n\n return newAccessToken;\n};\n"],"names":["cjSdk","tenantCredentialsMap","Map","getCurrentAccessToken","shopId","accessToken","getTenantAccessToken","setTenantCredentials","creds","set","get","emailAddress","process","env","CJ_EMAIL_ADDRESS","password","CJ_PASSWORD","refreshToken","CJ_REFRESH_TOKEN","Error","newAccessToken","newRefreshToken","result","getAccessToken","refreshAccessToken"],"mappings":"AAAA,YAAYA,WAAW,WAAW;AASlC,MAAMC,uBAAuB,IAAIC;AAEjC,OAAO,MAAMC,wBAAwB;IACjC,MAAMC,SAAS;IACf,MAAMC,cAAc,MAAMC,qBAAqBF;IAC/C,OAAOC;AACX,EAAE;AAEF,OAAO,MAAME,uBAAuB,CAACH,QAAgBI;IACjDP,qBAAqBQ,GAAG,CAACL,QAAQI;AACrC,EAAE;AAEF,OAAO,MAAMF,uBAAuB,OAAOF;IACvC,MAAMI,QAAQP,qBAAqBS,GAAG,CAACN,WAAW;QAC9CO,cAAcC,QAAQC,GAAG,CAACC,gBAAgB,IAAI;QAC9CC,UAAUH,QAAQC,GAAG,CAACG,WAAW,IAAI;QACrCC,cAAcL,QAAQC,GAAG,CAACK,gBAAgB,IAAI;IAClD;IAEA,IAAIV,MAAMH,WAAW,EAAE;QACnB,OAAOG,MAAMH,WAAW;IAC5B;IAEA,IAAI,CAACG,OAAOG,gBAAgB,CAACH,OAAOO,UAAU;QAC1C,MAAM,IAAII,MAAM,CAAC,uBAAuB,EAAEf,OAAO,0BAA0B,CAAC;IAChF;IAEA,MAAM,EAAEO,YAAY,EAAEI,QAAQ,EAAEE,YAAY,EAAE,GAAGT;IAEjD,IAAIY;IACJ,IAAIC;IAEJ,IAAI,CAACJ,cAAc;QACf,MAAMK,SAAS,MAAMtB,MAAMuB,cAAc,CAACZ,cAAcI;QACxDK,iBAAiBE,OAAOjB,WAAW;QACnCgB,kBAAkBC,OAAOL,YAAY;IACzC,OAAO;QACH,MAAMK,SAAS,MAAMtB,MAAMwB,kBAAkB,CAACP;QAC9CG,iBAAiBE,OAAOjB,WAAW;QACnCgB,kBAAkBC,OAAOL,YAAY;IACzC;IAEAhB,qBAAqBQ,GAAG,CAACL,QAAQ;QAC7B,GAAGI,KAAK;QACRH,aAAae;QACbH,cAAcI;IAClB;IAEA,OAAOD;AACX,EAAE"}
@@ -1,5 +1,5 @@
1
- import type { APIResponse } from '../../error-types';
2
- import type { CategoryFirstLevel, Product, ProductDetails } from './product-types.ts';
1
+ import type { APIResponse } from "../../error-types";
2
+ import type { CategoryFirstLevel, Product, ProductDetails } from "./product-types.ts";
3
3
  export declare function getProductCategory(accessToken: string, params: any): Promise<APIResponse<CategoryFirstLevel[]>>;
4
4
  export declare function getProductList(params?: Record<string, any>): Promise<APIResponse<Product[]>>;
5
5
  export declare function getProductDetails(queryParams: {
@@ -1,17 +1,17 @@
1
- import { cjApiClient } from '../../api-client';
2
- import { getCurrentAccessToken } from '../access-token';
1
+ import { cjApiClient } from "../../api-client";
2
+ import { getCurrentAccessToken } from "../access-token";
3
3
  export async function getProductCategory(accessToken, params) {
4
4
  try {
5
- const response = await cjApiClient.get('/product/getCategory', {
5
+ const response = await cjApiClient.get("/product/getCategory", {
6
6
  headers: {
7
- 'CJ-Access-Token': accessToken
7
+ "CJ-Access-Token": accessToken
8
8
  },
9
9
  params
10
10
  });
11
11
  const data = response.data.data;
12
12
  if (!data) {
13
13
  return {
14
- error: 'No categories found'
14
+ error: "No categories found"
15
15
  };
16
16
  }
17
17
  return {
@@ -20,7 +20,7 @@ export async function getProductCategory(accessToken, params) {
20
20
  } catch (error) {
21
21
  console.error(`Error fetching categories [${error.code}]: ${error.message}`);
22
22
  return {
23
- error: error.message || 'Failed to fetch categories'
23
+ error: error.message || "Failed to fetch categories"
24
24
  };
25
25
  }
26
26
  }
@@ -35,21 +35,21 @@ export async function getProductList(params = {}) {
35
35
  };
36
36
  try {
37
37
  const accessToken = await getCurrentAccessToken();
38
- const response = await cjApiClient.get('https://developers.cjdropshipping.com/api2.0/v1/product/list', {
38
+ const response = await cjApiClient.get("https://developers.cjdropshipping.com/api2.0/v1/product/list", {
39
39
  headers: {
40
- 'CJ-Access-Token': accessToken
40
+ "CJ-Access-Token": accessToken
41
41
  },
42
42
  params: query
43
43
  });
44
44
  const data = response.data;
45
45
  if (!data.result) {
46
46
  return {
47
- error: data.message || 'Failed to fetch product list'
47
+ error: data.message || "Failed to fetch product list"
48
48
  };
49
49
  }
50
50
  if (!data.data?.list) {
51
51
  return {
52
- error: 'No products found'
52
+ error: "No products found"
53
53
  };
54
54
  }
55
55
  return {
@@ -58,7 +58,7 @@ export async function getProductList(params = {}) {
58
58
  } catch (error) {
59
59
  console.error(`Error fetching product list [${error.code}]: ${error.message}`);
60
60
  return {
61
- error: error.message || 'Failed to fetch product list'
61
+ error: error.message || "Failed to fetch product list"
62
62
  };
63
63
  }
64
64
  }
@@ -66,20 +66,20 @@ export async function getProductDetails(queryParams) {
66
66
  const { pid, productSku, variantSku } = queryParams;
67
67
  if (!pid && !productSku && !variantSku) {
68
68
  return {
69
- error: 'One of pid, productSku, or variantSku must be provided.'
69
+ error: "One of pid, productSku, or variantSku must be provided."
70
70
  };
71
71
  }
72
72
  try {
73
73
  const accessToken = await getCurrentAccessToken();
74
- const response = await cjApiClient.get('https://developers.cjdropshipping.com/api2.0/v1/product/query', {
74
+ const response = await cjApiClient.get("https://developers.cjdropshipping.com/api2.0/v1/product/query", {
75
75
  headers: {
76
- 'CJ-Access-Token': accessToken
76
+ "CJ-Access-Token": accessToken
77
77
  },
78
78
  params: queryParams
79
79
  });
80
80
  if (!response.data.result) {
81
81
  return {
82
- error: response.data.message || 'Failed to fetch product details'
82
+ error: response.data.message || "Failed to fetch product details"
83
83
  };
84
84
  }
85
85
  return {
@@ -87,9 +87,7 @@ export async function getProductDetails(queryParams) {
87
87
  };
88
88
  } catch (error) {
89
89
  console.error(`Error fetching product details [${error.code}]: ${error.message}`);
90
- return {
91
- error: error.message || 'Failed to fetch product details'
92
- };
90
+ throw new Error(error.message);
93
91
  }
94
92
  }
95
93
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/sdk/products/products.ts"],"sourcesContent":["import type { APIResponse } from '../../error-types'\nimport type {\n CategoryFirstLevel,\n CategoryListResponse,\n Product,\n ProductDetails,\n ProductListResponse,\n} from './product-types.ts'\n\nimport { cjApiClient } from '../../api-client'\nimport { getCurrentAccessToken } from '../access-token'\n\nexport async function getProductCategory(\n accessToken: string,\n params: any,\n): Promise<APIResponse<CategoryFirstLevel[]>> {\n try {\n const response = await cjApiClient.get<CategoryListResponse>('/product/getCategory', {\n headers: { 'CJ-Access-Token': accessToken },\n params,\n })\n\n const data = response.data.data\n if (!data) {\n return { error: 'No categories found' }\n }\n\n return { data }\n } catch (error: any) {\n console.error(`Error fetching categories [${error.code}]: ${error.message}`)\n return { error: error.message || 'Failed to fetch categories' }\n }\n}\n\nexport async function getProductList(\n params: Record<string, any> = {},\n): Promise<APIResponse<Product[]>> {\n const defaultParams = {\n pageNum: 1,\n pageSize: 20,\n }\n const query = { ...defaultParams, ...params }\n\n try {\n const accessToken = await getCurrentAccessToken();\n const response = await cjApiClient.get<ProductListResponse>(\n 'https://developers.cjdropshipping.com/api2.0/v1/product/list',\n {\n headers: {\n 'CJ-Access-Token': accessToken,\n },\n params: query,\n },\n )\n\n const data = response.data\n\n if (!data.result) {\n return { error: data.message || 'Failed to fetch product list' }\n }\n\n if (!data.data?.list) {\n return { error: 'No products found' }\n }\n\n return { data: data.data.list }\n } catch (error: any) {\n console.error(`Error fetching product list [${error.code}]: ${error.message}`)\n return { error: error.message || 'Failed to fetch product list' }\n }\n}\n\nexport async function getProductDetails(queryParams: {\n pid?: string\n productSku?: string\n variantSku?: string\n}): Promise<APIResponse<ProductDetails>> {\n const { pid, productSku, variantSku } = queryParams\n if (!pid && !productSku && !variantSku) {\n return {\n error: 'One of pid, productSku, or variantSku must be provided.',\n }\n }\n\n try {\n const accessToken = await getCurrentAccessToken()\n const response = await cjApiClient.get<{\n code: number\n data: ProductDetails\n message: string\n result: boolean\n }>('https://developers.cjdropshipping.com/api2.0/v1/product/query', {\n headers: {\n 'CJ-Access-Token': accessToken,\n },\n params: queryParams,\n })\n\n if (!response.data.result) {\n return {\n error: response.data.message || 'Failed to fetch product details',\n }\n }\n\n return { data: response.data.data }\n } catch (error: any) {\n console.error(`Error fetching product details [${error.code}]: ${error.message}`)\n return { error: error.message || 'Failed to fetch product details' }\n }\n}\n"],"names":["cjApiClient","getCurrentAccessToken","getProductCategory","accessToken","params","response","get","headers","data","error","console","code","message","getProductList","defaultParams","pageNum","pageSize","query","result","list","getProductDetails","queryParams","pid","productSku","variantSku"],"mappings":"AASA,SAASA,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,qBAAqB,QAAQ,kBAAiB;AAEvD,OAAO,eAAeC,mBACpBC,WAAmB,EACnBC,MAAW;IAEX,IAAI;QACF,MAAMC,WAAW,MAAML,YAAYM,GAAG,CAAuB,wBAAwB;YACnFC,SAAS;gBAAE,mBAAmBJ;YAAY;YAC1CC;QACF;QAEA,MAAMI,OAAOH,SAASG,IAAI,CAACA,IAAI;QAC/B,IAAI,CAACA,MAAM;YACT,OAAO;gBAAEC,OAAO;YAAsB;QACxC;QAEA,OAAO;YAAED;QAAK;IAChB,EAAE,OAAOC,OAAY;QACnBC,QAAQD,KAAK,CAAC,CAAC,2BAA2B,EAAEA,MAAME,IAAI,CAAC,GAAG,EAAEF,MAAMG,OAAO,EAAE;QAC3E,OAAO;YAAEH,OAAOA,MAAMG,OAAO,IAAI;QAA6B;IAChE;AACF;AAEA,OAAO,eAAeC,eACpBT,SAA8B,CAAC,CAAC;IAEhC,MAAMU,gBAAgB;QACpBC,SAAS;QACTC,UAAU;IACZ;IACA,MAAMC,QAAQ;QAAE,GAAGH,aAAa;QAAE,GAAGV,MAAM;IAAC;IAE5C,IAAI;QACF,MAAMD,cAAc,MAAMF;QAC1B,MAAMI,WAAW,MAAML,YAAYM,GAAG,CACpC,gEACA;YACEC,SAAS;gBACP,mBAAmBJ;YACrB;YACAC,QAAQa;QACV;QAGF,MAAMT,OAAOH,SAASG,IAAI;QAE1B,IAAI,CAACA,KAAKU,MAAM,EAAE;YAChB,OAAO;gBAAET,OAAOD,KAAKI,OAAO,IAAI;YAA+B;QACjE;QAEA,IAAI,CAACJ,KAAKA,IAAI,EAAEW,MAAM;YACpB,OAAO;gBAAEV,OAAO;YAAoB;QACtC;QAEA,OAAO;YAAED,MAAMA,KAAKA,IAAI,CAACW,IAAI;QAAC;IAChC,EAAE,OAAOV,OAAY;QACnBC,QAAQD,KAAK,CAAC,CAAC,6BAA6B,EAAEA,MAAME,IAAI,CAAC,GAAG,EAAEF,MAAMG,OAAO,EAAE;QAC7E,OAAO;YAAEH,OAAOA,MAAMG,OAAO,IAAI;QAA+B;IAClE;AACF;AAEA,OAAO,eAAeQ,kBAAkBC,WAIvC;IACC,MAAM,EAAEC,GAAG,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGH;IACxC,IAAI,CAACC,OAAO,CAACC,cAAc,CAACC,YAAY;QACtC,OAAO;YACLf,OAAO;QACT;IACF;IAEA,IAAI;QACF,MAAMN,cAAc,MAAMF;QAC1B,MAAMI,WAAW,MAAML,YAAYM,GAAG,CAKnC,iEAAiE;YAClEC,SAAS;gBACP,mBAAmBJ;YACrB;YACAC,QAAQiB;QACV;QAEA,IAAI,CAAChB,SAASG,IAAI,CAACU,MAAM,EAAE;YACzB,OAAO;gBACLT,OAAOJ,SAASG,IAAI,CAACI,OAAO,IAAI;YAClC;QACF;QAEA,OAAO;YAAEJ,MAAMH,SAASG,IAAI,CAACA,IAAI;QAAC;IACpC,EAAE,OAAOC,OAAY;QACnBC,QAAQD,KAAK,CAAC,CAAC,gCAAgC,EAAEA,MAAME,IAAI,CAAC,GAAG,EAAEF,MAAMG,OAAO,EAAE;QAChF,OAAO;YAAEH,OAAOA,MAAMG,OAAO,IAAI;QAAkC;IACrE;AACF"}
1
+ {"version":3,"sources":["../../../src/sdk/products/products.ts"],"sourcesContent":["import type { APIResponse } from \"../../error-types\";\nimport type {\n CategoryFirstLevel,\n CategoryListResponse,\n Product,\n ProductDetails,\n ProductListResponse,\n} from \"./product-types.ts\";\n\nimport { cjApiClient } from \"../../api-client\";\nimport { getCurrentAccessToken } from \"../access-token\";\n\nexport async function getProductCategory(\n accessToken: string,\n params: any,\n): Promise<APIResponse<CategoryFirstLevel[]>> {\n try {\n const response = await cjApiClient.get<CategoryListResponse>(\"/product/getCategory\", {\n headers: { \"CJ-Access-Token\": accessToken },\n params,\n });\n\n const data = response.data.data;\n if (!data) {\n return { error: \"No categories found\" };\n }\n\n return { data };\n } catch (error: any) {\n console.error(`Error fetching categories [${error.code}]: ${error.message}`);\n return { error: error.message || \"Failed to fetch categories\" };\n }\n}\n\nexport async function getProductList(\n params: Record<string, any> = {},\n): Promise<APIResponse<Product[]>> {\n const defaultParams = {\n pageNum: 1,\n pageSize: 20,\n };\n const query = { ...defaultParams, ...params };\n\n try {\n const accessToken = await getCurrentAccessToken();\n const response = await cjApiClient.get<ProductListResponse>(\n \"https://developers.cjdropshipping.com/api2.0/v1/product/list\",\n {\n headers: {\n \"CJ-Access-Token\": accessToken,\n },\n params: query,\n },\n );\n\n const data = response.data;\n\n if (!data.result) {\n return { error: data.message || \"Failed to fetch product list\" };\n }\n\n if (!data.data?.list) {\n return { error: \"No products found\" };\n }\n\n return { data: data.data.list };\n } catch (error: any) {\n console.error(`Error fetching product list [${error.code}]: ${error.message}`);\n return { error: error.message || \"Failed to fetch product list\" };\n }\n}\n\nexport async function getProductDetails(queryParams: {\n pid?: string;\n productSku?: string;\n variantSku?: string;\n}): Promise<APIResponse<ProductDetails>> {\n const { pid, productSku, variantSku } = queryParams;\n if (!pid && !productSku && !variantSku) {\n return {\n error: \"One of pid, productSku, or variantSku must be provided.\",\n };\n }\n\n try {\n const accessToken = await getCurrentAccessToken();\n const response = await cjApiClient.get<{\n code: number;\n data: ProductDetails;\n message: string;\n result: boolean;\n }>(\"https://developers.cjdropshipping.com/api2.0/v1/product/query\", {\n headers: {\n \"CJ-Access-Token\": accessToken,\n },\n params: queryParams,\n });\n\n if (!response.data.result) {\n return {\n error: response.data.message || \"Failed to fetch product details\",\n };\n }\n\n return { data: response.data.data };\n } catch (error: any) {\n console.error(`Error fetching product details [${error.code}]: ${error.message}`);\n throw new Error(error.message);\n }\n}\n"],"names":["cjApiClient","getCurrentAccessToken","getProductCategory","accessToken","params","response","get","headers","data","error","console","code","message","getProductList","defaultParams","pageNum","pageSize","query","result","list","getProductDetails","queryParams","pid","productSku","variantSku","Error"],"mappings":"AASA,SAASA,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,qBAAqB,QAAQ,kBAAkB;AAExD,OAAO,eAAeC,mBAClBC,WAAmB,EACnBC,MAAW;IAEX,IAAI;QACA,MAAMC,WAAW,MAAML,YAAYM,GAAG,CAAuB,wBAAwB;YACjFC,SAAS;gBAAE,mBAAmBJ;YAAY;YAC1CC;QACJ;QAEA,MAAMI,OAAOH,SAASG,IAAI,CAACA,IAAI;QAC/B,IAAI,CAACA,MAAM;YACP,OAAO;gBAAEC,OAAO;YAAsB;QAC1C;QAEA,OAAO;YAAED;QAAK;IAClB,EAAE,OAAOC,OAAY;QACjBC,QAAQD,KAAK,CAAC,CAAC,2BAA2B,EAAEA,MAAME,IAAI,CAAC,GAAG,EAAEF,MAAMG,OAAO,EAAE;QAC3E,OAAO;YAAEH,OAAOA,MAAMG,OAAO,IAAI;QAA6B;IAClE;AACJ;AAEA,OAAO,eAAeC,eAClBT,SAA8B,CAAC,CAAC;IAEhC,MAAMU,gBAAgB;QAClBC,SAAS;QACTC,UAAU;IACd;IACA,MAAMC,QAAQ;QAAE,GAAGH,aAAa;QAAE,GAAGV,MAAM;IAAC;IAE5C,IAAI;QACA,MAAMD,cAAc,MAAMF;QAC1B,MAAMI,WAAW,MAAML,YAAYM,GAAG,CAClC,gEACA;YACIC,SAAS;gBACL,mBAAmBJ;YACvB;YACAC,QAAQa;QACZ;QAGJ,MAAMT,OAAOH,SAASG,IAAI;QAE1B,IAAI,CAACA,KAAKU,MAAM,EAAE;YACd,OAAO;gBAAET,OAAOD,KAAKI,OAAO,IAAI;YAA+B;QACnE;QAEA,IAAI,CAACJ,KAAKA,IAAI,EAAEW,MAAM;YAClB,OAAO;gBAAEV,OAAO;YAAoB;QACxC;QAEA,OAAO;YAAED,MAAMA,KAAKA,IAAI,CAACW,IAAI;QAAC;IAClC,EAAE,OAAOV,OAAY;QACjBC,QAAQD,KAAK,CAAC,CAAC,6BAA6B,EAAEA,MAAME,IAAI,CAAC,GAAG,EAAEF,MAAMG,OAAO,EAAE;QAC7E,OAAO;YAAEH,OAAOA,MAAMG,OAAO,IAAI;QAA+B;IACpE;AACJ;AAEA,OAAO,eAAeQ,kBAAkBC,WAIvC;IACG,MAAM,EAAEC,GAAG,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGH;IACxC,IAAI,CAACC,OAAO,CAACC,cAAc,CAACC,YAAY;QACpC,OAAO;YACHf,OAAO;QACX;IACJ;IAEA,IAAI;QACA,MAAMN,cAAc,MAAMF;QAC1B,MAAMI,WAAW,MAAML,YAAYM,GAAG,CAKnC,iEAAiE;YAChEC,SAAS;gBACL,mBAAmBJ;YACvB;YACAC,QAAQiB;QACZ;QAEA,IAAI,CAAChB,SAASG,IAAI,CAACU,MAAM,EAAE;YACvB,OAAO;gBACHT,OAAOJ,SAASG,IAAI,CAACI,OAAO,IAAI;YACpC;QACJ;QAEA,OAAO;YAAEJ,MAAMH,SAASG,IAAI,CAACA,IAAI;QAAC;IACtC,EAAE,OAAOC,OAAY;QACjBC,QAAQD,KAAK,CAAC,CAAC,gCAAgC,EAAEA,MAAME,IAAI,CAAC,GAAG,EAAEF,MAAMG,OAAO,EAAE;QAChF,MAAM,IAAIa,MAAMhB,MAAMG,OAAO;IACjC;AACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopnex/cj-plugin",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "A blank template to get started with Payload 3.0",
5
5
  "type": "module",
6
6
  "exports": {