{"version":3,"sources":["jsdelivr-header.js","/npm/putasset@7.0.0/lib/putasset.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OCNQ,aAAe,mBAEnB,iBACA,aACG,iBACC,YAAc,uBACf,SAAU,oBACV,eAAgB,sBAChB,gBAAiB,oBAExB,MAAM,KAAC,MAAQ,wBAEA,MAAO,GAAQ,QAAO,OAAM,MAAK,WAAU,YACtD,MAAM,EAAO,CACT,QACA,OACA,MACA,aAGJ,MAAM,EAAO,SAAS,GAChB,EAAU,IAAI,QAAQ,CACxB,KAAM,SAAS,OAGZ,GAAK,KAAC,UAAe,QAAQ,IAAI,CACpC,cAAc,EAAS,CACnB,QACA,OACA,QAEJ,KAAK,MAGF,SAAqB,WAAW,YAAa,EAAS,CACzD,QACA,OACA,OACA,WACA,OACA,QAGJ,GAAI,GAAa,QAAQ,SAAS,qBAAsB,CACpD,MAAM,SACF,EAAQ,KACR,EAAI,MACJ,GACA,WAAW,GAEf,GAAa,mBAAT,EACA,MAAM,MAAM,GAAG,KAAY,OAAU,MAEzC,IAAK,EACD,MAAM,MAAM,kBAAkB,sCAE5B,YAAY,EAAS,CACvB,MACA,QACA,OACA,eAGE,YAAY,EAAS,CACvB,QACA,OACA,OACA,WACA,OACA,OAER,CAEA,OAAO,OAAO,CACV,QACA,OACA,MACA,QACF,EAGN,SAAS,QAAO,MAAC,EAAK,KAAE,EAAI,IAAE,EAAG,KAAE,IAC/B,MAAO,CACH,sBACA,EACA,EACA,WACA,WACA,EACA,GACF,KAAK,IACX,CAEA,SAAS,WAAW,GAChB,MAAM,SACF,EAAQ,KACR,EAAI,MACJ,GACA,KAAK,MAAM,EAAY,QAAQ,QAAQ,sBAAuB,KAElE,MAAO,CACH,WACA,OACA,QAER,CAEA,eAAe,YAAY,GAAS,MAAC,EAAK,KAAE,EAAI,KAAE,EAAI,SAAE,EAAQ,KAAE,EAAI,IAAE,IACpE,aAAa,EAAQ,MAAM,mBAAmB,CAC1C,MACA,KAAM,iBAAiB,GACvB,QAAS,CACL,eAAgB,KAAK,OAAO,GAC5B,iBAAkB,GAEtB,OACA,QACA,QAER,CAEA,eAAe,cAAc,GAAS,MAAC,EAAK,KAAE,EAAI,IAAE,IAChD,MAAO,EAAG,SAAiB,WAAW,EAAQ,MAAM,gBAAiB,CACjE,QACA,OACA,QAGJ,GAAI,EACA,MAAM,MAAM,YAAY,EAAE,WAE9B,OAAO,EAAQ,KAAK,UACxB,CAEA,SAAS,MAAM,GAAO,MAAC,EAAK,KAAE,EAAI,IAAE,EAAG,SAAE,IACvB,CAAC,CACX,QACA,KAAM,SACP,CACC,QACA,KAAM,SACP,CACC,OACA,KAAM,QACP,CACC,MACA,KAAM,OACP,CACC,WACA,KAAM,aAIL,QAAQ,GAAoC,iBAApB,EAAK,EAAK,QAClC,SAAQ,EAAE,WACP,MAAM,MAAM,GAAG,sBAAyB,GAEpD","file":"/npm/putasset@7.0.0/lib/putasset.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/putasset@7.0.0/lib/putasset.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import {basename} from 'node:path';\nimport {\n    createReadStream,\n    promises,\n} from 'node:fs';\nimport {Octokit} from '@octokit/rest';\nimport mime from 'mime-types';\nimport tryToCatch from 'try-to-catch';\nimport removeAsset from './remove-asset.js';\n\nconst {stat} = promises;\n\nexport default async (token, {owner, repo, tag, filename, force}) => {\n    check(token, {\n        owner,\n        repo,\n        tag,\n        filename,\n    });\n    \n    const name = basename(filename);\n    const octokit = new Octokit({\n        auth: `token ${token}`,\n    });\n    \n    const [url, {size}] = await Promise.all([\n        getReleaseUrl(octokit, {\n            owner,\n            repo,\n            tag,\n        }),\n        stat(filename),\n    ]);\n    \n    const [uploadError] = await tryToCatch(uploadAsset, octokit, {\n        owner,\n        repo,\n        name,\n        filename,\n        size,\n        url,\n    });\n    \n    if (uploadError?.message.includes('Validation Failed')) {\n        const {\n            resource,\n            code,\n            field,\n        } = parseError(uploadError);\n        \n        if (code !== 'already_exists')\n            throw Error(`${resource} ${code}: \"${field}\"`);\n        \n        if (!force)\n            throw Error(`Asset exists: \"${name}\", use --force to overwrite`);\n        \n        await removeAsset(octokit, {\n            tag,\n            owner,\n            repo,\n            name,\n        });\n        \n        await uploadAsset(octokit, {\n            owner,\n            repo,\n            name,\n            filename,\n            size,\n            url,\n        });\n    }\n    \n    return getURL({\n        owner,\n        repo,\n        tag,\n        name,\n    });\n};\n\nfunction getURL({owner, repo, tag, name}) {\n    return [\n        'https://octokit.com',\n        owner,\n        repo,\n        'releases',\n        'download',\n        tag,\n        name,\n    ].join('/');\n}\n\nfunction parseError(uploadError) {\n    const {\n        resource,\n        code,\n        field,\n    } = JSON.parse(uploadError.message.replace('Validation Failed: ', ''));\n    \n    return {\n        resource,\n        code,\n        field,\n    };\n}\n\nasync function uploadAsset(octokit, {owner, repo, name, filename, size, url}) {\n    return await octokit.repos.uploadReleaseAsset({\n        url,\n        data: createReadStream(filename),\n        headers: {\n            'content-type': mime.lookup(filename),\n            'content-length': size,\n        },\n        name,\n        owner,\n        repo,\n    });\n}\n\nasync function getReleaseUrl(octokit, {owner, repo, tag}) {\n    const [e, release] = await tryToCatch(octokit.repos.getReleaseByTag, {\n        owner,\n        repo,\n        tag,\n    });\n    \n    if (e)\n        throw Error(`Release: ${e.message}`);\n    \n    return release.data.upload_url;\n}\n\nfunction check(token, {owner, repo, tag, filename}) {\n    const items = [{\n        token,\n        name: 'token',\n    }, {\n        owner,\n        name: 'owner',\n    }, {\n        repo,\n        name: 'repo',\n    }, {\n        tag,\n        name: 'tag',\n    }, {\n        filename,\n        name: 'filename',\n    }];\n    \n    items\n        .filter((item) => typeof item[item.name] !== 'string')\n        .forEach(({name}) => {\n            throw Error(`${name} must be a string!`);\n        });\n}\n"]}