{"version":3,"sources":["jsdelivr-header.js","/npm/@auto-it/twitter@11.3.6/dist/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aACA,OAAO,eAAe,QAAS,aAAc,CAAE,OAAO,IACtD,MAAM,QAAU,QAAQ,SAClB,OAAS,QAAQ,iBACjB,SAAW,QAAQ,gBAAgB,QAAQ,WAC3C,SAAW,QAAQ,UACnB,cAAgB,QAAQ,gBAAgB,QAAQ,gBAChD,eAAiB,QAAQ,gBAAgB,QAAQ,iBACjD,OAAS,QAAQ,QACjB,EAAI,QAAQ,aAAa,QAAQ,UACjC,cAAgB,EAAE,QAAQ,CAE5B,QAAS,EAAE,OAEX,UAAW,EAAE,MAAM,CACf,MAAO,KACP,MAAO,KACP,MAAO,SAGT,SAAW,CACb,UAAW,OAAO,OAAO,MACzB,QAAS,SAAS,OAAQ;;;;;;KAQxB,mBAAqB,CAAC,QAAS,QAAS,SAExC,cAAgB,CAAC,EAAG,IAAM,mBAAmB,QAAQ,GAAK,mBAAmB,QAAQ,GAErF,eAAkB,GAAS,EAAK,MAAM,MAAM,MAAM,GAAI,GAAG,KAAK,MAAM,OAEpE,UAAY,EAAG,eAAc,UAAS,cAAa,aAAY,OAAM,UAEvE,MAAM,EAAS,GAAU,EACpB,QAAQ,WAAY,GACpB,QAAQ,WAAY,GACpB,QAAQ,WAAY,GACpB,QAAQ,SAAU,GAClB,QAAQ,QAAS,GACtB,IAAI,EAAiB,EAChB,MAAM,gBAAgB,GACtB,QAAQ,UAAW,IACnB,QAAQ,sBAAuB,IAC/B,OACD,EAAQ,EAAM,GAClB,MAAQ,eAAe,QAAQ,WAAW,GAAO,OAC7C,EAAiB,eAAe,GAChC,EAAQ,EAAM,SAAS,OAAQ;QAC/B;;OAIJ,OAAO,CAAK,EAGhB,MAAM,cAEF,WAAA,CAAY,EAAU,CAAC,GAInB,GAFA,KAAK,KAAO,UACZ,KAAK,QAAU,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG,UAAW,KACrD,QAAQ,IAAI,sBACZ,QAAQ,IAAI,6BACZ,QAAQ,IAAI,sBACZ,QAAQ,IAAI,6BACb,MAAM,IAAI,MAAM,wKAEpB,KAAK,MAAQ,OAAO,UAAU,cAAc,QAAQ,CAChD,YAAa,QAAQ,IAAI,qBACzB,kBAAmB,QAAQ,IAAI,4BAC/B,YAAa,QAAQ,IAAI,qBACzB,eAAgB,QAAQ,IAAI,8BAEpC,CAEA,KAAA,CAAM,GACF,EAAK,MAAM,eAAe,WAAW,KAAK,MAAM,MAAO,EAAM,KACzD,GAAI,IAAS,KAAK,MAAQ,IAAS,YAAY,KAAK,OAChD,OAAO,OAAO,4BAA4B,KAAK,KAAM,cAAe,EACxE,IAEJ,EAAK,MAAM,aAAa,WAAW,KAAK,MAAM,OAAS,aAAY,cAAa,WAAU,mBACtF,IAAK,IAAe,IAAa,EAAK,IAClC,OAEJ,MAAM,EAAc,SAAS,KAAK,EAAY,IAAgB,QAC9D,GAAI,cAAc,KAAK,QAAQ,UAAW,GACtC,OAEJ,MAAM,EAAM,MAAM,QAAQ,GACpB,EAAS,KAAK,GAAM,KAAK,EAAE,KAAK,aAAY,KAAK,MACjD,EAAS,KAAK,eACd,KAAK,MAAM,UAAU,CACvB,eACA,QAAS,KAAK,QAAQ,QACtB,cACA,aACA,KAAM,EAAK,IAAI,QAAQ,KACvB,QACD,GAEX,EAEJ,QAAQ,QAAU","file":"/npm/@auto-it/twitter@11.3.6/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@auto-it/twitter@11.3.6/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\nconst core_1 = require(\"@auto-it/core\");\nconst endent_1 = tslib_1.__importDefault(require(\"endent\"));\nconst semver_1 = require(\"semver\");\nconst tweet_tweet_1 = tslib_1.__importDefault(require(\"tweet-tweet\"));\nconst twitter_text_1 = tslib_1.__importDefault(require(\"twitter-text\"));\nconst util_1 = require(\"util\");\nconst t = tslib_1.__importStar(require(\"io-ts\"));\nconst pluginOptions = t.partial({\n    /** The message template to use to post to Twitter */\n    message: t.string,\n    /** A threshold the semver has to pass to be posted to Twitter */\n    threshold: t.keyof({\n        patch: null,\n        minor: null,\n        major: null,\n    }),\n});\nconst defaults = {\n    threshold: core_1.SEMVER.minor,\n    message: endent_1.default `\n    A new %release version of %package was released!\n\n    %notes\n\n    %link\n  `,\n};\nconst RELEASE_PRECEDENCE = [\"patch\", \"minor\", \"major\"];\n/** Determine the release with the biggest semver change */\nconst isGreaterThan = (a, b) => RELEASE_PRECEDENCE.indexOf(a) > RELEASE_PRECEDENCE.indexOf(b);\n/** Remove the last line of text from a multiline string */\nconst removeLastLine = (text) => text.split(\"\\n\").slice(0, -1).join(\"\\n\").trim();\n/** Construct a tweet that contains the release notes across multiple tweets */\nconst makeTweet = ({ releaseNotes, message, versionBump, newVersion, repo, url, }) => {\n    /** Replace all the variables in the message */\n    const build = (notes) => message\n        .replace(\"%release\", versionBump)\n        .replace(\"%package\", repo)\n        .replace(\"%version\", newVersion)\n        .replace(\"%notes\", notes)\n        .replace(\"%link\", url);\n    let truncatedNotes = releaseNotes\n        .split(\"#### Authors\")[0]\n        .replace(/#### /gm, \"\")\n        .replace(/\\(?\\[\\S+\\]\\(\\S+\\)/gm, \"\")\n        .trim();\n    let tweet = build(truncatedNotes);\n    while (!twitter_text_1.default.parseTweet(tweet).valid) {\n        truncatedNotes = removeLastLine(truncatedNotes);\n        tweet = build(endent_1.default `\n      ${truncatedNotes}\n      …\n    `);\n    }\n    return tweet;\n};\n/** Post your release notes to twitter during `auto release` */\nclass TwitterPlugin {\n    /** Initialize the plugin with it's options */\n    constructor(options = {}) {\n        /** The name of the plugin */\n        this.name = \"twitter\";\n        this.options = Object.assign(Object.assign({}, defaults), options);\n        if (!process.env.TWITTER_ACCESS_TOKEN ||\n            !process.env.TWITTER_ACCESS_TOKEN_SECRET ||\n            !process.env.TWITTER_CONSUMER_KEY ||\n            !process.env.TWITTER_CONSUMER_KEY_SECRET) {\n            throw new Error(\"Need all of the following secrets available on the environment: TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_SECRET, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_KEY_SECRET\");\n        }\n        this.tweet = util_1.promisify(tweet_tweet_1.default({\n            accessToken: process.env.TWITTER_ACCESS_TOKEN,\n            accessTokenSecret: process.env.TWITTER_ACCESS_TOKEN_SECRET,\n            consumerKey: process.env.TWITTER_CONSUMER_KEY,\n            consumerSecret: process.env.TWITTER_CONSUMER_KEY_SECRET,\n        }));\n    }\n    /** Tap into auto plugin points. */\n    apply(auto) {\n        auto.hooks.validateConfig.tapPromise(this.name, async (name, options) => {\n            if (name === this.name || name === `@auto-it/${this.name}`) {\n                return core_1.validatePluginConfiguration(this.name, pluginOptions, options);\n            }\n        });\n        auto.hooks.afterRelease.tapPromise(this.name, async ({ newVersion, lastRelease, response, releaseNotes }) => {\n            if (!newVersion || !response || !auto.git) {\n                return;\n            }\n            const versionBump = semver_1.diff(newVersion, lastRelease) || \"patch\";\n            if (isGreaterThan(this.options.threshold, versionBump)) {\n                return;\n            }\n            const url = Array.isArray(response)\n                ? response.map((r) => `- ${r.data.html_url}`).join(\"\\n\")\n                : response.data.html_url;\n            await this.tweet(makeTweet({\n                releaseNotes,\n                message: this.options.message,\n                versionBump,\n                newVersion,\n                repo: auto.git.options.repo,\n                url,\n            }));\n        });\n    }\n}\nexports.default = TwitterPlugin;\n"]}