{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/packagers/index.ts"],"sourcesContent":["/**\n * Factory for supported packagers.\n *\n * All packagers must extend the Packager class.\n *\n * @see Packager\n */\nimport { memoizeWith } from 'ramda';\n\nimport { isPackagerId } from '../type-predicate';\n\nimport type SwcServerlessPlugin from '../index';\nimport type { PackagerId, PackagerOptions } from '../types';\nimport type { Packager } from './packager';\n\nconst packagerFactories: Record<PackagerId, (packagerOptions: PackagerOptions) => Promise<Packager>> = {\n  async npm(packagerOptions: PackagerOptions) {\n    const { NPM } = await import('./npm');\n\n    return new NPM(packagerOptions);\n  },\n  async pnpm() {\n    const { Pnpm } = await import('./pnpm');\n\n    return new Pnpm();\n  },\n  async yarn(packagerOptions) {\n    const { Yarn } = await import('./yarn');\n\n    return new Yarn(packagerOptions);\n  },\n};\n\n/**\n * Asynchronously create a Packager instance and memoize it.\n *\n * @this SwcServerlessPlugin - Active plugin instance\n * @param {string} packagerId - Well known packager id\n * @returns {Promise<Packager>} - The selected Packager\n */\nexport const getPackager = memoizeWith(\n  (packagerId) => packagerId,\n  async function (\n    this: SwcServerlessPlugin,\n    packagerId: PackagerId,\n    packagerOptions: PackagerOptions\n  ): Promise<Packager> {\n    this.log.debug(`Trying to create packager: ${packagerId}`);\n\n    if (!isPackagerId(packagerId)) {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore Serverless typings (as of v3.0.2) are incorrect\n      throw new this.serverless.classes.Error(`Could not find packager '${packagerId}'`);\n    }\n\n    const packager = await packagerFactories[packagerId](packagerOptions);\n\n    this.log.debug(`Packager created: ${packagerId}`);\n\n    return packager;\n  }\n);\n"],"mappings":";;;;;;;;;;;;;;sBASiD;CAM3C,oBAAiG;EACrG,MAAM,IAAI,iBAAkC;GAC1C,MAAM,EAAE,QAAQ,MAAM,OAAO;AAE7B,UAAO,IAAI,IAAI,gBAAgB;;EAEjC,MAAM,OAAO;GACX,MAAM,EAAE,SAAS,MAAM,OAAO;AAE9B,UAAO,IAAI,MAAM;;EAEnB,MAAM,KAAK,iBAAiB;GAC1B,MAAM,EAAE,SAAS,MAAM,OAAO;AAE9B,UAAO,IAAI,KAAK,gBAAgB;;EAEnC;CASY,cAAc,aACxB,eAAe,YAChB,eAEE,YACA,iBACmB;AACnB,OAAK,IAAI,MAAM,8BAA8B,aAAa;AAE1D,MAAI,CAAC,aAAa,WAAW,CAG3B,OAAM,IAAI,KAAK,WAAW,QAAQ,MAAM,4BAA4B,WAAW,GAAG;EAGpF,MAAM,WAAW,MAAM,kBAAkB,YAAY,gBAAgB;AAErE,OAAK,IAAI,MAAM,qBAAqB,aAAa;AAEjD,SAAO;GAEV"}