{"version":3,"file":"load-rest-resources.mjs","sources":["../../../../../rest/load-rest-resources.ts"],"sourcesContent":["import type {ShopifyClients} from '../lib';\nimport {ConfigInterface} from '../lib/base-types';\nimport {logger} from '../lib/logger';\n\nimport {Base} from './base';\nimport {ShopifyRestResources} from './types';\n\nexport interface LoadRestResourcesParams<\n  Resources extends ShopifyRestResources,\n> {\n  resources: Resources;\n  config: ConfigInterface;\n  RestClient: ShopifyClients['Rest'];\n}\n\nexport function loadRestResources<Resources extends ShopifyRestResources>({\n  resources,\n  config,\n  RestClient,\n}: LoadRestResourcesParams<Resources>): Resources {\n  const firstResource = Object.keys(resources)[0];\n  if (config.apiVersion !== resources[firstResource].apiVersion) {\n    logger(config).warning(\n      `Loading REST resources for API version ${resources[firstResource].apiVersion}, which doesn't match the default ${config.apiVersion}`,\n    );\n  }\n\n  return Object.fromEntries(\n    Object.entries(resources).map(([name, resource]) => {\n      class NewResource extends resource {}\n\n      NewResource.setClassProperties({\n        Client: RestClient,\n        config,\n      });\n\n      Object.entries(NewResource.hasOne).map(([_attribute, klass]) => {\n        (klass as typeof Base).setClassProperties({\n          Client: RestClient,\n          config,\n        });\n      });\n\n      Object.entries(NewResource.hasMany).map(([_attribute, klass]) => {\n        (klass as typeof Base).setClassProperties({\n          Client: RestClient,\n          config,\n        });\n      });\n\n      Reflect.defineProperty(NewResource, 'name', {\n        value: name,\n      });\n\n      return [name, NewResource];\n    }),\n  ) as Resources;\n}\n"],"names":[],"mappings":";;AAeM,SAAU,iBAAiB,CAAyC,EACxE,SAAS,EACT,MAAM,EACN,UAAU,GACyB,EAAA;IACnC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE;AAC7D,QAAA,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,0CAA0C,SAAS,CAAC,aAAa,CAAC,CAAC,UAAU,CAAA,kCAAA,EAAqC,MAAM,CAAC,UAAU,CAAA,CAAE,CACtI;IACH;IAEA,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAI;QACjD,MAAM,WAAY,SAAQ,QAAQ,CAAA;AAAG;QAErC,WAAW,CAAC,kBAAkB,CAAC;AAC7B,YAAA,MAAM,EAAE,UAAU;YAClB,MAAM;AACP,SAAA,CAAC;AAEF,QAAA,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,KAAI;YAC5D,KAAqB,CAAC,kBAAkB,CAAC;AACxC,gBAAA,MAAM,EAAE,UAAU;gBAClB,MAAM;AACP,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,KAAI;YAC7D,KAAqB,CAAC,kBAAkB,CAAC;AACxC,gBAAA,MAAM,EAAE,UAAU;gBAClB,MAAM;AACP,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE;AAC1C,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;AAEF,QAAA,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;IAC5B,CAAC,CAAC,CACU;AAChB;;;;"}