wrapper-validation-action/dist/index.js
2020-01-13 13:00:16 -05:00

4429 lines
No EOL
120 KiB
JavaScript

module.exports =
/******/ (function(modules, runtime) { // webpackBootstrap
/******/ "use strict";
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ __webpack_require__.ab = __dirname + "/";
/******/
/******/ // the startup function
/******/ function startup() {
/******/ // Load entry module and return exports
/******/ return __webpack_require__(198);
/******/ };
/******/
/******/ // run startup
/******/ return startup();
/******/ })
/************************************************************************/
/******/ ({
/***/ 16:
/***/ (function(module) {
module.exports = require("tls");
/***/ }),
/***/ 87:
/***/ (function(module) {
module.exports = require("os");
/***/ }),
/***/ 141:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var net = __webpack_require__(631);
var tls = __webpack_require__(16);
var http = __webpack_require__(605);
var https = __webpack_require__(211);
var events = __webpack_require__(614);
var assert = __webpack_require__(357);
var util = __webpack_require__(669);
exports.httpOverHttp = httpOverHttp;
exports.httpsOverHttp = httpsOverHttp;
exports.httpOverHttps = httpOverHttps;
exports.httpsOverHttps = httpsOverHttps;
function httpOverHttp(options) {
var agent = new TunnelingAgent(options);
agent.request = http.request;
return agent;
}
function httpsOverHttp(options) {
var agent = new TunnelingAgent(options);
agent.request = http.request;
agent.createSocket = createSecureSocket;
return agent;
}
function httpOverHttps(options) {
var agent = new TunnelingAgent(options);
agent.request = https.request;
return agent;
}
function httpsOverHttps(options) {
var agent = new TunnelingAgent(options);
agent.request = https.request;
agent.createSocket = createSecureSocket;
return agent;
}
function TunnelingAgent(options) {
var self = this;
self.options = options || {};
self.proxyOptions = self.options.proxy || {};
self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
self.requests = [];
self.sockets = [];
self.on('free', function onFree(socket, host, port, localAddress) {
var options = toOptions(host, port, localAddress);
for (var i = 0, len = self.requests.length; i < len; ++i) {
var pending = self.requests[i];
if (pending.host === options.host && pending.port === options.port) {
// Detect the request to connect same origin server,
// reuse the connection.
self.requests.splice(i, 1);
pending.request.onSocket(socket);
return;
}
}
socket.destroy();
self.removeSocket(socket);
});
}
util.inherits(TunnelingAgent, events.EventEmitter);
TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {
var self = this;
var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));
if (self.sockets.length >= this.maxSockets) {
// We are over limit so we'll add it to the queue.
self.requests.push(options);
return;
}
// If we are under maxSockets create a new one.
self.createSocket(options, function(socket) {
socket.on('free', onFree);
socket.on('close', onCloseOrRemove);
socket.on('agentRemove', onCloseOrRemove);
req.onSocket(socket);
function onFree() {
self.emit('free', socket, options);
}
function onCloseOrRemove(err) {
self.removeSocket(socket);
socket.removeListener('free', onFree);
socket.removeListener('close', onCloseOrRemove);
socket.removeListener('agentRemove', onCloseOrRemove);
}
});
};
TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
var self = this;
var placeholder = {};
self.sockets.push(placeholder);
var connectOptions = mergeOptions({}, self.proxyOptions, {
method: 'CONNECT',
path: options.host + ':' + options.port,
agent: false
});
if (connectOptions.proxyAuth) {
connectOptions.headers = connectOptions.headers || {};
connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
new Buffer(connectOptions.proxyAuth).toString('base64');
}
debug('making CONNECT request');
var connectReq = self.request(connectOptions);
connectReq.useChunkedEncodingByDefault = false; // for v0.6
connectReq.once('response', onResponse); // for v0.6
connectReq.once('upgrade', onUpgrade); // for v0.6
connectReq.once('connect', onConnect); // for v0.7 or later
connectReq.once('error', onError);
connectReq.end();
function onResponse(res) {
// Very hacky. This is necessary to avoid http-parser leaks.
res.upgrade = true;
}
function onUpgrade(res, socket, head) {
// Hacky.
process.nextTick(function() {
onConnect(res, socket, head);
});
}
function onConnect(res, socket, head) {
connectReq.removeAllListeners();
socket.removeAllListeners();
if (res.statusCode === 200) {
assert.equal(head.length, 0);
debug('tunneling connection has established');
self.sockets[self.sockets.indexOf(placeholder)] = socket;
cb(socket);
} else {
debug('tunneling socket could not be established, statusCode=%d',
res.statusCode);
var error = new Error('tunneling socket could not be established, ' +
'statusCode=' + res.statusCode);
error.code = 'ECONNRESET';
options.request.emit('error', error);
self.removeSocket(placeholder);
}
}
function onError(cause) {
connectReq.removeAllListeners();
debug('tunneling socket could not be established, cause=%s\n',
cause.message, cause.stack);
var error = new Error('tunneling socket could not be established, ' +
'cause=' + cause.message);
error.code = 'ECONNRESET';
options.request.emit('error', error);
self.removeSocket(placeholder);
}
};
TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
var pos = this.sockets.indexOf(socket)
if (pos === -1) {
return;
}
this.sockets.splice(pos, 1);
var pending = this.requests.shift();
if (pending) {
// If we have pending requests and a socket gets closed a new one
// needs to be created to take over in the pool for the one that closed.
this.createSocket(pending, function(socket) {
pending.request.onSocket(socket);
});
}
};
function createSecureSocket(options, cb) {
var self = this;
TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
var hostHeader = options.request.getHeader('host');
var tlsOptions = mergeOptions({}, self.options, {
socket: socket,
servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host
});
// 0 is dummy port for v0.6
var secureSocket = tls.connect(0, tlsOptions);
self.sockets[self.sockets.indexOf(socket)] = secureSocket;
cb(secureSocket);
});
}
function toOptions(host, port, localAddress) {
if (typeof host === 'string') { // since v0.10
return {
host: host,
port: port,
localAddress: localAddress
};
}
return host; // for v0.11 or later
}
function mergeOptions(target) {
for (var i = 1, len = arguments.length; i < len; ++i) {
var overrides = arguments[i];
if (typeof overrides === 'object') {
var keys = Object.keys(overrides);
for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
var k = keys[j];
if (overrides[k] !== undefined) {
target[k] = overrides[k];
}
}
}
}
return target;
}
var debug;
if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
debug = function() {
var args = Array.prototype.slice.call(arguments);
if (typeof args[0] === 'string') {
args[0] = 'TUNNEL: ' + args[0];
} else {
args.unshift('TUNNEL:');
}
console.error.apply(console, args);
}
} else {
debug = function() {};
}
exports.debug = debug; // for test
/***/ }),
/***/ 198:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const path = __importStar(__webpack_require__(622));
const core = __importStar(__webpack_require__(470));
const validate = __importStar(__webpack_require__(474));
function run() {
return __awaiter(this, void 0, void 0, function* () {
try {
const minWrapperCount = +core.getInput('min-wrapper-count');
const allowSnapshots = core.getInput('allow-snapshots') === 'true';
const allowChecksums = core.getInput('allow-checksums').split(',');
const invalidWrapperJars = yield validate.findInvalidWrapperJars(path.resolve('.'), minWrapperCount, allowSnapshots, allowChecksums);
if (invalidWrapperJars.length > 0) {
const list = invalidWrapperJars.map(invalid => `${invalid.checksum} ${invalid.path}`);
core.setFailed(`Found unknown Gradle Wrapper JAR files\n${list.join('\n- ')}`);
}
}
catch (error) {
core.setFailed(error.message);
}
});
}
exports.run = run;
run();
/***/ }),
/***/ 211:
/***/ (function(module) {
module.exports = require("https");
/***/ }),
/***/ 339:
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var utils = __webpack_require__(640);
var has = Object.prototype.hasOwnProperty;
var isArray = Array.isArray;
var defaults = {
allowDots: false,
allowPrototypes: false,
arrayLimit: 20,
charset: 'utf-8',
charsetSentinel: false,
comma: false,
decoder: utils.decode,
delimiter: '&',
depth: 5,
ignoreQueryPrefix: false,
interpretNumericEntities: false,
parameterLimit: 1000,
parseArrays: true,
plainObjects: false,
strictNullHandling: false
};
var interpretNumericEntities = function (str) {
return str.replace(/&#(\d+);/g, function ($0, numberStr) {
return String.fromCharCode(parseInt(numberStr, 10));
});
};
// This is what browsers will submit when the ✓ character occurs in an
// application/x-www-form-urlencoded body and the encoding of the page containing
// the form is iso-8859-1, or when the submitted form has an accept-charset
// attribute of iso-8859-1. Presumably also with other charsets that do not contain
// the ✓ character, such as us-ascii.
var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')
// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.
var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')
var parseValues = function parseQueryStringValues(str, options) {
var obj = {};
var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
var parts = cleanStr.split(options.delimiter, limit);
var skipIndex = -1; // Keep track of where the utf8 sentinel was found
var i;
var charset = options.charset;
if (options.charsetSentinel) {
for (i = 0; i < parts.length; ++i) {
if (parts[i].indexOf('utf8=') === 0) {
if (parts[i] === charsetSentinel) {
charset = 'utf-8';
} else if (parts[i] === isoSentinel) {
charset = 'iso-8859-1';
}
skipIndex = i;
i = parts.length; // The eslint settings do not allow break;
}
}
}
for (i = 0; i < parts.length; ++i) {
if (i === skipIndex) {
continue;
}
var part = parts[i];
var bracketEqualsPos = part.indexOf(']=');
var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;
var key, val;
if (pos === -1) {
key = options.decoder(part, defaults.decoder, charset, 'key');
val = options.strictNullHandling ? null : '';
} else {
key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');
val = options.decoder(part.slice(pos + 1), defaults.decoder, charset, 'value');
}
if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {
val = interpretNumericEntities(val);
}
if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {
val = val.split(',');
}
if (part.indexOf('[]=') > -1) {
val = isArray(val) ? [val] : val;
}
if (has.call(obj, key)) {
obj[key] = utils.combine(obj[key], val);
} else {
obj[key] = val;
}
}
return obj;
};
var parseObject = function (chain, val, options) {
var leaf = val;
for (var i = chain.length - 1; i >= 0; --i) {
var obj;
var root = chain[i];
if (root === '[]' && options.parseArrays) {
obj = [].concat(leaf);
} else {
obj = options.plainObjects ? Object.create(null) : {};
var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
var index = parseInt(cleanRoot, 10);
if (!options.parseArrays && cleanRoot === '') {
obj = { 0: leaf };
} else if (
!isNaN(index)
&& root !== cleanRoot
&& String(index) === cleanRoot
&& index >= 0
&& (options.parseArrays && index <= options.arrayLimit)
) {
obj = [];
obj[index] = leaf;
} else {
obj[cleanRoot] = leaf;
}
}
leaf = obj;
}
return leaf;
};
var parseKeys = function parseQueryStringKeys(givenKey, val, options) {
if (!givenKey) {
return;
}
// Transform dot notation to bracket notation
var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey;
// The regex chunks
var brackets = /(\[[^[\]]*])/;
var child = /(\[[^[\]]*])/g;
// Get the parent
var segment = options.depth > 0 && brackets.exec(key);
var parent = segment ? key.slice(0, segment.index) : key;
// Stash the parent if it exists
var keys = [];
if (parent) {
// If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties
if (!options.plainObjects && has.call(Object.prototype, parent)) {
if (!options.allowPrototypes) {
return;
}
}
keys.push(parent);
}
// Loop through children appending to the array until we hit depth
var i = 0;
while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {
i += 1;
if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {
if (!options.allowPrototypes) {
return;
}
}
keys.push(segment[1]);
}
// If there's a remainder, just add whatever is left
if (segment) {
keys.push('[' + key.slice(segment.index) + ']');
}
return parseObject(keys, val, options);
};
var normalizeParseOptions = function normalizeParseOptions(opts) {
if (!opts) {
return defaults;
}
if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {
throw new TypeError('Decoder has to be a function.');
}
if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined');
}
var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;
return {
allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,
arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,
charset: charset,
charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,
decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,
delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,
// eslint-disable-next-line no-implicit-coercion, no-extra-parens
depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,
ignoreQueryPrefix: opts.ignoreQueryPrefix === true,
interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,
parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,
parseArrays: opts.parseArrays !== false,
plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,
strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
};
};
module.exports = function (str, opts) {
var options = normalizeParseOptions(opts);
if (str === '' || str === null || typeof str === 'undefined') {
return options.plainObjects ? Object.create(null) : {};
}
var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
var obj = options.plainObjects ? Object.create(null) : {};
// Iterate over the keys and setup the new object
var keys = Object.keys(tempObj);
for (var i = 0; i < keys.length; ++i) {
var key = keys[i];
var newObj = parseKeys(key, tempObj[key], options);
obj = utils.merge(obj, newObj, options);
}
return utils.compact(obj);
};
/***/ }),
/***/ 357:
/***/ (function(module) {
module.exports = require("assert");
/***/ }),
/***/ 413:
/***/ (function(module, __unusedexports, __webpack_require__) {
module.exports = __webpack_require__(141);
/***/ }),
/***/ 417:
/***/ (function(module) {
module.exports = require("crypto");
/***/ }),
/***/ 431:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const os = __webpack_require__(87);
/**
* Commands
*
* Command Format:
* ##[name key=value;key=value]message
*
* Examples:
* ##[warning]This is the user warning message
* ##[set-secret name=mypassword]definitelyNotAPassword!
*/
function issueCommand(command, properties, message) {
const cmd = new Command(command, properties, message);
process.stdout.write(cmd.toString() + os.EOL);
}
exports.issueCommand = issueCommand;
function issue(name, message = '') {
issueCommand(name, {}, message);
}
exports.issue = issue;
const CMD_STRING = '::';
class Command {
constructor(command, properties, message) {
if (!command) {
command = 'missing.command';
}
this.command = command;
this.properties = properties;
this.message = message;
}
toString() {
let cmdStr = CMD_STRING + this.command;
if (this.properties && Object.keys(this.properties).length > 0) {
cmdStr += ' ';
for (const key in this.properties) {
if (this.properties.hasOwnProperty(key)) {
const val = this.properties[key];
if (val) {
// safely append the val - avoid blowing up when attempting to
// call .replace() if message is not a string for some reason
cmdStr += `${key}=${escape(`${val || ''}`)},`;
}
}
}
}
cmdStr += CMD_STRING;
// safely append the message - avoid blowing up when attempting to
// call .replace() if message is not a string for some reason
const message = `${this.message || ''}`;
cmdStr += escapeData(message);
return cmdStr;
}
}
function escapeData(s) {
return s.replace(/\r/g, '%0D').replace(/\n/g, '%0A');
}
function escape(s) {
return s
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A')
.replace(/]/g, '%5D')
.replace(/;/g, '%3B');
}
//# sourceMappingURL=command.js.map
/***/ }),
/***/ 470:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = __webpack_require__(431);
const os = __webpack_require__(87);
const path = __webpack_require__(622);
/**
* The code to exit an action
*/
var ExitCode;
(function (ExitCode) {
/**
* A code indicating that the action was successful
*/
ExitCode[ExitCode["Success"] = 0] = "Success";
/**
* A code indicating that the action was a failure
*/
ExitCode[ExitCode["Failure"] = 1] = "Failure";
})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));
//-----------------------------------------------------------------------
// Variables
//-----------------------------------------------------------------------
/**
* Sets env variable for this action and future actions in the job
* @param name the name of the variable to set
* @param val the value of the variable
*/
function exportVariable(name, val) {
process.env[name] = val;
command_1.issueCommand('set-env', { name }, val);
}
exports.exportVariable = exportVariable;
/**
* Registers a secret which will get masked from logs
* @param secret value of the secret
*/
function setSecret(secret) {
command_1.issueCommand('add-mask', {}, secret);
}
exports.setSecret = setSecret;
/**
* Prepends inputPath to the PATH (for this action and future actions)
* @param inputPath
*/
function addPath(inputPath) {
command_1.issueCommand('add-path', {}, inputPath);
process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
}
exports.addPath = addPath;
/**
* Gets the value of an input. The value is also trimmed.
*
* @param name name of the input to get
* @param options optional. See InputOptions.
* @returns string
*/
function getInput(name, options) {
const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';
if (options && options.required && !val) {
throw new Error(`Input required and not supplied: ${name}`);
}
return val.trim();
}
exports.getInput = getInput;
/**
* Sets the value of an output.
*
* @param name name of the output to set
* @param value value to store
*/
function setOutput(name, value) {
command_1.issueCommand('set-output', { name }, value);
}
exports.setOutput = setOutput;
//-----------------------------------------------------------------------
// Results
//-----------------------------------------------------------------------
/**
* Sets the action status to failed.
* When the action exits it will be with an exit code of 1
* @param message add error issue message
*/
function setFailed(message) {
process.exitCode = ExitCode.Failure;
error(message);
}
exports.setFailed = setFailed;
//-----------------------------------------------------------------------
// Logging Commands
//-----------------------------------------------------------------------
/**
* Writes debug message to user log
* @param message debug message
*/
function debug(message) {
command_1.issueCommand('debug', {}, message);
}
exports.debug = debug;
/**
* Adds an error issue
* @param message error issue message
*/
function error(message) {
command_1.issue('error', message);
}
exports.error = error;
/**
* Adds an warning issue
* @param message warning issue message
*/
function warning(message) {
command_1.issue('warning', message);
}
exports.warning = warning;
/**
* Writes info to log with console.log.
* @param message info message
*/
function info(message) {
process.stdout.write(message + os.EOL);
}
exports.info = info;
/**
* Begin an output group.
*
* Output until the next `groupEnd` will be foldable in this group
*
* @param name The name of the output group
*/
function startGroup(name) {
command_1.issue('group', name);
}
exports.startGroup = startGroup;
/**
* End an output group.
*/
function endGroup() {
command_1.issue('endgroup');
}
exports.endGroup = endGroup;
/**
* Wrap an asynchronous function call in a group.
*
* Returns the same type as the function itself.
*
* @param name The name of the group
* @param fn The function to wrap in the group
*/
function group(name, fn) {
return __awaiter(this, void 0, void 0, function* () {
startGroup(name);
let result;
try {
result = yield fn();
}
finally {
endGroup();
}
return result;
});
}
exports.group = group;
//-----------------------------------------------------------------------
// Wrapper action state
//-----------------------------------------------------------------------
/**
* Saves state for current action, the state can only be retrieved by this action's post job execution.
*
* @param name name of the state to store
* @param value value to store
*/
function saveState(name, value) {
command_1.issueCommand('save-state', { name }, value);
}
exports.saveState = saveState;
/**
* Gets the value of an state set by this action's main execution.
*
* @param name name of the state to get
* @returns string
*/
function getState(name) {
return process.env[`STATE_${name}`] || '';
}
exports.getState = getState;
//# sourceMappingURL=core.js.map
/***/ }),
/***/ 474:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const find = __importStar(__webpack_require__(625));
const checksums = __importStar(__webpack_require__(762));
const hash = __importStar(__webpack_require__(652));
function findInvalidWrapperJars(gitRepoRoot, minWrapperCount, allowSnapshots, allowChecksums) {
return __awaiter(this, void 0, void 0, function* () {
const wrapperJars = yield find.findWrapperJars(gitRepoRoot);
if (wrapperJars.length < minWrapperCount) {
throw new Error(`Expected to find at least ${minWrapperCount} Gradle Wrapper JARs but got only ${wrapperJars.length}`);
}
if (wrapperJars.length > 0) {
const validChecksums = yield checksums.fetchValidChecksums(allowSnapshots);
validChecksums.push(...allowChecksums);
const invalidWrapperJars = [];
for (const wrapperJar of wrapperJars) {
const sha = yield hash.sha256File(wrapperJar);
if (!validChecksums.includes(sha)) {
invalidWrapperJars.push(new InvalidWrapperJar(wrapperJar, sha));
}
}
return invalidWrapperJars;
}
return [];
});
}
exports.findInvalidWrapperJars = findInvalidWrapperJars;
class InvalidWrapperJar {
constructor(path, checksum) {
this.path = path;
this.checksum = checksum;
}
}
exports.InvalidWrapperJar = InvalidWrapperJar;
/***/ }),
/***/ 528:
/***/ (function(__unusedmodule, exports) {
"use strict";
/**
* File originally from this repository but converted to typescript.
* https://github.com/codebox/homoglyph
*/
Object.defineProperty(exports, "__esModule", { value: true });
const CHAR_MAP = {
'-': [
'\u{2cba}',
'\u{fe58}',
'\u{2043}',
'\u{2212}',
'\u{2011}',
'\u{2012}',
'\u{2796}',
'\u{2013}',
'\u{02d7}',
'\u{06d4}',
'\u{2010}'
],
'.': [
'\u{a4f8}',
'\u{06f0}',
'\u{2024}',
'\u{ff0e}',
'\u{0702}',
'\u{1d16d}',
'\u{10a50}',
'\u{0701}',
'\u{a60e}',
'\u{0660}'
],
'0': [
'\u{feeb}',
'\u{1d6b6}',
'\u{2c9f}',
'\u{0c82}',
'\u{118d7}',
'\u{1d490}',
'\u{1d7f6}',
'\u{fba6}',
'\u{10404}',
'\u{1d7d8}',
'\u{a4f3}',
'\u{0555}',
'\u{1d6d0}',
'\u{1d77e}',
'\u{fbab}',
'\u{10ff}',
'\u{1d560}',
'\u{1d698}',
'\u{1d4de}',
'\u{0665}',
'\u{1d52c}',
'\u{0966}',
'\u{041e}',
'\u{1d40e}',
'\u{104c2}',
'\u{ff2f}',
'\u{1d7bc}',
'\u{1d748}',
'\u{1d7ce}',
'\u{1d4f8}',
'\u{1d764}',
'\u{0b66}',
'\u{1d442}',
'\u{1d630}',
'\u{0585}',
'\u{1d5ae}',
'\u{1042c}',
'\u{0647}',
'\u{1d594}',
'\u{0d20}',
'\u{118b5}',
'\u{1d782}',
'\u{104ea}',
'\u{0ed0}',
'\u{0c66}',
'\u{1d6f0}',
'\u{3007}',
'\u{09e6}',
'\u{1d70a}',
'\u{1d11}',
'\u{1d428}',
'\u{0d82}',
'\u{1d476}',
'\u{1d7b8}',
'\u{114d0}',
'\u{0d02}',
'\u{1d5fc}',
'\u{fba7}',
'\u{0b20}',
'\u{06d5}',
'\u{1d45c}',
'\u{fbaa}',
'\u{10292}',
'\u{1d546}',
'\u{1d5e2}',
'\u{1d67e}',
'\u{1d72a}',
'\u{ab3d}',
'\u{1ee24}',
'\u{06be}',
'\u{03bf}',
'\u{0d66}',
'\u{feea}',
'\u{10516}',
'\u{118c8}',
'\u{2134}',
'\u{1ee64}',
'\u{1d70e}',
'\u{ff4f}',
'\u{06f5}',
'\u{1d616}',
'\u{1d0f}',
'\u{043e}',
'\u{1d57a}',
'\u{ff10}',
'\u{1d7e2}',
'\u{06c1}',
'\u{1d4aa}',
'\u{0ce6}',
'\u{2c9e}',
'\u{118e0}',
'\u{2d54}',
'\u{1040}',
'\u{1d512}',
'\u{fbac}',
'\u{0be6}',
'\u{0c02}',
'\u{1d744}',
'\u{101d}',
'\u{1d664}',
'\u{0ae6}',
'\u{006f}',
'\u{039f}',
'\u{fbad}',
'\u{fba9}',
'\u{0a66}',
'\u{03c3}',
'\u{12d0}',
'\u{1d5c8}',
'\u{05e1}',
'\u{fba8}',
'\u{fee9}',
'\u{1d79e}',
'\u{feec}',
'\u{1d7ec}',
'\u{07c0}',
'\u{1d6d4}',
'\u{1d64a}',
'\u{0e50}',
'\u{1ee84}',
'\u{1fbf0}',
'\u{102ab}',
'\u{004f}'
],
'1': [
'\u{0406}',
'\u{ff4c}',
'\u{23fd}',
'\u{05c0}',
'\u{217c}',
'\u{1d6b0}',
'\u{05df}',
'\u{1d7f7}',
'\u{1d43c}',
'\u{1d4d8}',
'\u{1d591}',
'\u{1d661}',
'\u{01c0}',
'\u{fe8d}',
'\u{1d5a8}',
'\u{2110}',
'\u{1d529}',
'\u{10320}',
'\u{1d7ed}',
'\u{a4f2}',
'\u{1d425}',
'\u{1d6ea}',
'\u{1d610}',
'\u{07ca}',
'\u{1d724}',
'\u{1d4c1}',
'\u{1d798}',
'\u{0627}',
'\u{2d4f}',
'\u{2160}',
'\u{1d7cf}',
'\u{1d62d}',
'\u{1d5f9}',
'\u{ffe8}',
'\u{1d4f5}',
'\u{16f28}',
'\u{1d459}',
'\u{2111}',
'\u{1d48d}',
'\u{2223}',
'\u{10309}',
'\u{04c0}',
'\u{0049}',
'\u{1ee00}',
'\u{0196}',
'\u{16c1}',
'\u{1d540}',
'\u{1d5dc}',
'\u{1d55d}',
'\u{1ee80}',
'\u{ff29}',
'\u{2113}',
'\u{2c92}',
'\u{1d7e3}',
'\u{1d678}',
'\u{1d574}',
'\u{1d695}',
'\u{0399}',
'\u{1d644}',
'\u{1028a}',
'\u{1d7d9}',
'\u{fe8e}',
'\u{ff11}',
'\u{1d75e}',
'\u{06f1}',
'\u{007c}',
'\u{1e8c7}',
'\u{05d5}',
'\u{006c}',
'\u{1d470}',
'\u{1fbf1}',
'\u{0661}',
'\u{1d408}',
'\u{1d5c5}'
],
'2': [
'\u{a644}',
'\u{14bf}',
'\u{1d7f8}',
'\u{ff12}',
'\u{03e8}',
'\u{a6ef}',
'\u{1fbf2}',
'\u{01a7}',
'\u{1d7ee}',
'\u{1d7d0}',
'\u{1d7e4}',
'\u{1d7da}',
'\u{a75a}'
],
'3': [
'\u{1d7f9}',
'\u{04e0}',
'\u{1fbf3}',
'\u{1d206}',
'\u{021c}',
'\u{1d7e5}',
'\u{0417}',
'\u{118ca}',
'\u{01b7}',
'\u{1d7ef}',
'\u{1d7d1}',
'\u{ff13}',
'\u{a76a}',
'\u{a7ab}',
'\u{2ccc}',
'\u{16f3b}',
'\u{1d7db}'
],
'4': [
'\u{1d7f0}',
'\u{1d7fa}',
'\u{ff14}',
'\u{1d7d2}',
'\u{1d7e6}',
'\u{118af}',
'\u{1fbf4}',
'\u{1d7dc}',
'\u{13ce}'
],
'5': [
'\u{1fbf5}',
'\u{1d7e7}',
'\u{1d7d3}',
'\u{118bb}',
'\u{1d7fb}',
'\u{ff15}',
'\u{01bc}',
'\u{1d7dd}',
'\u{1d7f1}'
],
'6': [
'\u{2cd2}',
'\u{0431}',
'\u{1d7e8}',
'\u{1fbf6}',
'\u{1d7de}',
'\u{13ee}',
'\u{118d5}',
'\u{1d7fc}',
'\u{ff16}',
'\u{1d7f2}',
'\u{1d7d4}'
],
'7': [
'\u{118c6}',
'\u{1d7fd}',
'\u{1d7f3}',
'\u{1d7df}',
'\u{104d2}',
'\u{1d212}',
'\u{1d7d5}',
'\u{1fbf7}',
'\u{ff17}',
'\u{1d7e9}'
],
'8': [
'\u{0223}',
'\u{1fbf8}',
'\u{0a6a}',
'\u{1031a}',
'\u{0222}',
'\u{1d7fe}',
'\u{1d7d6}',
'\u{1d7e0}',
'\u{ff18}',
'\u{1d7ea}',
'\u{1d7f4}',
'\u{0b03}',
'\u{09ea}',
'\u{1e8cb}'
],
'9': [
'\u{1d7f5}',
'\u{a76e}',
'\u{09ed}',
'\u{1d7e1}',
'\u{0b68}',
'\u{ff19}',
'\u{1d7ff}',
'\u{118d6}',
'\u{1fbf9}',
'\u{2cca}',
'\u{0a67}',
'\u{1d7d7}',
'\u{118cc}',
'\u{0d6d}',
'\u{118ac}',
'\u{1d7eb}'
],
A: [
'\u{16f40}',
'\u{1d71c}',
'\u{1d6a8}',
'\u{1d504}',
'\u{1d756}',
'\u{0410}',
'\u{1d6e2}',
'\u{1d49c}',
'\u{a4ee}',
'\u{1d790}',
'\u{15c5}',
'\u{ff21}',
'\u{1d00}',
'\u{0391}',
'\u{1d468}',
'\u{1d538}',
'\u{1d5d4}',
'\u{1d63c}',
'\u{102a0}',
'\u{1d56c}',
'\u{1d5a0}',
'\u{1d434}',
'\u{1d670}',
'\u{13aa}',
'\u{1d400}',
'\u{1d608}',
'\u{1d4d0}',
'\u{ab7a}'
],
B: [
'\u{1d505}',
'\u{0412}',
'\u{13fc}',
'\u{102a1}',
'\u{1d63d}',
'\u{1d5d5}',
'\u{212c}',
'\u{1d5a1}',
'\u{1d469}',
'\u{16d2}',
'\u{1d6e3}',
'\u{a4d0}',
'\u{a7b4}',
'\u{1d6a9}',
'\u{15f7}',
'\u{1d4d1}',
'\u{1d791}',
'\u{10282}',
'\u{1d757}',
'\u{13f4}',
'\u{10301}',
'\u{1d71d}',
'\u{1d401}',
'\u{0392}',
'\u{1d609}',
'\u{0299}',
'\u{0432}',
'\u{1d435}',
'\u{1d56d}',
'\u{ff22}',
'\u{1d671}',
'\u{1d539}'
],
C: [
'\u{0421}',
'\u{118f2}',
'\u{1d402}',
'\u{03f9}',
'\u{a4da}',
'\u{10415}',
'\u{ff23}',
'\u{1d4d2}',
'\u{1d436}',
'\u{1d56e}',
'\u{1d60a}',
'\u{10302}',
'\u{2ca4}',
'\u{216d}',
'\u{1d672}',
'\u{1d5d6}',
'\u{1051c}',
'\u{102a2}',
'\u{1d46a}',
'\u{1d5a2}',
'\u{13df}',
'\u{118e9}',
'\u{1f74c}',
'\u{1d63e}',
'\u{1d49e}',
'\u{2102}',
'\u{212d}'
],
D: [
'\u{1d673}',
'\u{13a0}',
'\u{1d403}',
'\u{1d437}',
'\u{ab70}',
'\u{216e}',
'\u{1d49f}',
'\u{1d507}',
'\u{1d56f}',
'\u{2145}',
'\u{15ea}',
'\u{1d5a3}',
'\u{1d63f}',
'\u{1d4d3}',
'\u{15de}',
'\u{1d5d7}',
'\u{1d46b}',
'\u{a4d3}',
'\u{1d05}',
'\u{ff24}',
'\u{1d53b}',
'\u{1d60b}'
],
E: [
'\u{1d60c}',
'\u{1d404}',
'\u{1d6ac}',
'\u{1d4d4}',
'\u{1d438}',
'\u{10286}',
'\u{1d6e6}',
'\u{1d508}',
'\u{22ff}',
'\u{118ae}',
'\u{1d5a4}',
'\u{0415}',
'\u{1d46c}',
'\u{118a6}',
'\u{2d39}',
'\u{1d53c}',
'\u{1d570}',
'\u{0395}',
'\u{ab7c}',
'\u{a4f0}',
'\u{2130}',
'\u{1d5d8}',
'\u{1d75a}',
'\u{1d640}',
'\u{1d674}',
'\u{1d720}',
'\u{13ac}',
'\u{1d07}',
'\u{1d794}',
'\u{ff25}'
],
F: [
'\u{1d509}',
'\u{10287}',
'\u{118a2}',
'\u{1d571}',
'\u{15b4}',
'\u{1d439}',
'\u{1d46d}',
'\u{1d641}',
'\u{2131}',
'\u{118c2}',
'\u{ff26}',
'\u{1d53d}',
'\u{1d213}',
'\u{1d5a5}',
'\u{03dc}',
'\u{1d7ca}',
'\u{1d60d}',
'\u{1d405}',
'\u{1d5d9}',
'\u{a4dd}',
'\u{1d675}',
'\u{a798}',
'\u{10525}',
'\u{102a5}',
'\u{1d4d5}'
],
G: [
'\u{1d53e}',
'\u{1d46e}',
'\u{13c0}',
'\u{1d572}',
'\u{1d406}',
'\u{1d5a6}',
'\u{1d642}',
'\u{1d5da}',
'\u{13fb}',
'\u{1d4d6}',
'\u{1d43a}',
'\u{0262}',
'\u{1d4a2}',
'\u{1d50a}',
'\u{1d676}',
'\u{ab90}',
'\u{050c}',
'\u{13f3}',
'\u{050d}',
'\u{a4d6}',
'\u{ff27}',
'\u{1d60e}'
],
H: [
'\u{102cf}',
'\u{1d6e8}',
'\u{ff28}',
'\u{1d60f}',
'\u{210d}',
'\u{13bb}',
'\u{2c8e}',
'\u{1d722}',
'\u{a4e7}',
'\u{0397}',
'\u{1d75c}',
'\u{157c}',
'\u{210b}',
'\u{1d5db}',
'\u{1d796}',
'\u{1d573}',
'\u{1d6ae}',
'\u{029c}',
'\u{1d407}',
'\u{041d}',
'\u{ab8b}',
'\u{210c}',
'\u{1d677}',
'\u{1d5a7}',
'\u{1d643}',
'\u{043d}',
'\u{1d4d7}',
'\u{1d46f}',
'\u{1d43b}'
],
I: [
'\u{0406}',
'\u{ff4c}',
'\u{23fd}',
'\u{05c0}',
'\u{217c}',
'\u{1d6b0}',
'\u{05df}',
'\u{1d7f7}',
'\u{1d43c}',
'\u{1d4d8}',
'\u{1d591}',
'\u{1d661}',
'\u{01c0}',
'\u{fe8d}',
'\u{1d5a8}',
'\u{2110}',
'\u{1d529}',
'\u{10320}',
'\u{1d7ed}',
'\u{a4f2}',
'\u{1d425}',
'\u{1d6ea}',
'\u{1d610}',
'\u{07ca}',
'\u{1d724}',
'\u{1d4c1}',
'\u{1d798}',
'\u{0627}',
'\u{2d4f}',
'\u{2160}',
'\u{1d7cf}',
'\u{1d62d}',
'\u{1d5f9}',
'\u{ffe8}',
'\u{0031}',
'\u{1d4f5}',
'\u{16f28}',
'\u{1d459}',
'\u{2111}',
'\u{1d48d}',
'\u{2223}',
'\u{10309}',
'\u{04c0}',
'\u{1ee00}',
'\u{0196}',
'\u{16c1}',
'\u{1d540}',
'\u{1d5dc}',
'\u{1d55d}',
'\u{1ee80}',
'\u{ff29}',
'\u{2113}',
'\u{2c92}',
'\u{1d7e3}',
'\u{1d678}',
'\u{1d574}',
'\u{1d695}',
'\u{0399}',
'\u{1d644}',
'\u{1028a}',
'\u{1d7d9}',
'\u{fe8e}',
'\u{ff11}',
'\u{1d75e}',
'\u{06f1}',
'\u{007c}',
'\u{1e8c7}',
'\u{05d5}',
'\u{006c}',
'\u{1d470}',
'\u{1fbf1}',
'\u{0661}',
'\u{1d408}',
'\u{1d5c5}'
],
J: [
'\u{a4d9}',
'\u{a7b2}',
'\u{1d5a9}',
'\u{1d4a5}',
'\u{1d645}',
'\u{1d5dd}',
'\u{1d0a}',
'\u{ab7b}',
'\u{13ab}',
'\u{ff2a}',
'\u{1d409}',
'\u{1d541}',
'\u{037f}',
'\u{1d471}',
'\u{1d50d}',
'\u{1d575}',
'\u{148d}',
'\u{1d4d9}',
'\u{0408}',
'\u{1d43d}',
'\u{1d611}',
'\u{1d679}'
],
K: [
'\u{1d50e}',
'\u{1d75f}',
'\u{039a}',
'\u{1d6eb}',
'\u{1d799}',
'\u{1d4a6}',
'\u{2c94}',
'\u{041a}',
'\u{1d612}',
'\u{1d576}',
'\u{1d542}',
'\u{ff2b}',
'\u{1d43e}',
'\u{a4d7}',
'\u{1d67a}',
'\u{16d5}',
'\u{1d725}',
'\u{10518}',
'\u{1d472}',
'\u{1d4da}',
'\u{1d5aa}',
'\u{1d40a}',
'\u{1d5de}',
'\u{1d646}',
'\u{1d6b1}',
'\u{212a}',
'\u{13e6}'
],
L: [
'\u{029f}',
'\u{118a3}',
'\u{1d22a}',
'\u{abae}',
'\u{1d647}',
'\u{1041b}',
'\u{1d473}',
'\u{1d43f}',
'\u{2cd0}',
'\u{216c}',
'\u{14aa}',
'\u{1d4db}',
'\u{10526}',
'\u{1d50f}',
'\u{ff2c}',
'\u{10443}',
'\u{1d577}',
'\u{1d5df}',
'\u{1d613}',
'\u{1d543}',
'\u{1d67b}',
'\u{118b2}',
'\u{1d5ab}',
'\u{a4e1}',
'\u{1d40b}',
'\u{2112}',
'\u{2cd1}',
'\u{16f16}',
'\u{13de}'
],
M: [
'\u{10311}',
'\u{1d5ac}',
'\u{1d67c}',
'\u{16d6}',
'\u{1d4dc}',
'\u{1d474}',
'\u{1d510}',
'\u{2c98}',
'\u{041c}',
'\u{15f0}',
'\u{03fa}',
'\u{039c}',
'\u{1d5e0}',
'\u{1d578}',
'\u{1d440}',
'\u{ff2d}',
'\u{216f}',
'\u{1d6b3}',
'\u{1d79b}',
'\u{1d40c}',
'\u{1d727}',
'\u{1d544}',
'\u{1d614}',
'\u{1d761}',
'\u{102b0}',
'\u{2133}',
'\u{1d6ed}',
'\u{13b7}',
'\u{1d648}',
'\u{a4df}'
],
N: [
'\u{1d5ad}',
'\u{1d40d}',
'\u{ff2e}',
'\u{1d6ee}',
'\u{2115}',
'\u{1d4dd}',
'\u{1d649}',
'\u{a4e0}',
'\u{1d475}',
'\u{1d441}',
'\u{1d579}',
'\u{0274}',
'\u{2c9a}',
'\u{1d79c}',
'\u{1d615}',
'\u{1d67d}',
'\u{1d728}',
'\u{1d5e1}',
'\u{1d511}',
'\u{039d}',
'\u{1d4a9}',
'\u{1d762}',
'\u{10513}',
'\u{1d6b4}'
],
O: [
'\u{feeb}',
'\u{1d6b6}',
'\u{2c9f}',
'\u{0c82}',
'\u{0030}',
'\u{118d7}',
'\u{1d490}',
'\u{1d7f6}',
'\u{fba6}',
'\u{10404}',
'\u{1d7d8}',
'\u{a4f3}',
'\u{0555}',
'\u{1d6d0}',
'\u{1d77e}',
'\u{fbab}',
'\u{10ff}',
'\u{1d560}',
'\u{1d698}',
'\u{1d4de}',
'\u{0665}',
'\u{1d52c}',
'\u{0966}',
'\u{041e}',
'\u{1d40e}',
'\u{104c2}',
'\u{ff2f}',
'\u{1d7bc}',
'\u{1d748}',
'\u{1d7ce}',
'\u{1d4f8}',
'\u{1d764}',
'\u{0b66}',
'\u{1d442}',
'\u{1d630}',
'\u{0585}',
'\u{1d5ae}',
'\u{1042c}',
'\u{0647}',
'\u{1d594}',
'\u{0d20}',
'\u{118b5}',
'\u{1d782}',
'\u{104ea}',
'\u{0ed0}',
'\u{0c66}',
'\u{1d6f0}',
'\u{3007}',
'\u{09e6}',
'\u{1d70a}',
'\u{1d11}',
'\u{1d428}',
'\u{0d82}',
'\u{1d476}',
'\u{1d7b8}',
'\u{114d0}',
'\u{0d02}',
'\u{1d5fc}',
'\u{fba7}',
'\u{0b20}',
'\u{06d5}',
'\u{1d45c}',
'\u{fbaa}',
'\u{10292}',
'\u{1d546}',
'\u{1d5e2}',
'\u{1d67e}',
'\u{1d72a}',
'\u{ab3d}',
'\u{1ee24}',
'\u{06be}',
'\u{03bf}',
'\u{0d66}',
'\u{feea}',
'\u{10516}',
'\u{118c8}',
'\u{2134}',
'\u{1ee64}',
'\u{1d70e}',
'\u{ff4f}',
'\u{06f5}',
'\u{1d616}',
'\u{1d0f}',
'\u{043e}',
'\u{1d57a}',
'\u{ff10}',
'\u{1d7e2}',
'\u{06c1}',
'\u{1d4aa}',
'\u{0ce6}',
'\u{2c9e}',
'\u{118e0}',
'\u{2d54}',
'\u{1040}',
'\u{1d512}',
'\u{fbac}',
'\u{0be6}',
'\u{0c02}',
'\u{1d744}',
'\u{101d}',
'\u{1d664}',
'\u{0ae6}',
'\u{006f}',
'\u{039f}',
'\u{fbad}',
'\u{fba9}',
'\u{0a66}',
'\u{03c3}',
'\u{12d0}',
'\u{1d5c8}',
'\u{05e1}',
'\u{fba8}',
'\u{fee9}',
'\u{1d79e}',
'\u{feec}',
'\u{1d7ec}',
'\u{07c0}',
'\u{1d6d4}',
'\u{1d64a}',
'\u{0e50}',
'\u{1ee84}',
'\u{1fbf0}',
'\u{102ab}'
],
P: [
'\u{03a1}',
'\u{a4d1}',
'\u{1d57b}',
'\u{1d29}',
'\u{1d67f}',
'\u{146d}',
'\u{1d5e3}',
'\u{1d5af}',
'\u{1d477}',
'\u{1d4df}',
'\u{1d4ab}',
'\u{0420}',
'\u{abb2}',
'\u{1d7a0}',
'\u{13e2}',
'\u{1d18}',
'\u{1d40f}',
'\u{2ca2}',
'\u{2119}',
'\u{10295}',
'\u{1d617}',
'\u{ff30}',
'\u{1d64b}',
'\u{1d766}',
'\u{1d443}',
'\u{1d6b8}',
'\u{1d6f2}',
'\u{1d513}',
'\u{1d72c}'
],
Q: [
'\u{1d410}',
'\u{1d514}',
'\u{1d57c}',
'\u{1d5e4}',
'\u{ff31}',
'\u{1d64c}',
'\u{1d680}',
'\u{1d618}',
'\u{1d478}',
'\u{1d4ac}',
'\u{1d5b0}',
'\u{2d55}',
'\u{211a}',
'\u{1d4e0}',
'\u{1d444}'
],
R: [
'\u{1d479}',
'\u{1d619}',
'\u{0280}',
'\u{1d57d}',
'\u{1d411}',
'\u{1d5e5}',
'\u{13d2}',
'\u{16b1}',
'\u{ab71}',
'\u{1d64d}',
'\u{1d445}',
'\u{aba2}',
'\u{1587}',
'\u{211c}',
'\u{1d5b1}',
'\u{104b4}',
'\u{01a6}',
'\u{1d216}',
'\u{16f35}',
'\u{1d681}',
'\u{1d4e1}',
'\u{211b}',
'\u{a4e3}',
'\u{211d}',
'\u{13a1}',
'\u{ff32}'
],
S: [
'\u{1d57e}',
'\u{13da}',
'\u{1d682}',
'\u{13d5}',
'\u{10420}',
'\u{ff33}',
'\u{1d516}',
'\u{1d61a}',
'\u{054f}',
'\u{10296}',
'\u{0405}',
'\u{1d5b2}',
'\u{1d5e6}',
'\u{1d47a}',
'\u{1d4e2}',
'\u{1d446}',
'\u{16f3a}',
'\u{a4e2}',
'\u{1d54a}',
'\u{1d412}',
'\u{1d64e}',
'\u{1d4ae}'
],
T: [
'\u{22a4}',
'\u{2ca6}',
'\u{13a2}',
'\u{1d72f}',
'\u{03c4}',
'\u{1d57f}',
'\u{ab72}',
'\u{16f0a}',
'\u{1d1b}',
'\u{0442}',
'\u{1d70f}',
'\u{1d47b}',
'\u{1d683}',
'\u{27d9}',
'\u{1d54b}',
'\u{1d517}',
'\u{03a4}',
'\u{10315}',
'\u{1d4af}',
'\u{1d5e7}',
'\u{1d7a3}',
'\u{1d749}',
'\u{102b1}',
'\u{1d413}',
'\u{1d64f}',
'\u{ff34}',
'\u{0422}',
'\u{1d5b3}',
'\u{a4d4}',
'\u{1d6f5}',
'\u{1d61b}',
'\u{1d6bb}',
'\u{1d769}',
'\u{1d6d5}',
'\u{1d7bd}',
'\u{118bc}',
'\u{1f768}',
'\u{1d447}',
'\u{10297}',
'\u{1d783}',
'\u{1d4e3}'
],
U: [
'\u{054d}',
'\u{222a}',
'\u{118b8}',
'\u{1d47c}',
'\u{1d580}',
'\u{a4f4}',
'\u{1d414}',
'\u{1d448}',
'\u{1d684}',
'\u{16f42}',
'\u{1d518}',
'\u{144c}',
'\u{1d54c}',
'\u{1d650}',
'\u{1d4e4}',
'\u{1200}',
'\u{1d5e8}',
'\u{1d61c}',
'\u{1d5b4}',
'\u{1d4b0}',
'\u{22c3}',
'\u{104ce}',
'\u{ff35}'
],
V: [
'\u{1d581}',
'\u{1d47d}',
'\u{1d20d}',
'\u{2d38}',
'\u{a4e6}',
'\u{1d5e9}',
'\u{1d519}',
'\u{1d4b1}',
'\u{142f}',
'\u{1d685}',
'\u{1051d}',
'\u{1d61d}',
'\u{16f08}',
'\u{0474}',
'\u{13d9}',
'\u{ff36}',
'\u{1d415}',
'\u{2164}',
'\u{0667}',
'\u{1d54d}',
'\u{1d651}',
'\u{118a0}',
'\u{1d4e5}',
'\u{a6df}',
'\u{06f7}',
'\u{1d5b5}',
'\u{1d449}'
],
W: [
'\u{118ef}',
'\u{1d686}',
'\u{1d416}',
'\u{1d4e6}',
'\u{13b3}',
'\u{1d47e}',
'\u{1d5b6}',
'\u{1d582}',
'\u{1d44a}',
'\u{1d4b2}',
'\u{13d4}',
'\u{1d61e}',
'\u{1d5ea}',
'\u{a4ea}',
'\u{118e6}',
'\u{ff37}',
'\u{1d652}',
'\u{051c}',
'\u{1d51a}',
'\u{1d54e}'
],
X: [
'\u{1d76c}',
'\u{1d54f}',
'\u{1d5eb}',
'\u{1d4b3}',
'\u{166d}',
'\u{102b4}',
'\u{1d44b}',
'\u{2573}',
'\u{1d47f}',
'\u{10290}',
'\u{ff38}',
'\u{1d583}',
'\u{1d7a6}',
'\u{2169}',
'\u{1d61f}',
'\u{10527}',
'\u{1d417}',
'\u{1d732}',
'\u{1d6f8}',
'\u{1d5b7}',
'\u{2d5d}',
'\u{1d653}',
'\u{1d687}',
'\u{10322}',
'\u{2cac}',
'\u{1d4e7}',
'\u{1d51b}',
'\u{1d6be}',
'\u{a4eb}',
'\u{0425}',
'\u{16b7}',
'\u{03a7}',
'\u{10317}',
'\u{a7b3}',
'\u{118ec}'
],
Y: [
'\u{1d418}',
'\u{1d480}',
'\u{1d654}',
'\u{a4ec}',
'\u{1d44c}',
'\u{1d7a4}',
'\u{13bd}',
'\u{1d5ec}',
'\u{1d4b4}',
'\u{1d620}',
'\u{1d6f6}',
'\u{1d5b8}',
'\u{1d4e8}',
'\u{0423}',
'\u{118a4}',
'\u{1d76a}',
'\u{16f43}',
'\u{04ae}',
'\u{1d688}',
'\u{1d550}',
'\u{1d584}',
'\u{2ca8}',
'\u{03d2}',
'\u{1d51c}',
'\u{13a9}',
'\u{ff39}',
'\u{1d6bc}',
'\u{1d730}',
'\u{03a5}',
'\u{102b2}'
],
Z: [
'\u{a4dc}',
'\u{1d6ad}',
'\u{1d795}',
'\u{102f5}',
'\u{1d44d}',
'\u{1d4e9}',
'\u{1d75b}',
'\u{0396}',
'\u{1d419}',
'\u{1d621}',
'\u{118e5}',
'\u{1d585}',
'\u{1d655}',
'\u{118a9}',
'\u{13c3}',
'\u{2124}',
'\u{1d5b9}',
'\u{1d721}',
'\u{1d481}',
'\u{1d4b5}',
'\u{1d689}',
'\u{1d6e7}',
'\u{1d5ed}',
'\u{ff3a}',
'\u{2128}'
],
a: [
'\u{1d736}',
'\u{237a}',
'\u{1d6c2}',
'\u{1d41a}',
'\u{1d4ea}',
'\u{1d656}',
'\u{03b1}',
'\u{0430}',
'\u{1d5ba}',
'\u{1d5ee}',
'\u{0251}',
'\u{1d6fc}',
'\u{ff41}',
'\u{1d770}',
'\u{1d622}',
'\u{1d44e}',
'\u{1d586}',
'\u{1d51e}',
'\u{1d68a}',
'\u{1d482}',
'\u{1d552}',
'\u{1d7aa}',
'\u{1d4b6}'
],
b: [
'\u{15af}',
'\u{1d41b}',
'\u{0184}',
'\u{1d51f}',
'\u{1d553}',
'\u{1d587}',
'\u{1d5ef}',
'\u{1d483}',
'\u{1d623}',
'\u{1472}',
'\u{13cf}',
'\u{ff42}',
'\u{1d4b7}',
'\u{1d4eb}',
'\u{1d68b}',
'\u{1d5bb}',
'\u{1d44f}',
'\u{042c}',
'\u{1d657}'
],
c: [
'\u{1d484}',
'\u{1d5bc}',
'\u{1d41c}',
'\u{1d554}',
'\u{1043d}',
'\u{2ca5}',
'\u{1d68c}',
'\u{1d624}',
'\u{1d450}',
'\u{1d4b8}',
'\u{abaf}',
'\u{1d04}',
'\u{1d520}',
'\u{217d}',
'\u{1d588}',
'\u{1d4ec}',
'\u{1d658}',
'\u{0441}',
'\u{ff43}',
'\u{03f2}',
'\u{1d5f0}'
],
d: [
'\u{1d659}',
'\u{ff44}',
'\u{1d41d}',
'\u{13e7}',
'\u{a4d2}',
'\u{1d4ed}',
'\u{1d5bd}',
'\u{1d521}',
'\u{0501}',
'\u{2146}',
'\u{1d451}',
'\u{1d485}',
'\u{1d555}',
'\u{1d68d}',
'\u{146f}',
'\u{1d5f1}',
'\u{217e}',
'\u{1d589}',
'\u{1d625}',
'\u{1d4b9}'
],
e: [
'\u{1d556}',
'\u{1d68e}',
'\u{1d522}',
'\u{04bd}',
'\u{2147}',
'\u{212e}',
'\u{1d65a}',
'\u{1d486}',
'\u{1d5be}',
'\u{1d41e}',
'\u{1d626}',
'\u{0435}',
'\u{ab32}',
'\u{1d452}',
'\u{1d5f2}',
'\u{1d58a}',
'\u{212f}',
'\u{ff45}',
'\u{1d4ee}'
],
f: [
'\u{1d65b}',
'\u{1d7cb}',
'\u{1d5bf}',
'\u{1d523}',
'\u{1d41f}',
'\u{1d487}',
'\u{1d627}',
'\u{1d557}',
'\u{a799}',
'\u{1d453}',
'\u{0584}',
'\u{1d5f3}',
'\u{1d58b}',
'\u{017f}',
'\u{03dd}',
'\u{ff46}',
'\u{1d4ef}',
'\u{1d4bb}',
'\u{1e9d}',
'\u{1d68f}',
'\u{ab35}'
],
g: [
'\u{1d558}',
'\u{1d690}',
'\u{0261}',
'\u{1d58c}',
'\u{1d83}',
'\u{1d488}',
'\u{0581}',
'\u{1d454}',
'\u{210a}',
'\u{1d628}',
'\u{1d65c}',
'\u{1d5f4}',
'\u{1d4f0}',
'\u{ff47}',
'\u{018d}',
'\u{1d524}',
'\u{1d5c0}',
'\u{1d420}'
],
h: [
'\u{0570}',
'\u{1d421}',
'\u{1d629}',
'\u{1d559}',
'\u{1d525}',
'\u{1d5f5}',
'\u{210e}',
'\u{ff48}',
'\u{04bb}',
'\u{1d489}',
'\u{1d58d}',
'\u{1d65d}',
'\u{13c2}',
'\u{1d4f1}',
'\u{1d691}',
'\u{1d5c1}',
'\u{1d4bd}'
],
i: [
'\u{2148}',
'\u{1d422}',
'\u{1d6a4}',
'\u{0131}',
'\u{1d7b2}',
'\u{1d65e}',
'\u{1d4f2}',
'\u{1d48a}',
'\u{ff49}',
'\u{0456}',
'\u{1d4be}',
'\u{2170}',
'\u{1d55a}',
'\u{1d58e}',
'\u{0269}',
'\u{04cf}',
'\u{1d6ca}',
'\u{02db}',
'\u{1d5c2}',
'\u{037a}',
'\u{118c3}',
'\u{1d456}',
'\u{a647}',
'\u{1d778}',
'\u{2373}',
'\u{1d62a}',
'\u{1d73e}',
'\u{ab75}',
'\u{1fbe}',
'\u{13a5}',
'\u{026a}',
'\u{2139}',
'\u{1d526}',
'\u{1d692}',
'\u{1d5f6}',
'\u{1d704}',
'\u{03b9}'
],
j: [
'\u{1d62b}',
'\u{1d55b}',
'\u{1d423}',
'\u{1d48b}',
'\u{1d58f}',
'\u{03f3}',
'\u{ff4a}',
'\u{1d5c3}',
'\u{1d4bf}',
'\u{1d65f}',
'\u{0458}',
'\u{1d527}',
'\u{1d5f7}',
'\u{1d4f3}',
'\u{2149}',
'\u{1d457}',
'\u{1d693}'
],
k: [
'\u{1d458}',
'\u{1d55c}',
'\u{1d4c0}',
'\u{1d48c}',
'\u{1d4f4}',
'\u{1d590}',
'\u{ff4b}',
'\u{1d528}',
'\u{1d5c4}',
'\u{1d62c}',
'\u{1d5f8}',
'\u{1d660}',
'\u{1d424}',
'\u{1d694}'
],
l: [
'\u{0406}',
'\u{ff4c}',
'\u{23fd}',
'\u{05c0}',
'\u{217c}',
'\u{1d6b0}',
'\u{05df}',
'\u{1d7f7}',
'\u{1d43c}',
'\u{1d4d8}',
'\u{1d591}',
'\u{1d661}',
'\u{01c0}',
'\u{fe8d}',
'\u{1d5a8}',
'\u{2110}',
'\u{1d529}',
'\u{10320}',
'\u{1d7ed}',
'\u{a4f2}',
'\u{1d425}',
'\u{1d6ea}',
'\u{1d610}',
'\u{07ca}',
'\u{1d724}',
'\u{1d4c1}',
'\u{1d798}',
'\u{0627}',
'\u{2d4f}',
'\u{2160}',
'\u{1d7cf}',
'\u{1d62d}',
'\u{1d5f9}',
'\u{ffe8}',
'\u{0031}',
'\u{1d4f5}',
'\u{16f28}',
'\u{1d459}',
'\u{2111}',
'\u{1d48d}',
'\u{2223}',
'\u{10309}',
'\u{04c0}',
'\u{0049}',
'\u{1ee00}',
'\u{0196}',
'\u{16c1}',
'\u{1d540}',
'\u{1d5dc}',
'\u{1d55d}',
'\u{1ee80}',
'\u{ff29}',
'\u{2113}',
'\u{2c92}',
'\u{1d7e3}',
'\u{1d678}',
'\u{1d574}',
'\u{1d695}',
'\u{0399}',
'\u{1d644}',
'\u{1028a}',
'\u{1d7d9}',
'\u{fe8e}',
'\u{ff11}',
'\u{1d75e}',
'\u{06f1}',
'\u{007c}',
'\u{1e8c7}',
'\u{05d5}',
'\u{1d470}',
'\u{1fbf1}',
'\u{0661}',
'\u{1d408}',
'\u{1d5c5}'
],
m: ['\u{ff4d}'],
n: [
'\u{1d45b}',
'\u{1d5fb}',
'\u{1d5c7}',
'\u{1d48f}',
'\u{ff4e}',
'\u{1d593}',
'\u{1d62f}',
'\u{057c}',
'\u{1d663}',
'\u{0578}',
'\u{1d52b}',
'\u{1d4f7}',
'\u{1d4c3}',
'\u{1d697}',
'\u{1d55f}',
'\u{1d427}'
],
o: [
'\u{feeb}',
'\u{1d6b6}',
'\u{2c9f}',
'\u{0c82}',
'\u{0030}',
'\u{118d7}',
'\u{1d490}',
'\u{1d7f6}',
'\u{fba6}',
'\u{10404}',
'\u{1d7d8}',
'\u{a4f3}',
'\u{0555}',
'\u{1d6d0}',
'\u{1d77e}',
'\u{fbab}',
'\u{10ff}',
'\u{1d560}',
'\u{1d698}',
'\u{1d4de}',
'\u{0665}',
'\u{1d52c}',
'\u{0966}',
'\u{041e}',
'\u{1d40e}',
'\u{104c2}',
'\u{ff2f}',
'\u{1d7bc}',
'\u{1d748}',
'\u{1d7ce}',
'\u{1d4f8}',
'\u{1d764}',
'\u{0b66}',
'\u{1d442}',
'\u{1d630}',
'\u{0585}',
'\u{1d5ae}',
'\u{1042c}',
'\u{0647}',
'\u{1d594}',
'\u{0d20}',
'\u{118b5}',
'\u{1d782}',
'\u{104ea}',
'\u{0ed0}',
'\u{0c66}',
'\u{1d6f0}',
'\u{3007}',
'\u{09e6}',
'\u{1d70a}',
'\u{1d11}',
'\u{1d428}',
'\u{0d82}',
'\u{1d476}',
'\u{1d7b8}',
'\u{114d0}',
'\u{0d02}',
'\u{1d5fc}',
'\u{fba7}',
'\u{0b20}',
'\u{06d5}',
'\u{1d45c}',
'\u{fbaa}',
'\u{10292}',
'\u{1d546}',
'\u{1d5e2}',
'\u{1d67e}',
'\u{1d72a}',
'\u{ab3d}',
'\u{1ee24}',
'\u{06be}',
'\u{03bf}',
'\u{0d66}',
'\u{feea}',
'\u{10516}',
'\u{118c8}',
'\u{2134}',
'\u{1ee64}',
'\u{1d70e}',
'\u{ff4f}',
'\u{06f5}',
'\u{1d616}',
'\u{1d0f}',
'\u{043e}',
'\u{1d57a}',
'\u{ff10}',
'\u{1d7e2}',
'\u{06c1}',
'\u{1d4aa}',
'\u{0ce6}',
'\u{2c9e}',
'\u{118e0}',
'\u{2d54}',
'\u{1040}',
'\u{1d512}',
'\u{fbac}',
'\u{0be6}',
'\u{0c02}',
'\u{1d744}',
'\u{101d}',
'\u{1d664}',
'\u{0ae6}',
'\u{039f}',
'\u{fbad}',
'\u{fba9}',
'\u{0a66}',
'\u{03c3}',
'\u{12d0}',
'\u{1d5c8}',
'\u{05e1}',
'\u{fba8}',
'\u{fee9}',
'\u{1d79e}',
'\u{feec}',
'\u{1d7ec}',
'\u{07c0}',
'\u{1d6d4}',
'\u{1d64a}',
'\u{0e50}',
'\u{1ee84}',
'\u{1fbf0}',
'\u{102ab}',
'\u{004f}'
],
p: [
'\u{1d4c5}',
'\u{1d665}',
'\u{1d754}',
'\u{1d45d}',
'\u{1d52d}',
'\u{1d6d2}',
'\u{1d5c9}',
'\u{03c1}',
'\u{1d429}',
'\u{1d595}',
'\u{0440}',
'\u{1d5fd}',
'\u{1d746}',
'\u{2374}',
'\u{1d4f9}',
'\u{1d7c8}',
'\u{1d7ba}',
'\u{1d780}',
'\u{1d6e0}',
'\u{03f1}',
'\u{1d491}',
'\u{1d699}',
'\u{ff50}',
'\u{1d631}',
'\u{1d561}',
'\u{1d78e}',
'\u{1d70c}',
'\u{2ca3}',
'\u{1d71a}'
],
q: [
'\u{0566}',
'\u{1d562}',
'\u{1d632}',
'\u{051b}',
'\u{1d52e}',
'\u{1d596}',
'\u{1d666}',
'\u{1d492}',
'\u{1d5fe}',
'\u{0563}',
'\u{1d42a}',
'\u{1d5ca}',
'\u{1d45e}',
'\u{1d4fa}',
'\u{1d4c6}',
'\u{1d69a}',
'\u{ff51}'
],
r: [
'\u{1d563}',
'\u{ab47}',
'\u{1d597}',
'\u{1d26}',
'\u{ab48}',
'\u{1d493}',
'\u{1d633}',
'\u{0433}',
'\u{1d4c7}',
'\u{2c85}',
'\u{1d45f}',
'\u{ab81}',
'\u{ff52}',
'\u{1d42b}',
'\u{1d52f}',
'\u{1d69b}',
'\u{1d5ff}',
'\u{1d5cb}',
'\u{1d4fb}',
'\u{1d667}'
],
s: [
'\u{0455}',
'\u{1d598}',
'\u{ff53}',
'\u{1d530}',
'\u{1d460}',
'\u{01bd}',
'\u{a731}',
'\u{1d5cc}',
'\u{1d668}',
'\u{10448}',
'\u{1d564}',
'\u{1d494}',
'\u{1d4fc}',
'\u{abaa}',
'\u{1d4c8}',
'\u{1d69c}',
'\u{118c1}',
'\u{1d42c}',
'\u{1d634}',
'\u{1d600}'
],
t: [
'\u{1d42d}',
'\u{ff54}',
'\u{1d5cd}',
'\u{1d669}',
'\u{1d69d}',
'\u{1d4fd}',
'\u{1d461}',
'\u{1d4c9}',
'\u{1d599}',
'\u{1d601}',
'\u{1d531}',
'\u{1d635}',
'\u{1d495}',
'\u{1d565}'
],
u: [
'\u{1d602}',
'\u{ab52}',
'\u{1d7be}',
'\u{1d1c}',
'\u{028b}',
'\u{104f6}',
'\u{118d8}',
'\u{a79f}',
'\u{ab4e}',
'\u{1d74a}',
'\u{1d59a}',
'\u{1d6d6}',
'\u{1d4ca}',
'\u{1d4fe}',
'\u{ff55}',
'\u{1d462}',
'\u{1d636}',
'\u{1d532}',
'\u{057d}',
'\u{1d566}',
'\u{03c5}',
'\u{1d69e}',
'\u{1d42e}',
'\u{1d710}',
'\u{1d66a}',
'\u{1d5ce}',
'\u{1d496}',
'\u{1d784}'
],
v: [
'\u{05d8}',
'\u{1d4cb}',
'\u{1d637}',
'\u{1d6ce}',
'\u{1d42f}',
'\u{1d533}',
'\u{aba9}',
'\u{03bd}',
'\u{1d4ff}',
'\u{1d59b}',
'\u{0475}',
'\u{1d603}',
'\u{22c1}',
'\u{1d463}',
'\u{1d708}',
'\u{118c0}',
'\u{1d742}',
'\u{ff56}',
'\u{1d497}',
'\u{2174}',
'\u{1d5cf}',
'\u{1d66b}',
'\u{1d7b6}',
'\u{11706}',
'\u{1d567}',
'\u{1d77c}',
'\u{2228}',
'\u{1d20}',
'\u{1d69f}'
],
w: [
'\u{1d500}',
'\u{1d5d0}',
'\u{0461}',
'\u{026f}',
'\u{1d66c}',
'\u{1d6a0}',
'\u{1d604}',
'\u{1d568}',
'\u{1d498}',
'\u{0561}',
'\u{1d4cc}',
'\u{1d59c}',
'\u{1170e}',
'\u{1170f}',
'\u{ab83}',
'\u{1170a}',
'\u{1d464}',
'\u{1d534}',
'\u{ff57}',
'\u{1d21}',
'\u{1d638}',
'\u{051d}',
'\u{1d430}'
],
x: [
'\u{1d605}',
'\u{1d535}',
'\u{1d59d}',
'\u{1d66d}',
'\u{157d}',
'\u{166e}',
'\u{ff58}',
'\u{1d501}',
'\u{2a2f}',
'\u{0445}',
'\u{292c}',
'\u{00d7}',
'\u{1541}',
'\u{1d569}',
'\u{2179}',
'\u{1d639}',
'\u{1d431}',
'\u{1d4cd}',
'\u{1d5d1}',
'\u{292b}',
'\u{1d6a1}',
'\u{1d499}',
'\u{1d465}'
],
y: [
'\u{1d59e}',
'\u{1d502}',
'\u{0443}',
'\u{1d466}',
'\u{118dc}',
'\u{0263}',
'\u{1d49a}',
'\u{1d6fe}',
'\u{213d}',
'\u{1d56a}',
'\u{1d606}',
'\u{1d5d2}',
'\u{1d772}',
'\u{04af}',
'\u{1d63a}',
'\u{1d8c}',
'\u{1d432}',
'\u{ab5a}',
'\u{1d738}',
'\u{1d4ce}',
'\u{028f}',
'\u{1d536}',
'\u{1d6c4}',
'\u{03b3}',
'\u{ff59}',
'\u{1eff}',
'\u{1d6a2}',
'\u{1d66e}',
'\u{10e7}',
'\u{1d7ac}'
],
z: [
'\u{1d4cf}',
'\u{1d49b}',
'\u{1d63b}',
'\u{1d607}',
'\u{1d22}',
'\u{1d56b}',
'\u{1d537}',
'\u{1d5d3}',
'\u{1d433}',
'\u{1d467}',
'\u{1d66f}',
'\u{1d503}',
'\u{ab93}',
'\u{ff5a}',
'\u{118c4}',
'\u{1d6a3}',
'\u{1d59f}'
]
};
function buildSearchFunction(charMap) {
function hasWordAtStart(symbols, word) {
if (word.length === 0) {
return true;
}
const textChar = symbols[0], wordCharLower = word[0].toLowerCase(), wordCharUpper = word[0].toUpperCase(), firstCharMatches = textChar === wordCharLower ||
(charMap[wordCharLower] && charMap[wordCharLower].includes(textChar)) ||
textChar === wordCharUpper ||
(charMap[wordCharUpper] && charMap[wordCharUpper].includes(textChar));
return firstCharMatches && hasWordAtStart(symbols.slice(1), word.substr(1));
}
function checkForWord(symbols, word) {
const wordLength = word.length;
const matches = [];
let i = 0;
while (symbols.length >= wordLength) {
if (hasWordAtStart(symbols, word)) {
matches.push({
match: symbols.slice(0, word.length).join(''),
word,
index: i
});
}
symbols = symbols.slice(1);
i++;
}
return matches;
}
function makeSymbolArray(txt) {
const a = [];
for (const s of txt) {
a.push(s);
}
return a;
}
return function (inputText, targetWords) {
const allMatches = [], inputTextSymbolArray = makeSymbolArray(inputText);
for (const targetWord of targetWords) {
Array.prototype.push.apply(allMatches, checkForWord(inputTextSymbolArray, targetWord));
}
return allMatches;
};
}
exports.buildSearchFunction = buildSearchFunction;
function search(inputText, targetWords) {
return buildSearchFunction(CHAR_MAP)(inputText, targetWords);
}
exports.search = search;
/***/ }),
/***/ 605:
/***/ (function(module) {
module.exports = require("http");
/***/ }),
/***/ 614:
/***/ (function(module) {
module.exports = require("events");
/***/ }),
/***/ 622:
/***/ (function(module) {
module.exports = require("path");
/***/ }),
/***/ 625:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const util = __importStar(__webpack_require__(669));
const path = __importStar(__webpack_require__(622));
const fs = __importStar(__webpack_require__(747));
const homoglyphs = __importStar(__webpack_require__(528));
const readdir = util.promisify(fs.readdir);
function findWrapperJars(baseDir) {
return __awaiter(this, void 0, void 0, function* () {
const targetWords = ['gradle-wrapper.jar'];
const files = yield recursivelyListFiles(baseDir);
return files
.filter(file => homoglyphs.search(path.basename(file), targetWords).length > 0)
.map(wrapperJar => path.relative(baseDir, wrapperJar));
});
}
exports.findWrapperJars = findWrapperJars;
function recursivelyListFiles(baseDir) {
return __awaiter(this, void 0, void 0, function* () {
const childrenNames = yield readdir(baseDir);
const childrenPaths = yield Promise.all(childrenNames.map((childName) => __awaiter(this, void 0, void 0, function* () {
const childPath = path.resolve(baseDir, childName);
return fs.lstatSync(childPath).isDirectory()
? recursivelyListFiles(childPath)
: new Promise(resolve => resolve([childPath]));
})));
return Array.prototype.concat(...childrenPaths);
});
}
/***/ }),
/***/ 631:
/***/ (function(module) {
module.exports = require("net");
/***/ }),
/***/ 640:
/***/ (function(module) {
"use strict";
var has = Object.prototype.hasOwnProperty;
var isArray = Array.isArray;
var hexTable = (function () {
var array = [];
for (var i = 0; i < 256; ++i) {
array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
}
return array;
}());
var compactQueue = function compactQueue(queue) {
while (queue.length > 1) {
var item = queue.pop();
var obj = item.obj[item.prop];
if (isArray(obj)) {
var compacted = [];
for (var j = 0; j < obj.length; ++j) {
if (typeof obj[j] !== 'undefined') {
compacted.push(obj[j]);
}
}
item.obj[item.prop] = compacted;
}
}
};
var arrayToObject = function arrayToObject(source, options) {
var obj = options && options.plainObjects ? Object.create(null) : {};
for (var i = 0; i < source.length; ++i) {
if (typeof source[i] !== 'undefined') {
obj[i] = source[i];
}
}
return obj;
};
var merge = function merge(target, source, options) {
/* eslint no-param-reassign: 0 */
if (!source) {
return target;
}
if (typeof source !== 'object') {
if (isArray(target)) {
target.push(source);
} else if (target && typeof target === 'object') {
if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {
target[source] = true;
}
} else {
return [target, source];
}
return target;
}
if (!target || typeof target !== 'object') {
return [target].concat(source);
}
var mergeTarget = target;
if (isArray(target) && !isArray(source)) {
mergeTarget = arrayToObject(target, options);
}
if (isArray(target) && isArray(source)) {
source.forEach(function (item, i) {
if (has.call(target, i)) {
var targetItem = target[i];
if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
target[i] = merge(targetItem, item, options);
} else {
target.push(item);
}
} else {
target[i] = item;
}
});
return target;
}
return Object.keys(source).reduce(function (acc, key) {
var value = source[key];
if (has.call(acc, key)) {
acc[key] = merge(acc[key], value, options);
} else {
acc[key] = value;
}
return acc;
}, mergeTarget);
};
var assign = function assignSingleSource(target, source) {
return Object.keys(source).reduce(function (acc, key) {
acc[key] = source[key];
return acc;
}, target);
};
var decode = function (str, decoder, charset) {
var strWithoutPlus = str.replace(/\+/g, ' ');
if (charset === 'iso-8859-1') {
// unescape never throws, no try...catch needed:
return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
}
// utf-8
try {
return decodeURIComponent(strWithoutPlus);
} catch (e) {
return strWithoutPlus;
}
};
var encode = function encode(str, defaultEncoder, charset) {
// This code was originally written by Brian White (mscdex) for the io.js core querystring library.
// It has been adapted here for stricter adherence to RFC 3986
if (str.length === 0) {
return str;
}
var string = str;
if (typeof str === 'symbol') {
string = Symbol.prototype.toString.call(str);
} else if (typeof str !== 'string') {
string = String(str);
}
if (charset === 'iso-8859-1') {
return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
});
}
var out = '';
for (var i = 0; i < string.length; ++i) {
var c = string.charCodeAt(i);
if (
c === 0x2D // -
|| c === 0x2E // .
|| c === 0x5F // _
|| c === 0x7E // ~
|| (c >= 0x30 && c <= 0x39) // 0-9
|| (c >= 0x41 && c <= 0x5A) // a-z
|| (c >= 0x61 && c <= 0x7A) // A-Z
) {
out += string.charAt(i);
continue;
}
if (c < 0x80) {
out = out + hexTable[c];
continue;
}
if (c < 0x800) {
out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);
continue;
}
if (c < 0xD800 || c >= 0xE000) {
out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);
continue;
}
i += 1;
c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
out += hexTable[0xF0 | (c >> 18)]
+ hexTable[0x80 | ((c >> 12) & 0x3F)]
+ hexTable[0x80 | ((c >> 6) & 0x3F)]
+ hexTable[0x80 | (c & 0x3F)];
}
return out;
};
var compact = function compact(value) {
var queue = [{ obj: { o: value }, prop: 'o' }];
var refs = [];
for (var i = 0; i < queue.length; ++i) {
var item = queue[i];
var obj = item.obj[item.prop];
var keys = Object.keys(obj);
for (var j = 0; j < keys.length; ++j) {
var key = keys[j];
var val = obj[key];
if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
queue.push({ obj: obj, prop: key });
refs.push(val);
}
}
}
compactQueue(queue);
return value;
};
var isRegExp = function isRegExp(obj) {
return Object.prototype.toString.call(obj) === '[object RegExp]';
};
var isBuffer = function isBuffer(obj) {
if (!obj || typeof obj !== 'object') {
return false;
}
return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
};
var combine = function combine(a, b) {
return [].concat(a, b);
};
module.exports = {
arrayToObject: arrayToObject,
assign: assign,
combine: combine,
compact: compact,
decode: decode,
encode: encode,
isBuffer: isBuffer,
isRegExp: isRegExp,
merge: merge
};
/***/ }),
/***/ 643:
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var stringify = __webpack_require__(819);
var parse = __webpack_require__(339);
var formats = __webpack_require__(755);
module.exports = {
formats: formats,
parse: parse,
stringify: stringify
};
/***/ }),
/***/ 652:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const crypto = __importStar(__webpack_require__(417));
const fs = __importStar(__webpack_require__(747));
function sha256File(path) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
const hash = crypto.createHash('sha256');
const stream = fs.createReadStream(path);
stream.on('data', data => hash.update(data));
stream.on('end', () => {
stream.destroy();
resolve(hash.digest('hex'));
});
stream.on('error', error => {
stream.destroy();
reject(error);
});
});
});
}
exports.sha256File = sha256File;
/***/ }),
/***/ 669:
/***/ (function(module) {
module.exports = require("util");
/***/ }),
/***/ 729:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const qs = __webpack_require__(643);
const url = __webpack_require__(835);
const path = __webpack_require__(622);
const zlib = __webpack_require__(761);
/**
* creates an url from a request url and optional base url (http://server:8080)
* @param {string} resource - a fully qualified url or relative path
* @param {string} baseUrl - an optional baseUrl (http://server:8080)
* @param {IRequestOptions} options - an optional options object, could include QueryParameters e.g.
* @return {string} - resultant url
*/
function getUrl(resource, baseUrl, queryParams) {
const pathApi = path.posix || path;
let requestUrl = '';
if (!baseUrl) {
requestUrl = resource;
}
else if (!resource) {
requestUrl = baseUrl;
}
else {
const base = url.parse(baseUrl);
const resultantUrl = url.parse(resource);
// resource (specific per request) elements take priority
resultantUrl.protocol = resultantUrl.protocol || base.protocol;
resultantUrl.auth = resultantUrl.auth || base.auth;
resultantUrl.host = resultantUrl.host || base.host;
resultantUrl.pathname = pathApi.resolve(base.pathname, resultantUrl.pathname);
if (!resultantUrl.pathname.endsWith('/') && resource.endsWith('/')) {
resultantUrl.pathname += '/';
}
requestUrl = url.format(resultantUrl);
}
return queryParams ?
getUrlWithParsedQueryParams(requestUrl, queryParams) :
requestUrl;
}
exports.getUrl = getUrl;
/**
*
* @param {string} requestUrl
* @param {IRequestQueryParams} queryParams
* @return {string} - Request's URL with Query Parameters appended/parsed.
*/
function getUrlWithParsedQueryParams(requestUrl, queryParams) {
const url = requestUrl.replace(/\?$/g, ''); // Clean any extra end-of-string "?" character
const parsedQueryParams = qs.stringify(queryParams.params, buildParamsStringifyOptions(queryParams));
return `${url}${parsedQueryParams}`;
}
/**
* Build options for QueryParams Stringifying.
*
* @param {IRequestQueryParams} queryParams
* @return {object}
*/
function buildParamsStringifyOptions(queryParams) {
let options = {
addQueryPrefix: true,
delimiter: (queryParams.options || {}).separator || '&',
allowDots: (queryParams.options || {}).shouldAllowDots || false,
arrayFormat: (queryParams.options || {}).arrayFormat || 'repeat',
encodeValuesOnly: (queryParams.options || {}).shouldOnlyEncodeValues || true
};
return options;
}
/**
* Decompress/Decode gzip encoded JSON
* Using Node.js built-in zlib module
*
* @param {Buffer} buffer
* @param {string} charset? - optional; defaults to 'utf-8'
* @return {Promise<string>}
*/
function decompressGzippedContent(buffer, charset) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
zlib.gunzip(buffer, function (error, buffer) {
if (error) {
reject(error);
}
resolve(buffer.toString(charset || 'utf-8'));
});
}));
});
}
exports.decompressGzippedContent = decompressGzippedContent;
/**
* Obtain Response's Content Charset.
* Through inspecting `content-type` response header.
* It Returns 'utf-8' if NO charset specified/matched.
*
* @param {IHttpClientResponse} response
* @return {string} - Content Encoding Charset; Default=utf-8
*/
function obtainContentCharset(response) {
// Find the charset, if specified.
// Search for the `charset=CHARSET` string, not including `;,\r\n`
// Example: content-type: 'application/json;charset=utf-8'
// |__ matches would be ['charset=utf-8', 'utf-8', index: 18, input: 'application/json; charset=utf-8']
// |_____ matches[1] would have the charset :tada: , in our example it's utf-8
// However, if the matches Array was empty or no charset found, 'utf-8' would be returned by default.
const contentType = response.message.headers['content-type'] || '';
const matches = contentType.match(/charset=([^;,\r\n]+)/i);
return (matches && matches[1]) ? matches[1] : 'utf-8';
}
exports.obtainContentCharset = obtainContentCharset;
/***/ }),
/***/ 747:
/***/ (function(module) {
module.exports = require("fs");
/***/ }),
/***/ 755:
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var replace = String.prototype.replace;
var percentTwenties = /%20/g;
var util = __webpack_require__(640);
var Format = {
RFC1738: 'RFC1738',
RFC3986: 'RFC3986'
};
module.exports = util.assign(
{
'default': Format.RFC3986,
formatters: {
RFC1738: function (value) {
return replace.call(value, percentTwenties, '+');
},
RFC3986: function (value) {
return String(value);
}
}
},
Format
);
/***/ }),
/***/ 761:
/***/ (function(module) {
module.exports = require("zlib");
/***/ }),
/***/ 762:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const httpm = __importStar(__webpack_require__(874));
const httpc = new httpm.HttpClient('eskatos/gradle-wrapper-check');
function fetchValidChecksums(allowSnapshots) {
return __awaiter(this, void 0, void 0, function* () {
const all = yield httpGetJsonArray('https://services.gradle.org/versions/all');
const withChecksum = all.filter(entry => entry.hasOwnProperty('wrapperChecksumUrl'));
const allowed = withChecksum.filter(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(entry) => allowSnapshots || !entry.snapshot);
const checksumUrls = allowed.map(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(entry) => entry.wrapperChecksumUrl);
const checksums = yield Promise.all(checksumUrls.map((url) => __awaiter(this, void 0, void 0, function* () { return httpGetText(url); })));
return [...new Set(checksums)];
});
}
exports.fetchValidChecksums = fetchValidChecksums;
function httpGetJsonArray(url) {
return __awaiter(this, void 0, void 0, function* () {
return JSON.parse(yield httpGetText(url));
});
}
function httpGetText(url) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield httpc.get(url);
return yield response.readBody();
});
}
/***/ }),
/***/ 819:
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var utils = __webpack_require__(640);
var formats = __webpack_require__(755);
var has = Object.prototype.hasOwnProperty;
var arrayPrefixGenerators = {
brackets: function brackets(prefix) {
return prefix + '[]';
},
comma: 'comma',
indices: function indices(prefix, key) {
return prefix + '[' + key + ']';
},
repeat: function repeat(prefix) {
return prefix;
}
};
var isArray = Array.isArray;
var push = Array.prototype.push;
var pushToArray = function (arr, valueOrArray) {
push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);
};
var toISO = Date.prototype.toISOString;
var defaultFormat = formats['default'];
var defaults = {
addQueryPrefix: false,
allowDots: false,
charset: 'utf-8',
charsetSentinel: false,
delimiter: '&',
encode: true,
encoder: utils.encode,
encodeValuesOnly: false,
format: defaultFormat,
formatter: formats.formatters[defaultFormat],
// deprecated
indices: false,
serializeDate: function serializeDate(date) {
return toISO.call(date);
},
skipNulls: false,
strictNullHandling: false
};
var isNonNullishPrimitive = function isNonNullishPrimitive(v) {
return typeof v === 'string'
|| typeof v === 'number'
|| typeof v === 'boolean'
|| typeof v === 'symbol'
|| typeof v === 'bigint';
};
var stringify = function stringify(
object,
prefix,
generateArrayPrefix,
strictNullHandling,
skipNulls,
encoder,
filter,
sort,
allowDots,
serializeDate,
formatter,
encodeValuesOnly,
charset
) {
var obj = object;
if (typeof filter === 'function') {
obj = filter(prefix, obj);
} else if (obj instanceof Date) {
obj = serializeDate(obj);
} else if (generateArrayPrefix === 'comma' && isArray(obj)) {
obj = obj.join(',');
}
if (obj === null) {
if (strictNullHandling) {
return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key') : prefix;
}
obj = '';
}
if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {
if (encoder) {
var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key');
return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value'))];
}
return [formatter(prefix) + '=' + formatter(String(obj))];
}
var values = [];
if (typeof obj === 'undefined') {
return values;
}
var objKeys;
if (isArray(filter)) {
objKeys = filter;
} else {
var keys = Object.keys(obj);
objKeys = sort ? keys.sort(sort) : keys;
}
for (var i = 0; i < objKeys.length; ++i) {
var key = objKeys[i];
if (skipNulls && obj[key] === null) {
continue;
}
if (isArray(obj)) {
pushToArray(values, stringify(
obj[key],
typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix,
generateArrayPrefix,
strictNullHandling,
skipNulls,
encoder,
filter,
sort,
allowDots,
serializeDate,
formatter,
encodeValuesOnly,
charset
));
} else {
pushToArray(values, stringify(
obj[key],
prefix + (allowDots ? '.' + key : '[' + key + ']'),
generateArrayPrefix,
strictNullHandling,
skipNulls,
encoder,
filter,
sort,
allowDots,
serializeDate,
formatter,
encodeValuesOnly,
charset
));
}
}
return values;
};
var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
if (!opts) {
return defaults;
}
if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {
throw new TypeError('Encoder has to be a function.');
}
var charset = opts.charset || defaults.charset;
if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
}
var format = formats['default'];
if (typeof opts.format !== 'undefined') {
if (!has.call(formats.formatters, opts.format)) {
throw new TypeError('Unknown format option provided.');
}
format = opts.format;
}
var formatter = formats.formatters[format];
var filter = defaults.filter;
if (typeof opts.filter === 'function' || isArray(opts.filter)) {
filter = opts.filter;
}
return {
addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,
allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
charset: charset,
charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,
encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,
encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,
encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,
filter: filter,
formatter: formatter,
serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,
skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,
sort: typeof opts.sort === 'function' ? opts.sort : null,
strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
};
};
module.exports = function (object, opts) {
var obj = object;
var options = normalizeStringifyOptions(opts);
var objKeys;
var filter;
if (typeof options.filter === 'function') {
filter = options.filter;
obj = filter('', obj);
} else if (isArray(options.filter)) {
filter = options.filter;
objKeys = filter;
}
var keys = [];
if (typeof obj !== 'object' || obj === null) {
return '';
}
var arrayFormat;
if (opts && opts.arrayFormat in arrayPrefixGenerators) {
arrayFormat = opts.arrayFormat;
} else if (opts && 'indices' in opts) {
arrayFormat = opts.indices ? 'indices' : 'repeat';
} else {
arrayFormat = 'indices';
}
var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
if (!objKeys) {
objKeys = Object.keys(obj);
}
if (options.sort) {
objKeys.sort(options.sort);
}
for (var i = 0; i < objKeys.length; ++i) {
var key = objKeys[i];
if (options.skipNulls && obj[key] === null) {
continue;
}
pushToArray(keys, stringify(
obj[key],
key,
generateArrayPrefix,
options.strictNullHandling,
options.skipNulls,
options.encode ? options.encoder : null,
options.filter,
options.sort,
options.allowDots,
options.serializeDate,
options.formatter,
options.encodeValuesOnly,
options.charset
));
}
var joined = keys.join(options.delimiter);
var prefix = options.addQueryPrefix === true ? '?' : '';
if (options.charsetSentinel) {
if (options.charset === 'iso-8859-1') {
// encodeURIComponent('&#10003;'), the "numeric entity" representation of a checkmark
prefix += 'utf8=%26%2310003%3B&';
} else {
// encodeURIComponent('✓')
prefix += 'utf8=%E2%9C%93&';
}
}
return joined.length > 0 ? prefix + joined : '';
};
/***/ }),
/***/ 835:
/***/ (function(module) {
module.exports = require("url");
/***/ }),
/***/ 874:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const url = __webpack_require__(835);
const http = __webpack_require__(605);
const https = __webpack_require__(211);
const util = __webpack_require__(729);
let fs;
let tunnel;
var HttpCodes;
(function (HttpCodes) {
HttpCodes[HttpCodes["OK"] = 200] = "OK";
HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests";
HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));
const HttpRedirectCodes = [HttpCodes.MovedPermanently, HttpCodes.ResourceMoved, HttpCodes.SeeOther, HttpCodes.TemporaryRedirect, HttpCodes.PermanentRedirect];
const HttpResponseRetryCodes = [HttpCodes.BadGateway, HttpCodes.ServiceUnavailable, HttpCodes.GatewayTimeout];
const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
const ExponentialBackoffCeiling = 10;
const ExponentialBackoffTimeSlice = 5;
class HttpClientResponse {
constructor(message) {
this.message = message;
}
readBody() {
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
let buffer = Buffer.alloc(0);
const encodingCharset = util.obtainContentCharset(this);
// Extract Encoding from header: 'content-encoding'
// Match `gzip`, `gzip, deflate` variations of GZIP encoding
const contentEncoding = this.message.headers['content-encoding'] || '';
const isGzippedEncoded = new RegExp('(gzip$)|(gzip, *deflate)').test(contentEncoding);
this.message.on('data', function (data) {
const chunk = (typeof data === 'string') ? Buffer.from(data, encodingCharset) : data;
buffer = Buffer.concat([buffer, chunk]);
}).on('end', function () {
return __awaiter(this, void 0, void 0, function* () {
if (isGzippedEncoded) { // Process GZipped Response Body HERE
const gunzippedBody = yield util.decompressGzippedContent(buffer, encodingCharset);
resolve(gunzippedBody);
}
resolve(buffer.toString(encodingCharset));
});
}).on('error', function (err) {
reject(err);
});
}));
}
}
exports.HttpClientResponse = HttpClientResponse;
function isHttps(requestUrl) {
let parsedUrl = url.parse(requestUrl);
return parsedUrl.protocol === 'https:';
}
exports.isHttps = isHttps;
var EnvironmentVariables;
(function (EnvironmentVariables) {
EnvironmentVariables["HTTP_PROXY"] = "HTTP_PROXY";
EnvironmentVariables["HTTPS_PROXY"] = "HTTPS_PROXY";
EnvironmentVariables["NO_PROXY"] = "NO_PROXY";
})(EnvironmentVariables || (EnvironmentVariables = {}));
class HttpClient {
constructor(userAgent, handlers, requestOptions) {
this._ignoreSslError = false;
this._allowRedirects = true;
this._allowRedirectDowngrade = false;
this._maxRedirects = 50;
this._allowRetries = false;
this._maxRetries = 1;
this._keepAlive = false;
this._disposed = false;
this.userAgent = userAgent;
this.handlers = handlers || [];
let no_proxy = process.env[EnvironmentVariables.NO_PROXY];
if (no_proxy) {
this._httpProxyBypassHosts = [];
no_proxy.split(',').forEach(bypass => {
this._httpProxyBypassHosts.push(new RegExp(bypass, 'i'));
});
}
this.requestOptions = requestOptions;
if (requestOptions) {
if (requestOptions.ignoreSslError != null) {
this._ignoreSslError = requestOptions.ignoreSslError;
}
this._socketTimeout = requestOptions.socketTimeout;
this._httpProxy = requestOptions.proxy;
if (requestOptions.proxy && requestOptions.proxy.proxyBypassHosts) {
this._httpProxyBypassHosts = [];
requestOptions.proxy.proxyBypassHosts.forEach(bypass => {
this._httpProxyBypassHosts.push(new RegExp(bypass, 'i'));
});
}
this._certConfig = requestOptions.cert;
if (this._certConfig) {
// If using cert, need fs
fs = __webpack_require__(747);
// cache the cert content into memory, so we don't have to read it from disk every time
if (this._certConfig.caFile && fs.existsSync(this._certConfig.caFile)) {
this._ca = fs.readFileSync(this._certConfig.caFile, 'utf8');
}
if (this._certConfig.certFile && fs.existsSync(this._certConfig.certFile)) {
this._cert = fs.readFileSync(this._certConfig.certFile, 'utf8');
}
if (this._certConfig.keyFile && fs.existsSync(this._certConfig.keyFile)) {
this._key = fs.readFileSync(this._certConfig.keyFile, 'utf8');
}
}
if (requestOptions.allowRedirects != null) {
this._allowRedirects = requestOptions.allowRedirects;
}
if (requestOptions.allowRedirectDowngrade != null) {
this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;
}
if (requestOptions.maxRedirects != null) {
this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
}
if (requestOptions.keepAlive != null) {
this._keepAlive = requestOptions.keepAlive;
}
if (requestOptions.allowRetries != null) {
this._allowRetries = requestOptions.allowRetries;
}
if (requestOptions.maxRetries != null) {
this._maxRetries = requestOptions.maxRetries;
}
}
}
options(requestUrl, additionalHeaders) {
return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
}
get(requestUrl, additionalHeaders) {
return this.request('GET', requestUrl, null, additionalHeaders || {});
}
del(requestUrl, additionalHeaders) {
return this.request('DELETE', requestUrl, null, additionalHeaders || {});
}
post(requestUrl, data, additionalHeaders) {
return this.request('POST', requestUrl, data, additionalHeaders || {});
}
patch(requestUrl, data, additionalHeaders) {
return this.request('PATCH', requestUrl, data, additionalHeaders || {});
}
put(requestUrl, data, additionalHeaders) {
return this.request('PUT', requestUrl, data, additionalHeaders || {});
}
head(requestUrl, additionalHeaders) {
return this.request('HEAD', requestUrl, null, additionalHeaders || {});
}
sendStream(verb, requestUrl, stream, additionalHeaders) {
return this.request(verb, requestUrl, stream, additionalHeaders);
}
/**
* Makes a raw http request.
* All other methods such as get, post, patch, and request ultimately call this.
* Prefer get, del, post and patch
*/
request(verb, requestUrl, data, headers) {
return __awaiter(this, void 0, void 0, function* () {
if (this._disposed) {
throw new Error("Client has already been disposed.");
}
let parsedUrl = url.parse(requestUrl);
let info = this._prepareRequest(verb, parsedUrl, headers);
// Only perform retries on reads since writes may not be idempotent.
let maxTries = (this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1) ? this._maxRetries + 1 : 1;
let numTries = 0;
let response;
while (numTries < maxTries) {
response = yield this.requestRaw(info, data);
// Check if it's an authentication challenge
if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) {
let authenticationHandler;
for (let i = 0; i < this.handlers.length; i++) {
if (this.handlers[i].canHandleAuthentication(response)) {
authenticationHandler = this.handlers[i];
break;
}
}
if (authenticationHandler) {
return authenticationHandler.handleAuthentication(this, info, data);
}
else {
// We have received an unauthorized response but have no handlers to handle it.
// Let the response return to the caller.
return response;
}
}
let redirectsRemaining = this._maxRedirects;
while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1
&& this._allowRedirects
&& redirectsRemaining > 0) {
const redirectUrl = response.message.headers["location"];
if (!redirectUrl) {
// if there's no location to redirect to, we won't
break;
}
let parsedRedirectUrl = url.parse(redirectUrl);
if (parsedUrl.protocol == 'https:' && parsedUrl.protocol != parsedRedirectUrl.protocol && !this._allowRedirectDowngrade) {
throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.");
}
// we need to finish reading the response before reassigning response
// which will leak the open socket.
yield response.readBody();
// let's make the request with the new redirectUrl
info = this._prepareRequest(verb, parsedRedirectUrl, headers);
response = yield this.requestRaw(info, data);
redirectsRemaining--;
}
if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) {
// If not a retry code, return immediately instead of retrying
return response;
}
numTries += 1;
if (numTries < maxTries) {
yield response.readBody();
yield this._performExponentialBackoff(numTries);
}
}
return response;
});
}
/**
* Needs to be called if keepAlive is set to true in request options.
*/
dispose() {
if (this._agent) {
this._agent.destroy();
}
this._disposed = true;
}
/**
* Raw request.
* @param info
* @param data
*/
requestRaw(info, data) {
return new Promise((resolve, reject) => {
let callbackForResult = function (err, res) {
if (err) {
reject(err);
}
resolve(res);
};
this.requestRawWithCallback(info, data, callbackForResult);
});
}
/**
* Raw request with callback.
* @param info
* @param data
* @param onResult
*/
requestRawWithCallback(info, data, onResult) {
let socket;
let isDataString = typeof (data) === 'string';
if (typeof (data) === 'string') {
info.options.headers["Content-Length"] = Buffer.byteLength(data, 'utf8');
}
let callbackCalled = false;
let handleResult = (err, res) => {
if (!callbackCalled) {
callbackCalled = true;
onResult(err, res);
}
};
let req = info.httpModule.request(info.options, (msg) => {
let res = new HttpClientResponse(msg);
handleResult(null, res);
});
req.on('socket', (sock) => {
socket = sock;
});
// If we ever get disconnected, we want the socket to timeout eventually
req.setTimeout(this._socketTimeout || 3 * 60000, () => {
if (socket) {
socket.end();
}
handleResult(new Error('Request timeout: ' + info.options.path), null);
});
req.on('error', function (err) {
// err has statusCode property
// res should have headers
handleResult(err, null);
});
if (data && typeof (data) === 'string') {
req.write(data, 'utf8');
}
if (data && typeof (data) !== 'string') {
data.on('close', function () {
req.end();
});
data.pipe(req);
}
else {
req.end();
}
}
_prepareRequest(method, requestUrl, headers) {
const info = {};
info.parsedUrl = requestUrl;
const usingSsl = info.parsedUrl.protocol === 'https:';
info.httpModule = usingSsl ? https : http;
const defaultPort = usingSsl ? 443 : 80;
info.options = {};
info.options.host = info.parsedUrl.hostname;
info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort;
info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
info.options.method = method;
info.options.headers = this._mergeHeaders(headers);
if (this.userAgent != null) {
info.options.headers["user-agent"] = this.userAgent;
}
info.options.agent = this._getAgent(info.parsedUrl);
// gives handlers an opportunity to participate
if (this.handlers && !this._isPresigned(url.format(requestUrl))) {
this.handlers.forEach((handler) => {
handler.prepareRequest(info.options);
});
}
return info;
}
_isPresigned(requestUrl) {
if (this.requestOptions && this.requestOptions.presignedUrlPatterns) {
const patterns = this.requestOptions.presignedUrlPatterns;
for (let i = 0; i < patterns.length; i++) {
if (requestUrl.match(patterns[i])) {
return true;
}
}
}
return false;
}
_mergeHeaders(headers) {
const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {});
if (this.requestOptions && this.requestOptions.headers) {
return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers));
}
return lowercaseKeys(headers || {});
}
_getAgent(parsedUrl) {
let agent;
let proxy = this._getProxy(parsedUrl);
let useProxy = proxy.proxyUrl && proxy.proxyUrl.hostname && !this._isMatchInBypassProxyList(parsedUrl);
if (this._keepAlive && useProxy) {
agent = this._proxyAgent;
}
if (this._keepAlive && !useProxy) {
agent = this._agent;
}
// if agent is already assigned use that agent.
if (!!agent) {
return agent;
}
const usingSsl = parsedUrl.protocol === 'https:';
let maxSockets = 100;
if (!!this.requestOptions) {
maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
}
if (useProxy) {
// If using proxy, need tunnel
if (!tunnel) {
tunnel = __webpack_require__(413);
}
const agentOptions = {
maxSockets: maxSockets,
keepAlive: this._keepAlive,
proxy: {
proxyAuth: proxy.proxyAuth,
host: proxy.proxyUrl.hostname,
port: proxy.proxyUrl.port
},
};
let tunnelAgent;
const overHttps = proxy.proxyUrl.protocol === 'https:';
if (usingSsl) {
tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
}
else {
tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
}
agent = tunnelAgent(agentOptions);
this._proxyAgent = agent;
}
// if reusing agent across request and tunneling agent isn't assigned create a new agent
if (this._keepAlive && !agent) {
const options = { keepAlive: this._keepAlive, maxSockets: maxSockets };
agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
this._agent = agent;
}
// if not using private agent and tunnel agent isn't setup then use global agent
if (!agent) {
agent = usingSsl ? https.globalAgent : http.globalAgent;
}
if (usingSsl && this._ignoreSslError) {
// we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
// http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
// we have to cast it to any and change it directly
agent.options = Object.assign(agent.options || {}, { rejectUnauthorized: false });
}
if (usingSsl && this._certConfig) {
agent.options = Object.assign(agent.options || {}, { ca: this._ca, cert: this._cert, key: this._key, passphrase: this._certConfig.passphrase });
}
return agent;
}
_getProxy(parsedUrl) {
let usingSsl = parsedUrl.protocol === 'https:';
let proxyConfig = this._httpProxy;
// fallback to http_proxy and https_proxy env
let https_proxy = process.env[EnvironmentVariables.HTTPS_PROXY];
let http_proxy = process.env[EnvironmentVariables.HTTP_PROXY];
if (!proxyConfig) {
if (https_proxy && usingSsl) {
proxyConfig = {
proxyUrl: https_proxy
};
}
else if (http_proxy) {
proxyConfig = {
proxyUrl: http_proxy
};
}
}
let proxyUrl;
let proxyAuth;
if (proxyConfig) {
if (proxyConfig.proxyUrl.length > 0) {
proxyUrl = url.parse(proxyConfig.proxyUrl);
}
if (proxyConfig.proxyUsername || proxyConfig.proxyPassword) {
proxyAuth = proxyConfig.proxyUsername + ":" + proxyConfig.proxyPassword;
}
}
return { proxyUrl: proxyUrl, proxyAuth: proxyAuth };
}
_isMatchInBypassProxyList(parsedUrl) {
if (!this._httpProxyBypassHosts) {
return false;
}
let bypass = false;
this._httpProxyBypassHosts.forEach(bypassHost => {
if (bypassHost.test(parsedUrl.href)) {
bypass = true;
}
});
return bypass;
}
_performExponentialBackoff(retryNumber) {
retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
return new Promise(resolve => setTimeout(() => resolve(), ms));
}
}
exports.HttpClient = HttpClient;
/***/ })
/******/ });