mirror of
https://github.com/actions/setup-node
synced 2025-06-03 13:47:42 +00:00
72867 lines
2.8 MiB
72867 lines
2.8 MiB
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__(101);
|
||
/******/ };
|
||
/******/
|
||
/******/ // run startup
|
||
/******/ return startup();
|
||
/******/ })
|
||
/************************************************************************/
|
||
/******/ ([
|
||
/* 0 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = withDefaults
|
||
|
||
const graphql = __webpack_require__(500)
|
||
|
||
function withDefaults (request, newDefaults) {
|
||
const newRequest = request.defaults(newDefaults)
|
||
const newApi = function (query, options) {
|
||
return graphql(newRequest, query, options)
|
||
}
|
||
|
||
newApi.defaults = withDefaults.bind(null, newRequest)
|
||
return newApi
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 1 */
|
||
/***/ (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 childProcess = __webpack_require__(129);
|
||
const path = __webpack_require__(622);
|
||
const util_1 = __webpack_require__(669);
|
||
const ioUtil = __webpack_require__(672);
|
||
const exec = util_1.promisify(childProcess.exec);
|
||
/**
|
||
* Copies a file or folder.
|
||
* Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
|
||
*
|
||
* @param source source path
|
||
* @param dest destination path
|
||
* @param options optional. See CopyOptions.
|
||
*/
|
||
function cp(source, dest, options = {}) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const { force, recursive } = readCopyOptions(options);
|
||
const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;
|
||
// Dest is an existing file, but not forcing
|
||
if (destStat && destStat.isFile() && !force) {
|
||
return;
|
||
}
|
||
// If dest is an existing directory, should copy inside.
|
||
const newDest = destStat && destStat.isDirectory()
|
||
? path.join(dest, path.basename(source))
|
||
: dest;
|
||
if (!(yield ioUtil.exists(source))) {
|
||
throw new Error(`no such file or directory: ${source}`);
|
||
}
|
||
const sourceStat = yield ioUtil.stat(source);
|
||
if (sourceStat.isDirectory()) {
|
||
if (!recursive) {
|
||
throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);
|
||
}
|
||
else {
|
||
yield cpDirRecursive(source, newDest, 0, force);
|
||
}
|
||
}
|
||
else {
|
||
if (path.relative(source, newDest) === '') {
|
||
// a file cannot be copied to itself
|
||
throw new Error(`'${newDest}' and '${source}' are the same file`);
|
||
}
|
||
yield copyFile(source, newDest, force);
|
||
}
|
||
});
|
||
}
|
||
exports.cp = cp;
|
||
/**
|
||
* Moves a path.
|
||
*
|
||
* @param source source path
|
||
* @param dest destination path
|
||
* @param options optional. See MoveOptions.
|
||
*/
|
||
function mv(source, dest, options = {}) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if (yield ioUtil.exists(dest)) {
|
||
let destExists = true;
|
||
if (yield ioUtil.isDirectory(dest)) {
|
||
// If dest is directory copy src into dest
|
||
dest = path.join(dest, path.basename(source));
|
||
destExists = yield ioUtil.exists(dest);
|
||
}
|
||
if (destExists) {
|
||
if (options.force == null || options.force) {
|
||
yield rmRF(dest);
|
||
}
|
||
else {
|
||
throw new Error('Destination already exists');
|
||
}
|
||
}
|
||
}
|
||
yield mkdirP(path.dirname(dest));
|
||
yield ioUtil.rename(source, dest);
|
||
});
|
||
}
|
||
exports.mv = mv;
|
||
/**
|
||
* Remove a path recursively with force
|
||
*
|
||
* @param inputPath path to remove
|
||
*/
|
||
function rmRF(inputPath) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if (ioUtil.IS_WINDOWS) {
|
||
// Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
|
||
// program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
|
||
try {
|
||
if (yield ioUtil.isDirectory(inputPath, true)) {
|
||
yield exec(`rd /s /q "${inputPath}"`);
|
||
}
|
||
else {
|
||
yield exec(`del /f /a "${inputPath}"`);
|
||
}
|
||
}
|
||
catch (err) {
|
||
// if you try to delete a file that doesn't exist, desired result is achieved
|
||
// other errors are valid
|
||
if (err.code !== 'ENOENT')
|
||
throw err;
|
||
}
|
||
// Shelling out fails to remove a symlink folder with missing source, this unlink catches that
|
||
try {
|
||
yield ioUtil.unlink(inputPath);
|
||
}
|
||
catch (err) {
|
||
// if you try to delete a file that doesn't exist, desired result is achieved
|
||
// other errors are valid
|
||
if (err.code !== 'ENOENT')
|
||
throw err;
|
||
}
|
||
}
|
||
else {
|
||
let isDir = false;
|
||
try {
|
||
isDir = yield ioUtil.isDirectory(inputPath);
|
||
}
|
||
catch (err) {
|
||
// if you try to delete a file that doesn't exist, desired result is achieved
|
||
// other errors are valid
|
||
if (err.code !== 'ENOENT')
|
||
throw err;
|
||
return;
|
||
}
|
||
if (isDir) {
|
||
yield exec(`rm -rf "${inputPath}"`);
|
||
}
|
||
else {
|
||
yield ioUtil.unlink(inputPath);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
exports.rmRF = rmRF;
|
||
/**
|
||
* Make a directory. Creates the full path with folders in between
|
||
* Will throw if it fails
|
||
*
|
||
* @param fsPath path to create
|
||
* @returns Promise<void>
|
||
*/
|
||
function mkdirP(fsPath) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
yield ioUtil.mkdirP(fsPath);
|
||
});
|
||
}
|
||
exports.mkdirP = mkdirP;
|
||
/**
|
||
* Returns path of a tool had the tool actually been invoked. Resolves via paths.
|
||
* If you check and the tool does not exist, it will throw.
|
||
*
|
||
* @param tool name of the tool
|
||
* @param check whether to check if tool exists
|
||
* @returns Promise<string> path to tool
|
||
*/
|
||
function which(tool, check) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if (!tool) {
|
||
throw new Error("parameter 'tool' is required");
|
||
}
|
||
// recursive when check=true
|
||
if (check) {
|
||
const result = yield which(tool, false);
|
||
if (!result) {
|
||
if (ioUtil.IS_WINDOWS) {
|
||
throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);
|
||
}
|
||
else {
|
||
throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);
|
||
}
|
||
}
|
||
}
|
||
try {
|
||
// build the list of extensions to try
|
||
const extensions = [];
|
||
if (ioUtil.IS_WINDOWS && process.env.PATHEXT) {
|
||
for (const extension of process.env.PATHEXT.split(path.delimiter)) {
|
||
if (extension) {
|
||
extensions.push(extension);
|
||
}
|
||
}
|
||
}
|
||
// if it's rooted, return it if exists. otherwise return empty.
|
||
if (ioUtil.isRooted(tool)) {
|
||
const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
|
||
if (filePath) {
|
||
return filePath;
|
||
}
|
||
return '';
|
||
}
|
||
// if any path separators, return empty
|
||
if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) {
|
||
return '';
|
||
}
|
||
// build the list of directories
|
||
//
|
||
// Note, technically "where" checks the current directory on Windows. From a toolkit perspective,
|
||
// it feels like we should not do this. Checking the current directory seems like more of a use
|
||
// case of a shell, and the which() function exposed by the toolkit should strive for consistency
|
||
// across platforms.
|
||
const directories = [];
|
||
if (process.env.PATH) {
|
||
for (const p of process.env.PATH.split(path.delimiter)) {
|
||
if (p) {
|
||
directories.push(p);
|
||
}
|
||
}
|
||
}
|
||
// return the first match
|
||
for (const directory of directories) {
|
||
const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions);
|
||
if (filePath) {
|
||
return filePath;
|
||
}
|
||
}
|
||
return '';
|
||
}
|
||
catch (err) {
|
||
throw new Error(`which failed with message ${err.message}`);
|
||
}
|
||
});
|
||
}
|
||
exports.which = which;
|
||
function readCopyOptions(options) {
|
||
const force = options.force == null ? true : options.force;
|
||
const recursive = Boolean(options.recursive);
|
||
return { force, recursive };
|
||
}
|
||
function cpDirRecursive(sourceDir, destDir, currentDepth, force) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// Ensure there is not a run away recursive copy
|
||
if (currentDepth >= 255)
|
||
return;
|
||
currentDepth++;
|
||
yield mkdirP(destDir);
|
||
const files = yield ioUtil.readdir(sourceDir);
|
||
for (const fileName of files) {
|
||
const srcFile = `${sourceDir}/${fileName}`;
|
||
const destFile = `${destDir}/${fileName}`;
|
||
const srcFileStat = yield ioUtil.lstat(srcFile);
|
||
if (srcFileStat.isDirectory()) {
|
||
// Recurse
|
||
yield cpDirRecursive(srcFile, destFile, currentDepth, force);
|
||
}
|
||
else {
|
||
yield copyFile(srcFile, destFile, force);
|
||
}
|
||
}
|
||
// Change the mode for the newly created directory
|
||
yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);
|
||
});
|
||
}
|
||
// Buffered file copy
|
||
function copyFile(srcFile, destFile, force) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {
|
||
// unlink/re-link it
|
||
try {
|
||
yield ioUtil.lstat(destFile);
|
||
yield ioUtil.unlink(destFile);
|
||
}
|
||
catch (e) {
|
||
// Try to override file permission
|
||
if (e.code === 'EPERM') {
|
||
yield ioUtil.chmod(destFile, '0666');
|
||
yield ioUtil.unlink(destFile);
|
||
}
|
||
// other errors = it doesn't exist, no work to do
|
||
}
|
||
// Copy over symlink
|
||
const symlinkFull = yield ioUtil.readlink(srcFile);
|
||
yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);
|
||
}
|
||
else if (!(yield ioUtil.exists(destFile)) || force) {
|
||
yield ioUtil.copyFile(srcFile, destFile);
|
||
}
|
||
});
|
||
}
|
||
//# sourceMappingURL=io.js.map
|
||
|
||
/***/ }),
|
||
/* 2 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
const os = __webpack_require__(87);
|
||
const macosRelease = __webpack_require__(118);
|
||
const winRelease = __webpack_require__(49);
|
||
|
||
const osName = (platform, release) => {
|
||
if (!platform && release) {
|
||
throw new Error('You can\'t specify a `release` without specifying `platform`');
|
||
}
|
||
|
||
platform = platform || os.platform();
|
||
|
||
let id;
|
||
|
||
if (platform === 'darwin') {
|
||
if (!release && os.platform() === 'darwin') {
|
||
release = os.release();
|
||
}
|
||
|
||
const prefix = release ? (Number(release.split('.')[0]) > 15 ? 'macOS' : 'OS X') : 'macOS';
|
||
id = release ? macosRelease(release).name : '';
|
||
return prefix + (id ? ' ' + id : '');
|
||
}
|
||
|
||
if (platform === 'linux') {
|
||
if (!release && os.platform() === 'linux') {
|
||
release = os.release();
|
||
}
|
||
|
||
id = release ? release.replace(/^(\d+\.\d+).*/, '$1') : '';
|
||
return 'Linux' + (id ? ' ' + id : '');
|
||
}
|
||
|
||
if (platform === 'win32') {
|
||
if (!release && os.platform() === 'win32') {
|
||
release = os.release();
|
||
}
|
||
|
||
id = release ? winRelease(release) : '';
|
||
return 'Windows' + (id ? ' ' + id : '');
|
||
}
|
||
|
||
return platform;
|
||
};
|
||
|
||
module.exports = osName;
|
||
|
||
|
||
/***/ }),
|
||
/* 3 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var once = __webpack_require__(969);
|
||
|
||
var noop = function() {};
|
||
|
||
var isRequest = function(stream) {
|
||
return stream.setHeader && typeof stream.abort === 'function';
|
||
};
|
||
|
||
var isChildProcess = function(stream) {
|
||
return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3
|
||
};
|
||
|
||
var eos = function(stream, opts, callback) {
|
||
if (typeof opts === 'function') return eos(stream, null, opts);
|
||
if (!opts) opts = {};
|
||
|
||
callback = once(callback || noop);
|
||
|
||
var ws = stream._writableState;
|
||
var rs = stream._readableState;
|
||
var readable = opts.readable || (opts.readable !== false && stream.readable);
|
||
var writable = opts.writable || (opts.writable !== false && stream.writable);
|
||
|
||
var onlegacyfinish = function() {
|
||
if (!stream.writable) onfinish();
|
||
};
|
||
|
||
var onfinish = function() {
|
||
writable = false;
|
||
if (!readable) callback.call(stream);
|
||
};
|
||
|
||
var onend = function() {
|
||
readable = false;
|
||
if (!writable) callback.call(stream);
|
||
};
|
||
|
||
var onexit = function(exitCode) {
|
||
callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);
|
||
};
|
||
|
||
var onerror = function(err) {
|
||
callback.call(stream, err);
|
||
};
|
||
|
||
var onclose = function() {
|
||
if (readable && !(rs && rs.ended)) return callback.call(stream, new Error('premature close'));
|
||
if (writable && !(ws && ws.ended)) return callback.call(stream, new Error('premature close'));
|
||
};
|
||
|
||
var onrequest = function() {
|
||
stream.req.on('finish', onfinish);
|
||
};
|
||
|
||
if (isRequest(stream)) {
|
||
stream.on('complete', onfinish);
|
||
stream.on('abort', onclose);
|
||
if (stream.req) onrequest();
|
||
else stream.on('request', onrequest);
|
||
} else if (writable && !ws) { // legacy streams
|
||
stream.on('end', onlegacyfinish);
|
||
stream.on('close', onlegacyfinish);
|
||
}
|
||
|
||
if (isChildProcess(stream)) stream.on('exit', onexit);
|
||
|
||
stream.on('end', onend);
|
||
stream.on('finish', onfinish);
|
||
if (opts.error !== false) stream.on('error', onerror);
|
||
stream.on('close', onclose);
|
||
|
||
return function() {
|
||
stream.removeListener('complete', onfinish);
|
||
stream.removeListener('abort', onclose);
|
||
stream.removeListener('request', onrequest);
|
||
if (stream.req) stream.req.removeListener('finish', onfinish);
|
||
stream.removeListener('end', onlegacyfinish);
|
||
stream.removeListener('close', onlegacyfinish);
|
||
stream.removeListener('finish', onfinish);
|
||
stream.removeListener('exit', onexit);
|
||
stream.removeListener('end', onend);
|
||
stream.removeListener('error', onerror);
|
||
stream.removeListener('close', onclose);
|
||
};
|
||
};
|
||
|
||
module.exports = eos;
|
||
|
||
|
||
/***/ }),
|
||
/* 4 */,
|
||
/* 5 */,
|
||
/* 6 */,
|
||
/* 7 */,
|
||
/* 8 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = iterator;
|
||
|
||
const normalizePaginatedListResponse = __webpack_require__(301);
|
||
|
||
function iterator(octokit, options) {
|
||
const headers = options.headers;
|
||
let url = octokit.request.endpoint(options).url;
|
||
|
||
return {
|
||
[Symbol.asyncIterator]: () => ({
|
||
next() {
|
||
if (!url) {
|
||
return Promise.resolve({ done: true });
|
||
}
|
||
|
||
return octokit
|
||
.request({ url, headers })
|
||
|
||
.then(response => {
|
||
normalizePaginatedListResponse(octokit, url, response);
|
||
|
||
// `response.headers.link` format:
|
||
// '<https://api.github.com/users/aseemk/followers?page=2>; rel="next", <https://api.github.com/users/aseemk/followers?page=2>; rel="last"'
|
||
// sets `url` to undefined if "next" URL is not present or `link` header is not set
|
||
url = ((response.headers.link || "").match(
|
||
/<([^>]+)>;\s*rel="next"/
|
||
) || [])[1];
|
||
|
||
return { value: response };
|
||
});
|
||
}
|
||
})
|
||
};
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 9 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
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 });
|
||
exports.argStringToArray = exports.ToolRunner = void 0;
|
||
const os = __importStar(__webpack_require__(87));
|
||
const events = __importStar(__webpack_require__(614));
|
||
const child = __importStar(__webpack_require__(129));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const io = __importStar(__webpack_require__(1));
|
||
const ioUtil = __importStar(__webpack_require__(672));
|
||
const timers_1 = __webpack_require__(213);
|
||
/* eslint-disable @typescript-eslint/unbound-method */
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
/*
|
||
* Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.
|
||
*/
|
||
class ToolRunner extends events.EventEmitter {
|
||
constructor(toolPath, args, options) {
|
||
super();
|
||
if (!toolPath) {
|
||
throw new Error("Parameter 'toolPath' cannot be null or empty.");
|
||
}
|
||
this.toolPath = toolPath;
|
||
this.args = args || [];
|
||
this.options = options || {};
|
||
}
|
||
_debug(message) {
|
||
if (this.options.listeners && this.options.listeners.debug) {
|
||
this.options.listeners.debug(message);
|
||
}
|
||
}
|
||
_getCommandString(options, noPrefix) {
|
||
const toolPath = this._getSpawnFileName();
|
||
const args = this._getSpawnArgs(options);
|
||
let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool
|
||
if (IS_WINDOWS) {
|
||
// Windows + cmd file
|
||
if (this._isCmdFile()) {
|
||
cmd += toolPath;
|
||
for (const a of args) {
|
||
cmd += ` ${a}`;
|
||
}
|
||
}
|
||
// Windows + verbatim
|
||
else if (options.windowsVerbatimArguments) {
|
||
cmd += `"${toolPath}"`;
|
||
for (const a of args) {
|
||
cmd += ` ${a}`;
|
||
}
|
||
}
|
||
// Windows (regular)
|
||
else {
|
||
cmd += this._windowsQuoteCmdArg(toolPath);
|
||
for (const a of args) {
|
||
cmd += ` ${this._windowsQuoteCmdArg(a)}`;
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
// OSX/Linux - this can likely be improved with some form of quoting.
|
||
// creating processes on Unix is fundamentally different than Windows.
|
||
// on Unix, execvp() takes an arg array.
|
||
cmd += toolPath;
|
||
for (const a of args) {
|
||
cmd += ` ${a}`;
|
||
}
|
||
}
|
||
return cmd;
|
||
}
|
||
_processLineBuffer(data, strBuffer, onLine) {
|
||
try {
|
||
let s = strBuffer + data.toString();
|
||
let n = s.indexOf(os.EOL);
|
||
while (n > -1) {
|
||
const line = s.substring(0, n);
|
||
onLine(line);
|
||
// the rest of the string ...
|
||
s = s.substring(n + os.EOL.length);
|
||
n = s.indexOf(os.EOL);
|
||
}
|
||
return s;
|
||
}
|
||
catch (err) {
|
||
// streaming lines to console is best effort. Don't fail a build.
|
||
this._debug(`error processing line. Failed with error ${err}`);
|
||
return '';
|
||
}
|
||
}
|
||
_getSpawnFileName() {
|
||
if (IS_WINDOWS) {
|
||
if (this._isCmdFile()) {
|
||
return process.env['COMSPEC'] || 'cmd.exe';
|
||
}
|
||
}
|
||
return this.toolPath;
|
||
}
|
||
_getSpawnArgs(options) {
|
||
if (IS_WINDOWS) {
|
||
if (this._isCmdFile()) {
|
||
let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;
|
||
for (const a of this.args) {
|
||
argline += ' ';
|
||
argline += options.windowsVerbatimArguments
|
||
? a
|
||
: this._windowsQuoteCmdArg(a);
|
||
}
|
||
argline += '"';
|
||
return [argline];
|
||
}
|
||
}
|
||
return this.args;
|
||
}
|
||
_endsWith(str, end) {
|
||
return str.endsWith(end);
|
||
}
|
||
_isCmdFile() {
|
||
const upperToolPath = this.toolPath.toUpperCase();
|
||
return (this._endsWith(upperToolPath, '.CMD') ||
|
||
this._endsWith(upperToolPath, '.BAT'));
|
||
}
|
||
_windowsQuoteCmdArg(arg) {
|
||
// for .exe, apply the normal quoting rules that libuv applies
|
||
if (!this._isCmdFile()) {
|
||
return this._uvQuoteCmdArg(arg);
|
||
}
|
||
// otherwise apply quoting rules specific to the cmd.exe command line parser.
|
||
// the libuv rules are generic and are not designed specifically for cmd.exe
|
||
// command line parser.
|
||
//
|
||
// for a detailed description of the cmd.exe command line parser, refer to
|
||
// http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912
|
||
// need quotes for empty arg
|
||
if (!arg) {
|
||
return '""';
|
||
}
|
||
// determine whether the arg needs to be quoted
|
||
const cmdSpecialChars = [
|
||
' ',
|
||
'\t',
|
||
'&',
|
||
'(',
|
||
')',
|
||
'[',
|
||
']',
|
||
'{',
|
||
'}',
|
||
'^',
|
||
'=',
|
||
';',
|
||
'!',
|
||
"'",
|
||
'+',
|
||
',',
|
||
'`',
|
||
'~',
|
||
'|',
|
||
'<',
|
||
'>',
|
||
'"'
|
||
];
|
||
let needsQuotes = false;
|
||
for (const char of arg) {
|
||
if (cmdSpecialChars.some(x => x === char)) {
|
||
needsQuotes = true;
|
||
break;
|
||
}
|
||
}
|
||
// short-circuit if quotes not needed
|
||
if (!needsQuotes) {
|
||
return arg;
|
||
}
|
||
// the following quoting rules are very similar to the rules that by libuv applies.
|
||
//
|
||
// 1) wrap the string in quotes
|
||
//
|
||
// 2) double-up quotes - i.e. " => ""
|
||
//
|
||
// this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately
|
||
// doesn't work well with a cmd.exe command line.
|
||
//
|
||
// note, replacing " with "" also works well if the arg is passed to a downstream .NET console app.
|
||
// for example, the command line:
|
||
// foo.exe "myarg:""my val"""
|
||
// is parsed by a .NET console app into an arg array:
|
||
// [ "myarg:\"my val\"" ]
|
||
// which is the same end result when applying libuv quoting rules. although the actual
|
||
// command line from libuv quoting rules would look like:
|
||
// foo.exe "myarg:\"my val\""
|
||
//
|
||
// 3) double-up slashes that precede a quote,
|
||
// e.g. hello \world => "hello \world"
|
||
// hello\"world => "hello\\""world"
|
||
// hello\\"world => "hello\\\\""world"
|
||
// hello world\ => "hello world\\"
|
||
//
|
||
// technically this is not required for a cmd.exe command line, or the batch argument parser.
|
||
// the reasons for including this as a .cmd quoting rule are:
|
||
//
|
||
// a) this is optimized for the scenario where the argument is passed from the .cmd file to an
|
||
// external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.
|
||
//
|
||
// b) it's what we've been doing previously (by deferring to node default behavior) and we
|
||
// haven't heard any complaints about that aspect.
|
||
//
|
||
// note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be
|
||
// escaped when used on the command line directly - even though within a .cmd file % can be escaped
|
||
// by using %%.
|
||
//
|
||
// the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts
|
||
// the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.
|
||
//
|
||
// one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would
|
||
// often work, since it is unlikely that var^ would exist, and the ^ character is removed when the
|
||
// variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args
|
||
// to an external program.
|
||
//
|
||
// an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.
|
||
// % can be escaped within a .cmd file.
|
||
let reverse = '"';
|
||
let quoteHit = true;
|
||
for (let i = arg.length; i > 0; i--) {
|
||
// walk the string in reverse
|
||
reverse += arg[i - 1];
|
||
if (quoteHit && arg[i - 1] === '\\') {
|
||
reverse += '\\'; // double the slash
|
||
}
|
||
else if (arg[i - 1] === '"') {
|
||
quoteHit = true;
|
||
reverse += '"'; // double the quote
|
||
}
|
||
else {
|
||
quoteHit = false;
|
||
}
|
||
}
|
||
reverse += '"';
|
||
return reverse
|
||
.split('')
|
||
.reverse()
|
||
.join('');
|
||
}
|
||
_uvQuoteCmdArg(arg) {
|
||
// Tool runner wraps child_process.spawn() and needs to apply the same quoting as
|
||
// Node in certain cases where the undocumented spawn option windowsVerbatimArguments
|
||
// is used.
|
||
//
|
||
// Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,
|
||
// see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),
|
||
// pasting copyright notice from Node within this function:
|
||
//
|
||
// Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||
//
|
||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
// of this software and associated documentation files (the "Software"), to
|
||
// deal in the Software without restriction, including without limitation the
|
||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||
// sell copies of the Software, and to permit persons to whom the Software is
|
||
// furnished to do so, subject to the following conditions:
|
||
//
|
||
// The above copyright notice and this permission notice shall be included in
|
||
// all copies or substantial portions of the Software.
|
||
//
|
||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||
// IN THE SOFTWARE.
|
||
if (!arg) {
|
||
// Need double quotation for empty argument
|
||
return '""';
|
||
}
|
||
if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) {
|
||
// No quotation needed
|
||
return arg;
|
||
}
|
||
if (!arg.includes('"') && !arg.includes('\\')) {
|
||
// No embedded double quotes or backslashes, so I can just wrap
|
||
// quote marks around the whole thing.
|
||
return `"${arg}"`;
|
||
}
|
||
// Expected input/output:
|
||
// input : hello"world
|
||
// output: "hello\"world"
|
||
// input : hello""world
|
||
// output: "hello\"\"world"
|
||
// input : hello\world
|
||
// output: hello\world
|
||
// input : hello\\world
|
||
// output: hello\\world
|
||
// input : hello\"world
|
||
// output: "hello\\\"world"
|
||
// input : hello\\"world
|
||
// output: "hello\\\\\"world"
|
||
// input : hello world\
|
||
// output: "hello world\\" - note the comment in libuv actually reads "hello world\"
|
||
// but it appears the comment is wrong, it should be "hello world\\"
|
||
let reverse = '"';
|
||
let quoteHit = true;
|
||
for (let i = arg.length; i > 0; i--) {
|
||
// walk the string in reverse
|
||
reverse += arg[i - 1];
|
||
if (quoteHit && arg[i - 1] === '\\') {
|
||
reverse += '\\';
|
||
}
|
||
else if (arg[i - 1] === '"') {
|
||
quoteHit = true;
|
||
reverse += '\\';
|
||
}
|
||
else {
|
||
quoteHit = false;
|
||
}
|
||
}
|
||
reverse += '"';
|
||
return reverse
|
||
.split('')
|
||
.reverse()
|
||
.join('');
|
||
}
|
||
_cloneExecOptions(options) {
|
||
options = options || {};
|
||
const result = {
|
||
cwd: options.cwd || process.cwd(),
|
||
env: options.env || process.env,
|
||
silent: options.silent || false,
|
||
windowsVerbatimArguments: options.windowsVerbatimArguments || false,
|
||
failOnStdErr: options.failOnStdErr || false,
|
||
ignoreReturnCode: options.ignoreReturnCode || false,
|
||
delay: options.delay || 10000
|
||
};
|
||
result.outStream = options.outStream || process.stdout;
|
||
result.errStream = options.errStream || process.stderr;
|
||
return result;
|
||
}
|
||
_getSpawnOptions(options, toolPath) {
|
||
options = options || {};
|
||
const result = {};
|
||
result.cwd = options.cwd;
|
||
result.env = options.env;
|
||
result['windowsVerbatimArguments'] =
|
||
options.windowsVerbatimArguments || this._isCmdFile();
|
||
if (options.windowsVerbatimArguments) {
|
||
result.argv0 = `"${toolPath}"`;
|
||
}
|
||
return result;
|
||
}
|
||
/**
|
||
* Exec a tool.
|
||
* Output will be streamed to the live console.
|
||
* Returns promise with return code
|
||
*
|
||
* @param tool path to tool to exec
|
||
* @param options optional exec options. See ExecOptions
|
||
* @returns number
|
||
*/
|
||
exec() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// root the tool path if it is unrooted and contains relative pathing
|
||
if (!ioUtil.isRooted(this.toolPath) &&
|
||
(this.toolPath.includes('/') ||
|
||
(IS_WINDOWS && this.toolPath.includes('\\')))) {
|
||
// prefer options.cwd if it is specified, however options.cwd may also need to be rooted
|
||
this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath);
|
||
}
|
||
// if the tool is only a file name, then resolve it from the PATH
|
||
// otherwise verify it exists (add extension on Windows if necessary)
|
||
this.toolPath = yield io.which(this.toolPath, true);
|
||
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
||
this._debug(`exec tool: ${this.toolPath}`);
|
||
this._debug('arguments:');
|
||
for (const arg of this.args) {
|
||
this._debug(` ${arg}`);
|
||
}
|
||
const optionsNonNull = this._cloneExecOptions(this.options);
|
||
if (!optionsNonNull.silent && optionsNonNull.outStream) {
|
||
optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);
|
||
}
|
||
const state = new ExecState(optionsNonNull, this.toolPath);
|
||
state.on('debug', (message) => {
|
||
this._debug(message);
|
||
});
|
||
if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) {
|
||
return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`));
|
||
}
|
||
const fileName = this._getSpawnFileName();
|
||
const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));
|
||
let stdbuffer = '';
|
||
if (cp.stdout) {
|
||
cp.stdout.on('data', (data) => {
|
||
if (this.options.listeners && this.options.listeners.stdout) {
|
||
this.options.listeners.stdout(data);
|
||
}
|
||
if (!optionsNonNull.silent && optionsNonNull.outStream) {
|
||
optionsNonNull.outStream.write(data);
|
||
}
|
||
stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => {
|
||
if (this.options.listeners && this.options.listeners.stdline) {
|
||
this.options.listeners.stdline(line);
|
||
}
|
||
});
|
||
});
|
||
}
|
||
let errbuffer = '';
|
||
if (cp.stderr) {
|
||
cp.stderr.on('data', (data) => {
|
||
state.processStderr = true;
|
||
if (this.options.listeners && this.options.listeners.stderr) {
|
||
this.options.listeners.stderr(data);
|
||
}
|
||
if (!optionsNonNull.silent &&
|
||
optionsNonNull.errStream &&
|
||
optionsNonNull.outStream) {
|
||
const s = optionsNonNull.failOnStdErr
|
||
? optionsNonNull.errStream
|
||
: optionsNonNull.outStream;
|
||
s.write(data);
|
||
}
|
||
errbuffer = this._processLineBuffer(data, errbuffer, (line) => {
|
||
if (this.options.listeners && this.options.listeners.errline) {
|
||
this.options.listeners.errline(line);
|
||
}
|
||
});
|
||
});
|
||
}
|
||
cp.on('error', (err) => {
|
||
state.processError = err.message;
|
||
state.processExited = true;
|
||
state.processClosed = true;
|
||
state.CheckComplete();
|
||
});
|
||
cp.on('exit', (code) => {
|
||
state.processExitCode = code;
|
||
state.processExited = true;
|
||
this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);
|
||
state.CheckComplete();
|
||
});
|
||
cp.on('close', (code) => {
|
||
state.processExitCode = code;
|
||
state.processExited = true;
|
||
state.processClosed = true;
|
||
this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);
|
||
state.CheckComplete();
|
||
});
|
||
state.on('done', (error, exitCode) => {
|
||
if (stdbuffer.length > 0) {
|
||
this.emit('stdline', stdbuffer);
|
||
}
|
||
if (errbuffer.length > 0) {
|
||
this.emit('errline', errbuffer);
|
||
}
|
||
cp.removeAllListeners();
|
||
if (error) {
|
||
reject(error);
|
||
}
|
||
else {
|
||
resolve(exitCode);
|
||
}
|
||
});
|
||
if (this.options.input) {
|
||
if (!cp.stdin) {
|
||
throw new Error('child process missing stdin');
|
||
}
|
||
cp.stdin.end(this.options.input);
|
||
}
|
||
}));
|
||
});
|
||
}
|
||
}
|
||
exports.ToolRunner = ToolRunner;
|
||
/**
|
||
* Convert an arg string to an array of args. Handles escaping
|
||
*
|
||
* @param argString string of arguments
|
||
* @returns string[] array of arguments
|
||
*/
|
||
function argStringToArray(argString) {
|
||
const args = [];
|
||
let inQuotes = false;
|
||
let escaped = false;
|
||
let arg = '';
|
||
function append(c) {
|
||
// we only escape double quotes.
|
||
if (escaped && c !== '"') {
|
||
arg += '\\';
|
||
}
|
||
arg += c;
|
||
escaped = false;
|
||
}
|
||
for (let i = 0; i < argString.length; i++) {
|
||
const c = argString.charAt(i);
|
||
if (c === '"') {
|
||
if (!escaped) {
|
||
inQuotes = !inQuotes;
|
||
}
|
||
else {
|
||
append(c);
|
||
}
|
||
continue;
|
||
}
|
||
if (c === '\\' && escaped) {
|
||
append(c);
|
||
continue;
|
||
}
|
||
if (c === '\\' && inQuotes) {
|
||
escaped = true;
|
||
continue;
|
||
}
|
||
if (c === ' ' && !inQuotes) {
|
||
if (arg.length > 0) {
|
||
args.push(arg);
|
||
arg = '';
|
||
}
|
||
continue;
|
||
}
|
||
append(c);
|
||
}
|
||
if (arg.length > 0) {
|
||
args.push(arg.trim());
|
||
}
|
||
return args;
|
||
}
|
||
exports.argStringToArray = argStringToArray;
|
||
class ExecState extends events.EventEmitter {
|
||
constructor(options, toolPath) {
|
||
super();
|
||
this.processClosed = false; // tracks whether the process has exited and stdio is closed
|
||
this.processError = '';
|
||
this.processExitCode = 0;
|
||
this.processExited = false; // tracks whether the process has exited
|
||
this.processStderr = false; // tracks whether stderr was written to
|
||
this.delay = 10000; // 10 seconds
|
||
this.done = false;
|
||
this.timeout = null;
|
||
if (!toolPath) {
|
||
throw new Error('toolPath must not be empty');
|
||
}
|
||
this.options = options;
|
||
this.toolPath = toolPath;
|
||
if (options.delay) {
|
||
this.delay = options.delay;
|
||
}
|
||
}
|
||
CheckComplete() {
|
||
if (this.done) {
|
||
return;
|
||
}
|
||
if (this.processClosed) {
|
||
this._setResult();
|
||
}
|
||
else if (this.processExited) {
|
||
this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this);
|
||
}
|
||
}
|
||
_debug(message) {
|
||
this.emit('debug', message);
|
||
}
|
||
_setResult() {
|
||
// determine whether there is an error
|
||
let error;
|
||
if (this.processExited) {
|
||
if (this.processError) {
|
||
error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);
|
||
}
|
||
else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {
|
||
error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);
|
||
}
|
||
else if (this.processStderr && this.options.failOnStdErr) {
|
||
error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);
|
||
}
|
||
}
|
||
// clear the timeout
|
||
if (this.timeout) {
|
||
clearTimeout(this.timeout);
|
||
this.timeout = null;
|
||
}
|
||
this.done = true;
|
||
this.emit('done', error, this.processExitCode);
|
||
}
|
||
static HandleTimeout(state) {
|
||
if (state.done) {
|
||
return;
|
||
}
|
||
if (!state.processClosed && state.processExited) {
|
||
const message = `The STDIO streams did not close within ${state.delay /
|
||
1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;
|
||
state._debug(message);
|
||
}
|
||
state._setResult();
|
||
}
|
||
}
|
||
//# sourceMappingURL=toolrunner.js.map
|
||
|
||
/***/ }),
|
||
/* 10 */,
|
||
/* 11 */
|
||
/***/ (function(module) {
|
||
|
||
// Returns a wrapper function that returns a wrapped callback
|
||
// The wrapper function should do some stuff, and return a
|
||
// presumably different callback function.
|
||
// This makes sure that own properties are retained, so that
|
||
// decorations and such are not lost along the way.
|
||
module.exports = wrappy
|
||
function wrappy (fn, cb) {
|
||
if (fn && cb) return wrappy(fn)(cb)
|
||
|
||
if (typeof fn !== 'function')
|
||
throw new TypeError('need wrapper function')
|
||
|
||
Object.keys(fn).forEach(function (k) {
|
||
wrapper[k] = fn[k]
|
||
})
|
||
|
||
return wrapper
|
||
|
||
function wrapper() {
|
||
var args = new Array(arguments.length)
|
||
for (var i = 0; i < args.length; i++) {
|
||
args[i] = arguments[i]
|
||
}
|
||
var ret = fn.apply(this, args)
|
||
var cb = args[args.length-1]
|
||
if (typeof ret === 'function' && ret !== cb) {
|
||
Object.keys(cb).forEach(function (k) {
|
||
ret[k] = cb[k]
|
||
})
|
||
}
|
||
return ret
|
||
}
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 12 */,
|
||
/* 13 */,
|
||
/* 14 */,
|
||
/* 15 */
|
||
/***/ (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 __asyncValues = (this && this.__asyncValues) || function (o) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||
};
|
||
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 core = __importStar(__webpack_require__(470));
|
||
const exec = __importStar(__webpack_require__(986));
|
||
const glob = __importStar(__webpack_require__(299));
|
||
const io = __importStar(__webpack_require__(1));
|
||
const fs = __importStar(__webpack_require__(747));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const semver = __importStar(__webpack_require__(280));
|
||
const util = __importStar(__webpack_require__(669));
|
||
const uuid_1 = __webpack_require__(90);
|
||
const constants_1 = __webpack_require__(931);
|
||
// From https://github.com/actions/toolkit/blob/main/packages/tool-cache/src/tool-cache.ts#L23
|
||
function createTempDirectory() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
let tempDirectory = process.env['RUNNER_TEMP'] || '';
|
||
if (!tempDirectory) {
|
||
let baseLocation;
|
||
if (IS_WINDOWS) {
|
||
// On Windows use the USERPROFILE env variable
|
||
baseLocation = process.env['USERPROFILE'] || 'C:\\';
|
||
}
|
||
else {
|
||
if (process.platform === 'darwin') {
|
||
baseLocation = '/Users';
|
||
}
|
||
else {
|
||
baseLocation = '/home';
|
||
}
|
||
}
|
||
tempDirectory = path.join(baseLocation, 'actions', 'temp');
|
||
}
|
||
const dest = path.join(tempDirectory, uuid_1.v4());
|
||
yield io.mkdirP(dest);
|
||
return dest;
|
||
});
|
||
}
|
||
exports.createTempDirectory = createTempDirectory;
|
||
function getArchiveFileSizeIsBytes(filePath) {
|
||
return fs.statSync(filePath).size;
|
||
}
|
||
exports.getArchiveFileSizeIsBytes = getArchiveFileSizeIsBytes;
|
||
function resolvePaths(patterns) {
|
||
var e_1, _a;
|
||
var _b;
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const paths = [];
|
||
const workspace = (_b = process.env['GITHUB_WORKSPACE']) !== null && _b !== void 0 ? _b : process.cwd();
|
||
const globber = yield glob.create(patterns.join('\n'), {
|
||
implicitDescendants: false
|
||
});
|
||
try {
|
||
for (var _c = __asyncValues(globber.globGenerator()), _d; _d = yield _c.next(), !_d.done;) {
|
||
const file = _d.value;
|
||
const relativeFile = path
|
||
.relative(workspace, file)
|
||
.replace(new RegExp(`\\${path.sep}`, 'g'), '/');
|
||
core.debug(`Matched: ${relativeFile}`);
|
||
// Paths are made relative so the tar entries are all relative to the root of the workspace.
|
||
paths.push(`${relativeFile}`);
|
||
}
|
||
}
|
||
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
||
finally {
|
||
try {
|
||
if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);
|
||
}
|
||
finally { if (e_1) throw e_1.error; }
|
||
}
|
||
return paths;
|
||
});
|
||
}
|
||
exports.resolvePaths = resolvePaths;
|
||
function unlinkFile(filePath) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
return util.promisify(fs.unlink)(filePath);
|
||
});
|
||
}
|
||
exports.unlinkFile = unlinkFile;
|
||
function getVersion(app) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
core.debug(`Checking ${app} --version`);
|
||
let versionOutput = '';
|
||
try {
|
||
yield exec.exec(`${app} --version`, [], {
|
||
ignoreReturnCode: true,
|
||
silent: true,
|
||
listeners: {
|
||
stdout: (data) => (versionOutput += data.toString()),
|
||
stderr: (data) => (versionOutput += data.toString())
|
||
}
|
||
});
|
||
}
|
||
catch (err) {
|
||
core.debug(err.message);
|
||
}
|
||
versionOutput = versionOutput.trim();
|
||
core.debug(versionOutput);
|
||
return versionOutput;
|
||
});
|
||
}
|
||
// Use zstandard if possible to maximize cache performance
|
||
function getCompressionMethod() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if (process.platform === 'win32' && !(yield isGnuTarInstalled())) {
|
||
// Disable zstd due to bug https://github.com/actions/cache/issues/301
|
||
return constants_1.CompressionMethod.Gzip;
|
||
}
|
||
const versionOutput = yield getVersion('zstd');
|
||
const version = semver.clean(versionOutput);
|
||
if (!versionOutput.toLowerCase().includes('zstd command line interface')) {
|
||
// zstd is not installed
|
||
return constants_1.CompressionMethod.Gzip;
|
||
}
|
||
else if (!version || semver.lt(version, 'v1.3.2')) {
|
||
// zstd is installed but using a version earlier than v1.3.2
|
||
// v1.3.2 is required to use the `--long` options in zstd
|
||
return constants_1.CompressionMethod.ZstdWithoutLong;
|
||
}
|
||
else {
|
||
return constants_1.CompressionMethod.Zstd;
|
||
}
|
||
});
|
||
}
|
||
exports.getCompressionMethod = getCompressionMethod;
|
||
function getCacheFileName(compressionMethod) {
|
||
return compressionMethod === constants_1.CompressionMethod.Gzip
|
||
? constants_1.CacheFilename.Gzip
|
||
: constants_1.CacheFilename.Zstd;
|
||
}
|
||
exports.getCacheFileName = getCacheFileName;
|
||
function isGnuTarInstalled() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const versionOutput = yield getVersion('tar');
|
||
return versionOutput.toLowerCase().includes('gnu tar');
|
||
});
|
||
}
|
||
exports.isGnuTarInstalled = isGnuTarInstalled;
|
||
function assertDefined(name, value) {
|
||
if (value === undefined) {
|
||
throw Error(`Expected ${name} but value was undefiend`);
|
||
}
|
||
return value;
|
||
}
|
||
exports.assertDefined = assertDefined;
|
||
//# sourceMappingURL=cacheUtils.js.map
|
||
|
||
/***/ }),
|
||
/* 16 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("tls");
|
||
|
||
/***/ }),
|
||
/* 17 */,
|
||
/* 18 */
|
||
/***/ (function() {
|
||
|
||
eval("require")("encoding");
|
||
|
||
|
||
/***/ }),
|
||
/* 19 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = authenticationPlugin;
|
||
|
||
const { Deprecation } = __webpack_require__(692);
|
||
const once = __webpack_require__(969);
|
||
|
||
const deprecateAuthenticate = once((log, deprecation) => log.warn(deprecation));
|
||
|
||
const authenticate = __webpack_require__(674);
|
||
const beforeRequest = __webpack_require__(471);
|
||
const requestError = __webpack_require__(349);
|
||
|
||
function authenticationPlugin(octokit, options) {
|
||
if (options.auth) {
|
||
octokit.authenticate = () => {
|
||
deprecateAuthenticate(
|
||
octokit.log,
|
||
new Deprecation(
|
||
'[@octokit/rest] octokit.authenticate() is deprecated and has no effect when "auth" option is set on Octokit constructor'
|
||
)
|
||
);
|
||
};
|
||
return;
|
||
}
|
||
const state = {
|
||
octokit,
|
||
auth: false
|
||
};
|
||
octokit.authenticate = authenticate.bind(null, state);
|
||
octokit.hook.before("request", beforeRequest.bind(null, state));
|
||
octokit.hook.error("request", requestError.bind(null, state));
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 20 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const url = __webpack_require__(835);
|
||
function getProxyUrl(reqUrl) {
|
||
let usingSsl = reqUrl.protocol === 'https:';
|
||
let proxyUrl;
|
||
if (checkBypass(reqUrl)) {
|
||
return proxyUrl;
|
||
}
|
||
let proxyVar;
|
||
if (usingSsl) {
|
||
proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY'];
|
||
}
|
||
else {
|
||
proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY'];
|
||
}
|
||
if (proxyVar) {
|
||
proxyUrl = url.parse(proxyVar);
|
||
}
|
||
return proxyUrl;
|
||
}
|
||
exports.getProxyUrl = getProxyUrl;
|
||
function checkBypass(reqUrl) {
|
||
if (!reqUrl.hostname) {
|
||
return false;
|
||
}
|
||
let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
|
||
if (!noProxy) {
|
||
return false;
|
||
}
|
||
// Determine the request port
|
||
let reqPort;
|
||
if (reqUrl.port) {
|
||
reqPort = Number(reqUrl.port);
|
||
}
|
||
else if (reqUrl.protocol === 'http:') {
|
||
reqPort = 80;
|
||
}
|
||
else if (reqUrl.protocol === 'https:') {
|
||
reqPort = 443;
|
||
}
|
||
// Format the request hostname and hostname with port
|
||
let upperReqHosts = [reqUrl.hostname.toUpperCase()];
|
||
if (typeof reqPort === 'number') {
|
||
upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
|
||
}
|
||
// Compare request host against noproxy
|
||
for (let upperNoProxyItem of noProxy
|
||
.split(',')
|
||
.map(x => x.trim().toUpperCase())
|
||
.filter(x => x)) {
|
||
if (upperReqHosts.some(x => x === upperNoProxyItem)) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
exports.checkBypass = checkBypass;
|
||
|
||
|
||
/***/ }),
|
||
/* 21 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.PropagationAPI = void 0;
|
||
var NoopTextMapPropagator_1 = __webpack_require__(918);
|
||
var TextMapPropagator_1 = __webpack_require__(875);
|
||
var global_utils_1 = __webpack_require__(525);
|
||
var API_NAME = 'propagation';
|
||
/**
|
||
* Singleton object which represents the entry point to the OpenTelemetry Propagation API
|
||
*/
|
||
var PropagationAPI = /** @class */ (function () {
|
||
/** Empty private constructor prevents end users from constructing a new instance of the API */
|
||
function PropagationAPI() {
|
||
}
|
||
/** Get the singleton instance of the Propagator API */
|
||
PropagationAPI.getInstance = function () {
|
||
if (!this._instance) {
|
||
this._instance = new PropagationAPI();
|
||
}
|
||
return this._instance;
|
||
};
|
||
/**
|
||
* Set the current propagator. Returns the initialized propagator
|
||
*/
|
||
PropagationAPI.prototype.setGlobalPropagator = function (propagator) {
|
||
global_utils_1.registerGlobal(API_NAME, propagator);
|
||
return propagator;
|
||
};
|
||
/**
|
||
* Inject context into a carrier to be propagated inter-process
|
||
*
|
||
* @param context Context carrying tracing data to inject
|
||
* @param carrier carrier to inject context into
|
||
* @param setter Function used to set values on the carrier
|
||
*/
|
||
PropagationAPI.prototype.inject = function (context, carrier, setter) {
|
||
if (setter === void 0) { setter = TextMapPropagator_1.defaultTextMapSetter; }
|
||
return this._getGlobalPropagator().inject(context, carrier, setter);
|
||
};
|
||
/**
|
||
* Extract context from a carrier
|
||
*
|
||
* @param context Context which the newly created context will inherit from
|
||
* @param carrier Carrier to extract context from
|
||
* @param getter Function used to extract keys from a carrier
|
||
*/
|
||
PropagationAPI.prototype.extract = function (context, carrier, getter) {
|
||
if (getter === void 0) { getter = TextMapPropagator_1.defaultTextMapGetter; }
|
||
return this._getGlobalPropagator().extract(context, carrier, getter);
|
||
};
|
||
/**
|
||
* Return a list of all fields which may be used by the propagator.
|
||
*/
|
||
PropagationAPI.prototype.fields = function () {
|
||
return this._getGlobalPropagator().fields();
|
||
};
|
||
/** Remove the global propagator */
|
||
PropagationAPI.prototype.disable = function () {
|
||
global_utils_1.unregisterGlobal(API_NAME);
|
||
};
|
||
PropagationAPI.prototype._getGlobalPropagator = function () {
|
||
return global_utils_1.getGlobal(API_NAME) || NoopTextMapPropagator_1.NOOP_TEXT_MAP_PROPAGATOR;
|
||
};
|
||
return PropagationAPI;
|
||
}());
|
||
exports.PropagationAPI = PropagationAPI;
|
||
//# sourceMappingURL=propagation.js.map
|
||
|
||
/***/ }),
|
||
/* 22 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const http = __webpack_require__(605);
|
||
const https = __webpack_require__(211);
|
||
const pm = __webpack_require__(618);
|
||
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 = {}));
|
||
var Headers;
|
||
(function (Headers) {
|
||
Headers["Accept"] = "accept";
|
||
Headers["ContentType"] = "content-type";
|
||
})(Headers = exports.Headers || (exports.Headers = {}));
|
||
var MediaTypes;
|
||
(function (MediaTypes) {
|
||
MediaTypes["ApplicationJson"] = "application/json";
|
||
})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));
|
||
/**
|
||
* Returns the proxy URL, depending upon the supplied url and proxy environment variables.
|
||
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
|
||
*/
|
||
function getProxyUrl(serverUrl) {
|
||
let proxyUrl = pm.getProxyUrl(new URL(serverUrl));
|
||
return proxyUrl ? proxyUrl.href : '';
|
||
}
|
||
exports.getProxyUrl = getProxyUrl;
|
||
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 HttpClientError extends Error {
|
||
constructor(message, statusCode) {
|
||
super(message);
|
||
this.name = 'HttpClientError';
|
||
this.statusCode = statusCode;
|
||
Object.setPrototypeOf(this, HttpClientError.prototype);
|
||
}
|
||
}
|
||
exports.HttpClientError = HttpClientError;
|
||
class HttpClientResponse {
|
||
constructor(message) {
|
||
this.message = message;
|
||
}
|
||
readBody() {
|
||
return new Promise(async (resolve, reject) => {
|
||
let output = Buffer.alloc(0);
|
||
this.message.on('data', (chunk) => {
|
||
output = Buffer.concat([output, chunk]);
|
||
});
|
||
this.message.on('end', () => {
|
||
resolve(output.toString());
|
||
});
|
||
});
|
||
}
|
||
}
|
||
exports.HttpClientResponse = HttpClientResponse;
|
||
function isHttps(requestUrl) {
|
||
let parsedUrl = new URL(requestUrl);
|
||
return parsedUrl.protocol === 'https:';
|
||
}
|
||
exports.isHttps = isHttps;
|
||
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 || [];
|
||
this.requestOptions = requestOptions;
|
||
if (requestOptions) {
|
||
if (requestOptions.ignoreSslError != null) {
|
||
this._ignoreSslError = requestOptions.ignoreSslError;
|
||
}
|
||
this._socketTimeout = requestOptions.socketTimeout;
|
||
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);
|
||
}
|
||
/**
|
||
* Gets a typed object from an endpoint
|
||
* Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise
|
||
*/
|
||
async getJson(requestUrl, additionalHeaders = {}) {
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
let res = await this.get(requestUrl, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
async postJson(requestUrl, obj, additionalHeaders = {}) {
|
||
let data = JSON.stringify(obj, null, 2);
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
||
let res = await this.post(requestUrl, data, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
async putJson(requestUrl, obj, additionalHeaders = {}) {
|
||
let data = JSON.stringify(obj, null, 2);
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
||
let res = await this.put(requestUrl, data, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
async patchJson(requestUrl, obj, additionalHeaders = {}) {
|
||
let data = JSON.stringify(obj, null, 2);
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
||
let res = await this.patch(requestUrl, data, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
/**
|
||
* Makes a raw http request.
|
||
* All other methods such as get, post, patch, and request ultimately call this.
|
||
* Prefer get, del, post and patch
|
||
*/
|
||
async request(verb, requestUrl, data, headers) {
|
||
if (this._disposed) {
|
||
throw new Error('Client has already been disposed.');
|
||
}
|
||
let parsedUrl = new URL(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 = await 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 = new URL(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.
|
||
await response.readBody();
|
||
// strip authorization header if redirected to a different hostname
|
||
if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {
|
||
for (let header in headers) {
|
||
// header names are case insensitive
|
||
if (header.toLowerCase() === 'authorization') {
|
||
delete headers[header];
|
||
}
|
||
}
|
||
}
|
||
// let's make the request with the new redirectUrl
|
||
info = this._prepareRequest(verb, parsedRedirectUrl, headers);
|
||
response = await 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) {
|
||
await response.readBody();
|
||
await 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;
|
||
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();
|
||
}
|
||
}
|
||
/**
|
||
* Gets an http agent. This function is useful when you need an http agent that handles
|
||
* routing through a proxy server - depending upon the url and proxy environment variables.
|
||
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
|
||
*/
|
||
getAgent(serverUrl) {
|
||
let parsedUrl = new URL(serverUrl);
|
||
return this._getAgent(parsedUrl);
|
||
}
|
||
_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.handlers.forEach(handler => {
|
||
handler.prepareRequest(info.options);
|
||
});
|
||
}
|
||
return info;
|
||
}
|
||
_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 || {});
|
||
}
|
||
_getExistingOrDefaultHeader(additionalHeaders, header, _default) {
|
||
const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
|
||
let clientHeader;
|
||
if (this.requestOptions && this.requestOptions.headers) {
|
||
clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
|
||
}
|
||
return additionalHeaders[header] || clientHeader || _default;
|
||
}
|
||
_getAgent(parsedUrl) {
|
||
let agent;
|
||
let proxyUrl = pm.getProxyUrl(parsedUrl);
|
||
let useProxy = proxyUrl && proxyUrl.hostname;
|
||
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: {
|
||
...((proxyUrl.username || proxyUrl.password) && {
|
||
proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`
|
||
}),
|
||
host: proxyUrl.hostname,
|
||
port: proxyUrl.port
|
||
}
|
||
};
|
||
let tunnelAgent;
|
||
const overHttps = 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
|
||
});
|
||
}
|
||
return agent;
|
||
}
|
||
_performExponentialBackoff(retryNumber) {
|
||
retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
|
||
const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
|
||
return new Promise(resolve => setTimeout(() => resolve(), ms));
|
||
}
|
||
static dateTimeDeserializer(key, value) {
|
||
if (typeof value === 'string') {
|
||
let a = new Date(value);
|
||
if (!isNaN(a.valueOf())) {
|
||
return a;
|
||
}
|
||
}
|
||
return value;
|
||
}
|
||
async _processResponse(res, options) {
|
||
return new Promise(async (resolve, reject) => {
|
||
const statusCode = res.message.statusCode;
|
||
const response = {
|
||
statusCode: statusCode,
|
||
result: null,
|
||
headers: {}
|
||
};
|
||
// not found leads to null obj returned
|
||
if (statusCode == HttpCodes.NotFound) {
|
||
resolve(response);
|
||
}
|
||
let obj;
|
||
let contents;
|
||
// get the result from the body
|
||
try {
|
||
contents = await res.readBody();
|
||
if (contents && contents.length > 0) {
|
||
if (options && options.deserializeDates) {
|
||
obj = JSON.parse(contents, HttpClient.dateTimeDeserializer);
|
||
}
|
||
else {
|
||
obj = JSON.parse(contents);
|
||
}
|
||
response.result = obj;
|
||
}
|
||
response.headers = res.message.headers;
|
||
}
|
||
catch (err) {
|
||
// Invalid resource (contents not json); leaving result obj null
|
||
}
|
||
// note that 3xx redirects are handled by the http layer.
|
||
if (statusCode > 299) {
|
||
let msg;
|
||
// if exception/error in body, attempt to get better error
|
||
if (obj && obj.message) {
|
||
msg = obj.message;
|
||
}
|
||
else if (contents && contents.length > 0) {
|
||
// it may be the case that the exception is in the body message as string
|
||
msg = contents;
|
||
}
|
||
else {
|
||
msg = 'Failed request: (' + statusCode + ')';
|
||
}
|
||
let err = new HttpClientError(msg, statusCode);
|
||
err.result = response.result;
|
||
reject(err);
|
||
}
|
||
else {
|
||
resolve(response);
|
||
}
|
||
});
|
||
}
|
||
}
|
||
exports.HttpClient = HttpClient;
|
||
|
||
|
||
/***/ }),
|
||
/* 23 */,
|
||
/* 24 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
var _default = '00000000-0000-0000-0000-000000000000';
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 25 */,
|
||
/* 26 */,
|
||
/* 27 */,
|
||
/* 28 */,
|
||
/* 29 */,
|
||
/* 30 */,
|
||
/* 31 */
|
||
/***/ (function(module, 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 semver = __importStar(__webpack_require__(280));
|
||
const core_1 = __webpack_require__(902);
|
||
// needs to be require for core node modules to be mocked
|
||
/* eslint @typescript-eslint/no-require-imports: 0 */
|
||
const os = __webpack_require__(87);
|
||
const cp = __webpack_require__(129);
|
||
const fs = __webpack_require__(747);
|
||
function _findMatch(versionSpec, stable, candidates, archFilter) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const platFilter = os.platform();
|
||
let result;
|
||
let match;
|
||
let file;
|
||
for (const candidate of candidates) {
|
||
const version = candidate.version;
|
||
core_1.debug(`check ${version} satisfies ${versionSpec}`);
|
||
if (semver.satisfies(version, versionSpec) &&
|
||
(!stable || candidate.stable === stable)) {
|
||
file = candidate.files.find(item => {
|
||
core_1.debug(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);
|
||
let chk = item.arch === archFilter && item.platform === platFilter;
|
||
if (chk && item.platform_version) {
|
||
const osVersion = module.exports._getOsVersion();
|
||
if (osVersion === item.platform_version) {
|
||
chk = true;
|
||
}
|
||
else {
|
||
chk = semver.satisfies(osVersion, item.platform_version);
|
||
}
|
||
}
|
||
return chk;
|
||
});
|
||
if (file) {
|
||
core_1.debug(`matched ${candidate.version}`);
|
||
match = candidate;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if (match && file) {
|
||
// clone since we're mutating the file list to be only the file that matches
|
||
result = Object.assign({}, match);
|
||
result.files = [file];
|
||
}
|
||
return result;
|
||
});
|
||
}
|
||
exports._findMatch = _findMatch;
|
||
function _getOsVersion() {
|
||
// TODO: add windows and other linux, arm variants
|
||
// right now filtering on version is only an ubuntu and macos scenario for tools we build for hosted (python)
|
||
const plat = os.platform();
|
||
let version = '';
|
||
if (plat === 'darwin') {
|
||
version = cp.execSync('sw_vers -productVersion').toString();
|
||
}
|
||
else if (plat === 'linux') {
|
||
// lsb_release process not in some containers, readfile
|
||
// Run cat /etc/lsb-release
|
||
// DISTRIB_ID=Ubuntu
|
||
// DISTRIB_RELEASE=18.04
|
||
// DISTRIB_CODENAME=bionic
|
||
// DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
|
||
const lsbContents = module.exports._readLinuxVersionFile();
|
||
if (lsbContents) {
|
||
const lines = lsbContents.split('\n');
|
||
for (const line of lines) {
|
||
const parts = line.split('=');
|
||
if (parts.length === 2 && parts[0].trim() === 'DISTRIB_RELEASE') {
|
||
version = parts[1].trim();
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return version;
|
||
}
|
||
exports._getOsVersion = _getOsVersion;
|
||
function _readLinuxVersionFile() {
|
||
const lsbFile = '/etc/lsb-release';
|
||
let contents = '';
|
||
if (fs.existsSync(lsbFile)) {
|
||
contents = fs.readFileSync(lsbFile).toString();
|
||
}
|
||
return contents;
|
||
}
|
||
exports._readLinuxVersionFile = _readLinuxVersionFile;
|
||
//# sourceMappingURL=manifest.js.map
|
||
|
||
/***/ }),
|
||
/* 32 */,
|
||
/* 33 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.Path = void 0;
|
||
const path = __importStar(__webpack_require__(622));
|
||
const pathHelper = __importStar(__webpack_require__(653));
|
||
const assert_1 = __importDefault(__webpack_require__(357));
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
/**
|
||
* Helper class for parsing paths into segments
|
||
*/
|
||
class Path {
|
||
/**
|
||
* Constructs a Path
|
||
* @param itemPath Path or array of segments
|
||
*/
|
||
constructor(itemPath) {
|
||
this.segments = [];
|
||
// String
|
||
if (typeof itemPath === 'string') {
|
||
assert_1.default(itemPath, `Parameter 'itemPath' must not be empty`);
|
||
// Normalize slashes and trim unnecessary trailing slash
|
||
itemPath = pathHelper.safeTrimTrailingSeparator(itemPath);
|
||
// Not rooted
|
||
if (!pathHelper.hasRoot(itemPath)) {
|
||
this.segments = itemPath.split(path.sep);
|
||
}
|
||
// Rooted
|
||
else {
|
||
// Add all segments, while not at the root
|
||
let remaining = itemPath;
|
||
let dir = pathHelper.dirname(remaining);
|
||
while (dir !== remaining) {
|
||
// Add the segment
|
||
const basename = path.basename(remaining);
|
||
this.segments.unshift(basename);
|
||
// Truncate the last segment
|
||
remaining = dir;
|
||
dir = pathHelper.dirname(remaining);
|
||
}
|
||
// Remainder is the root
|
||
this.segments.unshift(remaining);
|
||
}
|
||
}
|
||
// Array
|
||
else {
|
||
// Must not be empty
|
||
assert_1.default(itemPath.length > 0, `Parameter 'itemPath' must not be an empty array`);
|
||
// Each segment
|
||
for (let i = 0; i < itemPath.length; i++) {
|
||
let segment = itemPath[i];
|
||
// Must not be empty
|
||
assert_1.default(segment, `Parameter 'itemPath' must not contain any empty segments`);
|
||
// Normalize slashes
|
||
segment = pathHelper.normalizeSeparators(itemPath[i]);
|
||
// Root segment
|
||
if (i === 0 && pathHelper.hasRoot(segment)) {
|
||
segment = pathHelper.safeTrimTrailingSeparator(segment);
|
||
assert_1.default(segment === pathHelper.dirname(segment), `Parameter 'itemPath' root segment contains information for multiple segments`);
|
||
this.segments.push(segment);
|
||
}
|
||
// All other segments
|
||
else {
|
||
// Must not contain slash
|
||
assert_1.default(!segment.includes(path.sep), `Parameter 'itemPath' contains unexpected path separators`);
|
||
this.segments.push(segment);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
/**
|
||
* Converts the path to it's string representation
|
||
*/
|
||
toString() {
|
||
// First segment
|
||
let result = this.segments[0];
|
||
// All others
|
||
let skipSlash = result.endsWith(path.sep) || (IS_WINDOWS && /^[A-Z]:$/i.test(result));
|
||
for (let i = 1; i < this.segments.length; i++) {
|
||
if (skipSlash) {
|
||
skipSlash = false;
|
||
}
|
||
else {
|
||
result += path.sep;
|
||
}
|
||
result += this.segments[i];
|
||
}
|
||
return result;
|
||
}
|
||
}
|
||
exports.Path = Path;
|
||
//# sourceMappingURL=internal-path.js.map
|
||
|
||
/***/ }),
|
||
/* 34 */,
|
||
/* 35 */,
|
||
/* 36 */,
|
||
/* 37 */,
|
||
/* 38 */,
|
||
/* 39 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
module.exports = opts => {
|
||
opts = opts || {};
|
||
|
||
const env = opts.env || process.env;
|
||
const platform = opts.platform || process.platform;
|
||
|
||
if (platform !== 'win32') {
|
||
return 'PATH';
|
||
}
|
||
|
||
return Object.keys(env).find(x => x.toUpperCase() === 'PATH') || 'Path';
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 40 */,
|
||
/* 41 */,
|
||
/* 42 */,
|
||
/* 43 */,
|
||
/* 44 */,
|
||
/* 45 */,
|
||
/* 46 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = getUserAgentNode
|
||
|
||
const osName = __webpack_require__(2)
|
||
|
||
function getUserAgentNode () {
|
||
try {
|
||
return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`
|
||
} catch (error) {
|
||
if (/wmic os get Caption/.test(error.message)) {
|
||
return 'Windows <version undetectable>'
|
||
}
|
||
|
||
throw error
|
||
}
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 47 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = factory;
|
||
|
||
const Octokit = __webpack_require__(402);
|
||
const registerPlugin = __webpack_require__(855);
|
||
|
||
function factory(plugins) {
|
||
const Api = Octokit.bind(null, plugins || []);
|
||
Api.plugin = registerPlugin.bind(null, plugins || []);
|
||
return Api;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 48 */
|
||
/***/ (function(module, exports) {
|
||
|
||
exports = module.exports = SemVer
|
||
|
||
var debug
|
||
/* istanbul ignore next */
|
||
if (typeof process === 'object' &&
|
||
process.env &&
|
||
process.env.NODE_DEBUG &&
|
||
/\bsemver\b/i.test(process.env.NODE_DEBUG)) {
|
||
debug = function () {
|
||
var args = Array.prototype.slice.call(arguments, 0)
|
||
args.unshift('SEMVER')
|
||
console.log.apply(console, args)
|
||
}
|
||
} else {
|
||
debug = function () {}
|
||
}
|
||
|
||
// Note: this is the semver.org version of the spec that it implements
|
||
// Not necessarily the package version of this code.
|
||
exports.SEMVER_SPEC_VERSION = '2.0.0'
|
||
|
||
var MAX_LENGTH = 256
|
||
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
|
||
/* istanbul ignore next */ 9007199254740991
|
||
|
||
// Max safe segment length for coercion.
|
||
var MAX_SAFE_COMPONENT_LENGTH = 16
|
||
|
||
// The actual regexps go on exports.re
|
||
var re = exports.re = []
|
||
var src = exports.src = []
|
||
var R = 0
|
||
|
||
// The following Regular Expressions can be used for tokenizing,
|
||
// validating, and parsing SemVer version strings.
|
||
|
||
// ## Numeric Identifier
|
||
// A single `0`, or a non-zero digit followed by zero or more digits.
|
||
|
||
var NUMERICIDENTIFIER = R++
|
||
src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
|
||
var NUMERICIDENTIFIERLOOSE = R++
|
||
src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'
|
||
|
||
// ## Non-numeric Identifier
|
||
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
||
// more letters, digits, or hyphens.
|
||
|
||
var NONNUMERICIDENTIFIER = R++
|
||
src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
|
||
|
||
// ## Main Version
|
||
// Three dot-separated numeric identifiers.
|
||
|
||
var MAINVERSION = R++
|
||
src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
|
||
'(' + src[NUMERICIDENTIFIER] + ')\\.' +
|
||
'(' + src[NUMERICIDENTIFIER] + ')'
|
||
|
||
var MAINVERSIONLOOSE = R++
|
||
src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
|
||
'(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
|
||
'(' + src[NUMERICIDENTIFIERLOOSE] + ')'
|
||
|
||
// ## Pre-release Version Identifier
|
||
// A numeric identifier, or a non-numeric identifier.
|
||
|
||
var PRERELEASEIDENTIFIER = R++
|
||
src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
|
||
'|' + src[NONNUMERICIDENTIFIER] + ')'
|
||
|
||
var PRERELEASEIDENTIFIERLOOSE = R++
|
||
src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
|
||
'|' + src[NONNUMERICIDENTIFIER] + ')'
|
||
|
||
// ## Pre-release Version
|
||
// Hyphen, followed by one or more dot-separated pre-release version
|
||
// identifiers.
|
||
|
||
var PRERELEASE = R++
|
||
src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
|
||
'(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
|
||
|
||
var PRERELEASELOOSE = R++
|
||
src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
|
||
'(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
|
||
|
||
// ## Build Metadata Identifier
|
||
// Any combination of digits, letters, or hyphens.
|
||
|
||
var BUILDIDENTIFIER = R++
|
||
src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
|
||
|
||
// ## Build Metadata
|
||
// Plus sign, followed by one or more period-separated build metadata
|
||
// identifiers.
|
||
|
||
var BUILD = R++
|
||
src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
|
||
'(?:\\.' + src[BUILDIDENTIFIER] + ')*))'
|
||
|
||
// ## Full Version String
|
||
// A main version, followed optionally by a pre-release version and
|
||
// build metadata.
|
||
|
||
// Note that the only major, minor, patch, and pre-release sections of
|
||
// the version string are capturing groups. The build metadata is not a
|
||
// capturing group, because it should not ever be used in version
|
||
// comparison.
|
||
|
||
var FULL = R++
|
||
var FULLPLAIN = 'v?' + src[MAINVERSION] +
|
||
src[PRERELEASE] + '?' +
|
||
src[BUILD] + '?'
|
||
|
||
src[FULL] = '^' + FULLPLAIN + '$'
|
||
|
||
// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
|
||
// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
|
||
// common in the npm registry.
|
||
var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
|
||
src[PRERELEASELOOSE] + '?' +
|
||
src[BUILD] + '?'
|
||
|
||
var LOOSE = R++
|
||
src[LOOSE] = '^' + LOOSEPLAIN + '$'
|
||
|
||
var GTLT = R++
|
||
src[GTLT] = '((?:<|>)?=?)'
|
||
|
||
// Something like "2.*" or "1.2.x".
|
||
// Note that "x.x" is a valid xRange identifer, meaning "any version"
|
||
// Only the first item is strictly required.
|
||
var XRANGEIDENTIFIERLOOSE = R++
|
||
src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
|
||
var XRANGEIDENTIFIER = R++
|
||
src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'
|
||
|
||
var XRANGEPLAIN = R++
|
||
src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
|
||
'(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
|
||
'(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
|
||
'(?:' + src[PRERELEASE] + ')?' +
|
||
src[BUILD] + '?' +
|
||
')?)?'
|
||
|
||
var XRANGEPLAINLOOSE = R++
|
||
src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
|
||
'(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
|
||
'(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
|
||
'(?:' + src[PRERELEASELOOSE] + ')?' +
|
||
src[BUILD] + '?' +
|
||
')?)?'
|
||
|
||
var XRANGE = R++
|
||
src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
|
||
var XRANGELOOSE = R++
|
||
src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
|
||
|
||
// Coercion.
|
||
// Extract anything that could conceivably be a part of a valid semver
|
||
var COERCE = R++
|
||
src[COERCE] = '(?:^|[^\\d])' +
|
||
'(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
|
||
'(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
|
||
'(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
|
||
'(?:$|[^\\d])'
|
||
|
||
// Tilde ranges.
|
||
// Meaning is "reasonably at or greater than"
|
||
var LONETILDE = R++
|
||
src[LONETILDE] = '(?:~>?)'
|
||
|
||
var TILDETRIM = R++
|
||
src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
|
||
re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
|
||
var tildeTrimReplace = '$1~'
|
||
|
||
var TILDE = R++
|
||
src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
|
||
var TILDELOOSE = R++
|
||
src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
|
||
|
||
// Caret ranges.
|
||
// Meaning is "at least and backwards compatible with"
|
||
var LONECARET = R++
|
||
src[LONECARET] = '(?:\\^)'
|
||
|
||
var CARETTRIM = R++
|
||
src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
|
||
re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
|
||
var caretTrimReplace = '$1^'
|
||
|
||
var CARET = R++
|
||
src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'
|
||
var CARETLOOSE = R++
|
||
src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'
|
||
|
||
// A simple gt/lt/eq thing, or just "" to indicate "any version"
|
||
var COMPARATORLOOSE = R++
|
||
src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'
|
||
var COMPARATOR = R++
|
||
src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'
|
||
|
||
// An expression to strip any whitespace between the gtlt and the thing
|
||
// it modifies, so that `> 1.2.3` ==> `>1.2.3`
|
||
var COMPARATORTRIM = R++
|
||
src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
|
||
'\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'
|
||
|
||
// this one has to use the /g flag
|
||
re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')
|
||
var comparatorTrimReplace = '$1$2$3'
|
||
|
||
// Something like `1.2.3 - 1.2.4`
|
||
// Note that these all use the loose form, because they'll be
|
||
// checked against either the strict or loose comparator form
|
||
// later.
|
||
var HYPHENRANGE = R++
|
||
src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
|
||
'\\s+-\\s+' +
|
||
'(' + src[XRANGEPLAIN] + ')' +
|
||
'\\s*$'
|
||
|
||
var HYPHENRANGELOOSE = R++
|
||
src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
|
||
'\\s+-\\s+' +
|
||
'(' + src[XRANGEPLAINLOOSE] + ')' +
|
||
'\\s*$'
|
||
|
||
// Star ranges basically just allow anything at all.
|
||
var STAR = R++
|
||
src[STAR] = '(<|>)?=?\\s*\\*'
|
||
|
||
// Compile to actual regexp objects.
|
||
// All are flag-free, unless they were created above with a flag.
|
||
for (var i = 0; i < R; i++) {
|
||
debug(i, src[i])
|
||
if (!re[i]) {
|
||
re[i] = new RegExp(src[i])
|
||
}
|
||
}
|
||
|
||
exports.parse = parse
|
||
function parse (version, options) {
|
||
if (!options || typeof options !== 'object') {
|
||
options = {
|
||
loose: !!options,
|
||
includePrerelease: false
|
||
}
|
||
}
|
||
|
||
if (version instanceof SemVer) {
|
||
return version
|
||
}
|
||
|
||
if (typeof version !== 'string') {
|
||
return null
|
||
}
|
||
|
||
if (version.length > MAX_LENGTH) {
|
||
return null
|
||
}
|
||
|
||
var r = options.loose ? re[LOOSE] : re[FULL]
|
||
if (!r.test(version)) {
|
||
return null
|
||
}
|
||
|
||
try {
|
||
return new SemVer(version, options)
|
||
} catch (er) {
|
||
return null
|
||
}
|
||
}
|
||
|
||
exports.valid = valid
|
||
function valid (version, options) {
|
||
var v = parse(version, options)
|
||
return v ? v.version : null
|
||
}
|
||
|
||
exports.clean = clean
|
||
function clean (version, options) {
|
||
var s = parse(version.trim().replace(/^[=v]+/, ''), options)
|
||
return s ? s.version : null
|
||
}
|
||
|
||
exports.SemVer = SemVer
|
||
|
||
function SemVer (version, options) {
|
||
if (!options || typeof options !== 'object') {
|
||
options = {
|
||
loose: !!options,
|
||
includePrerelease: false
|
||
}
|
||
}
|
||
if (version instanceof SemVer) {
|
||
if (version.loose === options.loose) {
|
||
return version
|
||
} else {
|
||
version = version.version
|
||
}
|
||
} else if (typeof version !== 'string') {
|
||
throw new TypeError('Invalid Version: ' + version)
|
||
}
|
||
|
||
if (version.length > MAX_LENGTH) {
|
||
throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
|
||
}
|
||
|
||
if (!(this instanceof SemVer)) {
|
||
return new SemVer(version, options)
|
||
}
|
||
|
||
debug('SemVer', version, options)
|
||
this.options = options
|
||
this.loose = !!options.loose
|
||
|
||
var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])
|
||
|
||
if (!m) {
|
||
throw new TypeError('Invalid Version: ' + version)
|
||
}
|
||
|
||
this.raw = version
|
||
|
||
// these are actually numbers
|
||
this.major = +m[1]
|
||
this.minor = +m[2]
|
||
this.patch = +m[3]
|
||
|
||
if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
|
||
throw new TypeError('Invalid major version')
|
||
}
|
||
|
||
if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
|
||
throw new TypeError('Invalid minor version')
|
||
}
|
||
|
||
if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
|
||
throw new TypeError('Invalid patch version')
|
||
}
|
||
|
||
// numberify any prerelease numeric ids
|
||
if (!m[4]) {
|
||
this.prerelease = []
|
||
} else {
|
||
this.prerelease = m[4].split('.').map(function (id) {
|
||
if (/^[0-9]+$/.test(id)) {
|
||
var num = +id
|
||
if (num >= 0 && num < MAX_SAFE_INTEGER) {
|
||
return num
|
||
}
|
||
}
|
||
return id
|
||
})
|
||
}
|
||
|
||
this.build = m[5] ? m[5].split('.') : []
|
||
this.format()
|
||
}
|
||
|
||
SemVer.prototype.format = function () {
|
||
this.version = this.major + '.' + this.minor + '.' + this.patch
|
||
if (this.prerelease.length) {
|
||
this.version += '-' + this.prerelease.join('.')
|
||
}
|
||
return this.version
|
||
}
|
||
|
||
SemVer.prototype.toString = function () {
|
||
return this.version
|
||
}
|
||
|
||
SemVer.prototype.compare = function (other) {
|
||
debug('SemVer.compare', this.version, this.options, other)
|
||
if (!(other instanceof SemVer)) {
|
||
other = new SemVer(other, this.options)
|
||
}
|
||
|
||
return this.compareMain(other) || this.comparePre(other)
|
||
}
|
||
|
||
SemVer.prototype.compareMain = function (other) {
|
||
if (!(other instanceof SemVer)) {
|
||
other = new SemVer(other, this.options)
|
||
}
|
||
|
||
return compareIdentifiers(this.major, other.major) ||
|
||
compareIdentifiers(this.minor, other.minor) ||
|
||
compareIdentifiers(this.patch, other.patch)
|
||
}
|
||
|
||
SemVer.prototype.comparePre = function (other) {
|
||
if (!(other instanceof SemVer)) {
|
||
other = new SemVer(other, this.options)
|
||
}
|
||
|
||
// NOT having a prerelease is > having one
|
||
if (this.prerelease.length && !other.prerelease.length) {
|
||
return -1
|
||
} else if (!this.prerelease.length && other.prerelease.length) {
|
||
return 1
|
||
} else if (!this.prerelease.length && !other.prerelease.length) {
|
||
return 0
|
||
}
|
||
|
||
var i = 0
|
||
do {
|
||
var a = this.prerelease[i]
|
||
var b = other.prerelease[i]
|
||
debug('prerelease compare', i, a, b)
|
||
if (a === undefined && b === undefined) {
|
||
return 0
|
||
} else if (b === undefined) {
|
||
return 1
|
||
} else if (a === undefined) {
|
||
return -1
|
||
} else if (a === b) {
|
||
continue
|
||
} else {
|
||
return compareIdentifiers(a, b)
|
||
}
|
||
} while (++i)
|
||
}
|
||
|
||
// preminor will bump the version up to the next minor release, and immediately
|
||
// down to pre-release. premajor and prepatch work the same way.
|
||
SemVer.prototype.inc = function (release, identifier) {
|
||
switch (release) {
|
||
case 'premajor':
|
||
this.prerelease.length = 0
|
||
this.patch = 0
|
||
this.minor = 0
|
||
this.major++
|
||
this.inc('pre', identifier)
|
||
break
|
||
case 'preminor':
|
||
this.prerelease.length = 0
|
||
this.patch = 0
|
||
this.minor++
|
||
this.inc('pre', identifier)
|
||
break
|
||
case 'prepatch':
|
||
// If this is already a prerelease, it will bump to the next version
|
||
// drop any prereleases that might already exist, since they are not
|
||
// relevant at this point.
|
||
this.prerelease.length = 0
|
||
this.inc('patch', identifier)
|
||
this.inc('pre', identifier)
|
||
break
|
||
// If the input is a non-prerelease version, this acts the same as
|
||
// prepatch.
|
||
case 'prerelease':
|
||
if (this.prerelease.length === 0) {
|
||
this.inc('patch', identifier)
|
||
}
|
||
this.inc('pre', identifier)
|
||
break
|
||
|
||
case 'major':
|
||
// If this is a pre-major version, bump up to the same major version.
|
||
// Otherwise increment major.
|
||
// 1.0.0-5 bumps to 1.0.0
|
||
// 1.1.0 bumps to 2.0.0
|
||
if (this.minor !== 0 ||
|
||
this.patch !== 0 ||
|
||
this.prerelease.length === 0) {
|
||
this.major++
|
||
}
|
||
this.minor = 0
|
||
this.patch = 0
|
||
this.prerelease = []
|
||
break
|
||
case 'minor':
|
||
// If this is a pre-minor version, bump up to the same minor version.
|
||
// Otherwise increment minor.
|
||
// 1.2.0-5 bumps to 1.2.0
|
||
// 1.2.1 bumps to 1.3.0
|
||
if (this.patch !== 0 || this.prerelease.length === 0) {
|
||
this.minor++
|
||
}
|
||
this.patch = 0
|
||
this.prerelease = []
|
||
break
|
||
case 'patch':
|
||
// If this is not a pre-release version, it will increment the patch.
|
||
// If it is a pre-release it will bump up to the same patch version.
|
||
// 1.2.0-5 patches to 1.2.0
|
||
// 1.2.0 patches to 1.2.1
|
||
if (this.prerelease.length === 0) {
|
||
this.patch++
|
||
}
|
||
this.prerelease = []
|
||
break
|
||
// This probably shouldn't be used publicly.
|
||
// 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
|
||
case 'pre':
|
||
if (this.prerelease.length === 0) {
|
||
this.prerelease = [0]
|
||
} else {
|
||
var i = this.prerelease.length
|
||
while (--i >= 0) {
|
||
if (typeof this.prerelease[i] === 'number') {
|
||
this.prerelease[i]++
|
||
i = -2
|
||
}
|
||
}
|
||
if (i === -1) {
|
||
// didn't increment anything
|
||
this.prerelease.push(0)
|
||
}
|
||
}
|
||
if (identifier) {
|
||
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
|
||
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
|
||
if (this.prerelease[0] === identifier) {
|
||
if (isNaN(this.prerelease[1])) {
|
||
this.prerelease = [identifier, 0]
|
||
}
|
||
} else {
|
||
this.prerelease = [identifier, 0]
|
||
}
|
||
}
|
||
break
|
||
|
||
default:
|
||
throw new Error('invalid increment argument: ' + release)
|
||
}
|
||
this.format()
|
||
this.raw = this.version
|
||
return this
|
||
}
|
||
|
||
exports.inc = inc
|
||
function inc (version, release, loose, identifier) {
|
||
if (typeof (loose) === 'string') {
|
||
identifier = loose
|
||
loose = undefined
|
||
}
|
||
|
||
try {
|
||
return new SemVer(version, loose).inc(release, identifier).version
|
||
} catch (er) {
|
||
return null
|
||
}
|
||
}
|
||
|
||
exports.diff = diff
|
||
function diff (version1, version2) {
|
||
if (eq(version1, version2)) {
|
||
return null
|
||
} else {
|
||
var v1 = parse(version1)
|
||
var v2 = parse(version2)
|
||
var prefix = ''
|
||
if (v1.prerelease.length || v2.prerelease.length) {
|
||
prefix = 'pre'
|
||
var defaultResult = 'prerelease'
|
||
}
|
||
for (var key in v1) {
|
||
if (key === 'major' || key === 'minor' || key === 'patch') {
|
||
if (v1[key] !== v2[key]) {
|
||
return prefix + key
|
||
}
|
||
}
|
||
}
|
||
return defaultResult // may be undefined
|
||
}
|
||
}
|
||
|
||
exports.compareIdentifiers = compareIdentifiers
|
||
|
||
var numeric = /^[0-9]+$/
|
||
function compareIdentifiers (a, b) {
|
||
var anum = numeric.test(a)
|
||
var bnum = numeric.test(b)
|
||
|
||
if (anum && bnum) {
|
||
a = +a
|
||
b = +b
|
||
}
|
||
|
||
return a === b ? 0
|
||
: (anum && !bnum) ? -1
|
||
: (bnum && !anum) ? 1
|
||
: a < b ? -1
|
||
: 1
|
||
}
|
||
|
||
exports.rcompareIdentifiers = rcompareIdentifiers
|
||
function rcompareIdentifiers (a, b) {
|
||
return compareIdentifiers(b, a)
|
||
}
|
||
|
||
exports.major = major
|
||
function major (a, loose) {
|
||
return new SemVer(a, loose).major
|
||
}
|
||
|
||
exports.minor = minor
|
||
function minor (a, loose) {
|
||
return new SemVer(a, loose).minor
|
||
}
|
||
|
||
exports.patch = patch
|
||
function patch (a, loose) {
|
||
return new SemVer(a, loose).patch
|
||
}
|
||
|
||
exports.compare = compare
|
||
function compare (a, b, loose) {
|
||
return new SemVer(a, loose).compare(new SemVer(b, loose))
|
||
}
|
||
|
||
exports.compareLoose = compareLoose
|
||
function compareLoose (a, b) {
|
||
return compare(a, b, true)
|
||
}
|
||
|
||
exports.rcompare = rcompare
|
||
function rcompare (a, b, loose) {
|
||
return compare(b, a, loose)
|
||
}
|
||
|
||
exports.sort = sort
|
||
function sort (list, loose) {
|
||
return list.sort(function (a, b) {
|
||
return exports.compare(a, b, loose)
|
||
})
|
||
}
|
||
|
||
exports.rsort = rsort
|
||
function rsort (list, loose) {
|
||
return list.sort(function (a, b) {
|
||
return exports.rcompare(a, b, loose)
|
||
})
|
||
}
|
||
|
||
exports.gt = gt
|
||
function gt (a, b, loose) {
|
||
return compare(a, b, loose) > 0
|
||
}
|
||
|
||
exports.lt = lt
|
||
function lt (a, b, loose) {
|
||
return compare(a, b, loose) < 0
|
||
}
|
||
|
||
exports.eq = eq
|
||
function eq (a, b, loose) {
|
||
return compare(a, b, loose) === 0
|
||
}
|
||
|
||
exports.neq = neq
|
||
function neq (a, b, loose) {
|
||
return compare(a, b, loose) !== 0
|
||
}
|
||
|
||
exports.gte = gte
|
||
function gte (a, b, loose) {
|
||
return compare(a, b, loose) >= 0
|
||
}
|
||
|
||
exports.lte = lte
|
||
function lte (a, b, loose) {
|
||
return compare(a, b, loose) <= 0
|
||
}
|
||
|
||
exports.cmp = cmp
|
||
function cmp (a, op, b, loose) {
|
||
switch (op) {
|
||
case '===':
|
||
if (typeof a === 'object')
|
||
a = a.version
|
||
if (typeof b === 'object')
|
||
b = b.version
|
||
return a === b
|
||
|
||
case '!==':
|
||
if (typeof a === 'object')
|
||
a = a.version
|
||
if (typeof b === 'object')
|
||
b = b.version
|
||
return a !== b
|
||
|
||
case '':
|
||
case '=':
|
||
case '==':
|
||
return eq(a, b, loose)
|
||
|
||
case '!=':
|
||
return neq(a, b, loose)
|
||
|
||
case '>':
|
||
return gt(a, b, loose)
|
||
|
||
case '>=':
|
||
return gte(a, b, loose)
|
||
|
||
case '<':
|
||
return lt(a, b, loose)
|
||
|
||
case '<=':
|
||
return lte(a, b, loose)
|
||
|
||
default:
|
||
throw new TypeError('Invalid operator: ' + op)
|
||
}
|
||
}
|
||
|
||
exports.Comparator = Comparator
|
||
function Comparator (comp, options) {
|
||
if (!options || typeof options !== 'object') {
|
||
options = {
|
||
loose: !!options,
|
||
includePrerelease: false
|
||
}
|
||
}
|
||
|
||
if (comp instanceof Comparator) {
|
||
if (comp.loose === !!options.loose) {
|
||
return comp
|
||
} else {
|
||
comp = comp.value
|
||
}
|
||
}
|
||
|
||
if (!(this instanceof Comparator)) {
|
||
return new Comparator(comp, options)
|
||
}
|
||
|
||
debug('comparator', comp, options)
|
||
this.options = options
|
||
this.loose = !!options.loose
|
||
this.parse(comp)
|
||
|
||
if (this.semver === ANY) {
|
||
this.value = ''
|
||
} else {
|
||
this.value = this.operator + this.semver.version
|
||
}
|
||
|
||
debug('comp', this)
|
||
}
|
||
|
||
var ANY = {}
|
||
Comparator.prototype.parse = function (comp) {
|
||
var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
|
||
var m = comp.match(r)
|
||
|
||
if (!m) {
|
||
throw new TypeError('Invalid comparator: ' + comp)
|
||
}
|
||
|
||
this.operator = m[1]
|
||
if (this.operator === '=') {
|
||
this.operator = ''
|
||
}
|
||
|
||
// if it literally is just '>' or '' then allow anything.
|
||
if (!m[2]) {
|
||
this.semver = ANY
|
||
} else {
|
||
this.semver = new SemVer(m[2], this.options.loose)
|
||
}
|
||
}
|
||
|
||
Comparator.prototype.toString = function () {
|
||
return this.value
|
||
}
|
||
|
||
Comparator.prototype.test = function (version) {
|
||
debug('Comparator.test', version, this.options.loose)
|
||
|
||
if (this.semver === ANY) {
|
||
return true
|
||
}
|
||
|
||
if (typeof version === 'string') {
|
||
version = new SemVer(version, this.options)
|
||
}
|
||
|
||
return cmp(version, this.operator, this.semver, this.options)
|
||
}
|
||
|
||
Comparator.prototype.intersects = function (comp, options) {
|
||
if (!(comp instanceof Comparator)) {
|
||
throw new TypeError('a Comparator is required')
|
||
}
|
||
|
||
if (!options || typeof options !== 'object') {
|
||
options = {
|
||
loose: !!options,
|
||
includePrerelease: false
|
||
}
|
||
}
|
||
|
||
var rangeTmp
|
||
|
||
if (this.operator === '') {
|
||
rangeTmp = new Range(comp.value, options)
|
||
return satisfies(this.value, rangeTmp, options)
|
||
} else if (comp.operator === '') {
|
||
rangeTmp = new Range(this.value, options)
|
||
return satisfies(comp.semver, rangeTmp, options)
|
||
}
|
||
|
||
var sameDirectionIncreasing =
|
||
(this.operator === '>=' || this.operator === '>') &&
|
||
(comp.operator === '>=' || comp.operator === '>')
|
||
var sameDirectionDecreasing =
|
||
(this.operator === '<=' || this.operator === '<') &&
|
||
(comp.operator === '<=' || comp.operator === '<')
|
||
var sameSemVer = this.semver.version === comp.semver.version
|
||
var differentDirectionsInclusive =
|
||
(this.operator === '>=' || this.operator === '<=') &&
|
||
(comp.operator === '>=' || comp.operator === '<=')
|
||
var oppositeDirectionsLessThan =
|
||
cmp(this.semver, '<', comp.semver, options) &&
|
||
((this.operator === '>=' || this.operator === '>') &&
|
||
(comp.operator === '<=' || comp.operator === '<'))
|
||
var oppositeDirectionsGreaterThan =
|
||
cmp(this.semver, '>', comp.semver, options) &&
|
||
((this.operator === '<=' || this.operator === '<') &&
|
||
(comp.operator === '>=' || comp.operator === '>'))
|
||
|
||
return sameDirectionIncreasing || sameDirectionDecreasing ||
|
||
(sameSemVer && differentDirectionsInclusive) ||
|
||
oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
|
||
}
|
||
|
||
exports.Range = Range
|
||
function Range (range, options) {
|
||
if (!options || typeof options !== 'object') {
|
||
options = {
|
||
loose: !!options,
|
||
includePrerelease: false
|
||
}
|
||
}
|
||
|
||
if (range instanceof Range) {
|
||
if (range.loose === !!options.loose &&
|
||
range.includePrerelease === !!options.includePrerelease) {
|
||
return range
|
||
} else {
|
||
return new Range(range.raw, options)
|
||
}
|
||
}
|
||
|
||
if (range instanceof Comparator) {
|
||
return new Range(range.value, options)
|
||
}
|
||
|
||
if (!(this instanceof Range)) {
|
||
return new Range(range, options)
|
||
}
|
||
|
||
this.options = options
|
||
this.loose = !!options.loose
|
||
this.includePrerelease = !!options.includePrerelease
|
||
|
||
// First, split based on boolean or ||
|
||
this.raw = range
|
||
this.set = range.split(/\s*\|\|\s*/).map(function (range) {
|
||
return this.parseRange(range.trim())
|
||
}, this).filter(function (c) {
|
||
// throw out any that are not relevant for whatever reason
|
||
return c.length
|
||
})
|
||
|
||
if (!this.set.length) {
|
||
throw new TypeError('Invalid SemVer Range: ' + range)
|
||
}
|
||
|
||
this.format()
|
||
}
|
||
|
||
Range.prototype.format = function () {
|
||
this.range = this.set.map(function (comps) {
|
||
return comps.join(' ').trim()
|
||
}).join('||').trim()
|
||
return this.range
|
||
}
|
||
|
||
Range.prototype.toString = function () {
|
||
return this.range
|
||
}
|
||
|
||
Range.prototype.parseRange = function (range) {
|
||
var loose = this.options.loose
|
||
range = range.trim()
|
||
// `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
|
||
var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]
|
||
range = range.replace(hr, hyphenReplace)
|
||
debug('hyphen replace', range)
|
||
// `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
|
||
range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)
|
||
debug('comparator trim', range, re[COMPARATORTRIM])
|
||
|
||
// `~ 1.2.3` => `~1.2.3`
|
||
range = range.replace(re[TILDETRIM], tildeTrimReplace)
|
||
|
||
// `^ 1.2.3` => `^1.2.3`
|
||
range = range.replace(re[CARETTRIM], caretTrimReplace)
|
||
|
||
// normalize spaces
|
||
range = range.split(/\s+/).join(' ')
|
||
|
||
// At this point, the range is completely trimmed and
|
||
// ready to be split into comparators.
|
||
|
||
var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
|
||
var set = range.split(' ').map(function (comp) {
|
||
return parseComparator(comp, this.options)
|
||
}, this).join(' ').split(/\s+/)
|
||
if (this.options.loose) {
|
||
// in loose mode, throw out any that are not valid comparators
|
||
set = set.filter(function (comp) {
|
||
return !!comp.match(compRe)
|
||
})
|
||
}
|
||
set = set.map(function (comp) {
|
||
return new Comparator(comp, this.options)
|
||
}, this)
|
||
|
||
return set
|
||
}
|
||
|
||
Range.prototype.intersects = function (range, options) {
|
||
if (!(range instanceof Range)) {
|
||
throw new TypeError('a Range is required')
|
||
}
|
||
|
||
return this.set.some(function (thisComparators) {
|
||
return thisComparators.every(function (thisComparator) {
|
||
return range.set.some(function (rangeComparators) {
|
||
return rangeComparators.every(function (rangeComparator) {
|
||
return thisComparator.intersects(rangeComparator, options)
|
||
})
|
||
})
|
||
})
|
||
})
|
||
}
|
||
|
||
// Mostly just for testing and legacy API reasons
|
||
exports.toComparators = toComparators
|
||
function toComparators (range, options) {
|
||
return new Range(range, options).set.map(function (comp) {
|
||
return comp.map(function (c) {
|
||
return c.value
|
||
}).join(' ').trim().split(' ')
|
||
})
|
||
}
|
||
|
||
// comprised of xranges, tildes, stars, and gtlt's at this point.
|
||
// already replaced the hyphen ranges
|
||
// turn into a set of JUST comparators.
|
||
function parseComparator (comp, options) {
|
||
debug('comp', comp, options)
|
||
comp = replaceCarets(comp, options)
|
||
debug('caret', comp)
|
||
comp = replaceTildes(comp, options)
|
||
debug('tildes', comp)
|
||
comp = replaceXRanges(comp, options)
|
||
debug('xrange', comp)
|
||
comp = replaceStars(comp, options)
|
||
debug('stars', comp)
|
||
return comp
|
||
}
|
||
|
||
function isX (id) {
|
||
return !id || id.toLowerCase() === 'x' || id === '*'
|
||
}
|
||
|
||
// ~, ~> --> * (any, kinda silly)
|
||
// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
|
||
// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
|
||
// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
|
||
// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
|
||
// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
|
||
function replaceTildes (comp, options) {
|
||
return comp.trim().split(/\s+/).map(function (comp) {
|
||
return replaceTilde(comp, options)
|
||
}).join(' ')
|
||
}
|
||
|
||
function replaceTilde (comp, options) {
|
||
var r = options.loose ? re[TILDELOOSE] : re[TILDE]
|
||
return comp.replace(r, function (_, M, m, p, pr) {
|
||
debug('tilde', comp, _, M, m, p, pr)
|
||
var ret
|
||
|
||
if (isX(M)) {
|
||
ret = ''
|
||
} else if (isX(m)) {
|
||
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
|
||
} else if (isX(p)) {
|
||
// ~1.2 == >=1.2.0 <1.3.0
|
||
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
|
||
} else if (pr) {
|
||
debug('replaceTilde pr', pr)
|
||
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
|
||
' <' + M + '.' + (+m + 1) + '.0'
|
||
} else {
|
||
// ~1.2.3 == >=1.2.3 <1.3.0
|
||
ret = '>=' + M + '.' + m + '.' + p +
|
||
' <' + M + '.' + (+m + 1) + '.0'
|
||
}
|
||
|
||
debug('tilde return', ret)
|
||
return ret
|
||
})
|
||
}
|
||
|
||
// ^ --> * (any, kinda silly)
|
||
// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
|
||
// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
|
||
// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
|
||
// ^1.2.3 --> >=1.2.3 <2.0.0
|
||
// ^1.2.0 --> >=1.2.0 <2.0.0
|
||
function replaceCarets (comp, options) {
|
||
return comp.trim().split(/\s+/).map(function (comp) {
|
||
return replaceCaret(comp, options)
|
||
}).join(' ')
|
||
}
|
||
|
||
function replaceCaret (comp, options) {
|
||
debug('caret', comp, options)
|
||
var r = options.loose ? re[CARETLOOSE] : re[CARET]
|
||
return comp.replace(r, function (_, M, m, p, pr) {
|
||
debug('caret', comp, _, M, m, p, pr)
|
||
var ret
|
||
|
||
if (isX(M)) {
|
||
ret = ''
|
||
} else if (isX(m)) {
|
||
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
|
||
} else if (isX(p)) {
|
||
if (M === '0') {
|
||
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
|
||
} else {
|
||
ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
|
||
}
|
||
} else if (pr) {
|
||
debug('replaceCaret pr', pr)
|
||
if (M === '0') {
|
||
if (m === '0') {
|
||
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
|
||
' <' + M + '.' + m + '.' + (+p + 1)
|
||
} else {
|
||
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
|
||
' <' + M + '.' + (+m + 1) + '.0'
|
||
}
|
||
} else {
|
||
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
|
||
' <' + (+M + 1) + '.0.0'
|
||
}
|
||
} else {
|
||
debug('no pr')
|
||
if (M === '0') {
|
||
if (m === '0') {
|
||
ret = '>=' + M + '.' + m + '.' + p +
|
||
' <' + M + '.' + m + '.' + (+p + 1)
|
||
} else {
|
||
ret = '>=' + M + '.' + m + '.' + p +
|
||
' <' + M + '.' + (+m + 1) + '.0'
|
||
}
|
||
} else {
|
||
ret = '>=' + M + '.' + m + '.' + p +
|
||
' <' + (+M + 1) + '.0.0'
|
||
}
|
||
}
|
||
|
||
debug('caret return', ret)
|
||
return ret
|
||
})
|
||
}
|
||
|
||
function replaceXRanges (comp, options) {
|
||
debug('replaceXRanges', comp, options)
|
||
return comp.split(/\s+/).map(function (comp) {
|
||
return replaceXRange(comp, options)
|
||
}).join(' ')
|
||
}
|
||
|
||
function replaceXRange (comp, options) {
|
||
comp = comp.trim()
|
||
var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]
|
||
return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
|
||
debug('xRange', comp, ret, gtlt, M, m, p, pr)
|
||
var xM = isX(M)
|
||
var xm = xM || isX(m)
|
||
var xp = xm || isX(p)
|
||
var anyX = xp
|
||
|
||
if (gtlt === '=' && anyX) {
|
||
gtlt = ''
|
||
}
|
||
|
||
if (xM) {
|
||
if (gtlt === '>' || gtlt === '<') {
|
||
// nothing is allowed
|
||
ret = '<0.0.0'
|
||
} else {
|
||
// nothing is forbidden
|
||
ret = '*'
|
||
}
|
||
} else if (gtlt && anyX) {
|
||
// we know patch is an x, because we have any x at all.
|
||
// replace X with 0
|
||
if (xm) {
|
||
m = 0
|
||
}
|
||
p = 0
|
||
|
||
if (gtlt === '>') {
|
||
// >1 => >=2.0.0
|
||
// >1.2 => >=1.3.0
|
||
// >1.2.3 => >= 1.2.4
|
||
gtlt = '>='
|
||
if (xm) {
|
||
M = +M + 1
|
||
m = 0
|
||
p = 0
|
||
} else {
|
||
m = +m + 1
|
||
p = 0
|
||
}
|
||
} else if (gtlt === '<=') {
|
||
// <=0.7.x is actually <0.8.0, since any 0.7.x should
|
||
// pass. Similarly, <=7.x is actually <8.0.0, etc.
|
||
gtlt = '<'
|
||
if (xm) {
|
||
M = +M + 1
|
||
} else {
|
||
m = +m + 1
|
||
}
|
||
}
|
||
|
||
ret = gtlt + M + '.' + m + '.' + p
|
||
} else if (xm) {
|
||
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
|
||
} else if (xp) {
|
||
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
|
||
}
|
||
|
||
debug('xRange return', ret)
|
||
|
||
return ret
|
||
})
|
||
}
|
||
|
||
// Because * is AND-ed with everything else in the comparator,
|
||
// and '' means "any version", just remove the *s entirely.
|
||
function replaceStars (comp, options) {
|
||
debug('replaceStars', comp, options)
|
||
// Looseness is ignored here. star is always as loose as it gets!
|
||
return comp.trim().replace(re[STAR], '')
|
||
}
|
||
|
||
// This function is passed to string.replace(re[HYPHENRANGE])
|
||
// M, m, patch, prerelease, build
|
||
// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
|
||
// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
|
||
// 1.2 - 3.4 => >=1.2.0 <3.5.0
|
||
function hyphenReplace ($0,
|
||
from, fM, fm, fp, fpr, fb,
|
||
to, tM, tm, tp, tpr, tb) {
|
||
if (isX(fM)) {
|
||
from = ''
|
||
} else if (isX(fm)) {
|
||
from = '>=' + fM + '.0.0'
|
||
} else if (isX(fp)) {
|
||
from = '>=' + fM + '.' + fm + '.0'
|
||
} else {
|
||
from = '>=' + from
|
||
}
|
||
|
||
if (isX(tM)) {
|
||
to = ''
|
||
} else if (isX(tm)) {
|
||
to = '<' + (+tM + 1) + '.0.0'
|
||
} else if (isX(tp)) {
|
||
to = '<' + tM + '.' + (+tm + 1) + '.0'
|
||
} else if (tpr) {
|
||
to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
|
||
} else {
|
||
to = '<=' + to
|
||
}
|
||
|
||
return (from + ' ' + to).trim()
|
||
}
|
||
|
||
// if ANY of the sets match ALL of its comparators, then pass
|
||
Range.prototype.test = function (version) {
|
||
if (!version) {
|
||
return false
|
||
}
|
||
|
||
if (typeof version === 'string') {
|
||
version = new SemVer(version, this.options)
|
||
}
|
||
|
||
for (var i = 0; i < this.set.length; i++) {
|
||
if (testSet(this.set[i], version, this.options)) {
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
|
||
function testSet (set, version, options) {
|
||
for (var i = 0; i < set.length; i++) {
|
||
if (!set[i].test(version)) {
|
||
return false
|
||
}
|
||
}
|
||
|
||
if (version.prerelease.length && !options.includePrerelease) {
|
||
// Find the set of versions that are allowed to have prereleases
|
||
// For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
|
||
// That should allow `1.2.3-pr.2` to pass.
|
||
// However, `1.2.4-alpha.notready` should NOT be allowed,
|
||
// even though it's within the range set by the comparators.
|
||
for (i = 0; i < set.length; i++) {
|
||
debug(set[i].semver)
|
||
if (set[i].semver === ANY) {
|
||
continue
|
||
}
|
||
|
||
if (set[i].semver.prerelease.length > 0) {
|
||
var allowed = set[i].semver
|
||
if (allowed.major === version.major &&
|
||
allowed.minor === version.minor &&
|
||
allowed.patch === version.patch) {
|
||
return true
|
||
}
|
||
}
|
||
}
|
||
|
||
// Version has a -pre, but it's not one of the ones we like.
|
||
return false
|
||
}
|
||
|
||
return true
|
||
}
|
||
|
||
exports.satisfies = satisfies
|
||
function satisfies (version, range, options) {
|
||
try {
|
||
range = new Range(range, options)
|
||
} catch (er) {
|
||
return false
|
||
}
|
||
return range.test(version)
|
||
}
|
||
|
||
exports.maxSatisfying = maxSatisfying
|
||
function maxSatisfying (versions, range, options) {
|
||
var max = null
|
||
var maxSV = null
|
||
try {
|
||
var rangeObj = new Range(range, options)
|
||
} catch (er) {
|
||
return null
|
||
}
|
||
versions.forEach(function (v) {
|
||
if (rangeObj.test(v)) {
|
||
// satisfies(v, range, options)
|
||
if (!max || maxSV.compare(v) === -1) {
|
||
// compare(max, v, true)
|
||
max = v
|
||
maxSV = new SemVer(max, options)
|
||
}
|
||
}
|
||
})
|
||
return max
|
||
}
|
||
|
||
exports.minSatisfying = minSatisfying
|
||
function minSatisfying (versions, range, options) {
|
||
var min = null
|
||
var minSV = null
|
||
try {
|
||
var rangeObj = new Range(range, options)
|
||
} catch (er) {
|
||
return null
|
||
}
|
||
versions.forEach(function (v) {
|
||
if (rangeObj.test(v)) {
|
||
// satisfies(v, range, options)
|
||
if (!min || minSV.compare(v) === 1) {
|
||
// compare(min, v, true)
|
||
min = v
|
||
minSV = new SemVer(min, options)
|
||
}
|
||
}
|
||
})
|
||
return min
|
||
}
|
||
|
||
exports.minVersion = minVersion
|
||
function minVersion (range, loose) {
|
||
range = new Range(range, loose)
|
||
|
||
var minver = new SemVer('0.0.0')
|
||
if (range.test(minver)) {
|
||
return minver
|
||
}
|
||
|
||
minver = new SemVer('0.0.0-0')
|
||
if (range.test(minver)) {
|
||
return minver
|
||
}
|
||
|
||
minver = null
|
||
for (var i = 0; i < range.set.length; ++i) {
|
||
var comparators = range.set[i]
|
||
|
||
comparators.forEach(function (comparator) {
|
||
// Clone to avoid manipulating the comparator's semver object.
|
||
var compver = new SemVer(comparator.semver.version)
|
||
switch (comparator.operator) {
|
||
case '>':
|
||
if (compver.prerelease.length === 0) {
|
||
compver.patch++
|
||
} else {
|
||
compver.prerelease.push(0)
|
||
}
|
||
compver.raw = compver.format()
|
||
/* fallthrough */
|
||
case '':
|
||
case '>=':
|
||
if (!minver || gt(minver, compver)) {
|
||
minver = compver
|
||
}
|
||
break
|
||
case '<':
|
||
case '<=':
|
||
/* Ignore maximum versions */
|
||
break
|
||
/* istanbul ignore next */
|
||
default:
|
||
throw new Error('Unexpected operation: ' + comparator.operator)
|
||
}
|
||
})
|
||
}
|
||
|
||
if (minver && range.test(minver)) {
|
||
return minver
|
||
}
|
||
|
||
return null
|
||
}
|
||
|
||
exports.validRange = validRange
|
||
function validRange (range, options) {
|
||
try {
|
||
// Return '*' instead of '' so that truthiness works.
|
||
// This will throw if it's invalid anyway
|
||
return new Range(range, options).range || '*'
|
||
} catch (er) {
|
||
return null
|
||
}
|
||
}
|
||
|
||
// Determine if version is less than all the versions possible in the range
|
||
exports.ltr = ltr
|
||
function ltr (version, range, options) {
|
||
return outside(version, range, '<', options)
|
||
}
|
||
|
||
// Determine if version is greater than all the versions possible in the range.
|
||
exports.gtr = gtr
|
||
function gtr (version, range, options) {
|
||
return outside(version, range, '>', options)
|
||
}
|
||
|
||
exports.outside = outside
|
||
function outside (version, range, hilo, options) {
|
||
version = new SemVer(version, options)
|
||
range = new Range(range, options)
|
||
|
||
var gtfn, ltefn, ltfn, comp, ecomp
|
||
switch (hilo) {
|
||
case '>':
|
||
gtfn = gt
|
||
ltefn = lte
|
||
ltfn = lt
|
||
comp = '>'
|
||
ecomp = '>='
|
||
break
|
||
case '<':
|
||
gtfn = lt
|
||
ltefn = gte
|
||
ltfn = gt
|
||
comp = '<'
|
||
ecomp = '<='
|
||
break
|
||
default:
|
||
throw new TypeError('Must provide a hilo val of "<" or ">"')
|
||
}
|
||
|
||
// If it satisifes the range it is not outside
|
||
if (satisfies(version, range, options)) {
|
||
return false
|
||
}
|
||
|
||
// From now on, variable terms are as if we're in "gtr" mode.
|
||
// but note that everything is flipped for the "ltr" function.
|
||
|
||
for (var i = 0; i < range.set.length; ++i) {
|
||
var comparators = range.set[i]
|
||
|
||
var high = null
|
||
var low = null
|
||
|
||
comparators.forEach(function (comparator) {
|
||
if (comparator.semver === ANY) {
|
||
comparator = new Comparator('>=0.0.0')
|
||
}
|
||
high = high || comparator
|
||
low = low || comparator
|
||
if (gtfn(comparator.semver, high.semver, options)) {
|
||
high = comparator
|
||
} else if (ltfn(comparator.semver, low.semver, options)) {
|
||
low = comparator
|
||
}
|
||
})
|
||
|
||
// If the edge version comparator has a operator then our version
|
||
// isn't outside it
|
||
if (high.operator === comp || high.operator === ecomp) {
|
||
return false
|
||
}
|
||
|
||
// If the lowest version comparator has an operator and our version
|
||
// is less than it then it isn't higher than the range
|
||
if ((!low.operator || low.operator === comp) &&
|
||
ltefn(version, low.semver)) {
|
||
return false
|
||
} else if (low.operator === ecomp && ltfn(version, low.semver)) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
}
|
||
|
||
exports.prerelease = prerelease
|
||
function prerelease (version, options) {
|
||
var parsed = parse(version, options)
|
||
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
|
||
}
|
||
|
||
exports.intersects = intersects
|
||
function intersects (r1, r2, options) {
|
||
r1 = new Range(r1, options)
|
||
r2 = new Range(r2, options)
|
||
return r1.intersects(r2)
|
||
}
|
||
|
||
exports.coerce = coerce
|
||
function coerce (version) {
|
||
if (version instanceof SemVer) {
|
||
return version
|
||
}
|
||
|
||
if (typeof version !== 'string') {
|
||
return null
|
||
}
|
||
|
||
var match = version.match(re[COERCE])
|
||
|
||
if (match == null) {
|
||
return null
|
||
}
|
||
|
||
return parse(match[1] +
|
||
'.' + (match[2] || '0') +
|
||
'.' + (match[3] || '0'))
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 49 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
const os = __webpack_require__(87);
|
||
const execa = __webpack_require__(955);
|
||
|
||
// Reference: https://www.gaijin.at/en/lstwinver.php
|
||
const names = new Map([
|
||
['10.0', '10'],
|
||
['6.3', '8.1'],
|
||
['6.2', '8'],
|
||
['6.1', '7'],
|
||
['6.0', 'Vista'],
|
||
['5.2', 'Server 2003'],
|
||
['5.1', 'XP'],
|
||
['5.0', '2000'],
|
||
['4.9', 'ME'],
|
||
['4.1', '98'],
|
||
['4.0', '95']
|
||
]);
|
||
|
||
const windowsRelease = release => {
|
||
const version = /\d+\.\d/.exec(release || os.release());
|
||
|
||
if (release && !version) {
|
||
throw new Error('`release` argument doesn\'t match `n.n`');
|
||
}
|
||
|
||
const ver = (version || [])[0];
|
||
|
||
// Server 2008, 2012 and 2016 versions are ambiguous with desktop versions and must be detected at runtime.
|
||
// If `release` is omitted or we're on a Windows system, and the version number is an ambiguous version
|
||
// then use `wmic` to get the OS caption: https://msdn.microsoft.com/en-us/library/aa394531(v=vs.85).aspx
|
||
// If the resulting caption contains the year 2008, 2012 or 2016, it is a server version, so return a server OS name.
|
||
if ((!release || release === os.release()) && ['6.1', '6.2', '6.3', '10.0'].includes(ver)) {
|
||
const stdout = execa.sync('wmic', ['os', 'get', 'Caption']).stdout || '';
|
||
const year = (stdout.match(/2008|2012|2016/) || [])[0];
|
||
if (year) {
|
||
return `Server ${year}`;
|
||
}
|
||
}
|
||
|
||
return names.get(ver);
|
||
};
|
||
|
||
module.exports = windowsRelease;
|
||
|
||
|
||
/***/ }),
|
||
/* 50 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = ["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad","nom.ad","ae","co.ae","net.ae","org.ae","sch.ae","ac.ae","gov.ae","mil.ae","aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","aircraft.aero","airline.aero","airport.aero","air-surveillance.aero","airtraffic.aero","air-traffic-control.aero","ambulance.aero","amusement.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","freight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","gov.af","com.af","org.af","net.af","edu.af","ag","com.ag","org.ag","net.ag","co.ag","nom.ag","ai","off.ai","com.ai","net.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","ed.ao","gv.ao","og.ao","co.ao","pb.ao","it.ao","aq","ar","com.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","net.ar","org.ar","tur.ar","arpa","e164.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","co.at","gv.at","or.at","au","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","info.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","education.tas.edu.au","schools.nsw.edu.au","aw","com.aw","ax","az","com.az","net.az","int.az","gov.az","org.az","edu.az","info.az","pp.az","mil.az","name.az","pro.az","biz.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","bh","com.bh","edu.bh","net.bh","org.bh","gov.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","asso.bj","barreau.bj","gouv.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","org.bo","net.bo","mil.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","politica.bo","profesional.bo","plurinacional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bhz.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","cri.br","cuiaba.br","curitiba.br","def.br","ecn.br","eco.br","edu.br","emp.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","lel.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","net.bs","org.bs","edu.bs","gov.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","com.bz","net.bz","org.bz","edu.bz","gov.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","org.ci","or.ci","com.ci","co.ci","edu.ci","ed.ci","ac.ci","net.ci","go.ci","asso.ci","aéroport.ci","int.ci","presse.ci","md.ci","gouv.ci","*.ck","!www.ck","cl","aprendemas.cl","co.cl","gob.cl","gov.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","net.cn","org.cn","mil.cn","公司.cn","网络.cn","網絡.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gz.cn","gx.cn","ha.cn","hb.cn","he.cn","hi.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","xj.cn","xz.cn","yn.cn","zj.cn","hk.cn","mo.cn","tw.cn","co","arts.co","com.co","edu.co","firm.co","gov.co","info.co","int.co","mil.co","net.co","nom.co","org.co","rec.co","web.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","org.cu","net.cu","gov.cu","inf.cu","cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","name.cy","net.cy","org.cy","parliament.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","com.dm","net.dm","org.dm","edu.dm","gov.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","com.dz","org.dz","net.dz","gov.dz","edu.dz","asso.dz","pol.dz","art.dz","ec","com.ec","info.ec","net.ec","fin.ec","k12.ec","med.ec","pro.ec","org.ec","edu.ec","gov.ec","gob.ec","mil.ec","edu","ee","edu.ee","gov.ee","riik.ee","lib.ee","med.ee","com.ee","pri.ee","aip.ee","org.ee","fie.ee","eg","com.eg","edu.eg","eun.eg","gov.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","*.er","es","com.es","nom.es","org.es","gob.es","edu.es","et","com.et","gov.et","org.et","edu.et","biz.et","name.et","info.et","net.et","eu","fi","aland.fi","fj","ac.fj","biz.fj","com.fj","gov.fj","info.fj","mil.fj","name.fj","net.fj","org.fj","pro.fj","*.fk","fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","aeroport.fr","avocat.fr","avoues.fr","cci.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","geometre-expert.fr","greta.fr","huissier-justice.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","ga","gb","gd","ge","com.ge","edu.ge","gov.ge","org.ge","mil.ge","net.ge","pvt.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","org.gh","mil.gh","gi","com.gi","ltd.gi","gov.gi","mod.gi","edu.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","org.gn","net.gn","gov","gp","com.gp","net.gp","mobi.gp","edu.gp","org.gp","asso.gp","gq","gr","com.gr","edu.gr","net.gr","org.gr","gov.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","公司.hk","教育.hk","敎育.hk","政府.hk","個人.hk","个人.hk","箇人.hk","網络.hk","网络.hk","组織.hk","網絡.hk","网絡.hk","组织.hk","組織.hk","組织.hk","hm","hn","com.hn","edu.hn","org.hn","net.hn","mil.hn","gob.hn","hr","iz.hr","from.hr","name.hr","com.hr","ht","com.ht","shop.ht","firm.ht","info.ht","adult.ht","net.ht","pro.ht","org.ht","med.ht","art.ht","coop.ht","pol.ht","asso.ht","edu.ht","rel.ht","gouv.ht","perso.ht","hu","co.hu","info.hu","org.hu","priv.hu","sport.hu","tm.hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","reklam.hu","sex.hu","shop.hu","suli.hu","szex.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","im","ac.im","co.im","com.im","ltd.co.im","net.im","org.im","plc.co.im","tt.im","tv.im","in","co.in","firm.in","net.in","org.in","gen.in","ind.in","nic.in","ac.in","edu.in","res.in","gov.in","mil.in","info","int","eu.int","io","com.io","iq","gov.iq","edu.iq","mil.iq","com.iq","org.iq","net.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","net.is","com.is","edu.is","gov.is","org.is","int.is","it","gov.it","edu.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentino.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","balsan.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano-altoadige.it","bolzano.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","bozen.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bulsan.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza-brianza.it","monza-e-della-brianza.it","monza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","suedtirol.it","südtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","com.jo","org.jo","net.jo","edu.jo","sch.jo","gov.jo","mil.jo","name.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","栃木.jp","愛知.jp","愛媛.jp","兵庫.jp","熊本.jp","茨城.jp","北海道.jp","千葉.jp","和歌山.jp","長崎.jp","長野.jp","新潟.jp","青森.jp","静岡.jp","東京.jp","石川.jp","埼玉.jp","三重.jp","京都.jp","佐賀.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岩手.jp","岐阜.jp","岡山.jp","島根.jp","広島.jp","徳島.jp","沖縄.jp","滋賀.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","*.kitakyushu.jp","*.kobe.jp","*.nagoya.jp","*.sapporo.jp","*.sendai.jp","*.yokohama.jp","!city.kawasaki.jp","!city.kitakyushu.jp","!city.kobe.jp","!city.nagoya.jp","!city.sapporo.jp","!city.sendai.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","org.kg","net.kg","com.kg","edu.kg","gov.kg","mil.kg","*.kh","ki","edu.ki","biz.ki","net.ki","org.ki","gov.ki","info.ki","com.ki","km","org.km","nom.km","gov.km","prd.km","tm.km","edu.km","mil.km","ass.km","com.km","coop.km","asso.km","presse.km","medecin.km","notaires.km","pharmaciens.km","veterinaire.km","gouv.km","kn","net.kn","org.kn","edu.kn","gov.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","edu.ky","gov.ky","com.ky","org.ky","net.ky","kz","org.kz","edu.kz","net.kz","gov.kz","mil.kz","com.kz","la","int.la","net.la","info.la","edu.la","gov.la","per.la","com.la","org.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","com.lc","net.lc","co.lc","org.lc","edu.lc","gov.lc","li","lk","gov.lk","sch.lk","net.lk","int.lk","com.lk","org.lk","edu.lk","ngo.lk","soc.lk","web.lk","ltd.lk","assn.lk","grp.lk","hotel.lk","ac.lk","lr","com.lr","edu.lr","gov.lr","org.lr","net.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","com.lv","edu.lv","gov.lv","org.lv","mil.lv","id.lv","net.lv","asn.lv","conf.lv","ly","com.ly","net.ly","gov.ly","plc.ly","edu.ly","sch.ly","med.ly","org.ly","id.ly","ma","co.ma","net.ma","gov.ma","org.ma","ac.ma","press.ma","mc","tm.mc","asso.mc","md","me","co.me","net.me","org.me","edu.me","ac.me","gov.me","its.me","priv.me","mg","org.mg","nom.mg","gov.mg","prd.mg","tm.mg","edu.mg","mil.mg","com.mg","co.mg","mh","mil","mk","com.mk","org.mk","net.mk","edu.mk","gov.mk","inf.mk","name.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","gov.mn","edu.mn","org.mn","mo","com.mo","net.mo","org.mo","edu.mo","gov.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","com.mu","net.mu","org.mu","gov.mu","ac.mu","co.mu","or.mu","museum","academy.museum","agriculture.museum","air.museum","airguard.museum","alabama.museum","alaska.museum","amber.museum","ambulance.museum","american.museum","americana.museum","americanantiques.museum","americanart.museum","amsterdam.museum","and.museum","annefrank.museum","anthro.museum","anthropology.museum","antiques.museum","aquarium.museum","arboretum.museum","archaeological.museum","archaeology.museum","architecture.museum","art.museum","artanddesign.museum","artcenter.museum","artdeco.museum","arteducation.museum","artgallery.museum","arts.museum","artsandcrafts.museum","asmatart.museum","assassination.museum","assisi.museum","association.museum","astronomy.museum","atlanta.museum","austin.museum","australia.museum","automotive.museum","aviation.museum","axis.museum","badajoz.museum","baghdad.museum","bahn.museum","bale.museum","baltimore.museum","barcelona.museum","baseball.museum","basel.museum","baths.museum","bauern.museum","beauxarts.museum","beeldengeluid.museum","bellevue.museum","bergbau.museum","berkeley.museum","berlin.museum","bern.museum","bible.museum","bilbao.museum","bill.museum","birdart.museum","birthplace.museum","bonn.museum","boston.museum","botanical.museum","botanicalgarden.museum","botanicgarden.museum","botany.museum","brandywinevalley.museum","brasil.museum","bristol.museum","british.museum","britishcolumbia.museum","broadcast.museum","brunel.museum","brussel.museum","brussels.museum","bruxelles.museum","building.museum","burghof.museum","bus.museum","bushey.museum","cadaques.museum","california.museum","cambridge.museum","can.museum","canada.museum","capebreton.museum","carrier.museum","cartoonart.museum","casadelamoneda.museum","castle.museum","castres.museum","celtic.museum","center.museum","chattanooga.museum","cheltenham.museum","chesapeakebay.museum","chicago.museum","children.museum","childrens.museum","childrensgarden.museum","chiropractic.museum","chocolate.museum","christiansburg.museum","cincinnati.museum","cinema.museum","circus.museum","civilisation.museum","civilization.museum","civilwar.museum","clinton.museum","clock.museum","coal.museum","coastaldefence.museum","cody.museum","coldwar.museum","collection.museum","colonialwilliamsburg.museum","coloradoplateau.museum","columbia.museum","columbus.museum","communication.museum","communications.museum","community.museum","computer.museum","computerhistory.museum","comunicações.museum","contemporary.museum","contemporaryart.museum","convent.museum","copenhagen.museum","corporation.museum","correios-e-telecomunicações.museum","corvette.museum","costume.museum","countryestate.museum","county.museum","crafts.museum","cranbrook.museum","creation.museum","cultural.museum","culturalcenter.museum","culture.museum","cyber.museum","cymru.museum","dali.museum","dallas.museum","database.museum","ddr.museum","decorativearts.museum","delaware.museum","delmenhorst.museum","denmark.museum","depot.museum","design.museum","detroit.museum","dinosaur.museum","discovery.museum","dolls.museum","donostia.museum","durham.museum","eastafrica.museum","eastcoast.museum","education.museum","educational.museum","egyptian.museum","eisenbahn.museum","elburg.museum","elvendrell.museum","embroidery.museum","encyclopedic.museum","england.museum","entomology.museum","environment.museum","environmentalconservation.museum","epilepsy.museum","essex.museum","estate.museum","ethnology.museum","exeter.museum","exhibition.museum","family.museum","farm.museum","farmequipment.museum","farmers.museum","farmstead.museum","field.museum","figueres.museum","filatelia.museum","film.museum","fineart.museum","finearts.museum","finland.museum","flanders.museum","florida.museum","force.museum","fortmissoula.museum","fortworth.museum","foundation.museum","francaise.museum","frankfurt.museum","franziskaner.museum","freemasonry.museum","freiburg.museum","fribourg.museum","frog.museum","fundacio.museum","furniture.museum","gallery.museum","garden.museum","gateway.museum","geelvinck.museum","gemological.museum","geology.museum","georgia.museum","giessen.museum","glas.museum","glass.museum","gorge.museum","grandrapids.museum","graz.museum","guernsey.museum","halloffame.museum","hamburg.museum","handson.museum","harvestcelebration.museum","hawaii.museum","health.museum","heimatunduhren.museum","hellas.museum","helsinki.museum","hembygdsforbund.museum","heritage.museum","histoire.museum","historical.museum","historicalsociety.museum","historichouses.museum","historisch.museum","historisches.museum","history.museum","historyofscience.museum","horology.museum","house.museum","humanities.museum","illustration.museum","imageandsound.museum","indian.museum","indiana.museum","indianapolis.museum","indianmarket.museum","intelligence.museum","interactive.museum","iraq.museum","iron.museum","isleofman.museum","jamison.museum","jefferson.museum","jerusalem.museum","jewelry.museum","jewish.museum","jewishart.museum","jfk.museum","journalism.museum","judaica.museum","judygarland.museum","juedisches.museum","juif.museum","karate.museum","karikatur.museum","kids.museum","koebenhavn.museum","koeln.museum","kunst.museum","kunstsammlung.museum","kunstunddesign.museum","labor.museum","labour.museum","lajolla.museum","lancashire.museum","landes.museum","lans.museum","läns.museum","larsson.museum","lewismiller.museum","lincoln.museum","linz.museum","living.museum","livinghistory.museum","localhistory.museum","london.museum","losangeles.museum","louvre.museum","loyalist.museum","lucerne.museum","luxembourg.museum","luzern.museum","mad.museum","madrid.museum","mallorca.museum","manchester.museum","mansion.museum","mansions.museum","manx.museum","marburg.museum","maritime.museum","maritimo.museum","maryland.museum","marylhurst.museum","media.museum","medical.museum","medizinhistorisches.museum","meeres.museum","memorial.museum","mesaverde.museum","michigan.museum","midatlantic.museum","military.museum","mill.museum","miners.museum","mining.museum","minnesota.museum","missile.museum","missoula.museum","modern.museum","moma.museum","money.museum","monmouth.museum","monticello.museum","montreal.museum","moscow.museum","motorcycle.museum","muenchen.museum","muenster.museum","mulhouse.museum","muncie.museum","museet.museum","museumcenter.museum","museumvereniging.museum","music.museum","national.museum","nationalfirearms.museum","nationalheritage.museum","nativeamerican.museum","naturalhistory.museum","naturalhistorymuseum.museum","naturalsciences.museum","nature.museum","naturhistorisches.museum","natuurwetenschappen.museum","naumburg.museum","naval.museum","nebraska.museum","neues.museum","newhampshire.museum","newjersey.museum","newmexico.museum","newport.museum","newspaper.museum","newyork.museum","niepce.museum","norfolk.museum","north.museum","nrw.museum","nyc.museum","nyny.museum","oceanographic.museum","oceanographique.museum","omaha.museum","online.museum","ontario.museum","openair.museum","oregon.museum","oregontrail.museum","otago.museum","oxford.museum","pacific.museum","paderborn.museum","palace.museum","paleo.museum","palmsprings.museum","panama.museum","paris.museum","pasadena.museum","pharmacy.museum","philadelphia.museum","philadelphiaarea.museum","philately.museum","phoenix.museum","photography.museum","pilots.museum","pittsburgh.museum","planetarium.museum","plantation.museum","plants.museum","plaza.museum","portal.museum","portland.museum","portlligat.museum","posts-and-telecommunications.museum","preservation.museum","presidio.museum","press.museum","project.museum","public.museum","pubol.museum","quebec.museum","railroad.museum","railway.museum","research.museum","resistance.museum","riodejaneiro.museum","rochester.museum","rockart.museum","roma.museum","russia.museum","saintlouis.museum","salem.museum","salvadordali.museum","salzburg.museum","sandiego.museum","sanfrancisco.museum","santabarbara.museum","santacruz.museum","santafe.museum","saskatchewan.museum","satx.museum","savannahga.museum","schlesisches.museum","schoenbrunn.museum","schokoladen.museum","school.museum","schweiz.museum","science.museum","scienceandhistory.museum","scienceandindustry.museum","sciencecenter.museum","sciencecenters.museum","science-fiction.museum","sciencehistory.museum","sciences.museum","sciencesnaturelles.museum","scotland.museum","seaport.museum","settlement.museum","settlers.museum","shell.museum","sherbrooke.museum","sibenik.museum","silk.museum","ski.museum","skole.museum","society.museum","sologne.museum","soundandvision.museum","southcarolina.museum","southwest.museum","space.museum","spy.museum","square.museum","stadt.museum","stalbans.museum","starnberg.museum","state.museum","stateofdelaware.museum","station.museum","steam.museum","steiermark.museum","stjohn.museum","stockholm.museum","stpetersburg.museum","stuttgart.museum","suisse.museum","surgeonshall.museum","surrey.museum","svizzera.museum","sweden.museum","sydney.museum","tank.museum","tcm.museum","technology.museum","telekommunikation.museum","television.museum","texas.museum","textile.museum","theater.museum","time.museum","timekeeping.museum","topology.museum","torino.museum","touch.museum","town.museum","transport.museum","tree.museum","trolley.museum","trust.museum","trustee.museum","uhren.museum","ulm.museum","undersea.museum","university.museum","usa.museum","usantiques.museum","usarts.museum","uscountryestate.museum","usculture.museum","usdecorativearts.museum","usgarden.museum","ushistory.museum","ushuaia.museum","uslivinghistory.museum","utah.museum","uvic.museum","valley.museum","vantaa.museum","versailles.museum","viking.museum","village.museum","virginia.museum","virtual.museum","virtuel.museum","vlaanderen.museum","volkenkunde.museum","wales.museum","wallonie.museum","war.museum","washingtondc.museum","watchandclock.museum","watch-and-clock.museum","western.museum","westfalen.museum","whaling.museum","wildlife.museum","williamsburg.museum","windmill.museum","workshop.museum","york.museum","yorkshire.museum","yosemite.museum","youth.museum","zoological.museum","zoology.museum","ירושלים.museum","иком.museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","museum.mw","net.mw","org.mw","mx","com.mx","org.mx","gob.mx","edu.mx","net.mx","my","com.my","net.my","org.my","gov.my","edu.my","mil.my","name.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","info.na","pro.na","name.na","school.na","or.na","dr.na","us.na","mx.na","ca.na","in.na","cc.na","tv.na","ws.na","mobi.na","co.na","com.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","com.nf","net.nf","per.nf","rec.nf","web.nf","arts.nf","firm.nf","info.nf","other.nf","store.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","vgs.no","fylkesbibl.no","folkebibl.no","museum.no","idrett.no","priv.no","mil.no","stat.no","dep.no","kommune.no","herad.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","brumunddal.no","bryne.no","bronnoysund.no","brønnøysund.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","afjord.no","åfjord.no","agdenes.no","al.no","ål.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alaheadju.no","álaheadju.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andebu.no","andoy.no","andøy.no","andasuolo.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askvoll.no","askoy.no","askøy.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","balestrand.no","ballangen.no","balat.no","bálát.no","balsfjord.no","bahccavuotna.no","báhccavuotna.no","bamble.no","bardu.no","beardu.no","beiarn.no","bajddar.no","bájddar.no","baidar.no","báidár.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bearalvahki.no","bearalváhki.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","badaddja.no","bådåddjå.no","budejju.no","bokn.no","bremanger.no","bronnoy.no","brønnøy.no","bygland.no","bykle.no","barum.no","bærum.no","bo.telemark.no","bø.telemark.no","bo.nordland.no","bø.nordland.no","bievat.no","bievát.no","bomlo.no","bømlo.no","batsfjord.no","båtsfjord.no","bahcavuotna.no","báhcavuotna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","donna.no","dønna.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenes.no","evenassi.no","evenášši.no","evje-og-hornnes.no","farsund.no","fauske.no","fuossko.no","fuoisku.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","fla.no","flå.no","folldal.no","forsand.no","fosnes.no","frei.no","frogn.no","froland.no","frosta.no","frana.no","fræna.no","froya.no","frøya.no","fusa.no","fyresdal.no","forde.no","førde.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","kraanghke.no","kråanghke.no","grue.no","gulen.no","hadsel.no","halden.no","halsa.no","hamar.no","hamaroy.no","habmer.no","hábmer.no","hapmir.no","hápmir.no","hammerfest.no","hammarfeasta.no","hámmárfeasta.no","haram.no","hareid.no","harstad.no","hasvik.no","aknoluokta.no","ákŋoluokta.no","hattfjelldal.no","aarborte.no","haugesund.no","hemne.no","hemnes.no","hemsedal.no","heroy.more-og-romsdal.no","herøy.møre-og-romsdal.no","heroy.nordland.no","herøy.nordland.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","hornindal.no","horten.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","hagebostad.no","hægebostad.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","ha.no","hå.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","jevnaker.no","jondal.no","jolster.no","jølster.no","karasjok.no","karasjohka.no","kárášjohka.no","karlsoy.no","galsa.no","gálsá.no","karmoy.no","karmøy.no","kautokeino.no","guovdageaidnu.no","klepp.no","klabu.no","klæbu.no","kongsberg.no","kongsvinger.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvalsund.no","rahkkeravju.no","ráhkkerávju.no","kvam.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","kvafjord.no","kvæfjord.no","giehtavuoatna.no","kvanangen.no","kvænangen.no","navuotna.no","návuotna.no","kafjord.no","kåfjord.no","gaivuotna.no","gáivuotna.no","larvik.no","lavangen.no","lavagis.no","loabat.no","loabát.no","lebesby.no","davvesiida.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","leangaviika.no","leaŋgaviika.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindesnes.no","lindas.no","lindås.no","lom.no","loppa.no","lahppi.no","láhppi.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","ivgu.no","lardal.no","lerdal.no","lærdal.no","lodingen.no","lødingen.no","lorenskog.no","lørenskog.no","loten.no","løten.no","malvik.no","masoy.no","måsøy.no","muosat.no","muosát.no","mandal.no","marker.no","marnardal.no","masfjorden.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","moareke.no","moåreke.no","midsund.no","midtre-gauldal.no","modalen.no","modum.no","molde.no","moskenes.no","moss.no","mosvik.no","malselv.no","målselv.no","malatvuopmi.no","málatvuopmi.no","namdalseid.no","aejrie.no","namsos.no","namsskogan.no","naamesjevuemie.no","nååmesjevuemie.no","laakesvuemie.no","nannestad.no","narvik.no","narviika.no","naustdal.no","nedre-eiker.no","nes.akershus.no","nes.buskerud.no","nesna.no","nesodden.no","nesseby.no","unjarga.no","unjárga.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","davvenjarga.no","davvenjárga.no","nordre-land.no","nordreisa.no","raisa.no","ráisa.no","nore-og-uvdal.no","notodden.no","naroy.no","nærøy.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","os.hedmark.no","os.hordaland.no","osen.no","osteroy.no","osterøy.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","radoy.no","radøy.no","rakkestad.no","rana.no","ruovat.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","rissa.no","risor.no","risør.no","roan.no","rollag.no","rygge.no","ralingen.no","rælingen.no","rodoy.no","rødøy.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","rade.no","råde.no","salangen.no","siellak.no","saltdal.no","salat.no","sálát.no","sálat.no","samnanger.no","sande.more-og-romsdal.no","sande.møre-og-romsdal.no","sande.vestfold.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","sigdal.no","siljan.no","sirdal.no","skaun.no","skedsmo.no","ski.no","skien.no","skiptvet.no","skjervoy.no","skjervøy.no","skierva.no","skiervá.no","skjak.no","skjåk.no","skodje.no","skanland.no","skånland.no","skanit.no","skánit.no","smola.no","smøla.no","snillfjord.no","snasa.no","snåsa.no","snoasa.no","snaase.no","snåase.no","sogndal.no","sokndal.no","sola.no","solund.no","songdalen.no","sortland.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","omasvuotna.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","sogne.no","søgne.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","matta-varjjat.no","mátta-várjjat.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sorum.no","sørum.no","tana.no","deatnu.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","dielddanuorri.no","tjome.no","tjøme.no","tokke.no","tolga.no","torsken.no","tranoy.no","tranøy.no","tromso.no","tromsø.no","tromsa.no","romsa.no","trondheim.no","troandin.no","trysil.no","trana.no","træna.no","trogstad.no","trøgstad.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","divtasvuodna.no","divttasvuotna.no","tysnes.no","tysvar.no","tysvær.no","tonsberg.no","tønsberg.no","ullensaker.no","ullensvang.no","ulvik.no","utsira.no","vadso.no","vadsø.no","cahcesuolo.no","čáhcesuolo.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","vefsn.no","vaapste.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","volda.no","voss.no","varoy.no","værøy.no","vagan.no","vågan.no","voagat.no","vagsoy.no","vågsøy.no","vaga.no","vågå.no","valer.ostfold.no","våler.østfold.no","valer.hedmark.no","våler.hedmark.no","*.np","nr","biz.nr","info.nr","gov.nr","edu.nr","org.nr","net.nr","com.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","mil.nz","māori.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","ac.pa","gob.pa","com.pa","org.pa","sld.pa","edu.pa","net.pa","ing.pa","abo.pa","med.pa","nom.pa","pe","edu.pe","gob.pe","nom.pe","mil.pe","org.pe","com.pe","net.pe","pf","com.pf","org.pf","edu.pf","*.pg","ph","com.ph","net.ph","org.ph","gov.ph","edu.ph","ngo.ph","mil.ph","i.ph","pk","com.pk","net.pk","edu.pk","org.pk","fam.pk","biz.pk","web.pk","gov.pk","gob.pk","gok.pk","gon.pk","gop.pk","gos.pk","info.pk","pl","com.pl","net.pl","org.pl","aid.pl","agro.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","miasta.pl","media.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","ic.gov.pl","is.gov.pl","us.gov.pl","kmpsp.gov.pl","kppsp.gov.pl","kwpsp.gov.pl","psp.gov.pl","wskr.gov.pl","kwp.gov.pl","mw.gov.pl","ug.gov.pl","um.gov.pl","umig.gov.pl","ugim.gov.pl","upow.gov.pl","uw.gov.pl","starostwo.gov.pl","pa.gov.pl","po.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","so.gov.pl","sr.gov.pl","wsa.gov.pl","sko.gov.pl","uzs.gov.pl","wiih.gov.pl","winb.gov.pl","pinb.gov.pl","wios.gov.pl","witd.gov.pl","wzmiuw.gov.pl","piw.gov.pl","wiw.gov.pl","griw.gov.pl","wif.gov.pl","oum.gov.pl","sdn.gov.pl","zp.gov.pl","uppo.gov.pl","mup.gov.pl","wuoz.gov.pl","konsulat.gov.pl","oirm.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","kazimierz-dolny.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorze.pl","pomorskie.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","skoczow.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","gov.pn","co.pn","org.pn","edu.pn","net.pn","post","pr","com.pr","net.pr","org.pr","gov.pr","edu.pr","isla.pr","pro.pr","biz.pr","info.pr","name.pr","est.pr","prof.pr","ac.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","edu.ps","gov.ps","sec.ps","plo.ps","com.ps","org.ps","net.ps","pt","net.pt","gov.pt","org.pt","edu.pt","int.pt","publ.pt","com.pt","nome.pt","pw","co.pw","ne.pw","or.pw","ed.pw","go.pw","belau.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","nom.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","net.sa","org.sa","gov.sa","med.sa","pub.sa","edu.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","gov.sc","net.sc","org.sc","edu.sc","sd","com.sd","net.sd","org.sd","edu.sd","med.sd","tv.sd","gov.sd","info.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","net.sg","org.sg","gov.sg","edu.sg","per.sg","sh","com.sh","net.sh","gov.sh","org.sh","mil.sh","si","sj","sk","sl","com.sl","net.sl","edu.sl","gov.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","edu.so","gov.so","me.so","net.so","org.so","sr","ss","biz.ss","com.ss","edu.ss","gov.ss","net.ss","org.ss","st","co.st","com.st","consulado.st","edu.st","embaixada.st","gov.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","edu.sy","gov.sy","net.sy","mil.sy","com.sy","org.sy","sz","co.sz","ac.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","com.tm","co.tm","org.tm","net.tm","nom.tm","gov.tm","mil.tm","edu.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","intl.tn","nat.tn","net.tn","org.tn","info.tn","perso.tn","tourism.tn","edunet.tn","rnrt.tn","rns.tn","rnu.tn","mincom.tn","agrinet.tn","defense.tn","turen.tn","to","com.to","gov.to","net.to","org.to","edu.to","mil.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","mil.tr","k12.tr","kep.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","co.tt","com.tt","org.tt","net.tt","biz.tt","info.tt","pro.tt","int.tt","coop.tt","jobs.tt","mobi.tt","travel.tt","museum.tt","aero.tt","name.tt","gov.tt","edu.tt","tv","tw","edu.tw","gov.tw","mil.tw","com.tw","net.tw","org.tw","idv.tw","game.tw","ebiz.tw","club.tw","網路.tw","組織.tw","商業.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","dominic.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","co.ug","or.ug","ac.ug","sc.ug","go.ug","ne.ug","com.ug","org.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","vi.us","vt.us","va.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.de.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.ri.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.vi.us","k12.vt.us","k12.va.us","k12.wa.us","k12.wi.us","k12.wy.us","cc.ak.us","cc.al.us","cc.ar.us","cc.as.us","cc.az.us","cc.ca.us","cc.co.us","cc.ct.us","cc.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.vi.us","cc.vt.us","cc.va.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","lib.ak.us","lib.al.us","lib.ar.us","lib.as.us","lib.az.us","lib.ca.us","lib.co.us","lib.ct.us","lib.dc.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.vi.us","lib.vt.us","lib.va.us","lib.wa.us","lib.wi.us","lib.wy.us","pvt.k12.ma.us","chtr.k12.ma.us","paroch.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","net.vc","org.vc","gov.vc","mil.vc","edu.vc","ve","arts.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","org.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","com.vn","net.vn","org.vn","edu.vn","gov.vn","int.vn","ac.vn","biz.vn","info.vn","name.vn","pro.vn","health.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","net.ws","org.ws","gov.ws","edu.ws","yt","امارات","հայ","বাংলা","бг","бел","中国","中國","الجزائر","مصر","ею","ευ","موريتانيا","გე","ελ","香港","公司.香港","教育.香港","政府.香港","個人.香港","網絡.香港","組織.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","пр.срб","орг.срб","обр.срб","од.срб","упр.срб","ак.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ศึกษา.ไทย","ธุรกิจ.ไทย","รัฐบาล.ไทย","ทหาร.ไทย","เน็ต.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","*.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","adac","ads","adult","aeg","aetna","afamilycompany","afl","africa","agakhan","agency","aig","aigo","airbus","airforce","airtel","akdn","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aws","axa","azure","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","budapest","bugatti","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","caseih","cash","casino","catering","catholic","cba","cbn","cbre","cbs","ceb","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","csc","cuisinella","cymru","cyou","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","duck","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","esurance","etisalat","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fujixerox","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glade","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","guardian","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hoteles","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","intel","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","iveco","jaguar","java","jcb","jcp","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kim","kinder","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","lamborghini","lamer","lancaster","lancia","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","lixil","llc","llp","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","lupin","luxe","luxury","macys","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","metlife","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","msd","mtn","mtr","mutual","nab","nadex","nagoya","nationwide","natura","navy","nba","nec","netbank","netflix","network","neustar","new","newholland","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","northwesternmutual","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","off","office","okinawa","olayan","olayangroup","oldnavy","ollo","omega","one","ong","onl","online","onyourside","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","passagens","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","qvc","racing","radio","raid","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","rightathome","ril","rio","rip","rmit","rocher","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scjohnson","scor","scot","search","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","shriram","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","spreadbetting","srl","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiftcover","swiss","sydney","symantec","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vodka","volkswagen","volvo","vote","voting","voto","voyage","vuelos","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","大众汽车","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","アマゾン","삼성","商标","商店","商城","дети","ポイント","新闻","工行","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","亚马逊","诺基亚","食品","飞利浦","手表","手机","ارامكو","العليان","اتصالات","بازار","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","珠宝","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","cc.ua","inf.ua","ltd.ua","adobeaemcloud.com","adobeaemcloud.net","*.dev.adobeaemcloud.com","beep.pl","barsy.ca","*.compute.estate","*.alces.network","altervista.org","alwaysdata.net","cloudfront.net","*.compute.amazonaws.com","*.compute-1.amazonaws.com","*.compute.amazonaws.com.cn","us-east-1.amazonaws.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com","*.elb.amazonaws.com.cn","s3.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3.ap-south-1.amazonaws.com","s3.cn-north-1.amazonaws.com.cn","s3.ca-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3.eu-west-2.amazonaws.com","s3.eu-west-3.amazonaws.com","s3.us-east-2.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3-website.us-east-2.amazonaws.com","amsw.nl","t3l3p0rt.net","tele.amune.org","apigee.io","on-aptible.com","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","myfritz.net","*.awdev.ca","*.advisor.ws","b-data.io","backplaneapp.io","balena-devices.com","app.banzaicloud.io","betainabox.com","bnr.la","blackbaudcdn.net","boomla.net","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","browsersafetymark.io","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","mycd.eu","carrd.co","crd.co","uwu.ai","ae.org","ar.com","br.com","cn.com","com.de","com.se","de.com","eu.com","gb.com","gb.net","hu.com","hu.net","jp.net","jpn.com","kr.com","mex.com","no.com","qc.com","ru.com","sa.com","se.net","uk.com","uk.net","us.com","uy.com","za.bz","za.com","africa.com","gr.com","in.net","us.org","co.com","c.la","certmgr.org","xenapponazure.com","discourse.group","discourse.team","virtueeldomein.nl","cleverapps.io","*.lcl.dev","*.stg.dev","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","cloudcontrolled.com","cloudcontrolapp.com","cloudera.site","trycloudflare.com","workers.dev","wnext.app","co.ca","*.otap.co","co.cz","c.cdn77.org","cdn77-ssl.net","r.cdn77.net","rsc.cdn77.org","ssl.origin.cdn77-secure.org","cloudns.asia","cloudns.biz","cloudns.club","cloudns.cc","cloudns.eu","cloudns.in","cloudns.info","cloudns.org","cloudns.pro","cloudns.pw","cloudns.us","cloudeity.net","cnpy.gdn","co.nl","co.no","webhosting.be","hosting-cluster.nl","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","dyn.cosidns.de","dynamisches-dns.de","dnsupdater.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","realm.cz","*.cryptonomic.net","cupcake.is","*.customer-oci.com","*.oci.customer-oci.com","*.ocp.customer-oci.com","*.ocs.customer-oci.com","cyon.link","cyon.site","daplie.me","localhost.daplie.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","biz.dk","co.dk","firm.dk","reg.dk","store.dk","*.dapps.earth","*.bzz.dapps.earth","builtwithdark.com","edgestack.me","debian.net","dedyn.io","dnshome.de","online.th","shop.th","drayddns.com","dreamhosters.com","mydrobo.com","drud.io","drud.us","duckdns.org","dy.fi","tunk.org","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","dyndns.biz","dyndns.info","dyndns.org","dyndns.tv","at-band-camp.net","ath.cx","barrel-of-knowledge.info","barrell-of-knowledge.info","better-than.tv","blogdns.com","blogdns.net","blogdns.org","blogsite.org","boldlygoingnowhere.org","broke-it.net","buyshouses.net","cechire.com","dnsalias.com","dnsalias.net","dnsalias.org","dnsdojo.com","dnsdojo.net","dnsdojo.org","does-it.net","doesntexist.com","doesntexist.org","dontexist.com","dontexist.net","dontexist.org","doomdns.com","doomdns.org","dvrdns.org","dyn-o-saur.com","dynalias.com","dynalias.net","dynalias.org","dynathome.net","dyndns.ws","endofinternet.net","endofinternet.org","endoftheinternet.org","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","for-better.biz","for-more.biz","for-our.info","for-some.biz","for-the.biz","forgot.her.name","forgot.his.name","from-ak.com","from-al.com","from-ar.com","from-az.net","from-ca.com","from-co.net","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-la.net","from-ma.com","from-md.com","from-me.org","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-ny.net","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","ftpaccess.cc","fuettertdasnetz.de","game-host.org","game-server.cc","getmyip.com","gets-it.net","go.dyndns.org","gotdns.com","gotdns.org","groks-the.info","groks-this.info","ham-radio-op.net","here-for-more.info","hobby-site.com","hobby-site.org","home.dyndns.org","homedns.org","homeftp.net","homeftp.org","homeip.net","homelinux.com","homelinux.net","homelinux.org","homeunix.com","homeunix.net","homeunix.org","iamallama.com","in-the-band.net","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bruinsfan.org","is-a-bulls-fan.com","is-a-candidate.org","is-a-caterer.com","is-a-celticsfan.org","is-a-chef.com","is-a-chef.net","is-a-chef.org","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-geek.net","is-a-geek.org","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-knight.org","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-linux-user.org","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-patsfan.org","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-soxfan.org","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-by.us","is-certified.com","is-found.org","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-lost.org","is-not-certified.com","is-saved.org","is-slick.com","is-uberleet.com","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","is-with-theband.com","isa-geek.com","isa-geek.net","isa-geek.org","isa-hockeynut.com","issmarterthanyou.com","isteingeek.de","istmein.de","kicks-ass.net","kicks-ass.org","knowsitall.info","land-4-sale.us","lebtimnetz.de","leitungsen.de","likes-pie.com","likescandy.com","merseine.nu","mine.nu","misconfused.org","mypets.ws","myphotos.cc","neat-url.com","office-on-the.net","on-the-web.tv","podzone.net","podzone.org","readmyblog.org","saves-the-whales.com","scrapper-site.net","scrapping.cc","selfip.biz","selfip.com","selfip.info","selfip.net","selfip.org","sells-for-less.com","sells-for-u.com","sells-it.net","sellsyourhome.org","servebbs.com","servebbs.net","servebbs.org","serveftp.net","serveftp.org","servegame.org","shacknet.nu","simple-url.com","space-to-rent.com","stuff-4-sale.org","stuff-4-sale.us","teaches-yoga.com","thruhere.net","traeumtgerade.de","webhop.biz","webhop.info","webhop.net","webhop.org","worse-than.tv","writesthisblog.com","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyndns1.de","dyn-ip24.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","definima.net","definima.io","bci.dnstrace.pro","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","blogsite.xyz","dynv6.net","e4.cz","en-root.fr","mytuleap.com","onred.one","staging.onred.one","enonic.io","customer.enonic.io","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","mc.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","paris.eu.org","pl.eu.org","pt.eu.org","q-a.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","apps.fbsbx.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","u.channelsdvr.net","fastly-terrarium.com","fastlylb.net","map.fastlylb.net","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastpanel.direct","fastvps-server.com","fhapp.xyz","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","mydobiss.com","filegear.me","filegear-au.me","filegear-de.me","filegear-gb.me","filegear-ie.me","filegear-jp.me","filegear-sg.me","firebaseapp.com","flynnhub.com","flynnhosting.net","0e.vc","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","service.gov.uk","gehirn.ne.jp","usercontent.jp","gentapps.com","lab.ms","github.io","githubusercontent.com","gitlab.io","glitch.me","lolipop.io","cloudapps.digital","london.cloudapps.digital","homeoffice.gov.uk","ro.im","shop.ro","goip.de","run.app","a.run.app","web.app","*.0emm.com","appspot.com","*.r.appspot.com","blogspot.ae","blogspot.al","blogspot.am","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.co.at","blogspot.co.id","blogspot.co.il","blogspot.co.ke","blogspot.co.nz","blogspot.co.uk","blogspot.co.za","blogspot.com","blogspot.com.ar","blogspot.com.au","blogspot.com.br","blogspot.com.by","blogspot.com.co","blogspot.com.cy","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.com.mt","blogspot.com.ng","blogspot.com.tr","blogspot.com.uy","blogspot.cv","blogspot.cz","blogspot.de","blogspot.dk","blogspot.fi","blogspot.fr","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.ie","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.mr","blogspot.mx","blogspot.my","blogspot.nl","blogspot.no","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.tw","blogspot.ug","blogspot.vn","cloudfunctions.net","cloud.goog","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","publishproxy.com","withgoogle.com","withyoutube.com","awsmppl.com","fin.ci","free.hr","caa.li","ua.rs","conf.se","hs.zone","hs.run","hashbang.sh","hasura.app","hasura-app.io","hepforge.org","herokuapp.com","herokussl.com","myravendb.com","ravendb.community","ravendb.me","development.run","ravendb.run","bpl.biz","orx.biz","ng.city","biz.gl","ng.ink","col.ng","firm.ng","gen.ng","ltd.ng","ngo.ng","ng.school","sch.so","häkkinen.fi","*.moonscale.io","moonscale.net","iki.fi","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-dsl.net","in-dsl.org","in-vpn.de","in-vpn.net","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","ipifony.net","mein-iserv.de","test-iserv.de","iserv.dev","iobb.net","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","*.triton.zone","*.cns.joyent.com","js.org","kaas.gg","khplay.nl","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","oya.to","co.krd","edu.krd","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","app.lmpm.com","linkitools.space","linkyard.cloud","linkyard-cloud.ch","members.linode.com","nodebalancer.linode.com","we.bs","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","uklugs.org","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.co.uk","barsyonline.co.uk","barsycenter.com","barsyonline.com","barsy.club","barsy.de","barsy.eu","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.shop","barsy.site","barsy.support","barsy.uk","*.magentosite.cloud","mayfirst.info","mayfirst.org","hb.cldmail.ru","miniserver.com","memset.net","cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","azurecontainer.io","azurewebsites.net","azure-mobile.net","cloudapp.net","mozilla-iot.org","bmoattachments.org","net.ru","org.ru","pp.ru","ui.nabu.casa","pony.club","of.fashion","on.fashion","of.football","in.london","of.london","for.men","and.mom","for.mom","for.one","for.sale","of.work","to.work","nctu.me","bitballoon.com","netlify.com","4u.com","ngrok.io","nh-serv.co.uk","nfshost.com","dnsking.ch","mypi.co","n4t.co","001www.com","ddnslive.com","myiphost.com","forumz.info","16-b.it","32-b.it","64-b.it","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","crafting.xyz","zapto.xyz","nsupdate.info","nerdpol.ovh","blogsyte.com","brasilia.me","cable-modem.org","ciscofreak.com","collegefan.org","couchpotatofries.org","damnserver.com","ddns.me","ditchyourip.com","dnsfor.me","dnsiskinky.com","dvrcam.info","dynns.com","eating-organic.net","fantasyleague.cc","geekgalaxy.com","golffan.us","health-carereform.com","homesecuritymac.com","homesecuritypc.com","hopto.me","ilovecollege.info","loginto.me","mlbfan.org","mmafan.biz","myactivedirectory.com","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.com","mysecuritycamera.net","mysecuritycamera.org","net-freaks.com","nflfan.org","nhlfan.net","no-ip.ca","no-ip.co.uk","no-ip.net","noip.us","onthewifi.com","pgafan.net","point2this.com","pointto.us","privatizehealthinsurance.net","quicksytes.com","read-books.org","securitytactics.com","serveexchange.com","servehumour.com","servep2p.com","servesarcasm.com","stufftoread.com","ufcfan.org","unusualperson.com","workisboring.com","3utilities.com","bounceme.net","ddns.net","ddnsking.com","gotdns.ch","hopto.org","myftp.biz","myftp.org","myvnc.com","no-ip.biz","no-ip.info","no-ip.org","noip.me","redirectme.net","servebeer.com","serveblog.net","servecounterstrike.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","serveirc.com","serveminecraft.net","servemp3.com","servepics.com","servequake.com","sytes.net","webhop.me","zapto.org","stage.nodeart.io","nodum.co","nodum.io","pcloud.host","nyc.mn","nom.ae","nom.af","nom.ai","nom.al","nym.by","nom.bz","nym.bz","nom.cl","nym.ec","nom.gd","nom.ge","nom.gl","nym.gr","nom.gt","nym.gy","nym.hk","nom.hn","nym.ie","nom.im","nom.ke","nym.kz","nym.la","nym.lc","nom.li","nym.li","nym.lt","nym.lu","nom.lv","nym.me","nom.mk","nym.mn","nym.mx","nom.nu","nym.nz","nym.pe","nym.pt","nom.pw","nom.qa","nym.ro","nom.rs","nom.si","nym.sk","nom.st","nym.su","nym.sx","nom.tj","nym.tw","nom.ug","nom.uy","nom.vc","nom.vg","static.observableusercontent.com","cya.gg","cloudycluster.net","nid.io","opencraft.hosting","operaunite.com","skygearapp.com","outsystemscloud.com","ownprovider.com","own.pm","ox.rs","oy.lc","pgfog.com","pagefrontapp.com","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","pantheonsite.io","gotpantheon.com","mypep.link","perspecta.cloud","on-web.fr","*.platform.sh","*.platformsh.site","dyn53.io","co.bn","xen.prgmr.com","priv.at","prvcy.page","*.dweb.link","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","qualifioapp.com","qbuser.com","instantcloud.cn","ras.ru","qa2.com","qcx.io","*.sys.qcx.io","dev-myqnapcloud.com","alpha-myqnapcloud.com","myqnapcloud.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","*.on-k3s.io","*.on-rancher.cloud","*.on-rio.io","readthedocs.io","rhcloud.com","app.render.com","onrender.com","repl.co","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","wellbeingzone.eu","ptplus.fit","wellbeingzone.co.uk","git-pages.rit.edu","sandcats.io","logoip.de","logoip.com","schokokeks.net","gov.scot","scrysec.com","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","senseering.net","biz.ua","co.ua","pp.ua","shiftedit.io","myshopblocks.com","shopitsite.com","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","bounty-full.com","alpha.bounty-full.com","beta.bounty-full.com","stackhero-network.com","static.land","dev.static.land","sites.static.land","apps.lair.io","*.stolos.io","spacekit.io","customer.speedpartner.de","api.stdlib.com","storj.farm","utwente.io","soc.srcf.net","user.srcf.net","temp-dns.com","applicationcloud.io","scapp.io","*.s5y.io","*.sensiosite.cloud","syncloud.it","diskstation.me","dscloud.biz","dscloud.me","dscloud.mobi","dsmynas.com","dsmynas.net","dsmynas.org","familyds.com","familyds.net","familyds.org","i234.me","myds.me","synology.me","vpnplus.to","direct.quickconnect.to","taifun-dns.de","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","edugit.org","telebit.app","telebit.io","*.telebit.xyz","gwiddle.co.uk","thingdustdata.com","cust.dev.thingdust.io","cust.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","arvo.network","azimuth.network","bloxcms.com","townnews-staging.com","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","*.transurl.nl","tuxfamily.org","dd-dns.de","diskstation.eu","diskstation.org","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","uber.space","*.uberspace.de","hk.com","hk.org","ltd.hk","inc.hk","virtualuser.de","virtual-user.de","urown.cloud","dnsupdate.info","lib.de.us","2038.io","router.management","v-info.info","voorloper.cloud","v.ua","wafflecell.com","*.webhare.dev","wedeploy.io","wedeploy.me","wedeploy.sh","remotewd.com","wmflabs.org","myforum.community","community-pro.de","diskussionsbereich.de","community-pro.net","meinforum.net","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","ybo.faith","yombo.me","homelink.one","ybo.party","ybo.review","ybo.science","ybo.trade","nohost.me","noho.st","za.net","za.org","now.sh","bss.design","basicserver.io","virtualserver.io","enterprisecloud.nu"];
|
||
|
||
/***/ }),
|
||
/* 51 */,
|
||
/* 52 */,
|
||
/* 53 */,
|
||
/* 54 */,
|
||
/* 55 */,
|
||
/* 56 */,
|
||
/* 57 */,
|
||
/* 58 */,
|
||
/* 59 */,
|
||
/* 60 */,
|
||
/* 61 */,
|
||
/* 62 */,
|
||
/* 63 */,
|
||
/* 64 */,
|
||
/* 65 */
|
||
/***/ (function(module) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
module.exports = {
|
||
Disconnected: 1,
|
||
Preceding: 2,
|
||
Following: 4,
|
||
Contains: 8,
|
||
ContainedBy: 16,
|
||
ImplementationSpecific: 32
|
||
};
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 66 */,
|
||
/* 67 */,
|
||
/* 68 */,
|
||
/* 69 */,
|
||
/* 70 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=trace_state.js.map
|
||
|
||
/***/ }),
|
||
/* 71 */
|
||
/***/ (function() {
|
||
|
||
"use strict";
|
||
|
||
if (typeof Symbol === undefined || !Symbol.asyncIterator) {
|
||
Symbol.asyncIterator = Symbol.for("Symbol.asyncIterator");
|
||
}
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
/***/ }),
|
||
/* 72 */,
|
||
/* 73 */,
|
||
/* 74 */,
|
||
/* 75 */,
|
||
/* 76 */,
|
||
/* 77 */,
|
||
/* 78 */,
|
||
/* 79 */,
|
||
/* 80 */,
|
||
/* 81 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var rng = __webpack_require__(984);
|
||
var bytesToUuid = __webpack_require__(538);
|
||
|
||
function v4(options, buf, offset) {
|
||
var i = buf && offset || 0;
|
||
|
||
if (typeof(options) == 'string') {
|
||
buf = options === 'binary' ? new Array(16) : null;
|
||
options = null;
|
||
}
|
||
options = options || {};
|
||
|
||
var rnds = options.random || (options.rng || rng)();
|
||
|
||
// Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
|
||
rnds[6] = (rnds[6] & 0x0f) | 0x40;
|
||
rnds[8] = (rnds[8] & 0x3f) | 0x80;
|
||
|
||
// Copy bytes to buffer, if provided
|
||
if (buf) {
|
||
for (var ii = 0; ii < 16; ++ii) {
|
||
buf[i + ii] = rnds[ii];
|
||
}
|
||
}
|
||
|
||
return buf || bytesToUuid(rnds);
|
||
}
|
||
|
||
module.exports = v4;
|
||
|
||
|
||
/***/ }),
|
||
/* 82 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
// We use any as a valid input type
|
||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
/**
|
||
* Sanitizes an input into a string so it can be passed into issueCommand safely
|
||
* @param input input to sanitize into a string
|
||
*/
|
||
function toCommandValue(input) {
|
||
if (input === null || input === undefined) {
|
||
return '';
|
||
}
|
||
else if (typeof input === 'string' || input instanceof String) {
|
||
return input;
|
||
}
|
||
return JSON.stringify(input);
|
||
}
|
||
exports.toCommandValue = toCommandValue;
|
||
//# sourceMappingURL=utils.js.map
|
||
|
||
/***/ }),
|
||
/* 83 */,
|
||
/* 84 */,
|
||
/* 85 */,
|
||
/* 86 */,
|
||
/* 87 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("os");
|
||
|
||
/***/ }),
|
||
/* 88 */,
|
||
/* 89 */,
|
||
/* 90 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var v1 = __webpack_require__(189);
|
||
var v4 = __webpack_require__(81);
|
||
|
||
var uuid = v4;
|
||
uuid.v1 = v1;
|
||
uuid.v4 = v4;
|
||
|
||
module.exports = uuid;
|
||
|
||
|
||
/***/ }),
|
||
/* 91 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var serialOrdered = __webpack_require__(892);
|
||
|
||
// Public API
|
||
module.exports = serial;
|
||
|
||
/**
|
||
* Runs iterator over provided array elements in series
|
||
*
|
||
* @param {array|object} list - array or object (named list) to iterate over
|
||
* @param {function} iterator - iterator to run
|
||
* @param {function} callback - invoked when all elements processed
|
||
* @returns {function} - jobs terminator
|
||
*/
|
||
function serial(list, iterator, callback)
|
||
{
|
||
return serialOrdered(list, iterator, null, callback);
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 92 */,
|
||
/* 93 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = minimatch
|
||
minimatch.Minimatch = Minimatch
|
||
|
||
var path = { sep: '/' }
|
||
try {
|
||
path = __webpack_require__(622)
|
||
} catch (er) {}
|
||
|
||
var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
|
||
var expand = __webpack_require__(306)
|
||
|
||
var plTypes = {
|
||
'!': { open: '(?:(?!(?:', close: '))[^/]*?)'},
|
||
'?': { open: '(?:', close: ')?' },
|
||
'+': { open: '(?:', close: ')+' },
|
||
'*': { open: '(?:', close: ')*' },
|
||
'@': { open: '(?:', close: ')' }
|
||
}
|
||
|
||
// any single thing other than /
|
||
// don't need to escape / when using new RegExp()
|
||
var qmark = '[^/]'
|
||
|
||
// * => any number of characters
|
||
var star = qmark + '*?'
|
||
|
||
// ** when dots are allowed. Anything goes, except .. and .
|
||
// not (^ or / followed by one or two dots followed by $ or /),
|
||
// followed by anything, any number of times.
|
||
var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'
|
||
|
||
// not a ^ or / followed by a dot,
|
||
// followed by anything, any number of times.
|
||
var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
|
||
|
||
// characters that need to be escaped in RegExp.
|
||
var reSpecials = charSet('().*{}+?[]^$\\!')
|
||
|
||
// "abc" -> { a:true, b:true, c:true }
|
||
function charSet (s) {
|
||
return s.split('').reduce(function (set, c) {
|
||
set[c] = true
|
||
return set
|
||
}, {})
|
||
}
|
||
|
||
// normalizes slashes.
|
||
var slashSplit = /\/+/
|
||
|
||
minimatch.filter = filter
|
||
function filter (pattern, options) {
|
||
options = options || {}
|
||
return function (p, i, list) {
|
||
return minimatch(p, pattern, options)
|
||
}
|
||
}
|
||
|
||
function ext (a, b) {
|
||
a = a || {}
|
||
b = b || {}
|
||
var t = {}
|
||
Object.keys(b).forEach(function (k) {
|
||
t[k] = b[k]
|
||
})
|
||
Object.keys(a).forEach(function (k) {
|
||
t[k] = a[k]
|
||
})
|
||
return t
|
||
}
|
||
|
||
minimatch.defaults = function (def) {
|
||
if (!def || !Object.keys(def).length) return minimatch
|
||
|
||
var orig = minimatch
|
||
|
||
var m = function minimatch (p, pattern, options) {
|
||
return orig.minimatch(p, pattern, ext(def, options))
|
||
}
|
||
|
||
m.Minimatch = function Minimatch (pattern, options) {
|
||
return new orig.Minimatch(pattern, ext(def, options))
|
||
}
|
||
|
||
return m
|
||
}
|
||
|
||
Minimatch.defaults = function (def) {
|
||
if (!def || !Object.keys(def).length) return Minimatch
|
||
return minimatch.defaults(def).Minimatch
|
||
}
|
||
|
||
function minimatch (p, pattern, options) {
|
||
if (typeof pattern !== 'string') {
|
||
throw new TypeError('glob pattern string required')
|
||
}
|
||
|
||
if (!options) options = {}
|
||
|
||
// shortcut: comments match nothing.
|
||
if (!options.nocomment && pattern.charAt(0) === '#') {
|
||
return false
|
||
}
|
||
|
||
// "" only matches ""
|
||
if (pattern.trim() === '') return p === ''
|
||
|
||
return new Minimatch(pattern, options).match(p)
|
||
}
|
||
|
||
function Minimatch (pattern, options) {
|
||
if (!(this instanceof Minimatch)) {
|
||
return new Minimatch(pattern, options)
|
||
}
|
||
|
||
if (typeof pattern !== 'string') {
|
||
throw new TypeError('glob pattern string required')
|
||
}
|
||
|
||
if (!options) options = {}
|
||
pattern = pattern.trim()
|
||
|
||
// windows support: need to use /, not \
|
||
if (path.sep !== '/') {
|
||
pattern = pattern.split(path.sep).join('/')
|
||
}
|
||
|
||
this.options = options
|
||
this.set = []
|
||
this.pattern = pattern
|
||
this.regexp = null
|
||
this.negate = false
|
||
this.comment = false
|
||
this.empty = false
|
||
|
||
// make the set of regexps etc.
|
||
this.make()
|
||
}
|
||
|
||
Minimatch.prototype.debug = function () {}
|
||
|
||
Minimatch.prototype.make = make
|
||
function make () {
|
||
// don't do it more than once.
|
||
if (this._made) return
|
||
|
||
var pattern = this.pattern
|
||
var options = this.options
|
||
|
||
// empty patterns and comments match nothing.
|
||
if (!options.nocomment && pattern.charAt(0) === '#') {
|
||
this.comment = true
|
||
return
|
||
}
|
||
if (!pattern) {
|
||
this.empty = true
|
||
return
|
||
}
|
||
|
||
// step 1: figure out negation, etc.
|
||
this.parseNegate()
|
||
|
||
// step 2: expand braces
|
||
var set = this.globSet = this.braceExpand()
|
||
|
||
if (options.debug) this.debug = console.error
|
||
|
||
this.debug(this.pattern, set)
|
||
|
||
// step 3: now we have a set, so turn each one into a series of path-portion
|
||
// matching patterns.
|
||
// These will be regexps, except in the case of "**", which is
|
||
// set to the GLOBSTAR object for globstar behavior,
|
||
// and will not contain any / characters
|
||
set = this.globParts = set.map(function (s) {
|
||
return s.split(slashSplit)
|
||
})
|
||
|
||
this.debug(this.pattern, set)
|
||
|
||
// glob --> regexps
|
||
set = set.map(function (s, si, set) {
|
||
return s.map(this.parse, this)
|
||
}, this)
|
||
|
||
this.debug(this.pattern, set)
|
||
|
||
// filter out everything that didn't compile properly.
|
||
set = set.filter(function (s) {
|
||
return s.indexOf(false) === -1
|
||
})
|
||
|
||
this.debug(this.pattern, set)
|
||
|
||
this.set = set
|
||
}
|
||
|
||
Minimatch.prototype.parseNegate = parseNegate
|
||
function parseNegate () {
|
||
var pattern = this.pattern
|
||
var negate = false
|
||
var options = this.options
|
||
var negateOffset = 0
|
||
|
||
if (options.nonegate) return
|
||
|
||
for (var i = 0, l = pattern.length
|
||
; i < l && pattern.charAt(i) === '!'
|
||
; i++) {
|
||
negate = !negate
|
||
negateOffset++
|
||
}
|
||
|
||
if (negateOffset) this.pattern = pattern.substr(negateOffset)
|
||
this.negate = negate
|
||
}
|
||
|
||
// Brace expansion:
|
||
// a{b,c}d -> abd acd
|
||
// a{b,}c -> abc ac
|
||
// a{0..3}d -> a0d a1d a2d a3d
|
||
// a{b,c{d,e}f}g -> abg acdfg acefg
|
||
// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
|
||
//
|
||
// Invalid sets are not expanded.
|
||
// a{2..}b -> a{2..}b
|
||
// a{b}c -> a{b}c
|
||
minimatch.braceExpand = function (pattern, options) {
|
||
return braceExpand(pattern, options)
|
||
}
|
||
|
||
Minimatch.prototype.braceExpand = braceExpand
|
||
|
||
function braceExpand (pattern, options) {
|
||
if (!options) {
|
||
if (this instanceof Minimatch) {
|
||
options = this.options
|
||
} else {
|
||
options = {}
|
||
}
|
||
}
|
||
|
||
pattern = typeof pattern === 'undefined'
|
||
? this.pattern : pattern
|
||
|
||
if (typeof pattern === 'undefined') {
|
||
throw new TypeError('undefined pattern')
|
||
}
|
||
|
||
if (options.nobrace ||
|
||
!pattern.match(/\{.*\}/)) {
|
||
// shortcut. no need to expand.
|
||
return [pattern]
|
||
}
|
||
|
||
return expand(pattern)
|
||
}
|
||
|
||
// parse a component of the expanded set.
|
||
// At this point, no pattern may contain "/" in it
|
||
// so we're going to return a 2d array, where each entry is the full
|
||
// pattern, split on '/', and then turned into a regular expression.
|
||
// A regexp is made at the end which joins each array with an
|
||
// escaped /, and another full one which joins each regexp with |.
|
||
//
|
||
// Following the lead of Bash 4.1, note that "**" only has special meaning
|
||
// when it is the *only* thing in a path portion. Otherwise, any series
|
||
// of * is equivalent to a single *. Globstar behavior is enabled by
|
||
// default, and can be disabled by setting options.noglobstar.
|
||
Minimatch.prototype.parse = parse
|
||
var SUBPARSE = {}
|
||
function parse (pattern, isSub) {
|
||
if (pattern.length > 1024 * 64) {
|
||
throw new TypeError('pattern is too long')
|
||
}
|
||
|
||
var options = this.options
|
||
|
||
// shortcuts
|
||
if (!options.noglobstar && pattern === '**') return GLOBSTAR
|
||
if (pattern === '') return ''
|
||
|
||
var re = ''
|
||
var hasMagic = !!options.nocase
|
||
var escaping = false
|
||
// ? => one single character
|
||
var patternListStack = []
|
||
var negativeLists = []
|
||
var stateChar
|
||
var inClass = false
|
||
var reClassStart = -1
|
||
var classStart = -1
|
||
// . and .. never match anything that doesn't start with .,
|
||
// even when options.dot is set.
|
||
var patternStart = pattern.charAt(0) === '.' ? '' // anything
|
||
// not (start or / followed by . or .. followed by / or end)
|
||
: options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))'
|
||
: '(?!\\.)'
|
||
var self = this
|
||
|
||
function clearStateChar () {
|
||
if (stateChar) {
|
||
// we had some state-tracking character
|
||
// that wasn't consumed by this pass.
|
||
switch (stateChar) {
|
||
case '*':
|
||
re += star
|
||
hasMagic = true
|
||
break
|
||
case '?':
|
||
re += qmark
|
||
hasMagic = true
|
||
break
|
||
default:
|
||
re += '\\' + stateChar
|
||
break
|
||
}
|
||
self.debug('clearStateChar %j %j', stateChar, re)
|
||
stateChar = false
|
||
}
|
||
}
|
||
|
||
for (var i = 0, len = pattern.length, c
|
||
; (i < len) && (c = pattern.charAt(i))
|
||
; i++) {
|
||
this.debug('%s\t%s %s %j', pattern, i, re, c)
|
||
|
||
// skip over any that are escaped.
|
||
if (escaping && reSpecials[c]) {
|
||
re += '\\' + c
|
||
escaping = false
|
||
continue
|
||
}
|
||
|
||
switch (c) {
|
||
case '/':
|
||
// completely not allowed, even escaped.
|
||
// Should already be path-split by now.
|
||
return false
|
||
|
||
case '\\':
|
||
clearStateChar()
|
||
escaping = true
|
||
continue
|
||
|
||
// the various stateChar values
|
||
// for the "extglob" stuff.
|
||
case '?':
|
||
case '*':
|
||
case '+':
|
||
case '@':
|
||
case '!':
|
||
this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c)
|
||
|
||
// all of those are literals inside a class, except that
|
||
// the glob [!a] means [^a] in regexp
|
||
if (inClass) {
|
||
this.debug(' in class')
|
||
if (c === '!' && i === classStart + 1) c = '^'
|
||
re += c
|
||
continue
|
||
}
|
||
|
||
// if we already have a stateChar, then it means
|
||
// that there was something like ** or +? in there.
|
||
// Handle the stateChar, then proceed with this one.
|
||
self.debug('call clearStateChar %j', stateChar)
|
||
clearStateChar()
|
||
stateChar = c
|
||
// if extglob is disabled, then +(asdf|foo) isn't a thing.
|
||
// just clear the statechar *now*, rather than even diving into
|
||
// the patternList stuff.
|
||
if (options.noext) clearStateChar()
|
||
continue
|
||
|
||
case '(':
|
||
if (inClass) {
|
||
re += '('
|
||
continue
|
||
}
|
||
|
||
if (!stateChar) {
|
||
re += '\\('
|
||
continue
|
||
}
|
||
|
||
patternListStack.push({
|
||
type: stateChar,
|
||
start: i - 1,
|
||
reStart: re.length,
|
||
open: plTypes[stateChar].open,
|
||
close: plTypes[stateChar].close
|
||
})
|
||
// negation is (?:(?!js)[^/]*)
|
||
re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
|
||
this.debug('plType %j %j', stateChar, re)
|
||
stateChar = false
|
||
continue
|
||
|
||
case ')':
|
||
if (inClass || !patternListStack.length) {
|
||
re += '\\)'
|
||
continue
|
||
}
|
||
|
||
clearStateChar()
|
||
hasMagic = true
|
||
var pl = patternListStack.pop()
|
||
// negation is (?:(?!js)[^/]*)
|
||
// The others are (?:<pattern>)<type>
|
||
re += pl.close
|
||
if (pl.type === '!') {
|
||
negativeLists.push(pl)
|
||
}
|
||
pl.reEnd = re.length
|
||
continue
|
||
|
||
case '|':
|
||
if (inClass || !patternListStack.length || escaping) {
|
||
re += '\\|'
|
||
escaping = false
|
||
continue
|
||
}
|
||
|
||
clearStateChar()
|
||
re += '|'
|
||
continue
|
||
|
||
// these are mostly the same in regexp and glob
|
||
case '[':
|
||
// swallow any state-tracking char before the [
|
||
clearStateChar()
|
||
|
||
if (inClass) {
|
||
re += '\\' + c
|
||
continue
|
||
}
|
||
|
||
inClass = true
|
||
classStart = i
|
||
reClassStart = re.length
|
||
re += c
|
||
continue
|
||
|
||
case ']':
|
||
// a right bracket shall lose its special
|
||
// meaning and represent itself in
|
||
// a bracket expression if it occurs
|
||
// first in the list. -- POSIX.2 2.8.3.2
|
||
if (i === classStart + 1 || !inClass) {
|
||
re += '\\' + c
|
||
escaping = false
|
||
continue
|
||
}
|
||
|
||
// handle the case where we left a class open.
|
||
// "[z-a]" is valid, equivalent to "\[z-a\]"
|
||
if (inClass) {
|
||
// split where the last [ was, make sure we don't have
|
||
// an invalid re. if so, re-walk the contents of the
|
||
// would-be class to re-translate any characters that
|
||
// were passed through as-is
|
||
// TODO: It would probably be faster to determine this
|
||
// without a try/catch and a new RegExp, but it's tricky
|
||
// to do safely. For now, this is safe and works.
|
||
var cs = pattern.substring(classStart + 1, i)
|
||
try {
|
||
RegExp('[' + cs + ']')
|
||
} catch (er) {
|
||
// not a valid class!
|
||
var sp = this.parse(cs, SUBPARSE)
|
||
re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'
|
||
hasMagic = hasMagic || sp[1]
|
||
inClass = false
|
||
continue
|
||
}
|
||
}
|
||
|
||
// finish up the class.
|
||
hasMagic = true
|
||
inClass = false
|
||
re += c
|
||
continue
|
||
|
||
default:
|
||
// swallow any state char that wasn't consumed
|
||
clearStateChar()
|
||
|
||
if (escaping) {
|
||
// no need
|
||
escaping = false
|
||
} else if (reSpecials[c]
|
||
&& !(c === '^' && inClass)) {
|
||
re += '\\'
|
||
}
|
||
|
||
re += c
|
||
|
||
} // switch
|
||
} // for
|
||
|
||
// handle the case where we left a class open.
|
||
// "[abc" is valid, equivalent to "\[abc"
|
||
if (inClass) {
|
||
// split where the last [ was, and escape it
|
||
// this is a huge pita. We now have to re-walk
|
||
// the contents of the would-be class to re-translate
|
||
// any characters that were passed through as-is
|
||
cs = pattern.substr(classStart + 1)
|
||
sp = this.parse(cs, SUBPARSE)
|
||
re = re.substr(0, reClassStart) + '\\[' + sp[0]
|
||
hasMagic = hasMagic || sp[1]
|
||
}
|
||
|
||
// handle the case where we had a +( thing at the *end*
|
||
// of the pattern.
|
||
// each pattern list stack adds 3 chars, and we need to go through
|
||
// and escape any | chars that were passed through as-is for the regexp.
|
||
// Go through and escape them, taking care not to double-escape any
|
||
// | chars that were already escaped.
|
||
for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
|
||
var tail = re.slice(pl.reStart + pl.open.length)
|
||
this.debug('setting tail', re, pl)
|
||
// maybe some even number of \, then maybe 1 \, followed by a |
|
||
tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) {
|
||
if (!$2) {
|
||
// the | isn't already escaped, so escape it.
|
||
$2 = '\\'
|
||
}
|
||
|
||
// need to escape all those slashes *again*, without escaping the
|
||
// one that we need for escaping the | character. As it works out,
|
||
// escaping an even number of slashes can be done by simply repeating
|
||
// it exactly after itself. That's why this trick works.
|
||
//
|
||
// I am sorry that you have to see this.
|
||
return $1 + $1 + $2 + '|'
|
||
})
|
||
|
||
this.debug('tail=%j\n %s', tail, tail, pl, re)
|
||
var t = pl.type === '*' ? star
|
||
: pl.type === '?' ? qmark
|
||
: '\\' + pl.type
|
||
|
||
hasMagic = true
|
||
re = re.slice(0, pl.reStart) + t + '\\(' + tail
|
||
}
|
||
|
||
// handle trailing things that only matter at the very end.
|
||
clearStateChar()
|
||
if (escaping) {
|
||
// trailing \\
|
||
re += '\\\\'
|
||
}
|
||
|
||
// only need to apply the nodot start if the re starts with
|
||
// something that could conceivably capture a dot
|
||
var addPatternStart = false
|
||
switch (re.charAt(0)) {
|
||
case '.':
|
||
case '[':
|
||
case '(': addPatternStart = true
|
||
}
|
||
|
||
// Hack to work around lack of negative lookbehind in JS
|
||
// A pattern like: *.!(x).!(y|z) needs to ensure that a name
|
||
// like 'a.xyz.yz' doesn't match. So, the first negative
|
||
// lookahead, has to look ALL the way ahead, to the end of
|
||
// the pattern.
|
||
for (var n = negativeLists.length - 1; n > -1; n--) {
|
||
var nl = negativeLists[n]
|
||
|
||
var nlBefore = re.slice(0, nl.reStart)
|
||
var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
|
||
var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
|
||
var nlAfter = re.slice(nl.reEnd)
|
||
|
||
nlLast += nlAfter
|
||
|
||
// Handle nested stuff like *(*.js|!(*.json)), where open parens
|
||
// mean that we should *not* include the ) in the bit that is considered
|
||
// "after" the negated section.
|
||
var openParensBefore = nlBefore.split('(').length - 1
|
||
var cleanAfter = nlAfter
|
||
for (i = 0; i < openParensBefore; i++) {
|
||
cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
|
||
}
|
||
nlAfter = cleanAfter
|
||
|
||
var dollar = ''
|
||
if (nlAfter === '' && isSub !== SUBPARSE) {
|
||
dollar = '$'
|
||
}
|
||
var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
|
||
re = newRe
|
||
}
|
||
|
||
// if the re is not "" at this point, then we need to make sure
|
||
// it doesn't match against an empty path part.
|
||
// Otherwise a/* will match a/, which it should not.
|
||
if (re !== '' && hasMagic) {
|
||
re = '(?=.)' + re
|
||
}
|
||
|
||
if (addPatternStart) {
|
||
re = patternStart + re
|
||
}
|
||
|
||
// parsing just a piece of a larger pattern.
|
||
if (isSub === SUBPARSE) {
|
||
return [re, hasMagic]
|
||
}
|
||
|
||
// skip the regexp for non-magical patterns
|
||
// unescape anything in it, though, so that it'll be
|
||
// an exact match against a file etc.
|
||
if (!hasMagic) {
|
||
return globUnescape(pattern)
|
||
}
|
||
|
||
var flags = options.nocase ? 'i' : ''
|
||
try {
|
||
var regExp = new RegExp('^' + re + '$', flags)
|
||
} catch (er) {
|
||
// If it was an invalid regular expression, then it can't match
|
||
// anything. This trick looks for a character after the end of
|
||
// the string, which is of course impossible, except in multi-line
|
||
// mode, but it's not a /m regex.
|
||
return new RegExp('$.')
|
||
}
|
||
|
||
regExp._glob = pattern
|
||
regExp._src = re
|
||
|
||
return regExp
|
||
}
|
||
|
||
minimatch.makeRe = function (pattern, options) {
|
||
return new Minimatch(pattern, options || {}).makeRe()
|
||
}
|
||
|
||
Minimatch.prototype.makeRe = makeRe
|
||
function makeRe () {
|
||
if (this.regexp || this.regexp === false) return this.regexp
|
||
|
||
// at this point, this.set is a 2d array of partial
|
||
// pattern strings, or "**".
|
||
//
|
||
// It's better to use .match(). This function shouldn't
|
||
// be used, really, but it's pretty convenient sometimes,
|
||
// when you just want to work with a regex.
|
||
var set = this.set
|
||
|
||
if (!set.length) {
|
||
this.regexp = false
|
||
return this.regexp
|
||
}
|
||
var options = this.options
|
||
|
||
var twoStar = options.noglobstar ? star
|
||
: options.dot ? twoStarDot
|
||
: twoStarNoDot
|
||
var flags = options.nocase ? 'i' : ''
|
||
|
||
var re = set.map(function (pattern) {
|
||
return pattern.map(function (p) {
|
||
return (p === GLOBSTAR) ? twoStar
|
||
: (typeof p === 'string') ? regExpEscape(p)
|
||
: p._src
|
||
}).join('\\\/')
|
||
}).join('|')
|
||
|
||
// must match entire pattern
|
||
// ending in a * or ** will make it less strict.
|
||
re = '^(?:' + re + ')$'
|
||
|
||
// can match anything, as long as it's not this.
|
||
if (this.negate) re = '^(?!' + re + ').*$'
|
||
|
||
try {
|
||
this.regexp = new RegExp(re, flags)
|
||
} catch (ex) {
|
||
this.regexp = false
|
||
}
|
||
return this.regexp
|
||
}
|
||
|
||
minimatch.match = function (list, pattern, options) {
|
||
options = options || {}
|
||
var mm = new Minimatch(pattern, options)
|
||
list = list.filter(function (f) {
|
||
return mm.match(f)
|
||
})
|
||
if (mm.options.nonull && !list.length) {
|
||
list.push(pattern)
|
||
}
|
||
return list
|
||
}
|
||
|
||
Minimatch.prototype.match = match
|
||
function match (f, partial) {
|
||
this.debug('match', f, this.pattern)
|
||
// short-circuit in the case of busted things.
|
||
// comments, etc.
|
||
if (this.comment) return false
|
||
if (this.empty) return f === ''
|
||
|
||
if (f === '/' && partial) return true
|
||
|
||
var options = this.options
|
||
|
||
// windows: need to use /, not \
|
||
if (path.sep !== '/') {
|
||
f = f.split(path.sep).join('/')
|
||
}
|
||
|
||
// treat the test path as a set of pathparts.
|
||
f = f.split(slashSplit)
|
||
this.debug(this.pattern, 'split', f)
|
||
|
||
// just ONE of the pattern sets in this.set needs to match
|
||
// in order for it to be valid. If negating, then just one
|
||
// match means that we have failed.
|
||
// Either way, return on the first hit.
|
||
|
||
var set = this.set
|
||
this.debug(this.pattern, 'set', set)
|
||
|
||
// Find the basename of the path by looking for the last non-empty segment
|
||
var filename
|
||
var i
|
||
for (i = f.length - 1; i >= 0; i--) {
|
||
filename = f[i]
|
||
if (filename) break
|
||
}
|
||
|
||
for (i = 0; i < set.length; i++) {
|
||
var pattern = set[i]
|
||
var file = f
|
||
if (options.matchBase && pattern.length === 1) {
|
||
file = [filename]
|
||
}
|
||
var hit = this.matchOne(file, pattern, partial)
|
||
if (hit) {
|
||
if (options.flipNegate) return true
|
||
return !this.negate
|
||
}
|
||
}
|
||
|
||
// didn't get any hits. this is success if it's a negative
|
||
// pattern, failure otherwise.
|
||
if (options.flipNegate) return false
|
||
return this.negate
|
||
}
|
||
|
||
// set partial to true to test if, for example,
|
||
// "/a/b" matches the start of "/*/b/*/d"
|
||
// Partial means, if you run out of file before you run
|
||
// out of pattern, then that's fine, as long as all
|
||
// the parts match.
|
||
Minimatch.prototype.matchOne = function (file, pattern, partial) {
|
||
var options = this.options
|
||
|
||
this.debug('matchOne',
|
||
{ 'this': this, file: file, pattern: pattern })
|
||
|
||
this.debug('matchOne', file.length, pattern.length)
|
||
|
||
for (var fi = 0,
|
||
pi = 0,
|
||
fl = file.length,
|
||
pl = pattern.length
|
||
; (fi < fl) && (pi < pl)
|
||
; fi++, pi++) {
|
||
this.debug('matchOne loop')
|
||
var p = pattern[pi]
|
||
var f = file[fi]
|
||
|
||
this.debug(pattern, p, f)
|
||
|
||
// should be impossible.
|
||
// some invalid regexp stuff in the set.
|
||
if (p === false) return false
|
||
|
||
if (p === GLOBSTAR) {
|
||
this.debug('GLOBSTAR', [pattern, p, f])
|
||
|
||
// "**"
|
||
// a/**/b/**/c would match the following:
|
||
// a/b/x/y/z/c
|
||
// a/x/y/z/b/c
|
||
// a/b/x/b/x/c
|
||
// a/b/c
|
||
// To do this, take the rest of the pattern after
|
||
// the **, and see if it would match the file remainder.
|
||
// If so, return success.
|
||
// If not, the ** "swallows" a segment, and try again.
|
||
// This is recursively awful.
|
||
//
|
||
// a/**/b/**/c matching a/b/x/y/z/c
|
||
// - a matches a
|
||
// - doublestar
|
||
// - matchOne(b/x/y/z/c, b/**/c)
|
||
// - b matches b
|
||
// - doublestar
|
||
// - matchOne(x/y/z/c, c) -> no
|
||
// - matchOne(y/z/c, c) -> no
|
||
// - matchOne(z/c, c) -> no
|
||
// - matchOne(c, c) yes, hit
|
||
var fr = fi
|
||
var pr = pi + 1
|
||
if (pr === pl) {
|
||
this.debug('** at the end')
|
||
// a ** at the end will just swallow the rest.
|
||
// We have found a match.
|
||
// however, it will not swallow /.x, unless
|
||
// options.dot is set.
|
||
// . and .. are *never* matched by **, for explosively
|
||
// exponential reasons.
|
||
for (; fi < fl; fi++) {
|
||
if (file[fi] === '.' || file[fi] === '..' ||
|
||
(!options.dot && file[fi].charAt(0) === '.')) return false
|
||
}
|
||
return true
|
||
}
|
||
|
||
// ok, let's see if we can swallow whatever we can.
|
||
while (fr < fl) {
|
||
var swallowee = file[fr]
|
||
|
||
this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
|
||
|
||
// XXX remove this slice. Just pass the start index.
|
||
if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
|
||
this.debug('globstar found match!', fr, fl, swallowee)
|
||
// found a match.
|
||
return true
|
||
} else {
|
||
// can't swallow "." or ".." ever.
|
||
// can only swallow ".foo" when explicitly asked.
|
||
if (swallowee === '.' || swallowee === '..' ||
|
||
(!options.dot && swallowee.charAt(0) === '.')) {
|
||
this.debug('dot detected!', file, fr, pattern, pr)
|
||
break
|
||
}
|
||
|
||
// ** swallows a segment, and continue.
|
||
this.debug('globstar swallow a segment, and continue')
|
||
fr++
|
||
}
|
||
}
|
||
|
||
// no match was found.
|
||
// However, in partial mode, we can't say this is necessarily over.
|
||
// If there's more *pattern* left, then
|
||
if (partial) {
|
||
// ran out of file
|
||
this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
|
||
if (fr === fl) return true
|
||
}
|
||
return false
|
||
}
|
||
|
||
// something other than **
|
||
// non-magic patterns just have to match exactly
|
||
// patterns with magic have been turned into regexps.
|
||
var hit
|
||
if (typeof p === 'string') {
|
||
if (options.nocase) {
|
||
hit = f.toLowerCase() === p.toLowerCase()
|
||
} else {
|
||
hit = f === p
|
||
}
|
||
this.debug('string match', p, f, hit)
|
||
} else {
|
||
hit = f.match(p)
|
||
this.debug('pattern match', p, f, hit)
|
||
}
|
||
|
||
if (!hit) return false
|
||
}
|
||
|
||
// Note: ending in / means that we'll get a final ""
|
||
// at the end of the pattern. This can only match a
|
||
// corresponding "" at the end of the file.
|
||
// If the file ends in /, then it can only match a
|
||
// a pattern that ends in /, unless the pattern just
|
||
// doesn't have any more for it. But, a/b/ should *not*
|
||
// match "a/b/*", even though "" matches against the
|
||
// [^/]*? pattern, except in partial mode, where it might
|
||
// simply not be reached yet.
|
||
// However, a/b/ should still satisfy a/*
|
||
|
||
// now either we fell off the end of the pattern, or we're done.
|
||
if (fi === fl && pi === pl) {
|
||
// ran out of pattern and filename at the same time.
|
||
// an exact hit!
|
||
return true
|
||
} else if (fi === fl) {
|
||
// ran out of file, but still had pattern left.
|
||
// this is ok if we're doing the match as part of
|
||
// a glob fs traversal.
|
||
return partial
|
||
} else if (pi === pl) {
|
||
// ran out of pattern, still have file left.
|
||
// this is only acceptable if we're on the very last
|
||
// empty segment of a file with a trailing slash.
|
||
// a/* should match a/b/
|
||
var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')
|
||
return emptyFileEnd
|
||
}
|
||
|
||
// should be unreachable.
|
||
throw new Error('wtf?')
|
||
}
|
||
|
||
// replace stuff like \* with *
|
||
function globUnescape (s) {
|
||
return s.replace(/\\(.)/g, '$1')
|
||
}
|
||
|
||
function regExpEscape (s) {
|
||
return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 94 */,
|
||
/* 95 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=link.js.map
|
||
|
||
/***/ }),
|
||
/* 96 */,
|
||
/* 97 */,
|
||
/* 98 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.partialMatch = exports.match = exports.getSearchPaths = void 0;
|
||
const pathHelper = __importStar(__webpack_require__(653));
|
||
const internal_match_kind_1 = __webpack_require__(957);
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
/**
|
||
* Given an array of patterns, returns an array of paths to search.
|
||
* Duplicates and paths under other included paths are filtered out.
|
||
*/
|
||
function getSearchPaths(patterns) {
|
||
// Ignore negate patterns
|
||
patterns = patterns.filter(x => !x.negate);
|
||
// Create a map of all search paths
|
||
const searchPathMap = {};
|
||
for (const pattern of patterns) {
|
||
const key = IS_WINDOWS
|
||
? pattern.searchPath.toUpperCase()
|
||
: pattern.searchPath;
|
||
searchPathMap[key] = 'candidate';
|
||
}
|
||
const result = [];
|
||
for (const pattern of patterns) {
|
||
// Check if already included
|
||
const key = IS_WINDOWS
|
||
? pattern.searchPath.toUpperCase()
|
||
: pattern.searchPath;
|
||
if (searchPathMap[key] === 'included') {
|
||
continue;
|
||
}
|
||
// Check for an ancestor search path
|
||
let foundAncestor = false;
|
||
let tempKey = key;
|
||
let parent = pathHelper.dirname(tempKey);
|
||
while (parent !== tempKey) {
|
||
if (searchPathMap[parent]) {
|
||
foundAncestor = true;
|
||
break;
|
||
}
|
||
tempKey = parent;
|
||
parent = pathHelper.dirname(tempKey);
|
||
}
|
||
// Include the search pattern in the result
|
||
if (!foundAncestor) {
|
||
result.push(pattern.searchPath);
|
||
searchPathMap[key] = 'included';
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
exports.getSearchPaths = getSearchPaths;
|
||
/**
|
||
* Matches the patterns against the path
|
||
*/
|
||
function match(patterns, itemPath) {
|
||
let result = internal_match_kind_1.MatchKind.None;
|
||
for (const pattern of patterns) {
|
||
if (pattern.negate) {
|
||
result &= ~pattern.match(itemPath);
|
||
}
|
||
else {
|
||
result |= pattern.match(itemPath);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
exports.match = match;
|
||
/**
|
||
* Checks whether to descend further into the directory
|
||
*/
|
||
function partialMatch(patterns, itemPath) {
|
||
return patterns.some(x => !x.negate && x.partialMatch(itemPath));
|
||
}
|
||
exports.partialMatch = partialMatch;
|
||
//# sourceMappingURL=internal-pattern-helper.js.map
|
||
|
||
/***/ }),
|
||
/* 99 */,
|
||
/* 100 */,
|
||
/* 101 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const main_1 = __webpack_require__(131);
|
||
main_1.run();
|
||
|
||
|
||
/***/ }),
|
||
/* 102 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
// For internal use, subject to change.
|
||
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 });
|
||
// We use any as a valid input type
|
||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||
const fs = __importStar(__webpack_require__(747));
|
||
const os = __importStar(__webpack_require__(87));
|
||
const utils_1 = __webpack_require__(82);
|
||
function issueCommand(command, message) {
|
||
const filePath = process.env[`GITHUB_${command}`];
|
||
if (!filePath) {
|
||
throw new Error(`Unable to find environment variable for file command ${command}`);
|
||
}
|
||
if (!fs.existsSync(filePath)) {
|
||
throw new Error(`Missing file at path: ${filePath}`);
|
||
}
|
||
fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {
|
||
encoding: 'utf8'
|
||
});
|
||
}
|
||
exports.issueCommand = issueCommand;
|
||
//# sourceMappingURL=file-command.js.map
|
||
|
||
/***/ }),
|
||
/* 103 */,
|
||
/* 104 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
|
||
var _validate = _interopRequireDefault(__webpack_require__(676));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
function version(uuid) {
|
||
if (!(0, _validate.default)(uuid)) {
|
||
throw TypeError('Invalid UUID');
|
||
}
|
||
|
||
return parseInt(uuid.substr(14, 1), 16);
|
||
}
|
||
|
||
var _default = version;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 105 */,
|
||
/* 106 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
var tslib = __webpack_require__(640);
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
var listenersMap = new WeakMap();
|
||
var abortedMap = new WeakMap();
|
||
/**
|
||
* An aborter instance implements AbortSignal interface, can abort HTTP requests.
|
||
*
|
||
* - Call AbortSignal.none to create a new AbortSignal instance that cannot be cancelled.
|
||
* Use `AbortSignal.none` when you are required to pass a cancellation token but the operation
|
||
* cannot or will not ever be cancelled.
|
||
*
|
||
* @example
|
||
* Abort without timeout
|
||
* ```ts
|
||
* await doAsyncWork(AbortSignal.none);
|
||
* ```
|
||
*/
|
||
var AbortSignal = /** @class */ (function () {
|
||
function AbortSignal() {
|
||
/**
|
||
* onabort event listener.
|
||
*/
|
||
this.onabort = null;
|
||
listenersMap.set(this, []);
|
||
abortedMap.set(this, false);
|
||
}
|
||
Object.defineProperty(AbortSignal.prototype, "aborted", {
|
||
/**
|
||
* Status of whether aborted or not.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
if (!abortedMap.has(this)) {
|
||
throw new TypeError("Expected `this` to be an instance of AbortSignal.");
|
||
}
|
||
return abortedMap.get(this);
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(AbortSignal, "none", {
|
||
/**
|
||
* Creates a new AbortSignal instance that will never be aborted.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return new AbortSignal();
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
/**
|
||
* Added new "abort" event listener, only support "abort" event.
|
||
*
|
||
* @param _type - Only support "abort" event
|
||
* @param listener - The listener to be added
|
||
*/
|
||
AbortSignal.prototype.addEventListener = function (
|
||
// tslint:disable-next-line:variable-name
|
||
_type, listener) {
|
||
if (!listenersMap.has(this)) {
|
||
throw new TypeError("Expected `this` to be an instance of AbortSignal.");
|
||
}
|
||
var listeners = listenersMap.get(this);
|
||
listeners.push(listener);
|
||
};
|
||
/**
|
||
* Remove "abort" event listener, only support "abort" event.
|
||
*
|
||
* @param _type - Only support "abort" event
|
||
* @param listener - The listener to be removed
|
||
*/
|
||
AbortSignal.prototype.removeEventListener = function (
|
||
// tslint:disable-next-line:variable-name
|
||
_type, listener) {
|
||
if (!listenersMap.has(this)) {
|
||
throw new TypeError("Expected `this` to be an instance of AbortSignal.");
|
||
}
|
||
var listeners = listenersMap.get(this);
|
||
var index = listeners.indexOf(listener);
|
||
if (index > -1) {
|
||
listeners.splice(index, 1);
|
||
}
|
||
};
|
||
/**
|
||
* Dispatches a synthetic event to the AbortSignal.
|
||
*/
|
||
AbortSignal.prototype.dispatchEvent = function (_event) {
|
||
throw new Error("This is a stub dispatchEvent implementation that should not be used. It only exists for type-checking purposes.");
|
||
};
|
||
return AbortSignal;
|
||
}());
|
||
/**
|
||
* Helper to trigger an abort event immediately, the onabort and all abort event listeners will be triggered.
|
||
* Will try to trigger abort event for all linked AbortSignal nodes.
|
||
*
|
||
* - If there is a timeout, the timer will be cancelled.
|
||
* - If aborted is true, nothing will happen.
|
||
*
|
||
* @internal
|
||
*/
|
||
// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters
|
||
function abortSignal(signal) {
|
||
if (signal.aborted) {
|
||
return;
|
||
}
|
||
if (signal.onabort) {
|
||
signal.onabort.call(signal);
|
||
}
|
||
var listeners = listenersMap.get(signal);
|
||
if (listeners) {
|
||
// Create a copy of listeners so mutations to the array
|
||
// (e.g. via removeListener calls) don't affect the listeners
|
||
// we invoke.
|
||
listeners.slice().forEach(function (listener) {
|
||
listener.call(signal, { type: "abort" });
|
||
});
|
||
}
|
||
abortedMap.set(signal, true);
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* This error is thrown when an asynchronous operation has been aborted.
|
||
* Check for this error by testing the `name` that the name property of the
|
||
* error matches `"AbortError"`.
|
||
*
|
||
* @example
|
||
* ```ts
|
||
* const controller = new AbortController();
|
||
* controller.abort();
|
||
* try {
|
||
* doAsyncWork(controller.signal)
|
||
* } catch (e) {
|
||
* if (e.name === 'AbortError') {
|
||
* // handle abort error here.
|
||
* }
|
||
* }
|
||
* ```
|
||
*/
|
||
var AbortError = /** @class */ (function (_super) {
|
||
tslib.__extends(AbortError, _super);
|
||
function AbortError(message) {
|
||
var _this = _super.call(this, message) || this;
|
||
_this.name = "AbortError";
|
||
return _this;
|
||
}
|
||
return AbortError;
|
||
}(Error));
|
||
/**
|
||
* An AbortController provides an AbortSignal and the associated controls to signal
|
||
* that an asynchronous operation should be aborted.
|
||
*
|
||
* @example
|
||
* Abort an operation when another event fires
|
||
* ```ts
|
||
* const controller = new AbortController();
|
||
* const signal = controller.signal;
|
||
* doAsyncWork(signal);
|
||
* button.addEventListener('click', () => controller.abort());
|
||
* ```
|
||
*
|
||
* @example
|
||
* Share aborter cross multiple operations in 30s
|
||
* ```ts
|
||
* // Upload the same data to 2 different data centers at the same time,
|
||
* // abort another when any of them is finished
|
||
* const controller = AbortController.withTimeout(30 * 1000);
|
||
* doAsyncWork(controller.signal).then(controller.abort);
|
||
* doAsyncWork(controller.signal).then(controller.abort);
|
||
*```
|
||
*
|
||
* @example
|
||
* Cascaded aborting
|
||
* ```ts
|
||
* // All operations can't take more than 30 seconds
|
||
* const aborter = Aborter.timeout(30 * 1000);
|
||
*
|
||
* // Following 2 operations can't take more than 25 seconds
|
||
* await doAsyncWork(aborter.withTimeout(25 * 1000));
|
||
* await doAsyncWork(aborter.withTimeout(25 * 1000));
|
||
* ```
|
||
*/
|
||
var AbortController = /** @class */ (function () {
|
||
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
||
function AbortController(parentSignals) {
|
||
var _this = this;
|
||
this._signal = new AbortSignal();
|
||
if (!parentSignals) {
|
||
return;
|
||
}
|
||
// coerce parentSignals into an array
|
||
if (!Array.isArray(parentSignals)) {
|
||
// eslint-disable-next-line prefer-rest-params
|
||
parentSignals = arguments;
|
||
}
|
||
for (var _i = 0, parentSignals_1 = parentSignals; _i < parentSignals_1.length; _i++) {
|
||
var parentSignal = parentSignals_1[_i];
|
||
// if the parent signal has already had abort() called,
|
||
// then call abort on this signal as well.
|
||
if (parentSignal.aborted) {
|
||
this.abort();
|
||
}
|
||
else {
|
||
// when the parent signal aborts, this signal should as well.
|
||
parentSignal.addEventListener("abort", function () {
|
||
_this.abort();
|
||
});
|
||
}
|
||
}
|
||
}
|
||
Object.defineProperty(AbortController.prototype, "signal", {
|
||
/**
|
||
* The AbortSignal associated with this controller that will signal aborted
|
||
* when the abort method is called on this controller.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this._signal;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
/**
|
||
* Signal that any operations passed this controller's associated abort signal
|
||
* to cancel any remaining work and throw an `AbortError`.
|
||
*/
|
||
AbortController.prototype.abort = function () {
|
||
abortSignal(this._signal);
|
||
};
|
||
/**
|
||
* Creates a new AbortSignal instance that will abort after the provided ms.
|
||
* @param ms - Elapsed time in milliseconds to trigger an abort.
|
||
*/
|
||
AbortController.timeout = function (ms) {
|
||
var signal = new AbortSignal();
|
||
var timer = setTimeout(abortSignal, ms, signal);
|
||
// Prevent the active Timer from keeping the Node.js event loop active.
|
||
if (typeof timer.unref === "function") {
|
||
timer.unref();
|
||
}
|
||
return signal;
|
||
};
|
||
return AbortController;
|
||
}());
|
||
|
||
exports.AbortController = AbortController;
|
||
exports.AbortError = AbortError;
|
||
exports.AbortSignal = AbortSignal;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 107 */,
|
||
/* 108 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
const cp = __webpack_require__(129);
|
||
const parse = __webpack_require__(568);
|
||
const enoent = __webpack_require__(881);
|
||
|
||
function spawn(command, args, options) {
|
||
// Parse the arguments
|
||
const parsed = parse(command, args, options);
|
||
|
||
// Spawn the child process
|
||
const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
|
||
|
||
// Hook into child process "exit" event to emit an error if the command
|
||
// does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
|
||
enoent.hookChildProcess(spawned, parsed);
|
||
|
||
return spawned;
|
||
}
|
||
|
||
function spawnSync(command, args, options) {
|
||
// Parse the arguments
|
||
const parsed = parse(command, args, options);
|
||
|
||
// Spawn the child process
|
||
const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
|
||
|
||
// Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
|
||
result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
|
||
|
||
return result;
|
||
}
|
||
|
||
module.exports = spawn;
|
||
module.exports.spawn = spawn;
|
||
module.exports.sync = spawnSync;
|
||
|
||
module.exports._parse = parse;
|
||
module.exports._enoent = enoent;
|
||
|
||
|
||
/***/ }),
|
||
/* 109 */,
|
||
/* 110 */,
|
||
/* 111 */,
|
||
/* 112 */,
|
||
/* 113 */,
|
||
/* 114 */
|
||
/***/ (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 core = __importStar(__webpack_require__(470));
|
||
const http_client_1 = __webpack_require__(22);
|
||
const auth_1 = __webpack_require__(733);
|
||
const crypto = __importStar(__webpack_require__(417));
|
||
const fs = __importStar(__webpack_require__(747));
|
||
const url_1 = __webpack_require__(835);
|
||
const utils = __importStar(__webpack_require__(15));
|
||
const constants_1 = __webpack_require__(931);
|
||
const downloadUtils_1 = __webpack_require__(251);
|
||
const options_1 = __webpack_require__(161);
|
||
const requestUtils_1 = __webpack_require__(246);
|
||
const versionSalt = '1.0';
|
||
function getCacheApiUrl(resource) {
|
||
// Ideally we just use ACTIONS_CACHE_URL
|
||
const baseUrl = (process.env['ACTIONS_CACHE_URL'] ||
|
||
process.env['ACTIONS_RUNTIME_URL'] ||
|
||
'').replace('pipelines', 'artifactcache');
|
||
if (!baseUrl) {
|
||
throw new Error('Cache Service Url not found, unable to restore cache.');
|
||
}
|
||
const url = `${baseUrl}_apis/artifactcache/${resource}`;
|
||
core.debug(`Resource Url: ${url}`);
|
||
return url;
|
||
}
|
||
function createAcceptHeader(type, apiVersion) {
|
||
return `${type};api-version=${apiVersion}`;
|
||
}
|
||
function getRequestOptions() {
|
||
const requestOptions = {
|
||
headers: {
|
||
Accept: createAcceptHeader('application/json', '6.0-preview.1')
|
||
}
|
||
};
|
||
return requestOptions;
|
||
}
|
||
function createHttpClient() {
|
||
const token = process.env['ACTIONS_RUNTIME_TOKEN'] || '';
|
||
const bearerCredentialHandler = new auth_1.BearerCredentialHandler(token);
|
||
return new http_client_1.HttpClient('actions/cache', [bearerCredentialHandler], getRequestOptions());
|
||
}
|
||
function getCacheVersion(paths, compressionMethod) {
|
||
const components = paths.concat(!compressionMethod || compressionMethod === constants_1.CompressionMethod.Gzip
|
||
? []
|
||
: [compressionMethod]);
|
||
// Add salt to cache version to support breaking changes in cache entry
|
||
components.push(versionSalt);
|
||
return crypto
|
||
.createHash('sha256')
|
||
.update(components.join('|'))
|
||
.digest('hex');
|
||
}
|
||
exports.getCacheVersion = getCacheVersion;
|
||
function getCacheEntry(keys, paths, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const httpClient = createHttpClient();
|
||
const version = getCacheVersion(paths, options === null || options === void 0 ? void 0 : options.compressionMethod);
|
||
const resource = `cache?keys=${encodeURIComponent(keys.join(','))}&version=${version}`;
|
||
const response = yield requestUtils_1.retryTypedResponse('getCacheEntry', () => __awaiter(this, void 0, void 0, function* () { return httpClient.getJson(getCacheApiUrl(resource)); }));
|
||
if (response.statusCode === 204) {
|
||
return null;
|
||
}
|
||
if (!requestUtils_1.isSuccessStatusCode(response.statusCode)) {
|
||
throw new Error(`Cache service responded with ${response.statusCode}`);
|
||
}
|
||
const cacheResult = response.result;
|
||
const cacheDownloadUrl = cacheResult === null || cacheResult === void 0 ? void 0 : cacheResult.archiveLocation;
|
||
if (!cacheDownloadUrl) {
|
||
throw new Error('Cache not found.');
|
||
}
|
||
core.setSecret(cacheDownloadUrl);
|
||
core.debug(`Cache Result:`);
|
||
core.debug(JSON.stringify(cacheResult));
|
||
return cacheResult;
|
||
});
|
||
}
|
||
exports.getCacheEntry = getCacheEntry;
|
||
function downloadCache(archiveLocation, archivePath, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const archiveUrl = new url_1.URL(archiveLocation);
|
||
const downloadOptions = options_1.getDownloadOptions(options);
|
||
if (downloadOptions.useAzureSdk &&
|
||
archiveUrl.hostname.endsWith('.blob.core.windows.net')) {
|
||
// Use Azure storage SDK to download caches hosted on Azure to improve speed and reliability.
|
||
yield downloadUtils_1.downloadCacheStorageSDK(archiveLocation, archivePath, downloadOptions);
|
||
}
|
||
else {
|
||
// Otherwise, download using the Actions http-client.
|
||
yield downloadUtils_1.downloadCacheHttpClient(archiveLocation, archivePath);
|
||
}
|
||
});
|
||
}
|
||
exports.downloadCache = downloadCache;
|
||
// Reserve Cache
|
||
function reserveCache(key, paths, options) {
|
||
var _a, _b;
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const httpClient = createHttpClient();
|
||
const version = getCacheVersion(paths, options === null || options === void 0 ? void 0 : options.compressionMethod);
|
||
const reserveCacheRequest = {
|
||
key,
|
||
version
|
||
};
|
||
const response = yield requestUtils_1.retryTypedResponse('reserveCache', () => __awaiter(this, void 0, void 0, function* () {
|
||
return httpClient.postJson(getCacheApiUrl('caches'), reserveCacheRequest);
|
||
}));
|
||
return (_b = (_a = response === null || response === void 0 ? void 0 : response.result) === null || _a === void 0 ? void 0 : _a.cacheId) !== null && _b !== void 0 ? _b : -1;
|
||
});
|
||
}
|
||
exports.reserveCache = reserveCache;
|
||
function getContentRange(start, end) {
|
||
// Format: `bytes start-end/filesize
|
||
// start and end are inclusive
|
||
// filesize can be *
|
||
// For a 200 byte chunk starting at byte 0:
|
||
// Content-Range: bytes 0-199/*
|
||
return `bytes ${start}-${end}/*`;
|
||
}
|
||
function uploadChunk(httpClient, resourceUrl, openStream, start, end) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
core.debug(`Uploading chunk of size ${end -
|
||
start +
|
||
1} bytes at offset ${start} with content range: ${getContentRange(start, end)}`);
|
||
const additionalHeaders = {
|
||
'Content-Type': 'application/octet-stream',
|
||
'Content-Range': getContentRange(start, end)
|
||
};
|
||
const uploadChunkResponse = yield requestUtils_1.retryHttpClientResponse(`uploadChunk (start: ${start}, end: ${end})`, () => __awaiter(this, void 0, void 0, function* () {
|
||
return httpClient.sendStream('PATCH', resourceUrl, openStream(), additionalHeaders);
|
||
}));
|
||
if (!requestUtils_1.isSuccessStatusCode(uploadChunkResponse.message.statusCode)) {
|
||
throw new Error(`Cache service responded with ${uploadChunkResponse.message.statusCode} during upload chunk.`);
|
||
}
|
||
});
|
||
}
|
||
function uploadFile(httpClient, cacheId, archivePath, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// Upload Chunks
|
||
const fileSize = fs.statSync(archivePath).size;
|
||
const resourceUrl = getCacheApiUrl(`caches/${cacheId.toString()}`);
|
||
const fd = fs.openSync(archivePath, 'r');
|
||
const uploadOptions = options_1.getUploadOptions(options);
|
||
const concurrency = utils.assertDefined('uploadConcurrency', uploadOptions.uploadConcurrency);
|
||
const maxChunkSize = utils.assertDefined('uploadChunkSize', uploadOptions.uploadChunkSize);
|
||
const parallelUploads = [...new Array(concurrency).keys()];
|
||
core.debug('Awaiting all uploads');
|
||
let offset = 0;
|
||
try {
|
||
yield Promise.all(parallelUploads.map(() => __awaiter(this, void 0, void 0, function* () {
|
||
while (offset < fileSize) {
|
||
const chunkSize = Math.min(fileSize - offset, maxChunkSize);
|
||
const start = offset;
|
||
const end = offset + chunkSize - 1;
|
||
offset += maxChunkSize;
|
||
yield uploadChunk(httpClient, resourceUrl, () => fs
|
||
.createReadStream(archivePath, {
|
||
fd,
|
||
start,
|
||
end,
|
||
autoClose: false
|
||
})
|
||
.on('error', error => {
|
||
throw new Error(`Cache upload failed because file read failed with ${error.message}`);
|
||
}), start, end);
|
||
}
|
||
})));
|
||
}
|
||
finally {
|
||
fs.closeSync(fd);
|
||
}
|
||
return;
|
||
});
|
||
}
|
||
function commitCache(httpClient, cacheId, filesize) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const commitCacheRequest = { size: filesize };
|
||
return yield requestUtils_1.retryTypedResponse('commitCache', () => __awaiter(this, void 0, void 0, function* () {
|
||
return httpClient.postJson(getCacheApiUrl(`caches/${cacheId.toString()}`), commitCacheRequest);
|
||
}));
|
||
});
|
||
}
|
||
function saveCache(cacheId, archivePath, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const httpClient = createHttpClient();
|
||
core.debug('Upload cache');
|
||
yield uploadFile(httpClient, cacheId, archivePath, options);
|
||
// Commit Cache
|
||
core.debug('Commiting cache');
|
||
const cacheSize = utils.getArchiveFileSizeIsBytes(archivePath);
|
||
core.info(`Cache Size: ~${Math.round(cacheSize / (1024 * 1024))} MB (${cacheSize} B)`);
|
||
const commitCacheResponse = yield commitCache(httpClient, cacheId, cacheSize);
|
||
if (!requestUtils_1.isSuccessStatusCode(commitCacheResponse.statusCode)) {
|
||
throw new Error(`Cache service responded with ${commitCacheResponse.statusCode} during commit cache.`);
|
||
}
|
||
core.info('Cache saved successfully');
|
||
});
|
||
}
|
||
exports.saveCache = saveCache;
|
||
//# sourceMappingURL=cacheHttpClient.js.map
|
||
|
||
/***/ }),
|
||
/* 115 */,
|
||
/* 116 */,
|
||
/* 117 */,
|
||
/* 118 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
const os = __webpack_require__(87);
|
||
|
||
const nameMap = new Map([
|
||
[19, 'Catalina'],
|
||
[18, 'Mojave'],
|
||
[17, 'High Sierra'],
|
||
[16, 'Sierra'],
|
||
[15, 'El Capitan'],
|
||
[14, 'Yosemite'],
|
||
[13, 'Mavericks'],
|
||
[12, 'Mountain Lion'],
|
||
[11, 'Lion'],
|
||
[10, 'Snow Leopard'],
|
||
[9, 'Leopard'],
|
||
[8, 'Tiger'],
|
||
[7, 'Panther'],
|
||
[6, 'Jaguar'],
|
||
[5, 'Puma']
|
||
]);
|
||
|
||
const macosRelease = release => {
|
||
release = Number((release || os.release()).split('.')[0]);
|
||
return {
|
||
name: nameMap.get(release),
|
||
version: '10.' + (release - 4)
|
||
};
|
||
};
|
||
|
||
module.exports = macosRelease;
|
||
// TODO: remove this in the next major version
|
||
module.exports.default = macosRelease;
|
||
|
||
|
||
/***/ }),
|
||
/* 119 */,
|
||
/* 120 */,
|
||
/* 121 */,
|
||
/* 122 */,
|
||
/* 123 */,
|
||
/* 124 */,
|
||
/* 125 */,
|
||
/* 126 */
|
||
/***/ (function(module) {
|
||
|
||
/**
|
||
* lodash (Custom Build) <https://lodash.com/>
|
||
* Build: `lodash modularize exports="npm" -o ./`
|
||
* Copyright jQuery Foundation and other contributors <https://jquery.org/>
|
||
* Released under MIT license <https://lodash.com/license>
|
||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||
*/
|
||
|
||
/** Used as the size to enable large array optimizations. */
|
||
var LARGE_ARRAY_SIZE = 200;
|
||
|
||
/** Used to stand-in for `undefined` hash values. */
|
||
var HASH_UNDEFINED = '__lodash_hash_undefined__';
|
||
|
||
/** Used as references for various `Number` constants. */
|
||
var INFINITY = 1 / 0;
|
||
|
||
/** `Object#toString` result references. */
|
||
var funcTag = '[object Function]',
|
||
genTag = '[object GeneratorFunction]';
|
||
|
||
/**
|
||
* Used to match `RegExp`
|
||
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
|
||
*/
|
||
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
||
|
||
/** Used to detect host constructors (Safari). */
|
||
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
||
|
||
/** Detect free variable `global` from Node.js. */
|
||
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
|
||
|
||
/** Detect free variable `self`. */
|
||
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
|
||
|
||
/** Used as a reference to the global object. */
|
||
var root = freeGlobal || freeSelf || Function('return this')();
|
||
|
||
/**
|
||
* A specialized version of `_.includes` for arrays without support for
|
||
* specifying an index to search from.
|
||
*
|
||
* @private
|
||
* @param {Array} [array] The array to inspect.
|
||
* @param {*} target The value to search for.
|
||
* @returns {boolean} Returns `true` if `target` is found, else `false`.
|
||
*/
|
||
function arrayIncludes(array, value) {
|
||
var length = array ? array.length : 0;
|
||
return !!length && baseIndexOf(array, value, 0) > -1;
|
||
}
|
||
|
||
/**
|
||
* This function is like `arrayIncludes` except that it accepts a comparator.
|
||
*
|
||
* @private
|
||
* @param {Array} [array] The array to inspect.
|
||
* @param {*} target The value to search for.
|
||
* @param {Function} comparator The comparator invoked per element.
|
||
* @returns {boolean} Returns `true` if `target` is found, else `false`.
|
||
*/
|
||
function arrayIncludesWith(array, value, comparator) {
|
||
var index = -1,
|
||
length = array ? array.length : 0;
|
||
|
||
while (++index < length) {
|
||
if (comparator(value, array[index])) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.findIndex` and `_.findLastIndex` without
|
||
* support for iteratee shorthands.
|
||
*
|
||
* @private
|
||
* @param {Array} array The array to inspect.
|
||
* @param {Function} predicate The function invoked per iteration.
|
||
* @param {number} fromIndex The index to search from.
|
||
* @param {boolean} [fromRight] Specify iterating from right to left.
|
||
* @returns {number} Returns the index of the matched value, else `-1`.
|
||
*/
|
||
function baseFindIndex(array, predicate, fromIndex, fromRight) {
|
||
var length = array.length,
|
||
index = fromIndex + (fromRight ? 1 : -1);
|
||
|
||
while ((fromRight ? index-- : ++index < length)) {
|
||
if (predicate(array[index], index, array)) {
|
||
return index;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.indexOf` without `fromIndex` bounds checks.
|
||
*
|
||
* @private
|
||
* @param {Array} array The array to inspect.
|
||
* @param {*} value The value to search for.
|
||
* @param {number} fromIndex The index to search from.
|
||
* @returns {number} Returns the index of the matched value, else `-1`.
|
||
*/
|
||
function baseIndexOf(array, value, fromIndex) {
|
||
if (value !== value) {
|
||
return baseFindIndex(array, baseIsNaN, fromIndex);
|
||
}
|
||
var index = fromIndex - 1,
|
||
length = array.length;
|
||
|
||
while (++index < length) {
|
||
if (array[index] === value) {
|
||
return index;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.isNaN` without support for number objects.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
|
||
*/
|
||
function baseIsNaN(value) {
|
||
return value !== value;
|
||
}
|
||
|
||
/**
|
||
* Checks if a cache value for `key` exists.
|
||
*
|
||
* @private
|
||
* @param {Object} cache The cache to query.
|
||
* @param {string} key The key of the entry to check.
|
||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||
*/
|
||
function cacheHas(cache, key) {
|
||
return cache.has(key);
|
||
}
|
||
|
||
/**
|
||
* Gets the value at `key` of `object`.
|
||
*
|
||
* @private
|
||
* @param {Object} [object] The object to query.
|
||
* @param {string} key The key of the property to get.
|
||
* @returns {*} Returns the property value.
|
||
*/
|
||
function getValue(object, key) {
|
||
return object == null ? undefined : object[key];
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is a host object in IE < 9.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a host object, else `false`.
|
||
*/
|
||
function isHostObject(value) {
|
||
// Many host objects are `Object` objects that can coerce to strings
|
||
// despite having improperly defined `toString` methods.
|
||
var result = false;
|
||
if (value != null && typeof value.toString != 'function') {
|
||
try {
|
||
result = !!(value + '');
|
||
} catch (e) {}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
/**
|
||
* Converts `set` to an array of its values.
|
||
*
|
||
* @private
|
||
* @param {Object} set The set to convert.
|
||
* @returns {Array} Returns the values.
|
||
*/
|
||
function setToArray(set) {
|
||
var index = -1,
|
||
result = Array(set.size);
|
||
|
||
set.forEach(function(value) {
|
||
result[++index] = value;
|
||
});
|
||
return result;
|
||
}
|
||
|
||
/** Used for built-in method references. */
|
||
var arrayProto = Array.prototype,
|
||
funcProto = Function.prototype,
|
||
objectProto = Object.prototype;
|
||
|
||
/** Used to detect overreaching core-js shims. */
|
||
var coreJsData = root['__core-js_shared__'];
|
||
|
||
/** Used to detect methods masquerading as native. */
|
||
var maskSrcKey = (function() {
|
||
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
|
||
return uid ? ('Symbol(src)_1.' + uid) : '';
|
||
}());
|
||
|
||
/** Used to resolve the decompiled source of functions. */
|
||
var funcToString = funcProto.toString;
|
||
|
||
/** Used to check objects for own properties. */
|
||
var hasOwnProperty = objectProto.hasOwnProperty;
|
||
|
||
/**
|
||
* Used to resolve the
|
||
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
||
* of values.
|
||
*/
|
||
var objectToString = objectProto.toString;
|
||
|
||
/** Used to detect if a method is native. */
|
||
var reIsNative = RegExp('^' +
|
||
funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
|
||
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
|
||
);
|
||
|
||
/** Built-in value references. */
|
||
var splice = arrayProto.splice;
|
||
|
||
/* Built-in method references that are verified to be native. */
|
||
var Map = getNative(root, 'Map'),
|
||
Set = getNative(root, 'Set'),
|
||
nativeCreate = getNative(Object, 'create');
|
||
|
||
/**
|
||
* Creates a hash object.
|
||
*
|
||
* @private
|
||
* @constructor
|
||
* @param {Array} [entries] The key-value pairs to cache.
|
||
*/
|
||
function Hash(entries) {
|
||
var index = -1,
|
||
length = entries ? entries.length : 0;
|
||
|
||
this.clear();
|
||
while (++index < length) {
|
||
var entry = entries[index];
|
||
this.set(entry[0], entry[1]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Removes all key-value entries from the hash.
|
||
*
|
||
* @private
|
||
* @name clear
|
||
* @memberOf Hash
|
||
*/
|
||
function hashClear() {
|
||
this.__data__ = nativeCreate ? nativeCreate(null) : {};
|
||
}
|
||
|
||
/**
|
||
* Removes `key` and its value from the hash.
|
||
*
|
||
* @private
|
||
* @name delete
|
||
* @memberOf Hash
|
||
* @param {Object} hash The hash to modify.
|
||
* @param {string} key The key of the value to remove.
|
||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||
*/
|
||
function hashDelete(key) {
|
||
return this.has(key) && delete this.__data__[key];
|
||
}
|
||
|
||
/**
|
||
* Gets the hash value for `key`.
|
||
*
|
||
* @private
|
||
* @name get
|
||
* @memberOf Hash
|
||
* @param {string} key The key of the value to get.
|
||
* @returns {*} Returns the entry value.
|
||
*/
|
||
function hashGet(key) {
|
||
var data = this.__data__;
|
||
if (nativeCreate) {
|
||
var result = data[key];
|
||
return result === HASH_UNDEFINED ? undefined : result;
|
||
}
|
||
return hasOwnProperty.call(data, key) ? data[key] : undefined;
|
||
}
|
||
|
||
/**
|
||
* Checks if a hash value for `key` exists.
|
||
*
|
||
* @private
|
||
* @name has
|
||
* @memberOf Hash
|
||
* @param {string} key The key of the entry to check.
|
||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||
*/
|
||
function hashHas(key) {
|
||
var data = this.__data__;
|
||
return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
|
||
}
|
||
|
||
/**
|
||
* Sets the hash `key` to `value`.
|
||
*
|
||
* @private
|
||
* @name set
|
||
* @memberOf Hash
|
||
* @param {string} key The key of the value to set.
|
||
* @param {*} value The value to set.
|
||
* @returns {Object} Returns the hash instance.
|
||
*/
|
||
function hashSet(key, value) {
|
||
var data = this.__data__;
|
||
data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
|
||
return this;
|
||
}
|
||
|
||
// Add methods to `Hash`.
|
||
Hash.prototype.clear = hashClear;
|
||
Hash.prototype['delete'] = hashDelete;
|
||
Hash.prototype.get = hashGet;
|
||
Hash.prototype.has = hashHas;
|
||
Hash.prototype.set = hashSet;
|
||
|
||
/**
|
||
* Creates an list cache object.
|
||
*
|
||
* @private
|
||
* @constructor
|
||
* @param {Array} [entries] The key-value pairs to cache.
|
||
*/
|
||
function ListCache(entries) {
|
||
var index = -1,
|
||
length = entries ? entries.length : 0;
|
||
|
||
this.clear();
|
||
while (++index < length) {
|
||
var entry = entries[index];
|
||
this.set(entry[0], entry[1]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Removes all key-value entries from the list cache.
|
||
*
|
||
* @private
|
||
* @name clear
|
||
* @memberOf ListCache
|
||
*/
|
||
function listCacheClear() {
|
||
this.__data__ = [];
|
||
}
|
||
|
||
/**
|
||
* Removes `key` and its value from the list cache.
|
||
*
|
||
* @private
|
||
* @name delete
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the value to remove.
|
||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||
*/
|
||
function listCacheDelete(key) {
|
||
var data = this.__data__,
|
||
index = assocIndexOf(data, key);
|
||
|
||
if (index < 0) {
|
||
return false;
|
||
}
|
||
var lastIndex = data.length - 1;
|
||
if (index == lastIndex) {
|
||
data.pop();
|
||
} else {
|
||
splice.call(data, index, 1);
|
||
}
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* Gets the list cache value for `key`.
|
||
*
|
||
* @private
|
||
* @name get
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the value to get.
|
||
* @returns {*} Returns the entry value.
|
||
*/
|
||
function listCacheGet(key) {
|
||
var data = this.__data__,
|
||
index = assocIndexOf(data, key);
|
||
|
||
return index < 0 ? undefined : data[index][1];
|
||
}
|
||
|
||
/**
|
||
* Checks if a list cache value for `key` exists.
|
||
*
|
||
* @private
|
||
* @name has
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the entry to check.
|
||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||
*/
|
||
function listCacheHas(key) {
|
||
return assocIndexOf(this.__data__, key) > -1;
|
||
}
|
||
|
||
/**
|
||
* Sets the list cache `key` to `value`.
|
||
*
|
||
* @private
|
||
* @name set
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the value to set.
|
||
* @param {*} value The value to set.
|
||
* @returns {Object} Returns the list cache instance.
|
||
*/
|
||
function listCacheSet(key, value) {
|
||
var data = this.__data__,
|
||
index = assocIndexOf(data, key);
|
||
|
||
if (index < 0) {
|
||
data.push([key, value]);
|
||
} else {
|
||
data[index][1] = value;
|
||
}
|
||
return this;
|
||
}
|
||
|
||
// Add methods to `ListCache`.
|
||
ListCache.prototype.clear = listCacheClear;
|
||
ListCache.prototype['delete'] = listCacheDelete;
|
||
ListCache.prototype.get = listCacheGet;
|
||
ListCache.prototype.has = listCacheHas;
|
||
ListCache.prototype.set = listCacheSet;
|
||
|
||
/**
|
||
* Creates a map cache object to store key-value pairs.
|
||
*
|
||
* @private
|
||
* @constructor
|
||
* @param {Array} [entries] The key-value pairs to cache.
|
||
*/
|
||
function MapCache(entries) {
|
||
var index = -1,
|
||
length = entries ? entries.length : 0;
|
||
|
||
this.clear();
|
||
while (++index < length) {
|
||
var entry = entries[index];
|
||
this.set(entry[0], entry[1]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Removes all key-value entries from the map.
|
||
*
|
||
* @private
|
||
* @name clear
|
||
* @memberOf MapCache
|
||
*/
|
||
function mapCacheClear() {
|
||
this.__data__ = {
|
||
'hash': new Hash,
|
||
'map': new (Map || ListCache),
|
||
'string': new Hash
|
||
};
|
||
}
|
||
|
||
/**
|
||
* Removes `key` and its value from the map.
|
||
*
|
||
* @private
|
||
* @name delete
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the value to remove.
|
||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||
*/
|
||
function mapCacheDelete(key) {
|
||
return getMapData(this, key)['delete'](key);
|
||
}
|
||
|
||
/**
|
||
* Gets the map value for `key`.
|
||
*
|
||
* @private
|
||
* @name get
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the value to get.
|
||
* @returns {*} Returns the entry value.
|
||
*/
|
||
function mapCacheGet(key) {
|
||
return getMapData(this, key).get(key);
|
||
}
|
||
|
||
/**
|
||
* Checks if a map value for `key` exists.
|
||
*
|
||
* @private
|
||
* @name has
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the entry to check.
|
||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||
*/
|
||
function mapCacheHas(key) {
|
||
return getMapData(this, key).has(key);
|
||
}
|
||
|
||
/**
|
||
* Sets the map `key` to `value`.
|
||
*
|
||
* @private
|
||
* @name set
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the value to set.
|
||
* @param {*} value The value to set.
|
||
* @returns {Object} Returns the map cache instance.
|
||
*/
|
||
function mapCacheSet(key, value) {
|
||
getMapData(this, key).set(key, value);
|
||
return this;
|
||
}
|
||
|
||
// Add methods to `MapCache`.
|
||
MapCache.prototype.clear = mapCacheClear;
|
||
MapCache.prototype['delete'] = mapCacheDelete;
|
||
MapCache.prototype.get = mapCacheGet;
|
||
MapCache.prototype.has = mapCacheHas;
|
||
MapCache.prototype.set = mapCacheSet;
|
||
|
||
/**
|
||
*
|
||
* Creates an array cache object to store unique values.
|
||
*
|
||
* @private
|
||
* @constructor
|
||
* @param {Array} [values] The values to cache.
|
||
*/
|
||
function SetCache(values) {
|
||
var index = -1,
|
||
length = values ? values.length : 0;
|
||
|
||
this.__data__ = new MapCache;
|
||
while (++index < length) {
|
||
this.add(values[index]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Adds `value` to the array cache.
|
||
*
|
||
* @private
|
||
* @name add
|
||
* @memberOf SetCache
|
||
* @alias push
|
||
* @param {*} value The value to cache.
|
||
* @returns {Object} Returns the cache instance.
|
||
*/
|
||
function setCacheAdd(value) {
|
||
this.__data__.set(value, HASH_UNDEFINED);
|
||
return this;
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is in the array cache.
|
||
*
|
||
* @private
|
||
* @name has
|
||
* @memberOf SetCache
|
||
* @param {*} value The value to search for.
|
||
* @returns {number} Returns `true` if `value` is found, else `false`.
|
||
*/
|
||
function setCacheHas(value) {
|
||
return this.__data__.has(value);
|
||
}
|
||
|
||
// Add methods to `SetCache`.
|
||
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
|
||
SetCache.prototype.has = setCacheHas;
|
||
|
||
/**
|
||
* Gets the index at which the `key` is found in `array` of key-value pairs.
|
||
*
|
||
* @private
|
||
* @param {Array} array The array to inspect.
|
||
* @param {*} key The key to search for.
|
||
* @returns {number} Returns the index of the matched value, else `-1`.
|
||
*/
|
||
function assocIndexOf(array, key) {
|
||
var length = array.length;
|
||
while (length--) {
|
||
if (eq(array[length][0], key)) {
|
||
return length;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.isNative` without bad shim checks.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a native function,
|
||
* else `false`.
|
||
*/
|
||
function baseIsNative(value) {
|
||
if (!isObject(value) || isMasked(value)) {
|
||
return false;
|
||
}
|
||
var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
|
||
return pattern.test(toSource(value));
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.uniqBy` without support for iteratee shorthands.
|
||
*
|
||
* @private
|
||
* @param {Array} array The array to inspect.
|
||
* @param {Function} [iteratee] The iteratee invoked per element.
|
||
* @param {Function} [comparator] The comparator invoked per element.
|
||
* @returns {Array} Returns the new duplicate free array.
|
||
*/
|
||
function baseUniq(array, iteratee, comparator) {
|
||
var index = -1,
|
||
includes = arrayIncludes,
|
||
length = array.length,
|
||
isCommon = true,
|
||
result = [],
|
||
seen = result;
|
||
|
||
if (comparator) {
|
||
isCommon = false;
|
||
includes = arrayIncludesWith;
|
||
}
|
||
else if (length >= LARGE_ARRAY_SIZE) {
|
||
var set = iteratee ? null : createSet(array);
|
||
if (set) {
|
||
return setToArray(set);
|
||
}
|
||
isCommon = false;
|
||
includes = cacheHas;
|
||
seen = new SetCache;
|
||
}
|
||
else {
|
||
seen = iteratee ? [] : result;
|
||
}
|
||
outer:
|
||
while (++index < length) {
|
||
var value = array[index],
|
||
computed = iteratee ? iteratee(value) : value;
|
||
|
||
value = (comparator || value !== 0) ? value : 0;
|
||
if (isCommon && computed === computed) {
|
||
var seenIndex = seen.length;
|
||
while (seenIndex--) {
|
||
if (seen[seenIndex] === computed) {
|
||
continue outer;
|
||
}
|
||
}
|
||
if (iteratee) {
|
||
seen.push(computed);
|
||
}
|
||
result.push(value);
|
||
}
|
||
else if (!includes(seen, computed, comparator)) {
|
||
if (seen !== result) {
|
||
seen.push(computed);
|
||
}
|
||
result.push(value);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
/**
|
||
* Creates a set object of `values`.
|
||
*
|
||
* @private
|
||
* @param {Array} values The values to add to the set.
|
||
* @returns {Object} Returns the new set.
|
||
*/
|
||
var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
|
||
return new Set(values);
|
||
};
|
||
|
||
/**
|
||
* Gets the data for `map`.
|
||
*
|
||
* @private
|
||
* @param {Object} map The map to query.
|
||
* @param {string} key The reference key.
|
||
* @returns {*} Returns the map data.
|
||
*/
|
||
function getMapData(map, key) {
|
||
var data = map.__data__;
|
||
return isKeyable(key)
|
||
? data[typeof key == 'string' ? 'string' : 'hash']
|
||
: data.map;
|
||
}
|
||
|
||
/**
|
||
* Gets the native function at `key` of `object`.
|
||
*
|
||
* @private
|
||
* @param {Object} object The object to query.
|
||
* @param {string} key The key of the method to get.
|
||
* @returns {*} Returns the function if it's native, else `undefined`.
|
||
*/
|
||
function getNative(object, key) {
|
||
var value = getValue(object, key);
|
||
return baseIsNative(value) ? value : undefined;
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is suitable for use as unique object key.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is suitable, else `false`.
|
||
*/
|
||
function isKeyable(value) {
|
||
var type = typeof value;
|
||
return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
|
||
? (value !== '__proto__')
|
||
: (value === null);
|
||
}
|
||
|
||
/**
|
||
* Checks if `func` has its source masked.
|
||
*
|
||
* @private
|
||
* @param {Function} func The function to check.
|
||
* @returns {boolean} Returns `true` if `func` is masked, else `false`.
|
||
*/
|
||
function isMasked(func) {
|
||
return !!maskSrcKey && (maskSrcKey in func);
|
||
}
|
||
|
||
/**
|
||
* Converts `func` to its source code.
|
||
*
|
||
* @private
|
||
* @param {Function} func The function to process.
|
||
* @returns {string} Returns the source code.
|
||
*/
|
||
function toSource(func) {
|
||
if (func != null) {
|
||
try {
|
||
return funcToString.call(func);
|
||
} catch (e) {}
|
||
try {
|
||
return (func + '');
|
||
} catch (e) {}
|
||
}
|
||
return '';
|
||
}
|
||
|
||
/**
|
||
* Creates a duplicate-free version of an array, using
|
||
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
|
||
* for equality comparisons, in which only the first occurrence of each
|
||
* element is kept.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Array
|
||
* @param {Array} array The array to inspect.
|
||
* @returns {Array} Returns the new duplicate free array.
|
||
* @example
|
||
*
|
||
* _.uniq([2, 1, 2]);
|
||
* // => [2, 1]
|
||
*/
|
||
function uniq(array) {
|
||
return (array && array.length)
|
||
? baseUniq(array)
|
||
: [];
|
||
}
|
||
|
||
/**
|
||
* Performs a
|
||
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
|
||
* comparison between two values to determine if they are equivalent.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to compare.
|
||
* @param {*} other The other value to compare.
|
||
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
||
* @example
|
||
*
|
||
* var object = { 'a': 1 };
|
||
* var other = { 'a': 1 };
|
||
*
|
||
* _.eq(object, object);
|
||
* // => true
|
||
*
|
||
* _.eq(object, other);
|
||
* // => false
|
||
*
|
||
* _.eq('a', 'a');
|
||
* // => true
|
||
*
|
||
* _.eq('a', Object('a'));
|
||
* // => false
|
||
*
|
||
* _.eq(NaN, NaN);
|
||
* // => true
|
||
*/
|
||
function eq(value, other) {
|
||
return value === other || (value !== value && other !== other);
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is classified as a `Function` object.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
|
||
* @example
|
||
*
|
||
* _.isFunction(_);
|
||
* // => true
|
||
*
|
||
* _.isFunction(/abc/);
|
||
* // => false
|
||
*/
|
||
function isFunction(value) {
|
||
// The use of `Object#toString` avoids issues with the `typeof` operator
|
||
// in Safari 8-9 which returns 'object' for typed array and other constructors.
|
||
var tag = isObject(value) ? objectToString.call(value) : '';
|
||
return tag == funcTag || tag == genTag;
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is the
|
||
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
|
||
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
|
||
* @example
|
||
*
|
||
* _.isObject({});
|
||
* // => true
|
||
*
|
||
* _.isObject([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isObject(_.noop);
|
||
* // => true
|
||
*
|
||
* _.isObject(null);
|
||
* // => false
|
||
*/
|
||
function isObject(value) {
|
||
var type = typeof value;
|
||
return !!value && (type == 'object' || type == 'function');
|
||
}
|
||
|
||
/**
|
||
* This method returns `undefined`.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 2.3.0
|
||
* @category Util
|
||
* @example
|
||
*
|
||
* _.times(2, _.noop);
|
||
* // => [undefined, undefined]
|
||
*/
|
||
function noop() {
|
||
// No operation performed.
|
||
}
|
||
|
||
module.exports = uniq;
|
||
|
||
|
||
/***/ }),
|
||
/* 127 */,
|
||
/* 128 */,
|
||
/* 129 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("child_process");
|
||
|
||
/***/ }),
|
||
/* 130 */,
|
||
/* 131 */
|
||
/***/ (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 core = __importStar(__webpack_require__(470));
|
||
const installer = __importStar(__webpack_require__(923));
|
||
const auth = __importStar(__webpack_require__(749));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const cache_restore_1 = __webpack_require__(409);
|
||
const url_1 = __webpack_require__(835);
|
||
const os = __webpack_require__(87);
|
||
function run() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
try {
|
||
//
|
||
// Version is optional. If supplied, install / use from the tool cache
|
||
// If not supplied then task is still used to setup proxy, auth, etc...
|
||
//
|
||
let version = core.getInput('node-version');
|
||
if (!version) {
|
||
version = core.getInput('version');
|
||
}
|
||
let arch = core.getInput('architecture');
|
||
const cache = core.getInput('cache');
|
||
// if architecture supplied but node-version is not
|
||
// if we don't throw a warning, the already installed x64 node will be used which is not probably what user meant.
|
||
if (arch && !version) {
|
||
core.warning('`architecture` is provided but `node-version` is missing. In this configuration, the version/architecture of Node will not be changed. To fix this, provide `architecture` in combination with `node-version`');
|
||
}
|
||
if (!arch) {
|
||
arch = os.arch();
|
||
}
|
||
if (version) {
|
||
let token = core.getInput('token');
|
||
let auth = !token || isGhes() ? undefined : `token ${token}`;
|
||
let stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE';
|
||
const checkLatest = (core.getInput('check-latest') || 'false').toUpperCase() === 'TRUE';
|
||
yield installer.getNode(version, stable, checkLatest, auth, arch);
|
||
}
|
||
const registryUrl = core.getInput('registry-url');
|
||
const alwaysAuth = core.getInput('always-auth');
|
||
if (registryUrl) {
|
||
auth.configAuthentication(registryUrl, alwaysAuth);
|
||
}
|
||
if (cache) {
|
||
if (isGhes()) {
|
||
throw new Error('Caching is not supported on GHES');
|
||
}
|
||
yield cache_restore_1.restoreCache(cache);
|
||
}
|
||
const matchersPath = path.join(__dirname, '../..', '.github');
|
||
core.info(`##[add-matcher]${path.join(matchersPath, 'tsc.json')}`);
|
||
core.info(`##[add-matcher]${path.join(matchersPath, 'eslint-stylish.json')}`);
|
||
core.info(`##[add-matcher]${path.join(matchersPath, 'eslint-compact.json')}`);
|
||
}
|
||
catch (error) {
|
||
core.setFailed(error.message);
|
||
}
|
||
});
|
||
}
|
||
exports.run = run;
|
||
function isGhes() {
|
||
const ghUrl = new url_1.URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
|
||
return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 132 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.ROOT_CONTEXT = exports.createContextKey = exports.setBaggage = exports.getBaggage = exports.isInstrumentationSuppressed = exports.unsuppressInstrumentation = exports.suppressInstrumentation = exports.getSpanContext = exports.setSpanContext = exports.setSpan = exports.getSpan = void 0;
|
||
var NoopSpan_1 = __webpack_require__(767);
|
||
/**
|
||
* span key
|
||
*/
|
||
var SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');
|
||
/**
|
||
* Shared key for indicating if instrumentation should be suppressed beyond
|
||
* this current scope.
|
||
*/
|
||
var SUPPRESS_INSTRUMENTATION_KEY = createContextKey('OpenTelemetry Context Key SUPPRESS_INSTRUMENTATION');
|
||
/**
|
||
* Baggage key
|
||
*/
|
||
var BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');
|
||
/**
|
||
* Return the span if one exists
|
||
*
|
||
* @param context context to get span from
|
||
*/
|
||
function getSpan(context) {
|
||
return context.getValue(SPAN_KEY) || undefined;
|
||
}
|
||
exports.getSpan = getSpan;
|
||
/**
|
||
* Set the span on a context
|
||
*
|
||
* @param context context to use as parent
|
||
* @param span span to set active
|
||
*/
|
||
function setSpan(context, span) {
|
||
return context.setValue(SPAN_KEY, span);
|
||
}
|
||
exports.setSpan = setSpan;
|
||
/**
|
||
* Wrap span context in a NoopSpan and set as span in a new
|
||
* context
|
||
*
|
||
* @param context context to set active span on
|
||
* @param spanContext span context to be wrapped
|
||
*/
|
||
function setSpanContext(context, spanContext) {
|
||
return setSpan(context, new NoopSpan_1.NoopSpan(spanContext));
|
||
}
|
||
exports.setSpanContext = setSpanContext;
|
||
/**
|
||
* Get the span context of the span if it exists.
|
||
*
|
||
* @param context context to get values from
|
||
*/
|
||
function getSpanContext(context) {
|
||
var _a;
|
||
return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.context();
|
||
}
|
||
exports.getSpanContext = getSpanContext;
|
||
/**
|
||
* Sets value on context to indicate that instrumentation should
|
||
* be suppressed beyond this current scope.
|
||
*
|
||
* @param context context to set the suppress instrumentation value on.
|
||
*/
|
||
function suppressInstrumentation(context) {
|
||
return context.setValue(SUPPRESS_INSTRUMENTATION_KEY, true);
|
||
}
|
||
exports.suppressInstrumentation = suppressInstrumentation;
|
||
/**
|
||
* Sets value on context to indicate that instrumentation should
|
||
* no-longer be suppressed beyond this current scope.
|
||
*
|
||
* @param context context to set the suppress instrumentation value on.
|
||
*/
|
||
function unsuppressInstrumentation(context) {
|
||
return context.setValue(SUPPRESS_INSTRUMENTATION_KEY, false);
|
||
}
|
||
exports.unsuppressInstrumentation = unsuppressInstrumentation;
|
||
/**
|
||
* Return current suppress instrumentation value for the given context,
|
||
* if it exists.
|
||
*
|
||
* @param context context check for the suppress instrumentation value.
|
||
*/
|
||
function isInstrumentationSuppressed(context) {
|
||
return Boolean(context.getValue(SUPPRESS_INSTRUMENTATION_KEY));
|
||
}
|
||
exports.isInstrumentationSuppressed = isInstrumentationSuppressed;
|
||
/**
|
||
* @param {Context} Context that manage all context values
|
||
* @returns {Baggage} Extracted baggage from the context
|
||
*/
|
||
function getBaggage(context) {
|
||
return context.getValue(BAGGAGE_KEY) || undefined;
|
||
}
|
||
exports.getBaggage = getBaggage;
|
||
/**
|
||
* @param {Context} Context that manage all context values
|
||
* @param {Baggage} baggage that will be set in the actual context
|
||
*/
|
||
function setBaggage(context, baggage) {
|
||
return context.setValue(BAGGAGE_KEY, baggage);
|
||
}
|
||
exports.setBaggage = setBaggage;
|
||
/** Get a key to uniquely identify a context value */
|
||
function createContextKey(description) {
|
||
return Symbol.for(description);
|
||
}
|
||
exports.createContextKey = createContextKey;
|
||
var BaseContext = /** @class */ (function () {
|
||
/**
|
||
* Construct a new context which inherits values from an optional parent context.
|
||
*
|
||
* @param parentContext a context from which to inherit values
|
||
*/
|
||
function BaseContext(parentContext) {
|
||
// for minification
|
||
var self = this;
|
||
self._currentContext = parentContext ? new Map(parentContext) : new Map();
|
||
self.getValue = function (key) { return self._currentContext.get(key); };
|
||
self.setValue = function (key, value) {
|
||
var context = new BaseContext(self._currentContext);
|
||
context._currentContext.set(key, value);
|
||
return context;
|
||
};
|
||
self.deleteValue = function (key) {
|
||
var context = new BaseContext(self._currentContext);
|
||
context._currentContext.delete(key);
|
||
return context;
|
||
};
|
||
}
|
||
return BaseContext;
|
||
}());
|
||
/** The root context is used as the default parent context when there is no active context */
|
||
exports.ROOT_CONTEXT = new BaseContext();
|
||
//# sourceMappingURL=context.js.map
|
||
|
||
/***/ }),
|
||
/* 133 */,
|
||
/* 134 */,
|
||
/* 135 */,
|
||
/* 136 */,
|
||
/* 137 */,
|
||
/* 138 */,
|
||
/* 139 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Unique ID creation requires a high quality random # generator. In node.js
|
||
// this is pretty straight-forward - we use the crypto API.
|
||
|
||
var crypto = __webpack_require__(417);
|
||
|
||
module.exports = function nodeRNG() {
|
||
return crypto.randomBytes(16);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 140 */,
|
||
/* 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;
|
||
agent.defaultPort = 443;
|
||
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;
|
||
agent.defaultPort = 443;
|
||
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,
|
||
headers: {
|
||
host: options.host + ':' + options.port
|
||
}
|
||
});
|
||
if (options.localAddress) {
|
||
connectOptions.localAddress = options.localAddress;
|
||
}
|
||
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) {
|
||
debug('tunneling socket could not be established, statusCode=%d',
|
||
res.statusCode);
|
||
socket.destroy();
|
||
var error = new Error('tunneling socket could not be established, ' +
|
||
'statusCode=' + res.statusCode);
|
||
error.code = 'ECONNRESET';
|
||
options.request.emit('error', error);
|
||
self.removeSocket(placeholder);
|
||
return;
|
||
}
|
||
if (head.length > 0) {
|
||
debug('got illegal response body from proxy');
|
||
socket.destroy();
|
||
var error = new Error('got illegal response body from proxy');
|
||
error.code = 'ECONNRESET';
|
||
options.request.emit('error', error);
|
||
self.removeSocket(placeholder);
|
||
return;
|
||
}
|
||
debug('tunneling connection has established');
|
||
self.sockets[self.sockets.indexOf(placeholder)] = socket;
|
||
return cb(socket);
|
||
}
|
||
|
||
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
|
||
|
||
|
||
/***/ }),
|
||
/* 142 */,
|
||
/* 143 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = withAuthorizationPrefix;
|
||
|
||
const atob = __webpack_require__(368);
|
||
|
||
const REGEX_IS_BASIC_AUTH = /^[\w-]+:/;
|
||
|
||
function withAuthorizationPrefix(authorization) {
|
||
if (/^(basic|bearer|token) /i.test(authorization)) {
|
||
return authorization;
|
||
}
|
||
|
||
try {
|
||
if (REGEX_IS_BASIC_AUTH.test(atob(authorization))) {
|
||
return `basic ${authorization}`;
|
||
}
|
||
} catch (error) {}
|
||
|
||
if (authorization.split(/\./).length === 3) {
|
||
return `bearer ${authorization}`;
|
||
}
|
||
|
||
return `token ${authorization}`;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 144 */
|
||
/***/ (function(module) {
|
||
|
||
/*! *****************************************************************************
|
||
Copyright (c) Microsoft Corporation.
|
||
|
||
Permission to use, copy, modify, and/or distribute this software for any
|
||
purpose with or without fee is hereby granted.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||
PERFORMANCE OF THIS SOFTWARE.
|
||
***************************************************************************** */
|
||
/* global global, define, System, Reflect, Promise */
|
||
var __extends;
|
||
var __assign;
|
||
var __rest;
|
||
var __decorate;
|
||
var __param;
|
||
var __metadata;
|
||
var __awaiter;
|
||
var __generator;
|
||
var __exportStar;
|
||
var __values;
|
||
var __read;
|
||
var __spread;
|
||
var __spreadArrays;
|
||
var __spreadArray;
|
||
var __await;
|
||
var __asyncGenerator;
|
||
var __asyncDelegator;
|
||
var __asyncValues;
|
||
var __makeTemplateObject;
|
||
var __importStar;
|
||
var __importDefault;
|
||
var __classPrivateFieldGet;
|
||
var __classPrivateFieldSet;
|
||
var __createBinding;
|
||
(function (factory) {
|
||
var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
|
||
if (typeof define === "function" && define.amd) {
|
||
define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
|
||
}
|
||
else if ( true && typeof module.exports === "object") {
|
||
factory(createExporter(root, createExporter(module.exports)));
|
||
}
|
||
else {
|
||
factory(createExporter(root));
|
||
}
|
||
function createExporter(exports, previous) {
|
||
if (exports !== root) {
|
||
if (typeof Object.create === "function") {
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
}
|
||
else {
|
||
exports.__esModule = true;
|
||
}
|
||
}
|
||
return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
|
||
}
|
||
})
|
||
(function (exporter) {
|
||
var extendStatics = Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
|
||
__extends = function (d, b) {
|
||
if (typeof b !== "function" && b !== null)
|
||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||
extendStatics(d, b);
|
||
function __() { this.constructor = d; }
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
|
||
__assign = Object.assign || function (t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__rest = function (s, e) {
|
||
var t = {};
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||
t[p] = s[p];
|
||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||
t[p[i]] = s[p[i]];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__decorate = function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
|
||
__param = function (paramIndex, decorator) {
|
||
return function (target, key) { decorator(target, key, paramIndex); }
|
||
};
|
||
|
||
__metadata = function (metadataKey, metadataValue) {
|
||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
|
||
};
|
||
|
||
__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());
|
||
});
|
||
};
|
||
|
||
__generator = function (thisArg, body) {
|
||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||
function step(op) {
|
||
if (f) throw new TypeError("Generator is already executing.");
|
||
while (_) try {
|
||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||
switch (op[0]) {
|
||
case 0: case 1: t = op; break;
|
||
case 4: _.label++; return { value: op[1], done: false };
|
||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||
default:
|
||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||
if (t[2]) _.ops.pop();
|
||
_.trys.pop(); continue;
|
||
}
|
||
op = body.call(thisArg, _);
|
||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||
}
|
||
};
|
||
|
||
__exportStar = function(m, o) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
|
||
};
|
||
|
||
__createBinding = Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
|
||
__values = function (o) {
|
||
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
||
if (m) return m.call(o);
|
||
if (o && typeof o.length === "number") return {
|
||
next: function () {
|
||
if (o && i >= o.length) o = void 0;
|
||
return { value: o && o[i++], done: !o };
|
||
}
|
||
};
|
||
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
||
};
|
||
|
||
__read = function (o, n) {
|
||
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
||
if (!m) return o;
|
||
var i = m.call(o), r, ar = [], e;
|
||
try {
|
||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
||
}
|
||
catch (error) { e = { error: error }; }
|
||
finally {
|
||
try {
|
||
if (r && !r.done && (m = i["return"])) m.call(i);
|
||
}
|
||
finally { if (e) throw e.error; }
|
||
}
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spread = function () {
|
||
for (var ar = [], i = 0; i < arguments.length; i++)
|
||
ar = ar.concat(__read(arguments[i]));
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spreadArrays = function () {
|
||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||
r[k] = a[j];
|
||
return r;
|
||
};
|
||
|
||
__spreadArray = function (to, from, pack) {
|
||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||
if (ar || !(i in from)) {
|
||
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||
ar[i] = from[i];
|
||
}
|
||
}
|
||
return to.concat(ar || from);
|
||
};
|
||
|
||
__await = function (v) {
|
||
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
||
};
|
||
|
||
__asyncGenerator = function (thisArg, _arguments, generator) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
||
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
||
function fulfill(value) { resume("next", value); }
|
||
function reject(value) { resume("throw", value); }
|
||
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
||
};
|
||
|
||
__asyncDelegator = function (o) {
|
||
var i, p;
|
||
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
||
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
||
};
|
||
|
||
__asyncValues = function (o) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||
};
|
||
|
||
__makeTemplateObject = function (cooked, raw) {
|
||
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
||
return cooked;
|
||
};
|
||
|
||
var __setModuleDefault = Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
};
|
||
|
||
__importStar = function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
|
||
__importDefault = function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
|
||
__classPrivateFieldGet = function (receiver, state, kind, f) {
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
||
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
||
};
|
||
|
||
__classPrivateFieldSet = function (receiver, state, value, kind, f) {
|
||
if (kind === "m") throw new TypeError("Private method is not writable");
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
||
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
||
};
|
||
|
||
exporter("__extends", __extends);
|
||
exporter("__assign", __assign);
|
||
exporter("__rest", __rest);
|
||
exporter("__decorate", __decorate);
|
||
exporter("__param", __param);
|
||
exporter("__metadata", __metadata);
|
||
exporter("__awaiter", __awaiter);
|
||
exporter("__generator", __generator);
|
||
exporter("__exportStar", __exportStar);
|
||
exporter("__createBinding", __createBinding);
|
||
exporter("__values", __values);
|
||
exporter("__read", __read);
|
||
exporter("__spread", __spread);
|
||
exporter("__spreadArrays", __spreadArrays);
|
||
exporter("__spreadArray", __spreadArray);
|
||
exporter("__await", __await);
|
||
exporter("__asyncGenerator", __asyncGenerator);
|
||
exporter("__asyncDelegator", __asyncDelegator);
|
||
exporter("__asyncValues", __asyncValues);
|
||
exporter("__makeTemplateObject", __makeTemplateObject);
|
||
exporter("__importStar", __importStar);
|
||
exporter("__importDefault", __importDefault);
|
||
exporter("__classPrivateFieldGet", __classPrivateFieldGet);
|
||
exporter("__classPrivateFieldSet", __classPrivateFieldSet);
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
/* 145 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
const pump = __webpack_require__(453);
|
||
const bufferStream = __webpack_require__(966);
|
||
|
||
class MaxBufferError extends Error {
|
||
constructor() {
|
||
super('maxBuffer exceeded');
|
||
this.name = 'MaxBufferError';
|
||
}
|
||
}
|
||
|
||
function getStream(inputStream, options) {
|
||
if (!inputStream) {
|
||
return Promise.reject(new Error('Expected a stream'));
|
||
}
|
||
|
||
options = Object.assign({maxBuffer: Infinity}, options);
|
||
|
||
const {maxBuffer} = options;
|
||
|
||
let stream;
|
||
return new Promise((resolve, reject) => {
|
||
const rejectPromise = error => {
|
||
if (error) { // A null check
|
||
error.bufferedData = stream.getBufferedValue();
|
||
}
|
||
reject(error);
|
||
};
|
||
|
||
stream = pump(inputStream, bufferStream(options), error => {
|
||
if (error) {
|
||
rejectPromise(error);
|
||
return;
|
||
}
|
||
|
||
resolve();
|
||
});
|
||
|
||
stream.on('data', () => {
|
||
if (stream.getBufferedLength() > maxBuffer) {
|
||
rejectPromise(new MaxBufferError());
|
||
}
|
||
});
|
||
}).then(() => stream.getBufferedValue());
|
||
}
|
||
|
||
module.exports = getStream;
|
||
module.exports.buffer = (stream, options) => getStream(stream, Object.assign({}, options, {encoding: 'buffer'}));
|
||
module.exports.array = (stream, options) => getStream(stream, Object.assign({}, options, {array: true}));
|
||
module.exports.MaxBufferError = MaxBufferError;
|
||
|
||
|
||
/***/ }),
|
||
/* 146 */,
|
||
/* 147 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
|
||
exports.fromCallback = function (fn) {
|
||
return Object.defineProperty(function () {
|
||
if (typeof arguments[arguments.length - 1] === 'function') fn.apply(this, arguments)
|
||
else {
|
||
return new Promise((resolve, reject) => {
|
||
arguments[arguments.length] = (err, res) => {
|
||
if (err) return reject(err)
|
||
resolve(res)
|
||
}
|
||
arguments.length++
|
||
fn.apply(this, arguments)
|
||
})
|
||
}
|
||
}, 'name', { value: fn.name })
|
||
}
|
||
|
||
exports.fromPromise = function (fn) {
|
||
return Object.defineProperty(function () {
|
||
const cb = arguments[arguments.length - 1]
|
||
if (typeof cb !== 'function') return fn.apply(this, arguments)
|
||
else fn.apply(this, arguments).then(r => cb(null, r), cb)
|
||
}, 'name', { value: fn.name })
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 148 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = paginatePlugin;
|
||
|
||
const iterator = __webpack_require__(8);
|
||
const paginate = __webpack_require__(807);
|
||
|
||
function paginatePlugin(octokit) {
|
||
octokit.paginate = paginate.bind(null, octokit);
|
||
octokit.paginate.iterator = iterator.bind(null, octokit);
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 149 */,
|
||
/* 150 */,
|
||
/* 151 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.NOOP_TRACER = exports.NoopTracer = void 0;
|
||
var context_1 = __webpack_require__(132);
|
||
var NoopSpan_1 = __webpack_require__(767);
|
||
var spancontext_utils_1 = __webpack_require__(629);
|
||
/**
|
||
* No-op implementations of {@link Tracer}.
|
||
*/
|
||
var NoopTracer = /** @class */ (function () {
|
||
function NoopTracer() {
|
||
}
|
||
// startSpan starts a noop span.
|
||
NoopTracer.prototype.startSpan = function (name, options, context) {
|
||
var root = Boolean(options === null || options === void 0 ? void 0 : options.root);
|
||
if (root) {
|
||
return new NoopSpan_1.NoopSpan();
|
||
}
|
||
var parentFromContext = context && context_1.getSpanContext(context);
|
||
if (isSpanContext(parentFromContext) &&
|
||
spancontext_utils_1.isSpanContextValid(parentFromContext)) {
|
||
return new NoopSpan_1.NoopSpan(parentFromContext);
|
||
}
|
||
else {
|
||
return new NoopSpan_1.NoopSpan();
|
||
}
|
||
};
|
||
return NoopTracer;
|
||
}());
|
||
exports.NoopTracer = NoopTracer;
|
||
function isSpanContext(spanContext) {
|
||
return (typeof spanContext === 'object' &&
|
||
typeof spanContext['spanId'] === 'string' &&
|
||
typeof spanContext['traceId'] === 'string' &&
|
||
typeof spanContext['traceFlags'] === 'number');
|
||
}
|
||
exports.NOOP_TRACER = new NoopTracer();
|
||
//# sourceMappingURL=NoopTracer.js.map
|
||
|
||
/***/ }),
|
||
/* 152 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var Stream = __webpack_require__(794).Stream;
|
||
var util = __webpack_require__(669);
|
||
|
||
module.exports = DelayedStream;
|
||
function DelayedStream() {
|
||
this.source = null;
|
||
this.dataSize = 0;
|
||
this.maxDataSize = 1024 * 1024;
|
||
this.pauseStream = true;
|
||
|
||
this._maxDataSizeExceeded = false;
|
||
this._released = false;
|
||
this._bufferedEvents = [];
|
||
}
|
||
util.inherits(DelayedStream, Stream);
|
||
|
||
DelayedStream.create = function(source, options) {
|
||
var delayedStream = new this();
|
||
|
||
options = options || {};
|
||
for (var option in options) {
|
||
delayedStream[option] = options[option];
|
||
}
|
||
|
||
delayedStream.source = source;
|
||
|
||
var realEmit = source.emit;
|
||
source.emit = function() {
|
||
delayedStream._handleEmit(arguments);
|
||
return realEmit.apply(source, arguments);
|
||
};
|
||
|
||
source.on('error', function() {});
|
||
if (delayedStream.pauseStream) {
|
||
source.pause();
|
||
}
|
||
|
||
return delayedStream;
|
||
};
|
||
|
||
Object.defineProperty(DelayedStream.prototype, 'readable', {
|
||
configurable: true,
|
||
enumerable: true,
|
||
get: function() {
|
||
return this.source.readable;
|
||
}
|
||
});
|
||
|
||
DelayedStream.prototype.setEncoding = function() {
|
||
return this.source.setEncoding.apply(this.source, arguments);
|
||
};
|
||
|
||
DelayedStream.prototype.resume = function() {
|
||
if (!this._released) {
|
||
this.release();
|
||
}
|
||
|
||
this.source.resume();
|
||
};
|
||
|
||
DelayedStream.prototype.pause = function() {
|
||
this.source.pause();
|
||
};
|
||
|
||
DelayedStream.prototype.release = function() {
|
||
this._released = true;
|
||
|
||
this._bufferedEvents.forEach(function(args) {
|
||
this.emit.apply(this, args);
|
||
}.bind(this));
|
||
this._bufferedEvents = [];
|
||
};
|
||
|
||
DelayedStream.prototype.pipe = function() {
|
||
var r = Stream.prototype.pipe.apply(this, arguments);
|
||
this.resume();
|
||
return r;
|
||
};
|
||
|
||
DelayedStream.prototype._handleEmit = function(args) {
|
||
if (this._released) {
|
||
this.emit.apply(this, args);
|
||
return;
|
||
}
|
||
|
||
if (args[0] === 'data') {
|
||
this.dataSize += args[1].length;
|
||
this._checkIfMaxDataSizeExceeded();
|
||
}
|
||
|
||
this._bufferedEvents.push(args);
|
||
};
|
||
|
||
DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {
|
||
if (this._maxDataSizeExceeded) {
|
||
return;
|
||
}
|
||
|
||
if (this.dataSize <= this.maxDataSize) {
|
||
return;
|
||
}
|
||
|
||
this._maxDataSizeExceeded = true;
|
||
var message =
|
||
'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'
|
||
this.emit('error', new Error(message));
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 153 */,
|
||
/* 154 */,
|
||
/* 155 */,
|
||
/* 156 */,
|
||
/* 157 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var async = __webpack_require__(751)
|
||
, abort = __webpack_require__(566)
|
||
;
|
||
|
||
// API
|
||
module.exports = iterate;
|
||
|
||
/**
|
||
* Iterates over each job object
|
||
*
|
||
* @param {array|object} list - array or object (named list) to iterate over
|
||
* @param {function} iterator - iterator to run
|
||
* @param {object} state - current job status
|
||
* @param {function} callback - invoked when all elements processed
|
||
*/
|
||
function iterate(list, iterator, state, callback)
|
||
{
|
||
// store current index
|
||
var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;
|
||
|
||
state.jobs[key] = runJob(iterator, key, list[key], function(error, output)
|
||
{
|
||
// don't repeat yourself
|
||
// skip secondary callbacks
|
||
if (!(key in state.jobs))
|
||
{
|
||
return;
|
||
}
|
||
|
||
// clean up jobs
|
||
delete state.jobs[key];
|
||
|
||
if (error)
|
||
{
|
||
// don't process rest of the results
|
||
// stop still active jobs
|
||
// and reset the list
|
||
abort(state);
|
||
}
|
||
else
|
||
{
|
||
state.results[key] = output;
|
||
}
|
||
|
||
// return salvaged results
|
||
callback(error, state.results);
|
||
});
|
||
}
|
||
|
||
/**
|
||
* Runs iterator over provided job element
|
||
*
|
||
* @param {function} iterator - iterator to invoke
|
||
* @param {string|number} key - key/index of the element in the list of jobs
|
||
* @param {mixed} item - job description
|
||
* @param {function} callback - invoked after iterator is done with the job
|
||
* @returns {function|mixed} - job abort function or something else
|
||
*/
|
||
function runJob(iterator, key, item, callback)
|
||
{
|
||
var aborter;
|
||
|
||
// allow shortcut if iterator expects only two arguments
|
||
if (iterator.length == 2)
|
||
{
|
||
aborter = iterator(item, async(callback));
|
||
}
|
||
// otherwise go with full three arguments
|
||
else
|
||
{
|
||
aborter = iterator(item, key, async(callback));
|
||
}
|
||
|
||
return aborter;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 158 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=Time.js.map
|
||
|
||
/***/ }),
|
||
/* 159 */,
|
||
/* 160 */,
|
||
/* 161 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
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 core = __importStar(__webpack_require__(470));
|
||
/**
|
||
* Returns a copy of the upload options with defaults filled in.
|
||
*
|
||
* @param copy the original upload options
|
||
*/
|
||
function getUploadOptions(copy) {
|
||
const result = {
|
||
uploadConcurrency: 4,
|
||
uploadChunkSize: 32 * 1024 * 1024
|
||
};
|
||
if (copy) {
|
||
if (typeof copy.uploadConcurrency === 'number') {
|
||
result.uploadConcurrency = copy.uploadConcurrency;
|
||
}
|
||
if (typeof copy.uploadChunkSize === 'number') {
|
||
result.uploadChunkSize = copy.uploadChunkSize;
|
||
}
|
||
}
|
||
core.debug(`Upload concurrency: ${result.uploadConcurrency}`);
|
||
core.debug(`Upload chunk size: ${result.uploadChunkSize}`);
|
||
return result;
|
||
}
|
||
exports.getUploadOptions = getUploadOptions;
|
||
/**
|
||
* Returns a copy of the download options with defaults filled in.
|
||
*
|
||
* @param copy the original download options
|
||
*/
|
||
function getDownloadOptions(copy) {
|
||
const result = {
|
||
useAzureSdk: true,
|
||
downloadConcurrency: 8,
|
||
timeoutInMs: 30000
|
||
};
|
||
if (copy) {
|
||
if (typeof copy.useAzureSdk === 'boolean') {
|
||
result.useAzureSdk = copy.useAzureSdk;
|
||
}
|
||
if (typeof copy.downloadConcurrency === 'number') {
|
||
result.downloadConcurrency = copy.downloadConcurrency;
|
||
}
|
||
if (typeof copy.timeoutInMs === 'number') {
|
||
result.timeoutInMs = copy.timeoutInMs;
|
||
}
|
||
}
|
||
core.debug(`Use Azure SDK: ${result.useAzureSdk}`);
|
||
core.debug(`Download concurrency: ${result.downloadConcurrency}`);
|
||
core.debug(`Request timeout (ms): ${result.timeoutInMs}`);
|
||
return result;
|
||
}
|
||
exports.getDownloadOptions = getDownloadOptions;
|
||
//# sourceMappingURL=options.js.map
|
||
|
||
/***/ }),
|
||
/* 162 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.NOOP_TRACER_PROVIDER = exports.NoopTracerProvider = void 0;
|
||
var NoopTracer_1 = __webpack_require__(151);
|
||
/**
|
||
* An implementation of the {@link TracerProvider} which returns an impotent
|
||
* Tracer for all calls to `getTracer`.
|
||
*
|
||
* All operations are no-op.
|
||
*/
|
||
var NoopTracerProvider = /** @class */ (function () {
|
||
function NoopTracerProvider() {
|
||
}
|
||
NoopTracerProvider.prototype.getTracer = function (_name, _version) {
|
||
return NoopTracer_1.NOOP_TRACER;
|
||
};
|
||
return NoopTracerProvider;
|
||
}());
|
||
exports.NoopTracerProvider = NoopTracerProvider;
|
||
exports.NOOP_TRACER_PROVIDER = new NoopTracerProvider();
|
||
//# sourceMappingURL=NoopTracerProvider.js.map
|
||
|
||
/***/ }),
|
||
/* 163 */,
|
||
/* 164 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
|
||
var _validate = _interopRequireDefault(__webpack_require__(676));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
/**
|
||
* Convert array of 16 byte values to UUID string format of the form:
|
||
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|
||
*/
|
||
const byteToHex = [];
|
||
|
||
for (let i = 0; i < 256; ++i) {
|
||
byteToHex.push((i + 0x100).toString(16).substr(1));
|
||
}
|
||
|
||
function stringify(arr, offset = 0) {
|
||
// Note: Be careful editing this code! It's been tuned for performance
|
||
// and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
|
||
const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one
|
||
// of the following:
|
||
// - One or more input array values don't map to a hex octet (leading to
|
||
// "undefined" in the uuid)
|
||
// - Invalid input values for the RFC `version` or `variant` fields
|
||
|
||
if (!(0, _validate.default)(uuid)) {
|
||
throw TypeError('Stringified UUID is invalid');
|
||
}
|
||
|
||
return uuid;
|
||
}
|
||
|
||
var _default = stringify;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 165 */,
|
||
/* 166 */,
|
||
/* 167 */,
|
||
/* 168 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
const alias = ['stdin', 'stdout', 'stderr'];
|
||
|
||
const hasAlias = opts => alias.some(x => Boolean(opts[x]));
|
||
|
||
module.exports = opts => {
|
||
if (!opts) {
|
||
return null;
|
||
}
|
||
|
||
if (opts.stdio && hasAlias(opts)) {
|
||
throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${alias.map(x => `\`${x}\``).join(', ')}`);
|
||
}
|
||
|
||
if (typeof opts.stdio === 'string') {
|
||
return opts.stdio;
|
||
}
|
||
|
||
const stdio = opts.stdio || [];
|
||
|
||
if (!Array.isArray(stdio)) {
|
||
throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``);
|
||
}
|
||
|
||
const result = [];
|
||
const len = Math.max(stdio.length, alias.length);
|
||
|
||
for (let i = 0; i < len; i++) {
|
||
let value = null;
|
||
|
||
if (stdio[i] !== undefined) {
|
||
value = stdio[i];
|
||
} else if (opts[alias[i]] !== undefined) {
|
||
value = opts[alias[i]];
|
||
}
|
||
|
||
result[i] = value;
|
||
}
|
||
|
||
return result;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 169 */,
|
||
/* 170 */,
|
||
/* 171 */,
|
||
/* 172 */,
|
||
/* 173 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
|
||
var _rng = _interopRequireDefault(__webpack_require__(944));
|
||
|
||
var _stringify = _interopRequireDefault(__webpack_require__(164));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
// **`v1()` - Generate time-based UUID**
|
||
//
|
||
// Inspired by https://github.com/LiosK/UUID.js
|
||
// and http://docs.python.org/library/uuid.html
|
||
let _nodeId;
|
||
|
||
let _clockseq; // Previous uuid creation time
|
||
|
||
|
||
let _lastMSecs = 0;
|
||
let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
|
||
|
||
function v1(options, buf, offset) {
|
||
let i = buf && offset || 0;
|
||
const b = buf || new Array(16);
|
||
options = options || {};
|
||
let node = options.node || _nodeId;
|
||
let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
|
||
// specified. We do this lazily to minimize issues related to insufficient
|
||
// system entropy. See #189
|
||
|
||
if (node == null || clockseq == null) {
|
||
const seedBytes = options.random || (options.rng || _rng.default)();
|
||
|
||
if (node == null) {
|
||
// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
|
||
node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];
|
||
}
|
||
|
||
if (clockseq == null) {
|
||
// Per 4.2.2, randomize (14 bit) clockseq
|
||
clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
|
||
}
|
||
} // UUID timestamps are 100 nano-second units since the Gregorian epoch,
|
||
// (1582-10-15 00:00). JSNumbers aren't precise enough for this, so
|
||
// time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
|
||
// (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
|
||
|
||
|
||
let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
|
||
// cycle to simulate higher resolution clock
|
||
|
||
let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
|
||
|
||
const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
|
||
|
||
if (dt < 0 && options.clockseq === undefined) {
|
||
clockseq = clockseq + 1 & 0x3fff;
|
||
} // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
|
||
// time interval
|
||
|
||
|
||
if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
|
||
nsecs = 0;
|
||
} // Per 4.2.1.2 Throw error if too many uuids are requested
|
||
|
||
|
||
if (nsecs >= 10000) {
|
||
throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
|
||
}
|
||
|
||
_lastMSecs = msecs;
|
||
_lastNSecs = nsecs;
|
||
_clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
|
||
|
||
msecs += 12219292800000; // `time_low`
|
||
|
||
const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
|
||
b[i++] = tl >>> 24 & 0xff;
|
||
b[i++] = tl >>> 16 & 0xff;
|
||
b[i++] = tl >>> 8 & 0xff;
|
||
b[i++] = tl & 0xff; // `time_mid`
|
||
|
||
const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
|
||
b[i++] = tmh >>> 8 & 0xff;
|
||
b[i++] = tmh & 0xff; // `time_high_and_version`
|
||
|
||
b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
|
||
|
||
b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
|
||
|
||
b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`
|
||
|
||
b[i++] = clockseq & 0xff; // `node`
|
||
|
||
for (let n = 0; n < 6; ++n) {
|
||
b[i + n] = node[n];
|
||
}
|
||
|
||
return buf || (0, _stringify.default)(b);
|
||
}
|
||
|
||
var _default = v1;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 174 */,
|
||
/* 175 */,
|
||
/* 176 */,
|
||
/* 177 */,
|
||
/* 178 */,
|
||
/* 179 */,
|
||
/* 180 */,
|
||
/* 181 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=span.js.map
|
||
|
||
/***/ }),
|
||
/* 182 */,
|
||
/* 183 */,
|
||
/* 184 */,
|
||
/* 185 */,
|
||
/* 186 */,
|
||
/* 187 */,
|
||
/* 188 */,
|
||
/* 189 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var rng = __webpack_require__(984);
|
||
var bytesToUuid = __webpack_require__(538);
|
||
|
||
// **`v1()` - Generate time-based UUID**
|
||
//
|
||
// Inspired by https://github.com/LiosK/UUID.js
|
||
// and http://docs.python.org/library/uuid.html
|
||
|
||
var _nodeId;
|
||
var _clockseq;
|
||
|
||
// Previous uuid creation time
|
||
var _lastMSecs = 0;
|
||
var _lastNSecs = 0;
|
||
|
||
// See https://github.com/uuidjs/uuid for API details
|
||
function v1(options, buf, offset) {
|
||
var i = buf && offset || 0;
|
||
var b = buf || [];
|
||
|
||
options = options || {};
|
||
var node = options.node || _nodeId;
|
||
var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;
|
||
|
||
// node and clockseq need to be initialized to random values if they're not
|
||
// specified. We do this lazily to minimize issues related to insufficient
|
||
// system entropy. See #189
|
||
if (node == null || clockseq == null) {
|
||
var seedBytes = rng();
|
||
if (node == null) {
|
||
// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
|
||
node = _nodeId = [
|
||
seedBytes[0] | 0x01,
|
||
seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]
|
||
];
|
||
}
|
||
if (clockseq == null) {
|
||
// Per 4.2.2, randomize (14 bit) clockseq
|
||
clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
|
||
}
|
||
}
|
||
|
||
// UUID timestamps are 100 nano-second units since the Gregorian epoch,
|
||
// (1582-10-15 00:00). JSNumbers aren't precise enough for this, so
|
||
// time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
|
||
// (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
|
||
var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();
|
||
|
||
// Per 4.2.1.2, use count of uuid's generated during the current clock
|
||
// cycle to simulate higher resolution clock
|
||
var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;
|
||
|
||
// Time since last uuid creation (in msecs)
|
||
var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;
|
||
|
||
// Per 4.2.1.2, Bump clockseq on clock regression
|
||
if (dt < 0 && options.clockseq === undefined) {
|
||
clockseq = clockseq + 1 & 0x3fff;
|
||
}
|
||
|
||
// Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
|
||
// time interval
|
||
if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
|
||
nsecs = 0;
|
||
}
|
||
|
||
// Per 4.2.1.2 Throw error if too many uuids are requested
|
||
if (nsecs >= 10000) {
|
||
throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec');
|
||
}
|
||
|
||
_lastMSecs = msecs;
|
||
_lastNSecs = nsecs;
|
||
_clockseq = clockseq;
|
||
|
||
// Per 4.1.4 - Convert from unix epoch to Gregorian epoch
|
||
msecs += 12219292800000;
|
||
|
||
// `time_low`
|
||
var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
|
||
b[i++] = tl >>> 24 & 0xff;
|
||
b[i++] = tl >>> 16 & 0xff;
|
||
b[i++] = tl >>> 8 & 0xff;
|
||
b[i++] = tl & 0xff;
|
||
|
||
// `time_mid`
|
||
var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;
|
||
b[i++] = tmh >>> 8 & 0xff;
|
||
b[i++] = tmh & 0xff;
|
||
|
||
// `time_high_and_version`
|
||
b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
|
||
b[i++] = tmh >>> 16 & 0xff;
|
||
|
||
// `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
|
||
b[i++] = clockseq >>> 8 | 0x80;
|
||
|
||
// `clock_seq_low`
|
||
b[i++] = clockseq & 0xff;
|
||
|
||
// `node`
|
||
for (var n = 0; n < 6; ++n) {
|
||
b[i + n] = node[n];
|
||
}
|
||
|
||
return buf ? buf : bytesToUuid(b);
|
||
}
|
||
|
||
module.exports = v1;
|
||
|
||
|
||
/***/ }),
|
||
/* 190 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = authenticationPlugin;
|
||
|
||
const { createTokenAuth } = __webpack_require__(813);
|
||
const { Deprecation } = __webpack_require__(692);
|
||
const once = __webpack_require__(969);
|
||
|
||
const beforeRequest = __webpack_require__(863);
|
||
const requestError = __webpack_require__(293);
|
||
const validate = __webpack_require__(954);
|
||
const withAuthorizationPrefix = __webpack_require__(143);
|
||
|
||
const deprecateAuthBasic = once((log, deprecation) => log.warn(deprecation));
|
||
const deprecateAuthObject = once((log, deprecation) => log.warn(deprecation));
|
||
|
||
function authenticationPlugin(octokit, options) {
|
||
// If `options.authStrategy` is set then use it and pass in `options.auth`
|
||
if (options.authStrategy) {
|
||
const auth = options.authStrategy(options.auth);
|
||
octokit.hook.wrap("request", auth.hook);
|
||
octokit.auth = auth;
|
||
return;
|
||
}
|
||
|
||
// If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance
|
||
// is unauthenticated. The `octokit.auth()` method is a no-op and no request hook is registred.
|
||
if (!options.auth) {
|
||
octokit.auth = () =>
|
||
Promise.resolve({
|
||
type: "unauthenticated"
|
||
});
|
||
return;
|
||
}
|
||
|
||
const isBasicAuthString =
|
||
typeof options.auth === "string" &&
|
||
/^basic/.test(withAuthorizationPrefix(options.auth));
|
||
|
||
// If only `options.auth` is set to a string, use the default token authentication strategy.
|
||
if (typeof options.auth === "string" && !isBasicAuthString) {
|
||
const auth = createTokenAuth(options.auth);
|
||
octokit.hook.wrap("request", auth.hook);
|
||
octokit.auth = auth;
|
||
return;
|
||
}
|
||
|
||
// Otherwise log a deprecation message
|
||
const [deprecationMethod, deprecationMessapge] = isBasicAuthString
|
||
? [
|
||
deprecateAuthBasic,
|
||
'Setting the "new Octokit({ auth })" option to a Basic Auth string is deprecated. Use https://github.com/octokit/auth-basic.js instead. See (https://octokit.github.io/rest.js/#authentication)'
|
||
]
|
||
: [
|
||
deprecateAuthObject,
|
||
'Setting the "new Octokit({ auth })" option to an object without also setting the "authStrategy" option is deprecated and will be removed in v17. See (https://octokit.github.io/rest.js/#authentication)'
|
||
];
|
||
deprecationMethod(
|
||
octokit.log,
|
||
new Deprecation("[@octokit/rest] " + deprecationMessapge)
|
||
);
|
||
|
||
octokit.auth = () =>
|
||
Promise.resolve({
|
||
type: "deprecated",
|
||
message: deprecationMessapge
|
||
});
|
||
|
||
validate(options.auth);
|
||
|
||
const state = {
|
||
octokit,
|
||
auth: options.auth
|
||
};
|
||
|
||
octokit.hook.before("request", beforeRequest.bind(null, state));
|
||
octokit.hook.error("request", requestError.bind(null, state));
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 191 */,
|
||
/* 192 */,
|
||
/* 193 */,
|
||
/* 194 */,
|
||
/* 195 */,
|
||
/* 196 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var LockType;
|
||
(function (LockType) {
|
||
LockType["Npm"] = "npm";
|
||
LockType["Yarn"] = "yarn";
|
||
})(LockType = exports.LockType || (exports.LockType = {}));
|
||
var State;
|
||
(function (State) {
|
||
State["CachePrimaryKey"] = "CACHE_KEY";
|
||
State["CacheMatchedKey"] = "CACHE_RESULT";
|
||
})(State = exports.State || (exports.State = {}));
|
||
var Outputs;
|
||
(function (Outputs) {
|
||
Outputs["CacheHit"] = "cache-hit";
|
||
})(Outputs = exports.Outputs || (exports.Outputs = {}));
|
||
|
||
|
||
/***/ }),
|
||
/* 197 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = isexe
|
||
isexe.sync = sync
|
||
|
||
var fs = __webpack_require__(747)
|
||
|
||
function isexe (path, options, cb) {
|
||
fs.stat(path, function (er, stat) {
|
||
cb(er, er ? false : checkStat(stat, options))
|
||
})
|
||
}
|
||
|
||
function sync (path, options) {
|
||
return checkStat(fs.statSync(path), options)
|
||
}
|
||
|
||
function checkStat (stat, options) {
|
||
return stat.isFile() && checkMode(stat, options)
|
||
}
|
||
|
||
function checkMode (stat, options) {
|
||
var mod = stat.mode
|
||
var uid = stat.uid
|
||
var gid = stat.gid
|
||
|
||
var myUid = options.uid !== undefined ?
|
||
options.uid : process.getuid && process.getuid()
|
||
var myGid = options.gid !== undefined ?
|
||
options.gid : process.getgid && process.getgid()
|
||
|
||
var u = parseInt('100', 8)
|
||
var g = parseInt('010', 8)
|
||
var o = parseInt('001', 8)
|
||
var ug = u | g
|
||
|
||
var ret = (mod & o) ||
|
||
(mod & g) && gid === myGid ||
|
||
(mod & u) && uid === myUid ||
|
||
(mod & ug) && myUid === 0
|
||
|
||
return ret
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 198 */,
|
||
/* 199 */,
|
||
/* 200 */,
|
||
/* 201 */,
|
||
/* 202 */,
|
||
/* 203 */,
|
||
/* 204 */,
|
||
/* 205 */,
|
||
/* 206 */,
|
||
/* 207 */,
|
||
/* 208 */,
|
||
/* 209 */,
|
||
/* 210 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
"use strict";
|
||
exports.stripBOM = function(str) {
|
||
if (str[0] === '\uFEFF') {
|
||
return str.substring(1);
|
||
} else {
|
||
return str;
|
||
}
|
||
};
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 211 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("https");
|
||
|
||
/***/ }),
|
||
/* 212 */,
|
||
/* 213 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("timers");
|
||
|
||
/***/ }),
|
||
/* 214 */,
|
||
/* 215 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = {"name":"@octokit/rest","version":"16.38.1","publishConfig":{"access":"public"},"description":"GitHub REST API client for Node.js","keywords":["octokit","github","rest","api-client"],"author":"Gregor Martynus (https://github.com/gr2m)","contributors":[{"name":"Mike de Boer","email":"info@mikedeboer.nl"},{"name":"Fabian Jakobs","email":"fabian@c9.io"},{"name":"Joe Gallo","email":"joe@brassafrax.com"},{"name":"Gregor Martynus","url":"https://github.com/gr2m"}],"repository":"https://github.com/octokit/rest.js","dependencies":{"@octokit/auth-token":"^2.4.0","@octokit/request":"^5.2.0","@octokit/request-error":"^1.0.2","atob-lite":"^2.0.0","before-after-hook":"^2.0.0","btoa-lite":"^1.0.0","deprecation":"^2.0.0","lodash.get":"^4.4.2","lodash.set":"^4.3.2","lodash.uniq":"^4.5.0","octokit-pagination-methods":"^1.1.0","once":"^1.4.0","universal-user-agent":"^4.0.0"},"devDependencies":{"@gimenete/type-writer":"^0.1.3","@octokit/auth":"^1.1.1","@octokit/fixtures-server":"^5.0.6","@octokit/graphql":"^4.2.0","@types/node":"^13.1.0","bundlesize":"^0.18.0","chai":"^4.1.2","compression-webpack-plugin":"^3.1.0","cypress":"^3.0.0","glob":"^7.1.2","http-proxy-agent":"^3.0.0","lodash.camelcase":"^4.3.0","lodash.merge":"^4.6.1","lodash.upperfirst":"^4.3.1","mkdirp":"^0.5.1","mocha":"^6.0.0","mustache":"^4.0.0","nock":"^11.3.3","npm-run-all":"^4.1.2","nyc":"^15.0.0","prettier":"^1.14.2","proxy":"^1.0.0","semantic-release":"^16.0.0","sinon":"^8.0.0","sinon-chai":"^3.0.0","sort-keys":"^4.0.0","string-to-arraybuffer":"^1.0.0","string-to-jsdoc-comment":"^1.0.0","typescript":"^3.3.1","webpack":"^4.0.0","webpack-bundle-analyzer":"^3.0.0","webpack-cli":"^3.0.0"},"types":"index.d.ts","scripts":{"coverage":"nyc report --reporter=html && open coverage/index.html","lint":"prettier --check '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json","lint:fix":"prettier --write '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json","pretest":"npm run -s lint","test":"nyc mocha test/mocha-node-setup.js \"test/*/**/*-test.js\"","test:browser":"cypress run --browser chrome","build":"npm-run-all build:*","build:ts":"npm run -s update-endpoints:typescript","prebuild:browser":"mkdirp dist/","build:browser":"npm-run-all build:browser:*","build:browser:development":"webpack --mode development --entry . --output-library=Octokit --output=./dist/octokit-rest.js --profile --json > dist/bundle-stats.json","build:browser:production":"webpack --mode production --entry . --plugin=compression-webpack-plugin --output-library=Octokit --output-path=./dist --output-filename=octokit-rest.min.js --devtool source-map","generate-bundle-report":"webpack-bundle-analyzer dist/bundle-stats.json --mode=static --no-open --report dist/bundle-report.html","update-endpoints":"npm-run-all update-endpoints:*","update-endpoints:fetch-json":"node scripts/update-endpoints/fetch-json","update-endpoints:code":"node scripts/update-endpoints/code","update-endpoints:typescript":"node scripts/update-endpoints/typescript","prevalidate:ts":"npm run -s build:ts","validate:ts":"tsc --target es6 --noImplicitAny index.d.ts","postvalidate:ts":"tsc --noEmit --target es6 test/typescript-validate.ts","start-fixtures-server":"octokit-fixtures-server"},"license":"MIT","files":["index.js","index.d.ts","lib","plugins"],"nyc":{"ignore":["test"]},"release":{"publish":["@semantic-release/npm",{"path":"@semantic-release/github","assets":["dist/*","!dist/*.map.gz"]}]},"bundlesize":[{"path":"./dist/octokit-rest.min.js.gz","maxSize":"33 kB"}],"_resolved":"https://registry.npmjs.org/@octokit/rest/-/rest-16.38.1.tgz","_integrity":"sha512-zyNFx+/Bd1EXt7LQjfrc6H4wryBQ/oDuZeZhGMBSFr1eMPFDmpEweFQR3R25zjKwBQpDY7L5GQO6A3XSaOfV1w==","_from":"@octokit/rest@16.38.1"};
|
||
|
||
/***/ }),
|
||
/* 216 */,
|
||
/* 217 */,
|
||
/* 218 */,
|
||
/* 219 */,
|
||
/* 220 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=SpanOptions.js.map
|
||
|
||
/***/ }),
|
||
/* 221 */,
|
||
/* 222 */,
|
||
/* 223 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.Pattern = void 0;
|
||
const os = __importStar(__webpack_require__(87));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const pathHelper = __importStar(__webpack_require__(972));
|
||
const assert_1 = __importDefault(__webpack_require__(357));
|
||
const minimatch_1 = __webpack_require__(93);
|
||
const internal_match_kind_1 = __webpack_require__(327);
|
||
const internal_path_1 = __webpack_require__(383);
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
class Pattern {
|
||
constructor(patternOrNegate, isImplicitPattern = false, segments, homedir) {
|
||
/**
|
||
* Indicates whether matches should be excluded from the result set
|
||
*/
|
||
this.negate = false;
|
||
// Pattern overload
|
||
let pattern;
|
||
if (typeof patternOrNegate === 'string') {
|
||
pattern = patternOrNegate.trim();
|
||
}
|
||
// Segments overload
|
||
else {
|
||
// Convert to pattern
|
||
segments = segments || [];
|
||
assert_1.default(segments.length, `Parameter 'segments' must not empty`);
|
||
const root = Pattern.getLiteral(segments[0]);
|
||
assert_1.default(root && pathHelper.hasAbsoluteRoot(root), `Parameter 'segments' first element must be a root path`);
|
||
pattern = new internal_path_1.Path(segments).toString().trim();
|
||
if (patternOrNegate) {
|
||
pattern = `!${pattern}`;
|
||
}
|
||
}
|
||
// Negate
|
||
while (pattern.startsWith('!')) {
|
||
this.negate = !this.negate;
|
||
pattern = pattern.substr(1).trim();
|
||
}
|
||
// Normalize slashes and ensures absolute root
|
||
pattern = Pattern.fixupPattern(pattern, homedir);
|
||
// Segments
|
||
this.segments = new internal_path_1.Path(pattern).segments;
|
||
// Trailing slash indicates the pattern should only match directories, not regular files
|
||
this.trailingSeparator = pathHelper
|
||
.normalizeSeparators(pattern)
|
||
.endsWith(path.sep);
|
||
pattern = pathHelper.safeTrimTrailingSeparator(pattern);
|
||
// Search path (literal path prior to the first glob segment)
|
||
let foundGlob = false;
|
||
const searchSegments = this.segments
|
||
.map(x => Pattern.getLiteral(x))
|
||
.filter(x => !foundGlob && !(foundGlob = x === ''));
|
||
this.searchPath = new internal_path_1.Path(searchSegments).toString();
|
||
// Root RegExp (required when determining partial match)
|
||
this.rootRegExp = new RegExp(Pattern.regExpEscape(searchSegments[0]), IS_WINDOWS ? 'i' : '');
|
||
this.isImplicitPattern = isImplicitPattern;
|
||
// Create minimatch
|
||
const minimatchOptions = {
|
||
dot: true,
|
||
nobrace: true,
|
||
nocase: IS_WINDOWS,
|
||
nocomment: true,
|
||
noext: true,
|
||
nonegate: true
|
||
};
|
||
pattern = IS_WINDOWS ? pattern.replace(/\\/g, '/') : pattern;
|
||
this.minimatch = new minimatch_1.Minimatch(pattern, minimatchOptions);
|
||
}
|
||
/**
|
||
* Matches the pattern against the specified path
|
||
*/
|
||
match(itemPath) {
|
||
// Last segment is globstar?
|
||
if (this.segments[this.segments.length - 1] === '**') {
|
||
// Normalize slashes
|
||
itemPath = pathHelper.normalizeSeparators(itemPath);
|
||
// Append a trailing slash. Otherwise Minimatch will not match the directory immediately
|
||
// preceding the globstar. For example, given the pattern `/foo/**`, Minimatch returns
|
||
// false for `/foo` but returns true for `/foo/`. Append a trailing slash to handle that quirk.
|
||
if (!itemPath.endsWith(path.sep) && this.isImplicitPattern === false) {
|
||
// Note, this is safe because the constructor ensures the pattern has an absolute root.
|
||
// For example, formats like C: and C:foo on Windows are resolved to an absolute root.
|
||
itemPath = `${itemPath}${path.sep}`;
|
||
}
|
||
}
|
||
else {
|
||
// Normalize slashes and trim unnecessary trailing slash
|
||
itemPath = pathHelper.safeTrimTrailingSeparator(itemPath);
|
||
}
|
||
// Match
|
||
if (this.minimatch.match(itemPath)) {
|
||
return this.trailingSeparator ? internal_match_kind_1.MatchKind.Directory : internal_match_kind_1.MatchKind.All;
|
||
}
|
||
return internal_match_kind_1.MatchKind.None;
|
||
}
|
||
/**
|
||
* Indicates whether the pattern may match descendants of the specified path
|
||
*/
|
||
partialMatch(itemPath) {
|
||
// Normalize slashes and trim unnecessary trailing slash
|
||
itemPath = pathHelper.safeTrimTrailingSeparator(itemPath);
|
||
// matchOne does not handle root path correctly
|
||
if (pathHelper.dirname(itemPath) === itemPath) {
|
||
return this.rootRegExp.test(itemPath);
|
||
}
|
||
return this.minimatch.matchOne(itemPath.split(IS_WINDOWS ? /\\+/ : /\/+/), this.minimatch.set[0], true);
|
||
}
|
||
/**
|
||
* Escapes glob patterns within a path
|
||
*/
|
||
static globEscape(s) {
|
||
return (IS_WINDOWS ? s : s.replace(/\\/g, '\\\\')) // escape '\' on Linux/macOS
|
||
.replace(/(\[)(?=[^/]+\])/g, '[[]') // escape '[' when ']' follows within the path segment
|
||
.replace(/\?/g, '[?]') // escape '?'
|
||
.replace(/\*/g, '[*]'); // escape '*'
|
||
}
|
||
/**
|
||
* Normalizes slashes and ensures absolute root
|
||
*/
|
||
static fixupPattern(pattern, homedir) {
|
||
// Empty
|
||
assert_1.default(pattern, 'pattern cannot be empty');
|
||
// Must not contain `.` segment, unless first segment
|
||
// Must not contain `..` segment
|
||
const literalSegments = new internal_path_1.Path(pattern).segments.map(x => Pattern.getLiteral(x));
|
||
assert_1.default(literalSegments.every((x, i) => (x !== '.' || i === 0) && x !== '..'), `Invalid pattern '${pattern}'. Relative pathing '.' and '..' is not allowed.`);
|
||
// Must not contain globs in root, e.g. Windows UNC path \\foo\b*r
|
||
assert_1.default(!pathHelper.hasRoot(pattern) || literalSegments[0], `Invalid pattern '${pattern}'. Root segment must not contain globs.`);
|
||
// Normalize slashes
|
||
pattern = pathHelper.normalizeSeparators(pattern);
|
||
// Replace leading `.` segment
|
||
if (pattern === '.' || pattern.startsWith(`.${path.sep}`)) {
|
||
pattern = Pattern.globEscape(process.cwd()) + pattern.substr(1);
|
||
}
|
||
// Replace leading `~` segment
|
||
else if (pattern === '~' || pattern.startsWith(`~${path.sep}`)) {
|
||
homedir = homedir || os.homedir();
|
||
assert_1.default(homedir, 'Unable to determine HOME directory');
|
||
assert_1.default(pathHelper.hasAbsoluteRoot(homedir), `Expected HOME directory to be a rooted path. Actual '${homedir}'`);
|
||
pattern = Pattern.globEscape(homedir) + pattern.substr(1);
|
||
}
|
||
// Replace relative drive root, e.g. pattern is C: or C:foo
|
||
else if (IS_WINDOWS &&
|
||
(pattern.match(/^[A-Z]:$/i) || pattern.match(/^[A-Z]:[^\\]/i))) {
|
||
let root = pathHelper.ensureAbsoluteRoot('C:\\dummy-root', pattern.substr(0, 2));
|
||
if (pattern.length > 2 && !root.endsWith('\\')) {
|
||
root += '\\';
|
||
}
|
||
pattern = Pattern.globEscape(root) + pattern.substr(2);
|
||
}
|
||
// Replace relative root, e.g. pattern is \ or \foo
|
||
else if (IS_WINDOWS && (pattern === '\\' || pattern.match(/^\\[^\\]/))) {
|
||
let root = pathHelper.ensureAbsoluteRoot('C:\\dummy-root', '\\');
|
||
if (!root.endsWith('\\')) {
|
||
root += '\\';
|
||
}
|
||
pattern = Pattern.globEscape(root) + pattern.substr(1);
|
||
}
|
||
// Otherwise ensure absolute root
|
||
else {
|
||
pattern = pathHelper.ensureAbsoluteRoot(Pattern.globEscape(process.cwd()), pattern);
|
||
}
|
||
return pathHelper.normalizeSeparators(pattern);
|
||
}
|
||
/**
|
||
* Attempts to unescape a pattern segment to create a literal path segment.
|
||
* Otherwise returns empty string.
|
||
*/
|
||
static getLiteral(segment) {
|
||
let literal = '';
|
||
for (let i = 0; i < segment.length; i++) {
|
||
const c = segment[i];
|
||
// Escape
|
||
if (c === '\\' && !IS_WINDOWS && i + 1 < segment.length) {
|
||
literal += segment[++i];
|
||
continue;
|
||
}
|
||
// Wildcard
|
||
else if (c === '*' || c === '?') {
|
||
return '';
|
||
}
|
||
// Character set
|
||
else if (c === '[' && i + 1 < segment.length) {
|
||
let set = '';
|
||
let closed = -1;
|
||
for (let i2 = i + 1; i2 < segment.length; i2++) {
|
||
const c2 = segment[i2];
|
||
// Escape
|
||
if (c2 === '\\' && !IS_WINDOWS && i2 + 1 < segment.length) {
|
||
set += segment[++i2];
|
||
continue;
|
||
}
|
||
// Closed
|
||
else if (c2 === ']') {
|
||
closed = i2;
|
||
break;
|
||
}
|
||
// Otherwise
|
||
else {
|
||
set += c2;
|
||
}
|
||
}
|
||
// Closed?
|
||
if (closed >= 0) {
|
||
// Cannot convert
|
||
if (set.length > 1) {
|
||
return '';
|
||
}
|
||
// Convert to literal
|
||
if (set) {
|
||
literal += set;
|
||
i = closed;
|
||
continue;
|
||
}
|
||
}
|
||
// Otherwise fall thru
|
||
}
|
||
// Append
|
||
literal += c;
|
||
}
|
||
return literal;
|
||
}
|
||
/**
|
||
* Escapes regexp special characters
|
||
* https://javascript.info/regexp-escaping
|
||
*/
|
||
static regExpEscape(s) {
|
||
return s.replace(/[[\\^$.|?*+()]/g, '\\$&');
|
||
}
|
||
}
|
||
exports.Pattern = Pattern;
|
||
//# sourceMappingURL=internal-pattern.js.map
|
||
|
||
/***/ }),
|
||
/* 224 */,
|
||
/* 225 */,
|
||
/* 226 */,
|
||
/* 227 */,
|
||
/* 228 */,
|
||
/* 229 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* A static-key-based credential that supports updating
|
||
* the underlying key value.
|
||
*/
|
||
var AzureKeyCredential = /** @class */ (function () {
|
||
/**
|
||
* Create an instance of an AzureKeyCredential for use
|
||
* with a service client.
|
||
*
|
||
* @param key - The initial value of the key to use in authentication
|
||
*/
|
||
function AzureKeyCredential(key) {
|
||
if (!key) {
|
||
throw new Error("key must be a non-empty string");
|
||
}
|
||
this._key = key;
|
||
}
|
||
Object.defineProperty(AzureKeyCredential.prototype, "key", {
|
||
/**
|
||
* The value of the key to be used in authentication
|
||
*/
|
||
get: function () {
|
||
return this._key;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
/**
|
||
* Change the value of the key.
|
||
*
|
||
* Updates will take effect upon the next request after
|
||
* updating the key value.
|
||
*
|
||
* @param newKey - The new key value to be used
|
||
*/
|
||
AzureKeyCredential.prototype.update = function (newKey) {
|
||
this._key = newKey;
|
||
};
|
||
return AzureKeyCredential;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* Helper TypeGuard that checks if something is defined or not.
|
||
* @param thing - Anything
|
||
* @internal
|
||
*/
|
||
function isDefined(thing) {
|
||
return typeof thing !== "undefined" && thing !== null;
|
||
}
|
||
/**
|
||
* Helper TypeGuard that checks if the input is an object with the specified properties.
|
||
* Note: The properties may be inherited.
|
||
* @param thing - Anything.
|
||
* @param properties - The name of the properties that should appear in the object.
|
||
* @internal
|
||
*/
|
||
function isObjectWithProperties(thing, properties) {
|
||
if (!isDefined(thing) || typeof thing !== "object") {
|
||
return false;
|
||
}
|
||
for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {
|
||
var property = properties_1[_i];
|
||
if (!objectHasProperty(thing, property)) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
/**
|
||
* Helper TypeGuard that checks if the input is an object with the specified property.
|
||
* Note: The property may be inherited.
|
||
* @param thing - Any object.
|
||
* @param property - The name of the property that should appear in the object.
|
||
* @internal
|
||
*/
|
||
function objectHasProperty(thing, property) {
|
||
return typeof thing === "object" && property in thing;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* A static name/key-based credential that supports updating
|
||
* the underlying name and key values.
|
||
*/
|
||
var AzureNamedKeyCredential = /** @class */ (function () {
|
||
/**
|
||
* Create an instance of an AzureNamedKeyCredential for use
|
||
* with a service client.
|
||
*
|
||
* @param name - The initial value of the name to use in authentication.
|
||
* @param key - The initial value of the key to use in authentication.
|
||
*/
|
||
function AzureNamedKeyCredential(name, key) {
|
||
if (!name || !key) {
|
||
throw new TypeError("name and key must be non-empty strings");
|
||
}
|
||
this._name = name;
|
||
this._key = key;
|
||
}
|
||
Object.defineProperty(AzureNamedKeyCredential.prototype, "key", {
|
||
/**
|
||
* The value of the key to be used in authentication.
|
||
*/
|
||
get: function () {
|
||
return this._key;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(AzureNamedKeyCredential.prototype, "name", {
|
||
/**
|
||
* The value of the name to be used in authentication.
|
||
*/
|
||
get: function () {
|
||
return this._name;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
/**
|
||
* Change the value of the key.
|
||
*
|
||
* Updates will take effect upon the next request after
|
||
* updating the key value.
|
||
*
|
||
* @param newName - The new name value to be used.
|
||
* @param newKey - The new key value to be used.
|
||
*/
|
||
AzureNamedKeyCredential.prototype.update = function (newName, newKey) {
|
||
if (!newName || !newKey) {
|
||
throw new TypeError("newName and newKey must be non-empty strings");
|
||
}
|
||
this._name = newName;
|
||
this._key = newKey;
|
||
};
|
||
return AzureNamedKeyCredential;
|
||
}());
|
||
/**
|
||
* Tests an object to determine whether it implements NamedKeyCredential.
|
||
*
|
||
* @param credential - The assumed NamedKeyCredential to be tested.
|
||
*/
|
||
function isNamedKeyCredential(credential) {
|
||
return (isObjectWithProperties(credential, ["name", "key"]) &&
|
||
typeof credential.key === "string" &&
|
||
typeof credential.name === "string");
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* A static-signature-based credential that supports updating
|
||
* the underlying signature value.
|
||
*/
|
||
var AzureSASCredential = /** @class */ (function () {
|
||
/**
|
||
* Create an instance of an AzureSASCredential for use
|
||
* with a service client.
|
||
*
|
||
* @param signature - The initial value of the shared access signature to use in authentication
|
||
*/
|
||
function AzureSASCredential(signature) {
|
||
if (!signature) {
|
||
throw new Error("shared access signature must be a non-empty string");
|
||
}
|
||
this._signature = signature;
|
||
}
|
||
Object.defineProperty(AzureSASCredential.prototype, "signature", {
|
||
/**
|
||
* The value of the shared access signature to be used in authentication
|
||
*/
|
||
get: function () {
|
||
return this._signature;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
/**
|
||
* Change the value of the signature.
|
||
*
|
||
* Updates will take effect upon the next request after
|
||
* updating the signature value.
|
||
*
|
||
* @param newSignature - The new shared access signature value to be used
|
||
*/
|
||
AzureSASCredential.prototype.update = function (newSignature) {
|
||
if (!newSignature) {
|
||
throw new Error("shared access signature must be a non-empty string");
|
||
}
|
||
this._signature = newSignature;
|
||
};
|
||
return AzureSASCredential;
|
||
}());
|
||
/**
|
||
* Tests an object to determine whether it implements SASCredential.
|
||
*
|
||
* @param credential - The assumed SASCredential to be tested.
|
||
*/
|
||
function isSASCredential(credential) {
|
||
return (isObjectWithProperties(credential, ["signature"]) && typeof credential.signature === "string");
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* Tests an object to determine whether it implements TokenCredential.
|
||
*
|
||
* @param credential - The assumed TokenCredential to be tested.
|
||
*/
|
||
function isTokenCredential(credential) {
|
||
// Check for an object with a 'getToken' function and possibly with
|
||
// a 'signRequest' function. We do this check to make sure that
|
||
// a ServiceClientCredentials implementor (like TokenClientCredentials
|
||
// in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if
|
||
// it doesn't actually implement TokenCredential also.
|
||
var castCredential = credential;
|
||
return (castCredential &&
|
||
typeof castCredential.getToken === "function" &&
|
||
(castCredential.signRequest === undefined || castCredential.getToken.length > 0));
|
||
}
|
||
|
||
exports.AzureKeyCredential = AzureKeyCredential;
|
||
exports.AzureNamedKeyCredential = AzureNamedKeyCredential;
|
||
exports.AzureSASCredential = AzureSASCredential;
|
||
exports.isNamedKeyCredential = isNamedKeyCredential;
|
||
exports.isSASCredential = isSASCredential;
|
||
exports.isTokenCredential = isTokenCredential;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 230 */,
|
||
/* 231 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var XMLStringWriter, XMLWriterBase,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
XMLWriterBase = __webpack_require__(423);
|
||
|
||
module.exports = XMLStringWriter = (function(superClass) {
|
||
extend(XMLStringWriter, superClass);
|
||
|
||
function XMLStringWriter(options) {
|
||
XMLStringWriter.__super__.constructor.call(this, options);
|
||
}
|
||
|
||
XMLStringWriter.prototype.document = function(doc, options) {
|
||
var child, i, len, r, ref;
|
||
options = this.filterOptions(options);
|
||
r = '';
|
||
ref = doc.children;
|
||
for (i = 0, len = ref.length; i < len; i++) {
|
||
child = ref[i];
|
||
r += this.writeChildNode(child, options, 0);
|
||
}
|
||
if (options.pretty && r.slice(-options.newline.length) === options.newline) {
|
||
r = r.slice(0, -options.newline.length);
|
||
}
|
||
return r;
|
||
};
|
||
|
||
return XMLStringWriter;
|
||
|
||
})(XMLWriterBase);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 232 */,
|
||
/* 233 */,
|
||
/* 234 */,
|
||
/* 235 */,
|
||
/* 236 */,
|
||
/* 237 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.DiagConsoleLogger = void 0;
|
||
var consoleMap = [
|
||
{ n: 'error', c: 'error' },
|
||
{ n: 'warn', c: 'warn' },
|
||
{ n: 'info', c: 'info' },
|
||
{ n: 'debug', c: 'debug' },
|
||
{ n: 'verbose', c: 'trace' },
|
||
];
|
||
/**
|
||
* A simple Immutable Console based diagnostic logger which will output any messages to the Console.
|
||
* If you want to limit the amount of logging to a specific level or lower use the
|
||
* {@link createLogLevelDiagLogger}
|
||
*/
|
||
var DiagConsoleLogger = /** @class */ (function () {
|
||
function DiagConsoleLogger() {
|
||
function _consoleFunc(funcName) {
|
||
return function () {
|
||
var orgArguments = arguments;
|
||
if (console) {
|
||
// Some environments only expose the console when the F12 developer console is open
|
||
var theFunc = console[funcName];
|
||
if (typeof theFunc !== 'function') {
|
||
// Not all environments support all functions
|
||
theFunc = console.log;
|
||
}
|
||
// One last final check
|
||
if (typeof theFunc === 'function') {
|
||
return theFunc.apply(console, orgArguments);
|
||
}
|
||
}
|
||
};
|
||
}
|
||
for (var i = 0; i < consoleMap.length; i++) {
|
||
this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);
|
||
}
|
||
}
|
||
return DiagConsoleLogger;
|
||
}());
|
||
exports.DiagConsoleLogger = DiagConsoleLogger;
|
||
//# sourceMappingURL=consoleLogger.js.map
|
||
|
||
/***/ }),
|
||
/* 238 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 239 */,
|
||
/* 240 */,
|
||
/* 241 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = _default;
|
||
exports.URL = exports.DNS = void 0;
|
||
|
||
var _stringify = _interopRequireDefault(__webpack_require__(164));
|
||
|
||
var _parse = _interopRequireDefault(__webpack_require__(347));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
function stringToBytes(str) {
|
||
str = unescape(encodeURIComponent(str)); // UTF8 escape
|
||
|
||
const bytes = [];
|
||
|
||
for (let i = 0; i < str.length; ++i) {
|
||
bytes.push(str.charCodeAt(i));
|
||
}
|
||
|
||
return bytes;
|
||
}
|
||
|
||
const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
|
||
exports.DNS = DNS;
|
||
const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
|
||
exports.URL = URL;
|
||
|
||
function _default(name, version, hashfunc) {
|
||
function generateUUID(value, namespace, buf, offset) {
|
||
if (typeof value === 'string') {
|
||
value = stringToBytes(value);
|
||
}
|
||
|
||
if (typeof namespace === 'string') {
|
||
namespace = (0, _parse.default)(namespace);
|
||
}
|
||
|
||
if (namespace.length !== 16) {
|
||
throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
|
||
} // Compute hash of namespace and value, Per 4.3
|
||
// Future: Use spread syntax when supported on all platforms, e.g. `bytes =
|
||
// hashfunc([...namespace, ... value])`
|
||
|
||
|
||
let bytes = new Uint8Array(16 + value.length);
|
||
bytes.set(namespace);
|
||
bytes.set(value, namespace.length);
|
||
bytes = hashfunc(bytes);
|
||
bytes[6] = bytes[6] & 0x0f | version;
|
||
bytes[8] = bytes[8] & 0x3f | 0x80;
|
||
|
||
if (buf) {
|
||
offset = offset || 0;
|
||
|
||
for (let i = 0; i < 16; ++i) {
|
||
buf[offset + i] = bytes[i];
|
||
}
|
||
|
||
return buf;
|
||
}
|
||
|
||
return (0, _stringify.default)(bytes);
|
||
} // Function#name is not settable on some platforms (#270)
|
||
|
||
|
||
try {
|
||
generateUUID.name = name; // eslint-disable-next-line no-empty
|
||
} catch (err) {} // For CommonJS default export support
|
||
|
||
|
||
generateUUID.DNS = DNS;
|
||
generateUUID.URL = URL;
|
||
return generateUUID;
|
||
}
|
||
|
||
/***/ }),
|
||
/* 242 */,
|
||
/* 243 */,
|
||
/* 244 */,
|
||
/* 245 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
|
||
var _crypto = _interopRequireDefault(__webpack_require__(417));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
function md5(bytes) {
|
||
if (Array.isArray(bytes)) {
|
||
bytes = Buffer.from(bytes);
|
||
} else if (typeof bytes === 'string') {
|
||
bytes = Buffer.from(bytes, 'utf8');
|
||
}
|
||
|
||
return _crypto.default.createHash('md5').update(bytes).digest();
|
||
}
|
||
|
||
var _default = md5;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 246 */
|
||
/***/ (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 core = __importStar(__webpack_require__(470));
|
||
const http_client_1 = __webpack_require__(22);
|
||
const constants_1 = __webpack_require__(931);
|
||
function isSuccessStatusCode(statusCode) {
|
||
if (!statusCode) {
|
||
return false;
|
||
}
|
||
return statusCode >= 200 && statusCode < 300;
|
||
}
|
||
exports.isSuccessStatusCode = isSuccessStatusCode;
|
||
function isServerErrorStatusCode(statusCode) {
|
||
if (!statusCode) {
|
||
return true;
|
||
}
|
||
return statusCode >= 500;
|
||
}
|
||
exports.isServerErrorStatusCode = isServerErrorStatusCode;
|
||
function isRetryableStatusCode(statusCode) {
|
||
if (!statusCode) {
|
||
return false;
|
||
}
|
||
const retryableStatusCodes = [
|
||
http_client_1.HttpCodes.BadGateway,
|
||
http_client_1.HttpCodes.ServiceUnavailable,
|
||
http_client_1.HttpCodes.GatewayTimeout
|
||
];
|
||
return retryableStatusCodes.includes(statusCode);
|
||
}
|
||
exports.isRetryableStatusCode = isRetryableStatusCode;
|
||
function sleep(milliseconds) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
return new Promise(resolve => setTimeout(resolve, milliseconds));
|
||
});
|
||
}
|
||
function retry(name, method, getStatusCode, maxAttempts = constants_1.DefaultRetryAttempts, delay = constants_1.DefaultRetryDelay, onError = undefined) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let errorMessage = '';
|
||
let attempt = 1;
|
||
while (attempt <= maxAttempts) {
|
||
let response = undefined;
|
||
let statusCode = undefined;
|
||
let isRetryable = false;
|
||
try {
|
||
response = yield method();
|
||
}
|
||
catch (error) {
|
||
if (onError) {
|
||
response = onError(error);
|
||
}
|
||
isRetryable = true;
|
||
errorMessage = error.message;
|
||
}
|
||
if (response) {
|
||
statusCode = getStatusCode(response);
|
||
if (!isServerErrorStatusCode(statusCode)) {
|
||
return response;
|
||
}
|
||
}
|
||
if (statusCode) {
|
||
isRetryable = isRetryableStatusCode(statusCode);
|
||
errorMessage = `Cache service responded with ${statusCode}`;
|
||
}
|
||
core.debug(`${name} - Attempt ${attempt} of ${maxAttempts} failed with error: ${errorMessage}`);
|
||
if (!isRetryable) {
|
||
core.debug(`${name} - Error is not retryable`);
|
||
break;
|
||
}
|
||
yield sleep(delay);
|
||
attempt++;
|
||
}
|
||
throw Error(`${name} failed: ${errorMessage}`);
|
||
});
|
||
}
|
||
exports.retry = retry;
|
||
function retryTypedResponse(name, method, maxAttempts = constants_1.DefaultRetryAttempts, delay = constants_1.DefaultRetryDelay) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
return yield retry(name, method, (response) => response.statusCode, maxAttempts, delay,
|
||
// If the error object contains the statusCode property, extract it and return
|
||
// an ITypedResponse<T> so it can be processed by the retry logic.
|
||
(error) => {
|
||
if (error instanceof http_client_1.HttpClientError) {
|
||
return {
|
||
statusCode: error.statusCode,
|
||
result: null,
|
||
headers: {}
|
||
};
|
||
}
|
||
else {
|
||
return undefined;
|
||
}
|
||
});
|
||
});
|
||
}
|
||
exports.retryTypedResponse = retryTypedResponse;
|
||
function retryHttpClientResponse(name, method, maxAttempts = constants_1.DefaultRetryAttempts, delay = constants_1.DefaultRetryDelay) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
return yield retry(name, method, (response) => response.message.statusCode, maxAttempts, delay);
|
||
});
|
||
}
|
||
exports.retryHttpClientResponse = retryHttpClientResponse;
|
||
//# sourceMappingURL=requestUtils.js.map
|
||
|
||
/***/ }),
|
||
/* 247 */,
|
||
/* 248 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = octokitRegisterEndpoints;
|
||
|
||
const registerEndpoints = __webpack_require__(899);
|
||
|
||
function octokitRegisterEndpoints(octokit) {
|
||
octokit.registerEndpoints = registerEndpoints.bind(null, octokit);
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 249 */,
|
||
/* 250 */,
|
||
/* 251 */
|
||
/***/ (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 core = __importStar(__webpack_require__(470));
|
||
const http_client_1 = __webpack_require__(22);
|
||
const storage_blob_1 = __webpack_require__(373);
|
||
const buffer = __importStar(__webpack_require__(407));
|
||
const fs = __importStar(__webpack_require__(747));
|
||
const stream = __importStar(__webpack_require__(794));
|
||
const util = __importStar(__webpack_require__(669));
|
||
const utils = __importStar(__webpack_require__(15));
|
||
const constants_1 = __webpack_require__(931);
|
||
const requestUtils_1 = __webpack_require__(246);
|
||
/**
|
||
* Pipes the body of a HTTP response to a stream
|
||
*
|
||
* @param response the HTTP response
|
||
* @param output the writable stream
|
||
*/
|
||
function pipeResponseToStream(response, output) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const pipeline = util.promisify(stream.pipeline);
|
||
yield pipeline(response.message, output);
|
||
});
|
||
}
|
||
/**
|
||
* Class for tracking the download state and displaying stats.
|
||
*/
|
||
class DownloadProgress {
|
||
constructor(contentLength) {
|
||
this.contentLength = contentLength;
|
||
this.segmentIndex = 0;
|
||
this.segmentSize = 0;
|
||
this.segmentOffset = 0;
|
||
this.receivedBytes = 0;
|
||
this.displayedComplete = false;
|
||
this.startTime = Date.now();
|
||
}
|
||
/**
|
||
* Progress to the next segment. Only call this method when the previous segment
|
||
* is complete.
|
||
*
|
||
* @param segmentSize the length of the next segment
|
||
*/
|
||
nextSegment(segmentSize) {
|
||
this.segmentOffset = this.segmentOffset + this.segmentSize;
|
||
this.segmentIndex = this.segmentIndex + 1;
|
||
this.segmentSize = segmentSize;
|
||
this.receivedBytes = 0;
|
||
core.debug(`Downloading segment at offset ${this.segmentOffset} with length ${this.segmentSize}...`);
|
||
}
|
||
/**
|
||
* Sets the number of bytes received for the current segment.
|
||
*
|
||
* @param receivedBytes the number of bytes received
|
||
*/
|
||
setReceivedBytes(receivedBytes) {
|
||
this.receivedBytes = receivedBytes;
|
||
}
|
||
/**
|
||
* Returns the total number of bytes transferred.
|
||
*/
|
||
getTransferredBytes() {
|
||
return this.segmentOffset + this.receivedBytes;
|
||
}
|
||
/**
|
||
* Returns true if the download is complete.
|
||
*/
|
||
isDone() {
|
||
return this.getTransferredBytes() === this.contentLength;
|
||
}
|
||
/**
|
||
* Prints the current download stats. Once the download completes, this will print one
|
||
* last line and then stop.
|
||
*/
|
||
display() {
|
||
if (this.displayedComplete) {
|
||
return;
|
||
}
|
||
const transferredBytes = this.segmentOffset + this.receivedBytes;
|
||
const percentage = (100 * (transferredBytes / this.contentLength)).toFixed(1);
|
||
const elapsedTime = Date.now() - this.startTime;
|
||
const downloadSpeed = (transferredBytes /
|
||
(1024 * 1024) /
|
||
(elapsedTime / 1000)).toFixed(1);
|
||
core.info(`Received ${transferredBytes} of ${this.contentLength} (${percentage}%), ${downloadSpeed} MBs/sec`);
|
||
if (this.isDone()) {
|
||
this.displayedComplete = true;
|
||
}
|
||
}
|
||
/**
|
||
* Returns a function used to handle TransferProgressEvents.
|
||
*/
|
||
onProgress() {
|
||
return (progress) => {
|
||
this.setReceivedBytes(progress.loadedBytes);
|
||
};
|
||
}
|
||
/**
|
||
* Starts the timer that displays the stats.
|
||
*
|
||
* @param delayInMs the delay between each write
|
||
*/
|
||
startDisplayTimer(delayInMs = 1000) {
|
||
const displayCallback = () => {
|
||
this.display();
|
||
if (!this.isDone()) {
|
||
this.timeoutHandle = setTimeout(displayCallback, delayInMs);
|
||
}
|
||
};
|
||
this.timeoutHandle = setTimeout(displayCallback, delayInMs);
|
||
}
|
||
/**
|
||
* Stops the timer that displays the stats. As this typically indicates the download
|
||
* is complete, this will display one last line, unless the last line has already
|
||
* been written.
|
||
*/
|
||
stopDisplayTimer() {
|
||
if (this.timeoutHandle) {
|
||
clearTimeout(this.timeoutHandle);
|
||
this.timeoutHandle = undefined;
|
||
}
|
||
this.display();
|
||
}
|
||
}
|
||
exports.DownloadProgress = DownloadProgress;
|
||
/**
|
||
* Download the cache using the Actions toolkit http-client
|
||
*
|
||
* @param archiveLocation the URL for the cache
|
||
* @param archivePath the local path where the cache is saved
|
||
*/
|
||
function downloadCacheHttpClient(archiveLocation, archivePath) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const writeStream = fs.createWriteStream(archivePath);
|
||
const httpClient = new http_client_1.HttpClient('actions/cache');
|
||
const downloadResponse = yield requestUtils_1.retryHttpClientResponse('downloadCache', () => __awaiter(this, void 0, void 0, function* () { return httpClient.get(archiveLocation); }));
|
||
// Abort download if no traffic received over the socket.
|
||
downloadResponse.message.socket.setTimeout(constants_1.SocketTimeout, () => {
|
||
downloadResponse.message.destroy();
|
||
core.debug(`Aborting download, socket timed out after ${constants_1.SocketTimeout} ms`);
|
||
});
|
||
yield pipeResponseToStream(downloadResponse, writeStream);
|
||
// Validate download size.
|
||
const contentLengthHeader = downloadResponse.message.headers['content-length'];
|
||
if (contentLengthHeader) {
|
||
const expectedLength = parseInt(contentLengthHeader);
|
||
const actualLength = utils.getArchiveFileSizeIsBytes(archivePath);
|
||
if (actualLength !== expectedLength) {
|
||
throw new Error(`Incomplete download. Expected file size: ${expectedLength}, actual file size: ${actualLength}`);
|
||
}
|
||
}
|
||
else {
|
||
core.debug('Unable to validate download, no Content-Length header');
|
||
}
|
||
});
|
||
}
|
||
exports.downloadCacheHttpClient = downloadCacheHttpClient;
|
||
/**
|
||
* Download the cache using the Azure Storage SDK. Only call this method if the
|
||
* URL points to an Azure Storage endpoint.
|
||
*
|
||
* @param archiveLocation the URL for the cache
|
||
* @param archivePath the local path where the cache is saved
|
||
* @param options the download options with the defaults set
|
||
*/
|
||
function downloadCacheStorageSDK(archiveLocation, archivePath, options) {
|
||
var _a;
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const client = new storage_blob_1.BlockBlobClient(archiveLocation, undefined, {
|
||
retryOptions: {
|
||
// Override the timeout used when downloading each 4 MB chunk
|
||
// The default is 2 min / MB, which is way too slow
|
||
tryTimeoutInMs: options.timeoutInMs
|
||
}
|
||
});
|
||
const properties = yield client.getProperties();
|
||
const contentLength = (_a = properties.contentLength) !== null && _a !== void 0 ? _a : -1;
|
||
if (contentLength < 0) {
|
||
// We should never hit this condition, but just in case fall back to downloading the
|
||
// file as one large stream
|
||
core.debug('Unable to determine content length, downloading file with http-client...');
|
||
yield downloadCacheHttpClient(archiveLocation, archivePath);
|
||
}
|
||
else {
|
||
// Use downloadToBuffer for faster downloads, since internally it splits the
|
||
// file into 4 MB chunks which can then be parallelized and retried independently
|
||
//
|
||
// If the file exceeds the buffer maximum length (~1 GB on 32-bit systems and ~2 GB
|
||
// on 64-bit systems), split the download into multiple segments
|
||
const maxSegmentSize = buffer.constants.MAX_LENGTH;
|
||
const downloadProgress = new DownloadProgress(contentLength);
|
||
const fd = fs.openSync(archivePath, 'w');
|
||
try {
|
||
downloadProgress.startDisplayTimer();
|
||
while (!downloadProgress.isDone()) {
|
||
const segmentStart = downloadProgress.segmentOffset + downloadProgress.segmentSize;
|
||
const segmentSize = Math.min(maxSegmentSize, contentLength - segmentStart);
|
||
downloadProgress.nextSegment(segmentSize);
|
||
const result = yield client.downloadToBuffer(segmentStart, segmentSize, {
|
||
concurrency: options.downloadConcurrency,
|
||
onProgress: downloadProgress.onProgress()
|
||
});
|
||
fs.writeFileSync(fd, result);
|
||
}
|
||
}
|
||
finally {
|
||
downloadProgress.stopDisplayTimer();
|
||
fs.closeSync(fd);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
exports.downloadCacheStorageSDK = downloadCacheStorageSDK;
|
||
//# sourceMappingURL=downloadUtils.js.map
|
||
|
||
/***/ }),
|
||
/* 252 */,
|
||
/* 253 */,
|
||
/* 254 */,
|
||
/* 255 */,
|
||
/* 256 */,
|
||
/* 257 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var DocumentPosition, NodeType, XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLNamedNodeMap, XMLNode, XMLNodeList, XMLProcessingInstruction, XMLRaw, XMLText, getValue, isEmpty, isFunction, isObject, ref1,
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
ref1 = __webpack_require__(582), isObject = ref1.isObject, isFunction = ref1.isFunction, isEmpty = ref1.isEmpty, getValue = ref1.getValue;
|
||
|
||
XMLElement = null;
|
||
|
||
XMLCData = null;
|
||
|
||
XMLComment = null;
|
||
|
||
XMLDeclaration = null;
|
||
|
||
XMLDocType = null;
|
||
|
||
XMLRaw = null;
|
||
|
||
XMLText = null;
|
||
|
||
XMLProcessingInstruction = null;
|
||
|
||
XMLDummy = null;
|
||
|
||
NodeType = null;
|
||
|
||
XMLNodeList = null;
|
||
|
||
XMLNamedNodeMap = null;
|
||
|
||
DocumentPosition = null;
|
||
|
||
module.exports = XMLNode = (function() {
|
||
function XMLNode(parent1) {
|
||
this.parent = parent1;
|
||
if (this.parent) {
|
||
this.options = this.parent.options;
|
||
this.stringify = this.parent.stringify;
|
||
}
|
||
this.value = null;
|
||
this.children = [];
|
||
this.baseURI = null;
|
||
if (!XMLElement) {
|
||
XMLElement = __webpack_require__(796);
|
||
XMLCData = __webpack_require__(657);
|
||
XMLComment = __webpack_require__(919);
|
||
XMLDeclaration = __webpack_require__(738);
|
||
XMLDocType = __webpack_require__(735);
|
||
XMLRaw = __webpack_require__(660);
|
||
XMLText = __webpack_require__(708);
|
||
XMLProcessingInstruction = __webpack_require__(491);
|
||
XMLDummy = __webpack_require__(956);
|
||
NodeType = __webpack_require__(683);
|
||
XMLNodeList = __webpack_require__(300);
|
||
XMLNamedNodeMap = __webpack_require__(451);
|
||
DocumentPosition = __webpack_require__(65);
|
||
}
|
||
}
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'nodeName', {
|
||
get: function() {
|
||
return this.name;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'nodeType', {
|
||
get: function() {
|
||
return this.type;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'nodeValue', {
|
||
get: function() {
|
||
return this.value;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'parentNode', {
|
||
get: function() {
|
||
return this.parent;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'childNodes', {
|
||
get: function() {
|
||
if (!this.childNodeList || !this.childNodeList.nodes) {
|
||
this.childNodeList = new XMLNodeList(this.children);
|
||
}
|
||
return this.childNodeList;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'firstChild', {
|
||
get: function() {
|
||
return this.children[0] || null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'lastChild', {
|
||
get: function() {
|
||
return this.children[this.children.length - 1] || null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'previousSibling', {
|
||
get: function() {
|
||
var i;
|
||
i = this.parent.children.indexOf(this);
|
||
return this.parent.children[i - 1] || null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'nextSibling', {
|
||
get: function() {
|
||
var i;
|
||
i = this.parent.children.indexOf(this);
|
||
return this.parent.children[i + 1] || null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'ownerDocument', {
|
||
get: function() {
|
||
return this.document() || null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLNode.prototype, 'textContent', {
|
||
get: function() {
|
||
var child, j, len, ref2, str;
|
||
if (this.nodeType === NodeType.Element || this.nodeType === NodeType.DocumentFragment) {
|
||
str = '';
|
||
ref2 = this.children;
|
||
for (j = 0, len = ref2.length; j < len; j++) {
|
||
child = ref2[j];
|
||
if (child.textContent) {
|
||
str += child.textContent;
|
||
}
|
||
}
|
||
return str;
|
||
} else {
|
||
return null;
|
||
}
|
||
},
|
||
set: function(value) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
}
|
||
});
|
||
|
||
XMLNode.prototype.setParent = function(parent) {
|
||
var child, j, len, ref2, results;
|
||
this.parent = parent;
|
||
if (parent) {
|
||
this.options = parent.options;
|
||
this.stringify = parent.stringify;
|
||
}
|
||
ref2 = this.children;
|
||
results = [];
|
||
for (j = 0, len = ref2.length; j < len; j++) {
|
||
child = ref2[j];
|
||
results.push(child.setParent(this));
|
||
}
|
||
return results;
|
||
};
|
||
|
||
XMLNode.prototype.element = function(name, attributes, text) {
|
||
var childNode, item, j, k, key, lastChild, len, len1, ref2, ref3, val;
|
||
lastChild = null;
|
||
if (attributes === null && (text == null)) {
|
||
ref2 = [{}, null], attributes = ref2[0], text = ref2[1];
|
||
}
|
||
if (attributes == null) {
|
||
attributes = {};
|
||
}
|
||
attributes = getValue(attributes);
|
||
if (!isObject(attributes)) {
|
||
ref3 = [attributes, text], text = ref3[0], attributes = ref3[1];
|
||
}
|
||
if (name != null) {
|
||
name = getValue(name);
|
||
}
|
||
if (Array.isArray(name)) {
|
||
for (j = 0, len = name.length; j < len; j++) {
|
||
item = name[j];
|
||
lastChild = this.element(item);
|
||
}
|
||
} else if (isFunction(name)) {
|
||
lastChild = this.element(name.apply());
|
||
} else if (isObject(name)) {
|
||
for (key in name) {
|
||
if (!hasProp.call(name, key)) continue;
|
||
val = name[key];
|
||
if (isFunction(val)) {
|
||
val = val.apply();
|
||
}
|
||
if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {
|
||
lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);
|
||
} else if (!this.options.separateArrayItems && Array.isArray(val) && isEmpty(val)) {
|
||
lastChild = this.dummy();
|
||
} else if (isObject(val) && isEmpty(val)) {
|
||
lastChild = this.element(key);
|
||
} else if (!this.options.keepNullNodes && (val == null)) {
|
||
lastChild = this.dummy();
|
||
} else if (!this.options.separateArrayItems && Array.isArray(val)) {
|
||
for (k = 0, len1 = val.length; k < len1; k++) {
|
||
item = val[k];
|
||
childNode = {};
|
||
childNode[key] = item;
|
||
lastChild = this.element(childNode);
|
||
}
|
||
} else if (isObject(val)) {
|
||
if (!this.options.ignoreDecorators && this.stringify.convertTextKey && key.indexOf(this.stringify.convertTextKey) === 0) {
|
||
lastChild = this.element(val);
|
||
} else {
|
||
lastChild = this.element(key);
|
||
lastChild.element(val);
|
||
}
|
||
} else {
|
||
lastChild = this.element(key, val);
|
||
}
|
||
}
|
||
} else if (!this.options.keepNullNodes && text === null) {
|
||
lastChild = this.dummy();
|
||
} else {
|
||
if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {
|
||
lastChild = this.text(text);
|
||
} else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {
|
||
lastChild = this.cdata(text);
|
||
} else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {
|
||
lastChild = this.comment(text);
|
||
} else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {
|
||
lastChild = this.raw(text);
|
||
} else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {
|
||
lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);
|
||
} else {
|
||
lastChild = this.node(name, attributes, text);
|
||
}
|
||
}
|
||
if (lastChild == null) {
|
||
throw new Error("Could not create any elements with: " + name + ". " + this.debugInfo());
|
||
}
|
||
return lastChild;
|
||
};
|
||
|
||
XMLNode.prototype.insertBefore = function(name, attributes, text) {
|
||
var child, i, newChild, refChild, removed;
|
||
if (name != null ? name.type : void 0) {
|
||
newChild = name;
|
||
refChild = attributes;
|
||
newChild.setParent(this);
|
||
if (refChild) {
|
||
i = children.indexOf(refChild);
|
||
removed = children.splice(i);
|
||
children.push(newChild);
|
||
Array.prototype.push.apply(children, removed);
|
||
} else {
|
||
children.push(newChild);
|
||
}
|
||
return newChild;
|
||
} else {
|
||
if (this.isRoot) {
|
||
throw new Error("Cannot insert elements at root level. " + this.debugInfo(name));
|
||
}
|
||
i = this.parent.children.indexOf(this);
|
||
removed = this.parent.children.splice(i);
|
||
child = this.parent.element(name, attributes, text);
|
||
Array.prototype.push.apply(this.parent.children, removed);
|
||
return child;
|
||
}
|
||
};
|
||
|
||
XMLNode.prototype.insertAfter = function(name, attributes, text) {
|
||
var child, i, removed;
|
||
if (this.isRoot) {
|
||
throw new Error("Cannot insert elements at root level. " + this.debugInfo(name));
|
||
}
|
||
i = this.parent.children.indexOf(this);
|
||
removed = this.parent.children.splice(i + 1);
|
||
child = this.parent.element(name, attributes, text);
|
||
Array.prototype.push.apply(this.parent.children, removed);
|
||
return child;
|
||
};
|
||
|
||
XMLNode.prototype.remove = function() {
|
||
var i, ref2;
|
||
if (this.isRoot) {
|
||
throw new Error("Cannot remove the root element. " + this.debugInfo());
|
||
}
|
||
i = this.parent.children.indexOf(this);
|
||
[].splice.apply(this.parent.children, [i, i - i + 1].concat(ref2 = [])), ref2;
|
||
return this.parent;
|
||
};
|
||
|
||
XMLNode.prototype.node = function(name, attributes, text) {
|
||
var child, ref2;
|
||
if (name != null) {
|
||
name = getValue(name);
|
||
}
|
||
attributes || (attributes = {});
|
||
attributes = getValue(attributes);
|
||
if (!isObject(attributes)) {
|
||
ref2 = [attributes, text], text = ref2[0], attributes = ref2[1];
|
||
}
|
||
child = new XMLElement(this, name, attributes);
|
||
if (text != null) {
|
||
child.text(text);
|
||
}
|
||
this.children.push(child);
|
||
return child;
|
||
};
|
||
|
||
XMLNode.prototype.text = function(value) {
|
||
var child;
|
||
if (isObject(value)) {
|
||
this.element(value);
|
||
}
|
||
child = new XMLText(this, value);
|
||
this.children.push(child);
|
||
return this;
|
||
};
|
||
|
||
XMLNode.prototype.cdata = function(value) {
|
||
var child;
|
||
child = new XMLCData(this, value);
|
||
this.children.push(child);
|
||
return this;
|
||
};
|
||
|
||
XMLNode.prototype.comment = function(value) {
|
||
var child;
|
||
child = new XMLComment(this, value);
|
||
this.children.push(child);
|
||
return this;
|
||
};
|
||
|
||
XMLNode.prototype.commentBefore = function(value) {
|
||
var child, i, removed;
|
||
i = this.parent.children.indexOf(this);
|
||
removed = this.parent.children.splice(i);
|
||
child = this.parent.comment(value);
|
||
Array.prototype.push.apply(this.parent.children, removed);
|
||
return this;
|
||
};
|
||
|
||
XMLNode.prototype.commentAfter = function(value) {
|
||
var child, i, removed;
|
||
i = this.parent.children.indexOf(this);
|
||
removed = this.parent.children.splice(i + 1);
|
||
child = this.parent.comment(value);
|
||
Array.prototype.push.apply(this.parent.children, removed);
|
||
return this;
|
||
};
|
||
|
||
XMLNode.prototype.raw = function(value) {
|
||
var child;
|
||
child = new XMLRaw(this, value);
|
||
this.children.push(child);
|
||
return this;
|
||
};
|
||
|
||
XMLNode.prototype.dummy = function() {
|
||
var child;
|
||
child = new XMLDummy(this);
|
||
return child;
|
||
};
|
||
|
||
XMLNode.prototype.instruction = function(target, value) {
|
||
var insTarget, insValue, instruction, j, len;
|
||
if (target != null) {
|
||
target = getValue(target);
|
||
}
|
||
if (value != null) {
|
||
value = getValue(value);
|
||
}
|
||
if (Array.isArray(target)) {
|
||
for (j = 0, len = target.length; j < len; j++) {
|
||
insTarget = target[j];
|
||
this.instruction(insTarget);
|
||
}
|
||
} else if (isObject(target)) {
|
||
for (insTarget in target) {
|
||
if (!hasProp.call(target, insTarget)) continue;
|
||
insValue = target[insTarget];
|
||
this.instruction(insTarget, insValue);
|
||
}
|
||
} else {
|
||
if (isFunction(value)) {
|
||
value = value.apply();
|
||
}
|
||
instruction = new XMLProcessingInstruction(this, target, value);
|
||
this.children.push(instruction);
|
||
}
|
||
return this;
|
||
};
|
||
|
||
XMLNode.prototype.instructionBefore = function(target, value) {
|
||
var child, i, removed;
|
||
i = this.parent.children.indexOf(this);
|
||
removed = this.parent.children.splice(i);
|
||
child = this.parent.instruction(target, value);
|
||
Array.prototype.push.apply(this.parent.children, removed);
|
||
return this;
|
||
};
|
||
|
||
XMLNode.prototype.instructionAfter = function(target, value) {
|
||
var child, i, removed;
|
||
i = this.parent.children.indexOf(this);
|
||
removed = this.parent.children.splice(i + 1);
|
||
child = this.parent.instruction(target, value);
|
||
Array.prototype.push.apply(this.parent.children, removed);
|
||
return this;
|
||
};
|
||
|
||
XMLNode.prototype.declaration = function(version, encoding, standalone) {
|
||
var doc, xmldec;
|
||
doc = this.document();
|
||
xmldec = new XMLDeclaration(doc, version, encoding, standalone);
|
||
if (doc.children.length === 0) {
|
||
doc.children.unshift(xmldec);
|
||
} else if (doc.children[0].type === NodeType.Declaration) {
|
||
doc.children[0] = xmldec;
|
||
} else {
|
||
doc.children.unshift(xmldec);
|
||
}
|
||
return doc.root() || doc;
|
||
};
|
||
|
||
XMLNode.prototype.dtd = function(pubID, sysID) {
|
||
var child, doc, doctype, i, j, k, len, len1, ref2, ref3;
|
||
doc = this.document();
|
||
doctype = new XMLDocType(doc, pubID, sysID);
|
||
ref2 = doc.children;
|
||
for (i = j = 0, len = ref2.length; j < len; i = ++j) {
|
||
child = ref2[i];
|
||
if (child.type === NodeType.DocType) {
|
||
doc.children[i] = doctype;
|
||
return doctype;
|
||
}
|
||
}
|
||
ref3 = doc.children;
|
||
for (i = k = 0, len1 = ref3.length; k < len1; i = ++k) {
|
||
child = ref3[i];
|
||
if (child.isRoot) {
|
||
doc.children.splice(i, 0, doctype);
|
||
return doctype;
|
||
}
|
||
}
|
||
doc.children.push(doctype);
|
||
return doctype;
|
||
};
|
||
|
||
XMLNode.prototype.up = function() {
|
||
if (this.isRoot) {
|
||
throw new Error("The root node has no parent. Use doc() if you need to get the document object.");
|
||
}
|
||
return this.parent;
|
||
};
|
||
|
||
XMLNode.prototype.root = function() {
|
||
var node;
|
||
node = this;
|
||
while (node) {
|
||
if (node.type === NodeType.Document) {
|
||
return node.rootObject;
|
||
} else if (node.isRoot) {
|
||
return node;
|
||
} else {
|
||
node = node.parent;
|
||
}
|
||
}
|
||
};
|
||
|
||
XMLNode.prototype.document = function() {
|
||
var node;
|
||
node = this;
|
||
while (node) {
|
||
if (node.type === NodeType.Document) {
|
||
return node;
|
||
} else {
|
||
node = node.parent;
|
||
}
|
||
}
|
||
};
|
||
|
||
XMLNode.prototype.end = function(options) {
|
||
return this.document().end(options);
|
||
};
|
||
|
||
XMLNode.prototype.prev = function() {
|
||
var i;
|
||
i = this.parent.children.indexOf(this);
|
||
if (i < 1) {
|
||
throw new Error("Already at the first node. " + this.debugInfo());
|
||
}
|
||
return this.parent.children[i - 1];
|
||
};
|
||
|
||
XMLNode.prototype.next = function() {
|
||
var i;
|
||
i = this.parent.children.indexOf(this);
|
||
if (i === -1 || i === this.parent.children.length - 1) {
|
||
throw new Error("Already at the last node. " + this.debugInfo());
|
||
}
|
||
return this.parent.children[i + 1];
|
||
};
|
||
|
||
XMLNode.prototype.importDocument = function(doc) {
|
||
var clonedRoot;
|
||
clonedRoot = doc.root().clone();
|
||
clonedRoot.parent = this;
|
||
clonedRoot.isRoot = false;
|
||
this.children.push(clonedRoot);
|
||
return this;
|
||
};
|
||
|
||
XMLNode.prototype.debugInfo = function(name) {
|
||
var ref2, ref3;
|
||
name = name || this.name;
|
||
if ((name == null) && !((ref2 = this.parent) != null ? ref2.name : void 0)) {
|
||
return "";
|
||
} else if (name == null) {
|
||
return "parent: <" + this.parent.name + ">";
|
||
} else if (!((ref3 = this.parent) != null ? ref3.name : void 0)) {
|
||
return "node: <" + name + ">";
|
||
} else {
|
||
return "node: <" + name + ">, parent: <" + this.parent.name + ">";
|
||
}
|
||
};
|
||
|
||
XMLNode.prototype.ele = function(name, attributes, text) {
|
||
return this.element(name, attributes, text);
|
||
};
|
||
|
||
XMLNode.prototype.nod = function(name, attributes, text) {
|
||
return this.node(name, attributes, text);
|
||
};
|
||
|
||
XMLNode.prototype.txt = function(value) {
|
||
return this.text(value);
|
||
};
|
||
|
||
XMLNode.prototype.dat = function(value) {
|
||
return this.cdata(value);
|
||
};
|
||
|
||
XMLNode.prototype.com = function(value) {
|
||
return this.comment(value);
|
||
};
|
||
|
||
XMLNode.prototype.ins = function(target, value) {
|
||
return this.instruction(target, value);
|
||
};
|
||
|
||
XMLNode.prototype.doc = function() {
|
||
return this.document();
|
||
};
|
||
|
||
XMLNode.prototype.dec = function(version, encoding, standalone) {
|
||
return this.declaration(version, encoding, standalone);
|
||
};
|
||
|
||
XMLNode.prototype.e = function(name, attributes, text) {
|
||
return this.element(name, attributes, text);
|
||
};
|
||
|
||
XMLNode.prototype.n = function(name, attributes, text) {
|
||
return this.node(name, attributes, text);
|
||
};
|
||
|
||
XMLNode.prototype.t = function(value) {
|
||
return this.text(value);
|
||
};
|
||
|
||
XMLNode.prototype.d = function(value) {
|
||
return this.cdata(value);
|
||
};
|
||
|
||
XMLNode.prototype.c = function(value) {
|
||
return this.comment(value);
|
||
};
|
||
|
||
XMLNode.prototype.r = function(value) {
|
||
return this.raw(value);
|
||
};
|
||
|
||
XMLNode.prototype.i = function(target, value) {
|
||
return this.instruction(target, value);
|
||
};
|
||
|
||
XMLNode.prototype.u = function() {
|
||
return this.up();
|
||
};
|
||
|
||
XMLNode.prototype.importXMLBuilder = function(doc) {
|
||
return this.importDocument(doc);
|
||
};
|
||
|
||
XMLNode.prototype.replaceChild = function(newChild, oldChild) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.removeChild = function(oldChild) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.appendChild = function(newChild) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.hasChildNodes = function() {
|
||
return this.children.length !== 0;
|
||
};
|
||
|
||
XMLNode.prototype.cloneNode = function(deep) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.normalize = function() {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.isSupported = function(feature, version) {
|
||
return true;
|
||
};
|
||
|
||
XMLNode.prototype.hasAttributes = function() {
|
||
return this.attribs.length !== 0;
|
||
};
|
||
|
||
XMLNode.prototype.compareDocumentPosition = function(other) {
|
||
var ref, res;
|
||
ref = this;
|
||
if (ref === other) {
|
||
return 0;
|
||
} else if (this.document() !== other.document()) {
|
||
res = DocumentPosition.Disconnected | DocumentPosition.ImplementationSpecific;
|
||
if (Math.random() < 0.5) {
|
||
res |= DocumentPosition.Preceding;
|
||
} else {
|
||
res |= DocumentPosition.Following;
|
||
}
|
||
return res;
|
||
} else if (ref.isAncestor(other)) {
|
||
return DocumentPosition.Contains | DocumentPosition.Preceding;
|
||
} else if (ref.isDescendant(other)) {
|
||
return DocumentPosition.Contains | DocumentPosition.Following;
|
||
} else if (ref.isPreceding(other)) {
|
||
return DocumentPosition.Preceding;
|
||
} else {
|
||
return DocumentPosition.Following;
|
||
}
|
||
};
|
||
|
||
XMLNode.prototype.isSameNode = function(other) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.lookupPrefix = function(namespaceURI) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.isDefaultNamespace = function(namespaceURI) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.lookupNamespaceURI = function(prefix) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.isEqualNode = function(node) {
|
||
var i, j, ref2;
|
||
if (node.nodeType !== this.nodeType) {
|
||
return false;
|
||
}
|
||
if (node.children.length !== this.children.length) {
|
||
return false;
|
||
}
|
||
for (i = j = 0, ref2 = this.children.length - 1; 0 <= ref2 ? j <= ref2 : j >= ref2; i = 0 <= ref2 ? ++j : --j) {
|
||
if (!this.children[i].isEqualNode(node.children[i])) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
};
|
||
|
||
XMLNode.prototype.getFeature = function(feature, version) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.setUserData = function(key, data, handler) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.getUserData = function(key) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLNode.prototype.contains = function(other) {
|
||
if (!other) {
|
||
return false;
|
||
}
|
||
return other === this || this.isDescendant(other);
|
||
};
|
||
|
||
XMLNode.prototype.isDescendant = function(node) {
|
||
var child, isDescendantChild, j, len, ref2;
|
||
ref2 = this.children;
|
||
for (j = 0, len = ref2.length; j < len; j++) {
|
||
child = ref2[j];
|
||
if (node === child) {
|
||
return true;
|
||
}
|
||
isDescendantChild = child.isDescendant(node);
|
||
if (isDescendantChild) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
};
|
||
|
||
XMLNode.prototype.isAncestor = function(node) {
|
||
return node.isDescendant(this);
|
||
};
|
||
|
||
XMLNode.prototype.isPreceding = function(node) {
|
||
var nodePos, thisPos;
|
||
nodePos = this.treePosition(node);
|
||
thisPos = this.treePosition(this);
|
||
if (nodePos === -1 || thisPos === -1) {
|
||
return false;
|
||
} else {
|
||
return nodePos < thisPos;
|
||
}
|
||
};
|
||
|
||
XMLNode.prototype.isFollowing = function(node) {
|
||
var nodePos, thisPos;
|
||
nodePos = this.treePosition(node);
|
||
thisPos = this.treePosition(this);
|
||
if (nodePos === -1 || thisPos === -1) {
|
||
return false;
|
||
} else {
|
||
return nodePos > thisPos;
|
||
}
|
||
};
|
||
|
||
XMLNode.prototype.treePosition = function(node) {
|
||
var found, pos;
|
||
pos = 0;
|
||
found = false;
|
||
this.foreachTreeNode(this.document(), function(childNode) {
|
||
pos++;
|
||
if (!found && childNode === node) {
|
||
return found = true;
|
||
}
|
||
});
|
||
if (found) {
|
||
return pos;
|
||
} else {
|
||
return -1;
|
||
}
|
||
};
|
||
|
||
XMLNode.prototype.foreachTreeNode = function(node, func) {
|
||
var child, j, len, ref2, res;
|
||
node || (node = this.document());
|
||
ref2 = node.children;
|
||
for (j = 0, len = ref2.length; j < len; j++) {
|
||
child = ref2[j];
|
||
if (res = func(child)) {
|
||
return res;
|
||
} else {
|
||
res = this.foreachTreeNode(child, func);
|
||
if (res) {
|
||
return res;
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
return XMLNode;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 258 */,
|
||
/* 259 */,
|
||
/* 260 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Note: since nyc uses this module to output coverage, any lines
|
||
// that are in the direct sync flow of nyc's outputCoverage are
|
||
// ignored, since we can never get coverage for them.
|
||
var assert = __webpack_require__(357)
|
||
var signals = __webpack_require__(654)
|
||
|
||
var EE = __webpack_require__(614)
|
||
/* istanbul ignore if */
|
||
if (typeof EE !== 'function') {
|
||
EE = EE.EventEmitter
|
||
}
|
||
|
||
var emitter
|
||
if (process.__signal_exit_emitter__) {
|
||
emitter = process.__signal_exit_emitter__
|
||
} else {
|
||
emitter = process.__signal_exit_emitter__ = new EE()
|
||
emitter.count = 0
|
||
emitter.emitted = {}
|
||
}
|
||
|
||
// Because this emitter is a global, we have to check to see if a
|
||
// previous version of this library failed to enable infinite listeners.
|
||
// I know what you're about to say. But literally everything about
|
||
// signal-exit is a compromise with evil. Get used to it.
|
||
if (!emitter.infinite) {
|
||
emitter.setMaxListeners(Infinity)
|
||
emitter.infinite = true
|
||
}
|
||
|
||
module.exports = function (cb, opts) {
|
||
assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')
|
||
|
||
if (loaded === false) {
|
||
load()
|
||
}
|
||
|
||
var ev = 'exit'
|
||
if (opts && opts.alwaysLast) {
|
||
ev = 'afterexit'
|
||
}
|
||
|
||
var remove = function () {
|
||
emitter.removeListener(ev, cb)
|
||
if (emitter.listeners('exit').length === 0 &&
|
||
emitter.listeners('afterexit').length === 0) {
|
||
unload()
|
||
}
|
||
}
|
||
emitter.on(ev, cb)
|
||
|
||
return remove
|
||
}
|
||
|
||
module.exports.unload = unload
|
||
function unload () {
|
||
if (!loaded) {
|
||
return
|
||
}
|
||
loaded = false
|
||
|
||
signals.forEach(function (sig) {
|
||
try {
|
||
process.removeListener(sig, sigListeners[sig])
|
||
} catch (er) {}
|
||
})
|
||
process.emit = originalProcessEmit
|
||
process.reallyExit = originalProcessReallyExit
|
||
emitter.count -= 1
|
||
}
|
||
|
||
function emit (event, code, signal) {
|
||
if (emitter.emitted[event]) {
|
||
return
|
||
}
|
||
emitter.emitted[event] = true
|
||
emitter.emit(event, code, signal)
|
||
}
|
||
|
||
// { <signal>: <listener fn>, ... }
|
||
var sigListeners = {}
|
||
signals.forEach(function (sig) {
|
||
sigListeners[sig] = function listener () {
|
||
// If there are no other listeners, an exit is coming!
|
||
// Simplest way: remove us and then re-send the signal.
|
||
// We know that this will kill the process, so we can
|
||
// safely emit now.
|
||
var listeners = process.listeners(sig)
|
||
if (listeners.length === emitter.count) {
|
||
unload()
|
||
emit('exit', null, sig)
|
||
/* istanbul ignore next */
|
||
emit('afterexit', null, sig)
|
||
/* istanbul ignore next */
|
||
process.kill(process.pid, sig)
|
||
}
|
||
}
|
||
})
|
||
|
||
module.exports.signals = function () {
|
||
return signals
|
||
}
|
||
|
||
module.exports.load = load
|
||
|
||
var loaded = false
|
||
|
||
function load () {
|
||
if (loaded) {
|
||
return
|
||
}
|
||
loaded = true
|
||
|
||
// This is the number of onSignalExit's that are in play.
|
||
// It's important so that we can count the correct number of
|
||
// listeners on signals, and don't wait for the other one to
|
||
// handle it instead of us.
|
||
emitter.count += 1
|
||
|
||
signals = signals.filter(function (sig) {
|
||
try {
|
||
process.on(sig, sigListeners[sig])
|
||
return true
|
||
} catch (er) {
|
||
return false
|
||
}
|
||
})
|
||
|
||
process.emit = processEmit
|
||
process.reallyExit = processReallyExit
|
||
}
|
||
|
||
var originalProcessReallyExit = process.reallyExit
|
||
function processReallyExit (code) {
|
||
process.exitCode = code || 0
|
||
emit('exit', process.exitCode, null)
|
||
/* istanbul ignore next */
|
||
emit('afterexit', process.exitCode, null)
|
||
/* istanbul ignore next */
|
||
originalProcessReallyExit.call(process, process.exitCode)
|
||
}
|
||
|
||
var originalProcessEmit = process.emit
|
||
function processEmit (ev, arg) {
|
||
if (ev === 'exit') {
|
||
if (arg !== undefined) {
|
||
process.exitCode = arg
|
||
}
|
||
var ret = originalProcessEmit.apply(this, arguments)
|
||
emit('exit', process.exitCode, null)
|
||
/* istanbul ignore next */
|
||
emit('afterexit', process.exitCode, null)
|
||
return ret
|
||
} else {
|
||
return originalProcessEmit.apply(this, arguments)
|
||
}
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 261 */,
|
||
/* 262 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const fs_1 = __webpack_require__(747);
|
||
const os_1 = __webpack_require__(87);
|
||
class Context {
|
||
/**
|
||
* Hydrate the context from the environment
|
||
*/
|
||
constructor() {
|
||
this.payload = {};
|
||
if (process.env.GITHUB_EVENT_PATH) {
|
||
if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) {
|
||
this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));
|
||
}
|
||
else {
|
||
process.stdout.write(`GITHUB_EVENT_PATH ${process.env.GITHUB_EVENT_PATH} does not exist${os_1.EOL}`);
|
||
}
|
||
}
|
||
this.eventName = process.env.GITHUB_EVENT_NAME;
|
||
this.sha = process.env.GITHUB_SHA;
|
||
this.ref = process.env.GITHUB_REF;
|
||
this.workflow = process.env.GITHUB_WORKFLOW;
|
||
this.action = process.env.GITHUB_ACTION;
|
||
this.actor = process.env.GITHUB_ACTOR;
|
||
}
|
||
get issue() {
|
||
const payload = this.payload;
|
||
return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pullRequest || payload).number });
|
||
}
|
||
get repo() {
|
||
if (process.env.GITHUB_REPOSITORY) {
|
||
const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');
|
||
return { owner, repo };
|
||
}
|
||
if (this.payload.repository) {
|
||
return {
|
||
owner: this.payload.repository.owner.login,
|
||
repo: this.payload.repository.name
|
||
};
|
||
}
|
||
throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'");
|
||
}
|
||
}
|
||
exports.Context = Context;
|
||
//# sourceMappingURL=context.js.map
|
||
|
||
/***/ }),
|
||
/* 263 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
var api = __webpack_require__(440);
|
||
var tslib = __webpack_require__(144);
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* A no-op implementation of Span that can safely be used without side-effects.
|
||
*/
|
||
var NoOpSpan = /** @class */ (function () {
|
||
function NoOpSpan() {
|
||
}
|
||
/**
|
||
* Returns the SpanContext associated with this Span.
|
||
*/
|
||
NoOpSpan.prototype.context = function () {
|
||
return {
|
||
spanId: "",
|
||
traceId: "",
|
||
traceFlags: 0 /* NONE */
|
||
};
|
||
};
|
||
/**
|
||
* Marks the end of Span execution.
|
||
* @param _endTime - The time to use as the Span's end time. Defaults to
|
||
* the current time.
|
||
*/
|
||
NoOpSpan.prototype.end = function (_endTime) {
|
||
/* Noop */
|
||
};
|
||
/**
|
||
* Sets an attribute on the Span
|
||
* @param _key - The attribute key
|
||
* @param _value - The attribute value
|
||
*/
|
||
NoOpSpan.prototype.setAttribute = function (_key, _value) {
|
||
return this;
|
||
};
|
||
/**
|
||
* Sets attributes on the Span
|
||
* @param _attributes - The attributes to add
|
||
*/
|
||
NoOpSpan.prototype.setAttributes = function (_attributes) {
|
||
return this;
|
||
};
|
||
/**
|
||
* Adds an event to the Span
|
||
* @param _name - The name of the event
|
||
* @param _attributes - The associated attributes to add for this event
|
||
*/
|
||
NoOpSpan.prototype.addEvent = function (_name, _attributes) {
|
||
return this;
|
||
};
|
||
/**
|
||
* Sets a status on the span. Overrides the default of SpanStatusCode.OK.
|
||
* @param _status - The status to set.
|
||
*/
|
||
NoOpSpan.prototype.setStatus = function (_status) {
|
||
return this;
|
||
};
|
||
/**
|
||
* Updates the name of the Span
|
||
* @param _name - the new Span name
|
||
*/
|
||
NoOpSpan.prototype.updateName = function (_name) {
|
||
return this;
|
||
};
|
||
/**
|
||
* Returns whether this span will be recorded
|
||
*/
|
||
NoOpSpan.prototype.isRecording = function () {
|
||
return false;
|
||
};
|
||
/**
|
||
* Sets exception as a span event
|
||
* @param exception - the exception the only accepted values are string or Error
|
||
* @param time - the time to set as Span's event time. If not provided,
|
||
* use the current time.
|
||
*/
|
||
NoOpSpan.prototype.recordException = function (_exception, _time) {
|
||
/* do nothing */
|
||
};
|
||
return NoOpSpan;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* A no-op implementation of Tracer that can be used when tracing
|
||
* is disabled.
|
||
*/
|
||
var NoOpTracer = /** @class */ (function () {
|
||
function NoOpTracer() {
|
||
}
|
||
/**
|
||
* Starts a new Span.
|
||
* @param _name - The name of the span.
|
||
* @param _options - The SpanOptions used during Span creation.
|
||
*/
|
||
NoOpTracer.prototype.startSpan = function (_name, _options) {
|
||
return new NoOpSpan();
|
||
};
|
||
/**
|
||
* Returns the current Span from the current context, if available.
|
||
*/
|
||
NoOpTracer.prototype.getCurrentSpan = function () {
|
||
return new NoOpSpan();
|
||
};
|
||
/**
|
||
* Executes the given function within the context provided by a Span.
|
||
* @param _span - The span that provides the context.
|
||
* @param fn - The function to be executed.
|
||
*/
|
||
NoOpTracer.prototype.withSpan = function (_span, fn) {
|
||
return fn();
|
||
};
|
||
/**
|
||
* Bind a Span as the target's scope
|
||
* @param target - An object to bind the scope.
|
||
* @param _span - A specific Span to use. Otherwise, use the current one.
|
||
*/
|
||
NoOpTracer.prototype.bind = function (target, _span) {
|
||
return target;
|
||
};
|
||
return NoOpTracer;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
function getGlobalObject() {
|
||
return global;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// V1 = OpenTelemetry 0.1
|
||
// V2 = OpenTelemetry 0.2
|
||
// V3 = OpenTelemetry 0.6.1
|
||
// V4 = OpenTelemetry 1.0.0-rc.0
|
||
var GLOBAL_TRACER_VERSION = 4;
|
||
// preview5 shipped with @azure/core-tracing.tracerCache
|
||
// and didn't have smart detection for collisions
|
||
var GLOBAL_TRACER_SYMBOL = Symbol.for("@azure/core-tracing.tracerCache3");
|
||
var cache;
|
||
function loadTracerCache() {
|
||
var globalObj = getGlobalObject();
|
||
var existingCache = globalObj[GLOBAL_TRACER_SYMBOL];
|
||
var setGlobalCache = true;
|
||
if (existingCache) {
|
||
if (existingCache.version === GLOBAL_TRACER_VERSION) {
|
||
cache = existingCache;
|
||
}
|
||
else {
|
||
setGlobalCache = false;
|
||
if (existingCache.tracer) {
|
||
throw new Error("Two incompatible versions of @azure/core-tracing have been loaded.\n This library is " + GLOBAL_TRACER_VERSION + ", existing is " + existingCache.version + ".");
|
||
}
|
||
}
|
||
}
|
||
if (!cache) {
|
||
cache = {
|
||
tracer: undefined,
|
||
version: GLOBAL_TRACER_VERSION
|
||
};
|
||
}
|
||
if (setGlobalCache) {
|
||
globalObj[GLOBAL_TRACER_SYMBOL] = cache;
|
||
}
|
||
}
|
||
function getCache() {
|
||
if (!cache) {
|
||
loadTracerCache();
|
||
}
|
||
return cache;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var defaultTracer;
|
||
function getDefaultTracer() {
|
||
if (!defaultTracer) {
|
||
defaultTracer = new NoOpTracer();
|
||
}
|
||
return defaultTracer;
|
||
}
|
||
/**
|
||
* Sets the global tracer, enabling tracing for the Azure SDK.
|
||
* @param tracer - An OpenTelemetry Tracer instance.
|
||
*/
|
||
function setTracer(tracer) {
|
||
var cache = getCache();
|
||
cache.tracer = tracer;
|
||
}
|
||
/**
|
||
* Retrieves the active tracer, or returns a
|
||
* no-op implementation if one is not set.
|
||
*/
|
||
function getTracer() {
|
||
var cache = getCache();
|
||
if (!cache.tracer) {
|
||
return getDefaultTracer();
|
||
}
|
||
return cache.tracer;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
(function (SpanKind) {
|
||
/** Default value. Indicates that the span is used internally. */
|
||
SpanKind[SpanKind["INTERNAL"] = 0] = "INTERNAL";
|
||
/**
|
||
* Indicates that the span covers server-side handling of an RPC or other
|
||
* remote request.
|
||
*/
|
||
SpanKind[SpanKind["SERVER"] = 1] = "SERVER";
|
||
/**
|
||
* Indicates that the span covers the client-side wrapper around an RPC or
|
||
* other remote request.
|
||
*/
|
||
SpanKind[SpanKind["CLIENT"] = 2] = "CLIENT";
|
||
/**
|
||
* Indicates that the span describes producer sending a message to a
|
||
* broker. Unlike client and server, there is no direct critical path latency
|
||
* relationship between producer and consumer spans.
|
||
*/
|
||
SpanKind[SpanKind["PRODUCER"] = 3] = "PRODUCER";
|
||
/**
|
||
* Indicates that the span describes consumer receiving a message from a
|
||
* broker. Unlike client and server, there is no direct critical path latency
|
||
* relationship between producer and consumer spans.
|
||
*/
|
||
SpanKind[SpanKind["CONSUMER"] = 4] = "CONSUMER";
|
||
})(exports.SpanKind || (exports.SpanKind = {}));
|
||
/**
|
||
* Return the span if one exists
|
||
*
|
||
* @param context - context to get span from
|
||
*/
|
||
function getSpan(context) {
|
||
return api.getSpan(context);
|
||
}
|
||
/**
|
||
* Set the span on a context
|
||
*
|
||
* @param context - context to use as parent
|
||
* @param span - span to set active
|
||
*/
|
||
function setSpan(context, span) {
|
||
return api.setSpan(context, span);
|
||
}
|
||
/**
|
||
* Wrap span context in a NoopSpan and set as span in a new
|
||
* context
|
||
*
|
||
* @param context - context to set active span on
|
||
* @param spanContext - span context to be wrapped
|
||
*/
|
||
function setSpanContext(context, spanContext) {
|
||
return api.setSpanContext(context, spanContext);
|
||
}
|
||
/**
|
||
* Get the span context of the span if it exists.
|
||
*
|
||
* @param context - context to get values from
|
||
*/
|
||
function getSpanContext(context) {
|
||
return api.getSpanContext(context);
|
||
}
|
||
/** Entrypoint for context API */
|
||
var context = api.context;
|
||
(function (SpanStatusCode) {
|
||
/**
|
||
* The default status.
|
||
*/
|
||
SpanStatusCode[SpanStatusCode["UNSET"] = 0] = "UNSET";
|
||
/**
|
||
* The operation has been validated by an Application developer or
|
||
* Operator to have completed successfully.
|
||
*/
|
||
SpanStatusCode[SpanStatusCode["OK"] = 1] = "OK";
|
||
/**
|
||
* The operation contains an error.
|
||
*/
|
||
SpanStatusCode[SpanStatusCode["ERROR"] = 2] = "ERROR";
|
||
})(exports.SpanStatusCode || (exports.SpanStatusCode = {}));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* @internal
|
||
*/
|
||
var OpenCensusTraceStateWrapper = /** @class */ (function () {
|
||
function OpenCensusTraceStateWrapper(state) {
|
||
this._state = state;
|
||
}
|
||
OpenCensusTraceStateWrapper.prototype.get = function (_key) {
|
||
throw new Error("Method not implemented.");
|
||
};
|
||
OpenCensusTraceStateWrapper.prototype.set = function (_key, _value) {
|
||
throw new Error("Method not implemented.");
|
||
};
|
||
OpenCensusTraceStateWrapper.prototype.unset = function (_key) {
|
||
throw new Error("Method not implemented");
|
||
};
|
||
OpenCensusTraceStateWrapper.prototype.serialize = function () {
|
||
return this._state || "";
|
||
};
|
||
return OpenCensusTraceStateWrapper;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/** An enumeration of canonical status codes. */
|
||
var CanonicalCode;
|
||
(function (CanonicalCode) {
|
||
/**
|
||
* Not an error; returned on success
|
||
*/
|
||
CanonicalCode[CanonicalCode["OK"] = 0] = "OK";
|
||
/**
|
||
* Internal errors. Means some invariants expected by underlying
|
||
* system has been broken. If you see one of these errors,
|
||
* something is very broken.
|
||
*/
|
||
CanonicalCode[CanonicalCode["INTERNAL"] = 13] = "INTERNAL";
|
||
})(CanonicalCode || (CanonicalCode = {}));
|
||
function isWrappedSpan(span) {
|
||
return !!span && span.getWrappedSpan !== undefined;
|
||
}
|
||
function isTracer(tracerOrSpan) {
|
||
return tracerOrSpan.getWrappedTracer !== undefined;
|
||
}
|
||
/**
|
||
* An implementation of OpenTelemetry Span that wraps an OpenCensus Span.
|
||
*/
|
||
var OpenCensusSpanWrapper = /** @class */ (function () {
|
||
function OpenCensusSpanWrapper(tracerOrSpan, name, options, context$1) {
|
||
if (name === void 0) { name = ""; }
|
||
if (options === void 0) { options = {}; }
|
||
if (isTracer(tracerOrSpan)) {
|
||
var span = getSpan(context$1 !== null && context$1 !== void 0 ? context$1 : context.active());
|
||
var parent = isWrappedSpan(span) ? span.getWrappedSpan() : undefined;
|
||
this._span = tracerOrSpan.getWrappedTracer().startChildSpan({
|
||
name: name,
|
||
childOf: parent
|
||
});
|
||
this._span.start();
|
||
if (options.links) {
|
||
for (var _i = 0, _a = options.links; _i < _a.length; _i++) {
|
||
var link = _a[_i];
|
||
// Since there is no way to set the link relationship, leave it as Unspecified.
|
||
this._span.addLink(link.context.traceId, link.context.spanId, 0 /* LinkType.UNSPECIFIED */, link.attributes);
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
this._span = tracerOrSpan;
|
||
}
|
||
}
|
||
/**
|
||
* The underlying OpenCensus Span
|
||
*/
|
||
OpenCensusSpanWrapper.prototype.getWrappedSpan = function () {
|
||
return this._span;
|
||
};
|
||
/**
|
||
* Marks the end of Span execution.
|
||
* @param endTime - The time to use as the Span's end time. Defaults to
|
||
* the current time.
|
||
*/
|
||
OpenCensusSpanWrapper.prototype.end = function (_endTime) {
|
||
this._span.end();
|
||
};
|
||
/**
|
||
* Returns the SpanContext associated with this Span.
|
||
*/
|
||
OpenCensusSpanWrapper.prototype.context = function () {
|
||
var openCensusSpanContext = this._span.spanContext;
|
||
return {
|
||
spanId: openCensusSpanContext.spanId,
|
||
traceId: openCensusSpanContext.traceId,
|
||
traceFlags: openCensusSpanContext.options,
|
||
traceState: new OpenCensusTraceStateWrapper(openCensusSpanContext.traceState)
|
||
};
|
||
};
|
||
/**
|
||
* Sets an attribute on the Span
|
||
* @param key - The attribute key
|
||
* @param value - The attribute value
|
||
*/
|
||
OpenCensusSpanWrapper.prototype.setAttribute = function (key, value) {
|
||
this._span.addAttribute(key, value);
|
||
return this;
|
||
};
|
||
/**
|
||
* Sets attributes on the Span
|
||
* @param attributes - The attributes to add
|
||
*/
|
||
OpenCensusSpanWrapper.prototype.setAttributes = function (attributes) {
|
||
this._span.attributes = attributes;
|
||
return this;
|
||
};
|
||
/**
|
||
* Adds an event to the Span
|
||
* @param name - The name of the event
|
||
* @param attributes - The associated attributes to add for this event
|
||
*/
|
||
OpenCensusSpanWrapper.prototype.addEvent = function (_name, _attributes) {
|
||
throw new Error("Method not implemented.");
|
||
};
|
||
/**
|
||
* Sets a status on the span. Overrides the default of SpanStatusCode.OK.
|
||
* @param status - The status to set.
|
||
*/
|
||
OpenCensusSpanWrapper.prototype.setStatus = function (status) {
|
||
switch (status.code) {
|
||
case exports.SpanStatusCode.ERROR: {
|
||
this._span.setStatus(CanonicalCode.INTERNAL, status.message);
|
||
break;
|
||
}
|
||
case exports.SpanStatusCode.OK: {
|
||
this._span.setStatus(CanonicalCode.OK, status.message);
|
||
break;
|
||
}
|
||
case exports.SpanStatusCode.UNSET: {
|
||
break;
|
||
}
|
||
}
|
||
return this;
|
||
};
|
||
/**
|
||
* Updates the name of the Span
|
||
* @param name - The new Span name
|
||
*/
|
||
OpenCensusSpanWrapper.prototype.updateName = function (name) {
|
||
this._span.name = name;
|
||
return this;
|
||
};
|
||
/**
|
||
* Returns whether this span will be recorded
|
||
*/
|
||
OpenCensusSpanWrapper.prototype.isRecording = function () {
|
||
// NoRecordSpans have an empty traceId
|
||
return !!this._span.traceId;
|
||
};
|
||
/**
|
||
* Sets exception as a span event
|
||
* @param exception - the exception the only accepted values are string or Error
|
||
* @param time - the time to set as Span's event time. If not provided,
|
||
* use the current time.
|
||
*/
|
||
OpenCensusSpanWrapper.prototype.recordException = function (_exception, _time) {
|
||
throw new Error("Method not implemented");
|
||
};
|
||
return OpenCensusSpanWrapper;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* An implementation of OpenTelemetry Tracer that wraps an OpenCensus Tracer.
|
||
*/
|
||
var OpenCensusTracerWrapper = /** @class */ (function () {
|
||
/**
|
||
* Create a new wrapper around a given OpenCensus Tracer.
|
||
* @param tracer - The OpenCensus Tracer to wrap.
|
||
*/
|
||
function OpenCensusTracerWrapper(tracer) {
|
||
this._tracer = tracer;
|
||
}
|
||
/**
|
||
* The wrapped OpenCensus Tracer
|
||
*/
|
||
OpenCensusTracerWrapper.prototype.getWrappedTracer = function () {
|
||
return this._tracer;
|
||
};
|
||
/**
|
||
* Starts a new Span.
|
||
* @param name - The name of the span.
|
||
* @param options - The SpanOptions used during Span creation.
|
||
*/
|
||
OpenCensusTracerWrapper.prototype.startSpan = function (name, options) {
|
||
return new OpenCensusSpanWrapper(this, name, options);
|
||
};
|
||
/**
|
||
* Returns the current Span from the current context, if available.
|
||
*/
|
||
OpenCensusTracerWrapper.prototype.getCurrentSpan = function () {
|
||
return undefined;
|
||
};
|
||
/**
|
||
* Executes the given function within the context provided by a Span.
|
||
* @param _span - The span that provides the context.
|
||
* @param _fn - The function to be executed.
|
||
*/
|
||
OpenCensusTracerWrapper.prototype.withSpan = function (_span, _fn) {
|
||
throw new Error("Method not implemented.");
|
||
};
|
||
/**
|
||
* Bind a Span as the target's scope
|
||
* @param target - An object to bind the scope.
|
||
* @param _span - A specific Span to use. Otherwise, use the current one.
|
||
*/
|
||
OpenCensusTracerWrapper.prototype.bind = function (_target, _span) {
|
||
throw new Error("Method not implemented.");
|
||
};
|
||
return OpenCensusTracerWrapper;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* A mock span useful for testing.
|
||
*/
|
||
var TestSpan = /** @class */ (function (_super) {
|
||
tslib.__extends(TestSpan, _super);
|
||
/**
|
||
* Starts a new Span.
|
||
* @param parentTracer- The tracer that created this Span
|
||
* @param name - The name of the span.
|
||
* @param context - The SpanContext this span belongs to
|
||
* @param kind - The SpanKind of this Span
|
||
* @param parentSpanId - The identifier of the parent Span
|
||
* @param startTime - The startTime of the event (defaults to now)
|
||
*/
|
||
function TestSpan(parentTracer, name, context, kind, parentSpanId, startTime) {
|
||
if (startTime === void 0) { startTime = Date.now(); }
|
||
var _this = _super.call(this) || this;
|
||
_this._tracer = parentTracer;
|
||
_this.name = name;
|
||
_this.kind = kind;
|
||
_this.startTime = startTime;
|
||
_this.parentSpanId = parentSpanId;
|
||
_this.status = {
|
||
code: exports.SpanStatusCode.OK
|
||
};
|
||
_this.endCalled = false;
|
||
_this._context = context;
|
||
_this.attributes = {};
|
||
return _this;
|
||
}
|
||
/**
|
||
* Returns the Tracer that created this Span
|
||
*/
|
||
TestSpan.prototype.tracer = function () {
|
||
return this._tracer;
|
||
};
|
||
/**
|
||
* Returns the SpanContext associated with this Span.
|
||
*/
|
||
TestSpan.prototype.context = function () {
|
||
return this._context;
|
||
};
|
||
/**
|
||
* Marks the end of Span execution.
|
||
* @param _endTime - The time to use as the Span's end time. Defaults to
|
||
* the current time.
|
||
*/
|
||
TestSpan.prototype.end = function (_endTime) {
|
||
this.endCalled = true;
|
||
};
|
||
/**
|
||
* Sets a status on the span. Overrides the default of SpanStatusCode.OK.
|
||
* @param status - The status to set.
|
||
*/
|
||
TestSpan.prototype.setStatus = function (status) {
|
||
this.status = status;
|
||
return this;
|
||
};
|
||
/**
|
||
* Returns whether this span will be recorded
|
||
*/
|
||
TestSpan.prototype.isRecording = function () {
|
||
return true;
|
||
};
|
||
/**
|
||
* Sets an attribute on the Span
|
||
* @param key - The attribute key
|
||
* @param value - The attribute value
|
||
*/
|
||
TestSpan.prototype.setAttribute = function (key, value) {
|
||
this.attributes[key] = value;
|
||
return this;
|
||
};
|
||
/**
|
||
* Sets attributes on the Span
|
||
* @param attributes - The attributes to add
|
||
*/
|
||
TestSpan.prototype.setAttributes = function (attributes) {
|
||
for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {
|
||
var key = _a[_i];
|
||
this.attributes[key] = attributes[key];
|
||
}
|
||
return this;
|
||
};
|
||
return TestSpan;
|
||
}(NoOpSpan));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* A mock tracer useful for testing
|
||
*/
|
||
var TestTracer = /** @class */ (function (_super) {
|
||
tslib.__extends(TestTracer, _super);
|
||
function TestTracer() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.traceIdCounter = 0;
|
||
_this.spanIdCounter = 0;
|
||
_this.rootSpans = [];
|
||
_this.knownSpans = [];
|
||
return _this;
|
||
}
|
||
TestTracer.prototype.getNextTraceId = function () {
|
||
this.traceIdCounter++;
|
||
return String(this.traceIdCounter);
|
||
};
|
||
TestTracer.prototype.getNextSpanId = function () {
|
||
this.spanIdCounter++;
|
||
return String(this.spanIdCounter);
|
||
};
|
||
/**
|
||
* Returns all Spans that were created without a parent
|
||
*/
|
||
TestTracer.prototype.getRootSpans = function () {
|
||
return this.rootSpans;
|
||
};
|
||
/**
|
||
* Returns all Spans this Tracer knows about
|
||
*/
|
||
TestTracer.prototype.getKnownSpans = function () {
|
||
return this.knownSpans;
|
||
};
|
||
/**
|
||
* Returns all Spans where end() has not been called
|
||
*/
|
||
TestTracer.prototype.getActiveSpans = function () {
|
||
return this.knownSpans.filter(function (span) {
|
||
return !span.endCalled;
|
||
});
|
||
};
|
||
/**
|
||
* Return all Spans for a particular trace, grouped by their
|
||
* parent Span in a tree-like structure
|
||
* @param traceId - The traceId to return the graph for
|
||
*/
|
||
TestTracer.prototype.getSpanGraph = function (traceId) {
|
||
var traceSpans = this.knownSpans.filter(function (span) {
|
||
return span.context().traceId === traceId;
|
||
});
|
||
var roots = [];
|
||
var nodeMap = new Map();
|
||
for (var _i = 0, traceSpans_1 = traceSpans; _i < traceSpans_1.length; _i++) {
|
||
var span = traceSpans_1[_i];
|
||
var spanId = span.context().spanId;
|
||
var node = {
|
||
name: span.name,
|
||
children: []
|
||
};
|
||
nodeMap.set(spanId, node);
|
||
if (span.parentSpanId) {
|
||
var parent = nodeMap.get(span.parentSpanId);
|
||
if (!parent) {
|
||
throw new Error("Span with name " + node.name + " has an unknown parentSpan with id " + span.parentSpanId);
|
||
}
|
||
parent.children.push(node);
|
||
}
|
||
else {
|
||
roots.push(node);
|
||
}
|
||
}
|
||
return {
|
||
roots: roots
|
||
};
|
||
};
|
||
/**
|
||
* Starts a new Span.
|
||
* @param name - The name of the span.
|
||
* @param options - The SpanOptions used during Span creation.
|
||
*/
|
||
TestTracer.prototype.startSpan = function (name, options, context$1) {
|
||
var parentContext = getSpanContext(context$1 || context.active());
|
||
var traceId;
|
||
var isRootSpan = false;
|
||
if (parentContext && parentContext.traceId) {
|
||
traceId = parentContext.traceId;
|
||
}
|
||
else {
|
||
traceId = this.getNextTraceId();
|
||
isRootSpan = true;
|
||
}
|
||
var spanContext = {
|
||
traceId: traceId,
|
||
spanId: this.getNextSpanId(),
|
||
traceFlags: 0 /* NONE */
|
||
};
|
||
var span = new TestSpan(this, name, spanContext, (options === null || options === void 0 ? void 0 : options.kind) || exports.SpanKind.INTERNAL, parentContext ? parentContext.spanId : undefined, options === null || options === void 0 ? void 0 : options.startTime);
|
||
this.knownSpans.push(span);
|
||
if (isRootSpan) {
|
||
this.rootSpans.push(span);
|
||
}
|
||
return span;
|
||
};
|
||
return TestTracer;
|
||
}(NoOpTracer));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Creates a function that can be used to create spans using the global tracer.
|
||
*
|
||
* Usage:
|
||
*
|
||
* ```typescript
|
||
* // once
|
||
* const createSpan = createSpanFunction({ packagePrefix: "Azure.Data.AppConfiguration", namespace: "Microsoft.AppConfiguration" });
|
||
*
|
||
* // in each operation
|
||
* const span = createSpan("deleteConfigurationSetting", operationOptions);
|
||
* // code...
|
||
* span.end();
|
||
* ```
|
||
*
|
||
* @hidden
|
||
* @param args - allows configuration of the prefix for each span as well as the az.namespace field.
|
||
*/
|
||
function createSpanFunction(args) {
|
||
return function (operationName, operationOptions) {
|
||
var tracer = getTracer();
|
||
var tracingOptions = (operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) || {};
|
||
var spanOptions = tslib.__assign({ kind: exports.SpanKind.INTERNAL }, tracingOptions.spanOptions);
|
||
var spanName = args.packagePrefix ? args.packagePrefix + "." + operationName : operationName;
|
||
var span = tracer.startSpan(spanName, spanOptions, tracingOptions.tracingContext);
|
||
if (args.namespace) {
|
||
span.setAttribute("az.namespace", args.namespace);
|
||
}
|
||
var newSpanOptions = tracingOptions.spanOptions || {};
|
||
if (span.isRecording() && args.namespace) {
|
||
newSpanOptions = tslib.__assign(tslib.__assign({}, tracingOptions.spanOptions), { attributes: tslib.__assign(tslib.__assign({}, spanOptions.attributes), { "az.namespace": args.namespace }) });
|
||
}
|
||
var newTracingOptions = tslib.__assign(tslib.__assign({}, tracingOptions), { spanOptions: newSpanOptions, tracingContext: setSpan(tracingOptions.tracingContext || context.active(), span) });
|
||
var newOperationOptions = tslib.__assign(tslib.__assign({}, operationOptions), { tracingOptions: newTracingOptions });
|
||
return {
|
||
span: span,
|
||
updatedOptions: newOperationOptions
|
||
};
|
||
};
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
var VERSION = "00";
|
||
/**
|
||
* Generates a `SpanContext` given a `traceparent` header value.
|
||
* @param traceParent - Serialized span context data as a `traceparent` header value.
|
||
* @returns The `SpanContext` generated from the `traceparent` value.
|
||
*/
|
||
function extractSpanContextFromTraceParentHeader(traceParentHeader) {
|
||
var parts = traceParentHeader.split("-");
|
||
if (parts.length !== 4) {
|
||
return;
|
||
}
|
||
var version = parts[0], traceId = parts[1], spanId = parts[2], traceOptions = parts[3];
|
||
if (version !== VERSION) {
|
||
return;
|
||
}
|
||
var traceFlags = parseInt(traceOptions, 16);
|
||
var spanContext = {
|
||
spanId: spanId,
|
||
traceId: traceId,
|
||
traceFlags: traceFlags
|
||
};
|
||
return spanContext;
|
||
}
|
||
/**
|
||
* Generates a `traceparent` value given a span context.
|
||
* @param spanContext - Contains context for a specific span.
|
||
* @returns The `spanContext` represented as a `traceparent` value.
|
||
*/
|
||
function getTraceParentHeader(spanContext) {
|
||
var missingFields = [];
|
||
if (!spanContext.traceId) {
|
||
missingFields.push("traceId");
|
||
}
|
||
if (!spanContext.spanId) {
|
||
missingFields.push("spanId");
|
||
}
|
||
if (missingFields.length) {
|
||
return;
|
||
}
|
||
var flags = spanContext.traceFlags || 0 /* NONE */;
|
||
var hexFlags = flags.toString(16);
|
||
var traceFlags = hexFlags.length === 1 ? "0" + hexFlags : hexFlags;
|
||
// https://www.w3.org/TR/trace-context/#traceparent-header-field-values
|
||
return VERSION + "-" + spanContext.traceId + "-" + spanContext.spanId + "-" + traceFlags;
|
||
}
|
||
|
||
exports.NoOpSpan = NoOpSpan;
|
||
exports.NoOpTracer = NoOpTracer;
|
||
exports.OpenCensusSpanWrapper = OpenCensusSpanWrapper;
|
||
exports.OpenCensusTracerWrapper = OpenCensusTracerWrapper;
|
||
exports.TestSpan = TestSpan;
|
||
exports.TestTracer = TestTracer;
|
||
exports.context = context;
|
||
exports.createSpanFunction = createSpanFunction;
|
||
exports.extractSpanContextFromTraceParentHeader = extractSpanContextFromTraceParentHeader;
|
||
exports.getSpan = getSpan;
|
||
exports.getSpanContext = getSpanContext;
|
||
exports.getTraceParentHeader = getTraceParentHeader;
|
||
exports.getTracer = getTracer;
|
||
exports.setSpan = setSpan;
|
||
exports.setSpanContext = setSpanContext;
|
||
exports.setTracer = setTracer;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 264 */,
|
||
/* 265 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = getPage
|
||
|
||
const deprecate = __webpack_require__(370)
|
||
const getPageLinks = __webpack_require__(577)
|
||
const HttpError = __webpack_require__(297)
|
||
|
||
function getPage (octokit, link, which, headers) {
|
||
deprecate(`octokit.get${which.charAt(0).toUpperCase() + which.slice(1)}Page() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
|
||
const url = getPageLinks(link)[which]
|
||
|
||
if (!url) {
|
||
const urlError = new HttpError(`No ${which} page found`, 404)
|
||
return Promise.reject(urlError)
|
||
}
|
||
|
||
const requestOptions = {
|
||
url,
|
||
headers: applyAcceptHeader(link, headers)
|
||
}
|
||
|
||
const promise = octokit.request(requestOptions)
|
||
|
||
return promise
|
||
}
|
||
|
||
function applyAcceptHeader (res, headers) {
|
||
const previous = res.headers && res.headers['x-github-media-type']
|
||
|
||
if (!previous || (headers && headers.accept)) {
|
||
return headers
|
||
}
|
||
headers = headers || {}
|
||
headers.accept = 'application/vnd.' + previous
|
||
.replace('; param=', '.')
|
||
.replace('; format=', '+')
|
||
|
||
return headers
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 266 */,
|
||
/* 267 */,
|
||
/* 268 */,
|
||
/* 269 */,
|
||
/* 270 */,
|
||
/* 271 */,
|
||
/* 272 */,
|
||
/* 273 */,
|
||
/* 274 */,
|
||
/* 275 */,
|
||
/* 276 */,
|
||
/* 277 */,
|
||
/* 278 */,
|
||
/* 279 */,
|
||
/* 280 */
|
||
/***/ (function(module, exports) {
|
||
|
||
exports = module.exports = SemVer
|
||
|
||
var debug
|
||
/* istanbul ignore next */
|
||
if (typeof process === 'object' &&
|
||
process.env &&
|
||
process.env.NODE_DEBUG &&
|
||
/\bsemver\b/i.test(process.env.NODE_DEBUG)) {
|
||
debug = function () {
|
||
var args = Array.prototype.slice.call(arguments, 0)
|
||
args.unshift('SEMVER')
|
||
console.log.apply(console, args)
|
||
}
|
||
} else {
|
||
debug = function () {}
|
||
}
|
||
|
||
// Note: this is the semver.org version of the spec that it implements
|
||
// Not necessarily the package version of this code.
|
||
exports.SEMVER_SPEC_VERSION = '2.0.0'
|
||
|
||
var MAX_LENGTH = 256
|
||
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
|
||
/* istanbul ignore next */ 9007199254740991
|
||
|
||
// Max safe segment length for coercion.
|
||
var MAX_SAFE_COMPONENT_LENGTH = 16
|
||
|
||
// The actual regexps go on exports.re
|
||
var re = exports.re = []
|
||
var src = exports.src = []
|
||
var R = 0
|
||
|
||
// The following Regular Expressions can be used for tokenizing,
|
||
// validating, and parsing SemVer version strings.
|
||
|
||
// ## Numeric Identifier
|
||
// A single `0`, or a non-zero digit followed by zero or more digits.
|
||
|
||
var NUMERICIDENTIFIER = R++
|
||
src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
|
||
var NUMERICIDENTIFIERLOOSE = R++
|
||
src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'
|
||
|
||
// ## Non-numeric Identifier
|
||
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
||
// more letters, digits, or hyphens.
|
||
|
||
var NONNUMERICIDENTIFIER = R++
|
||
src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
|
||
|
||
// ## Main Version
|
||
// Three dot-separated numeric identifiers.
|
||
|
||
var MAINVERSION = R++
|
||
src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
|
||
'(' + src[NUMERICIDENTIFIER] + ')\\.' +
|
||
'(' + src[NUMERICIDENTIFIER] + ')'
|
||
|
||
var MAINVERSIONLOOSE = R++
|
||
src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
|
||
'(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
|
||
'(' + src[NUMERICIDENTIFIERLOOSE] + ')'
|
||
|
||
// ## Pre-release Version Identifier
|
||
// A numeric identifier, or a non-numeric identifier.
|
||
|
||
var PRERELEASEIDENTIFIER = R++
|
||
src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
|
||
'|' + src[NONNUMERICIDENTIFIER] + ')'
|
||
|
||
var PRERELEASEIDENTIFIERLOOSE = R++
|
||
src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
|
||
'|' + src[NONNUMERICIDENTIFIER] + ')'
|
||
|
||
// ## Pre-release Version
|
||
// Hyphen, followed by one or more dot-separated pre-release version
|
||
// identifiers.
|
||
|
||
var PRERELEASE = R++
|
||
src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
|
||
'(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
|
||
|
||
var PRERELEASELOOSE = R++
|
||
src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
|
||
'(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
|
||
|
||
// ## Build Metadata Identifier
|
||
// Any combination of digits, letters, or hyphens.
|
||
|
||
var BUILDIDENTIFIER = R++
|
||
src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
|
||
|
||
// ## Build Metadata
|
||
// Plus sign, followed by one or more period-separated build metadata
|
||
// identifiers.
|
||
|
||
var BUILD = R++
|
||
src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
|
||
'(?:\\.' + src[BUILDIDENTIFIER] + ')*))'
|
||
|
||
// ## Full Version String
|
||
// A main version, followed optionally by a pre-release version and
|
||
// build metadata.
|
||
|
||
// Note that the only major, minor, patch, and pre-release sections of
|
||
// the version string are capturing groups. The build metadata is not a
|
||
// capturing group, because it should not ever be used in version
|
||
// comparison.
|
||
|
||
var FULL = R++
|
||
var FULLPLAIN = 'v?' + src[MAINVERSION] +
|
||
src[PRERELEASE] + '?' +
|
||
src[BUILD] + '?'
|
||
|
||
src[FULL] = '^' + FULLPLAIN + '$'
|
||
|
||
// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
|
||
// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
|
||
// common in the npm registry.
|
||
var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
|
||
src[PRERELEASELOOSE] + '?' +
|
||
src[BUILD] + '?'
|
||
|
||
var LOOSE = R++
|
||
src[LOOSE] = '^' + LOOSEPLAIN + '$'
|
||
|
||
var GTLT = R++
|
||
src[GTLT] = '((?:<|>)?=?)'
|
||
|
||
// Something like "2.*" or "1.2.x".
|
||
// Note that "x.x" is a valid xRange identifer, meaning "any version"
|
||
// Only the first item is strictly required.
|
||
var XRANGEIDENTIFIERLOOSE = R++
|
||
src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
|
||
var XRANGEIDENTIFIER = R++
|
||
src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'
|
||
|
||
var XRANGEPLAIN = R++
|
||
src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
|
||
'(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
|
||
'(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
|
||
'(?:' + src[PRERELEASE] + ')?' +
|
||
src[BUILD] + '?' +
|
||
')?)?'
|
||
|
||
var XRANGEPLAINLOOSE = R++
|
||
src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
|
||
'(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
|
||
'(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
|
||
'(?:' + src[PRERELEASELOOSE] + ')?' +
|
||
src[BUILD] + '?' +
|
||
')?)?'
|
||
|
||
var XRANGE = R++
|
||
src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
|
||
var XRANGELOOSE = R++
|
||
src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
|
||
|
||
// Coercion.
|
||
// Extract anything that could conceivably be a part of a valid semver
|
||
var COERCE = R++
|
||
src[COERCE] = '(?:^|[^\\d])' +
|
||
'(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
|
||
'(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
|
||
'(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
|
||
'(?:$|[^\\d])'
|
||
|
||
// Tilde ranges.
|
||
// Meaning is "reasonably at or greater than"
|
||
var LONETILDE = R++
|
||
src[LONETILDE] = '(?:~>?)'
|
||
|
||
var TILDETRIM = R++
|
||
src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
|
||
re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
|
||
var tildeTrimReplace = '$1~'
|
||
|
||
var TILDE = R++
|
||
src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
|
||
var TILDELOOSE = R++
|
||
src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
|
||
|
||
// Caret ranges.
|
||
// Meaning is "at least and backwards compatible with"
|
||
var LONECARET = R++
|
||
src[LONECARET] = '(?:\\^)'
|
||
|
||
var CARETTRIM = R++
|
||
src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
|
||
re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
|
||
var caretTrimReplace = '$1^'
|
||
|
||
var CARET = R++
|
||
src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'
|
||
var CARETLOOSE = R++
|
||
src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'
|
||
|
||
// A simple gt/lt/eq thing, or just "" to indicate "any version"
|
||
var COMPARATORLOOSE = R++
|
||
src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'
|
||
var COMPARATOR = R++
|
||
src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'
|
||
|
||
// An expression to strip any whitespace between the gtlt and the thing
|
||
// it modifies, so that `> 1.2.3` ==> `>1.2.3`
|
||
var COMPARATORTRIM = R++
|
||
src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
|
||
'\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'
|
||
|
||
// this one has to use the /g flag
|
||
re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')
|
||
var comparatorTrimReplace = '$1$2$3'
|
||
|
||
// Something like `1.2.3 - 1.2.4`
|
||
// Note that these all use the loose form, because they'll be
|
||
// checked against either the strict or loose comparator form
|
||
// later.
|
||
var HYPHENRANGE = R++
|
||
src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
|
||
'\\s+-\\s+' +
|
||
'(' + src[XRANGEPLAIN] + ')' +
|
||
'\\s*$'
|
||
|
||
var HYPHENRANGELOOSE = R++
|
||
src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
|
||
'\\s+-\\s+' +
|
||
'(' + src[XRANGEPLAINLOOSE] + ')' +
|
||
'\\s*$'
|
||
|
||
// Star ranges basically just allow anything at all.
|
||
var STAR = R++
|
||
src[STAR] = '(<|>)?=?\\s*\\*'
|
||
|
||
// Compile to actual regexp objects.
|
||
// All are flag-free, unless they were created above with a flag.
|
||
for (var i = 0; i < R; i++) {
|
||
debug(i, src[i])
|
||
if (!re[i]) {
|
||
re[i] = new RegExp(src[i])
|
||
}
|
||
}
|
||
|
||
exports.parse = parse
|
||
function parse (version, options) {
|
||
if (!options || typeof options !== 'object') {
|
||
options = {
|
||
loose: !!options,
|
||
includePrerelease: false
|
||
}
|
||
}
|
||
|
||
if (version instanceof SemVer) {
|
||
return version
|
||
}
|
||
|
||
if (typeof version !== 'string') {
|
||
return null
|
||
}
|
||
|
||
if (version.length > MAX_LENGTH) {
|
||
return null
|
||
}
|
||
|
||
var r = options.loose ? re[LOOSE] : re[FULL]
|
||
if (!r.test(version)) {
|
||
return null
|
||
}
|
||
|
||
try {
|
||
return new SemVer(version, options)
|
||
} catch (er) {
|
||
return null
|
||
}
|
||
}
|
||
|
||
exports.valid = valid
|
||
function valid (version, options) {
|
||
var v = parse(version, options)
|
||
return v ? v.version : null
|
||
}
|
||
|
||
exports.clean = clean
|
||
function clean (version, options) {
|
||
var s = parse(version.trim().replace(/^[=v]+/, ''), options)
|
||
return s ? s.version : null
|
||
}
|
||
|
||
exports.SemVer = SemVer
|
||
|
||
function SemVer (version, options) {
|
||
if (!options || typeof options !== 'object') {
|
||
options = {
|
||
loose: !!options,
|
||
includePrerelease: false
|
||
}
|
||
}
|
||
if (version instanceof SemVer) {
|
||
if (version.loose === options.loose) {
|
||
return version
|
||
} else {
|
||
version = version.version
|
||
}
|
||
} else if (typeof version !== 'string') {
|
||
throw new TypeError('Invalid Version: ' + version)
|
||
}
|
||
|
||
if (version.length > MAX_LENGTH) {
|
||
throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
|
||
}
|
||
|
||
if (!(this instanceof SemVer)) {
|
||
return new SemVer(version, options)
|
||
}
|
||
|
||
debug('SemVer', version, options)
|
||
this.options = options
|
||
this.loose = !!options.loose
|
||
|
||
var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])
|
||
|
||
if (!m) {
|
||
throw new TypeError('Invalid Version: ' + version)
|
||
}
|
||
|
||
this.raw = version
|
||
|
||
// these are actually numbers
|
||
this.major = +m[1]
|
||
this.minor = +m[2]
|
||
this.patch = +m[3]
|
||
|
||
if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
|
||
throw new TypeError('Invalid major version')
|
||
}
|
||
|
||
if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
|
||
throw new TypeError('Invalid minor version')
|
||
}
|
||
|
||
if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
|
||
throw new TypeError('Invalid patch version')
|
||
}
|
||
|
||
// numberify any prerelease numeric ids
|
||
if (!m[4]) {
|
||
this.prerelease = []
|
||
} else {
|
||
this.prerelease = m[4].split('.').map(function (id) {
|
||
if (/^[0-9]+$/.test(id)) {
|
||
var num = +id
|
||
if (num >= 0 && num < MAX_SAFE_INTEGER) {
|
||
return num
|
||
}
|
||
}
|
||
return id
|
||
})
|
||
}
|
||
|
||
this.build = m[5] ? m[5].split('.') : []
|
||
this.format()
|
||
}
|
||
|
||
SemVer.prototype.format = function () {
|
||
this.version = this.major + '.' + this.minor + '.' + this.patch
|
||
if (this.prerelease.length) {
|
||
this.version += '-' + this.prerelease.join('.')
|
||
}
|
||
return this.version
|
||
}
|
||
|
||
SemVer.prototype.toString = function () {
|
||
return this.version
|
||
}
|
||
|
||
SemVer.prototype.compare = function (other) {
|
||
debug('SemVer.compare', this.version, this.options, other)
|
||
if (!(other instanceof SemVer)) {
|
||
other = new SemVer(other, this.options)
|
||
}
|
||
|
||
return this.compareMain(other) || this.comparePre(other)
|
||
}
|
||
|
||
SemVer.prototype.compareMain = function (other) {
|
||
if (!(other instanceof SemVer)) {
|
||
other = new SemVer(other, this.options)
|
||
}
|
||
|
||
return compareIdentifiers(this.major, other.major) ||
|
||
compareIdentifiers(this.minor, other.minor) ||
|
||
compareIdentifiers(this.patch, other.patch)
|
||
}
|
||
|
||
SemVer.prototype.comparePre = function (other) {
|
||
if (!(other instanceof SemVer)) {
|
||
other = new SemVer(other, this.options)
|
||
}
|
||
|
||
// NOT having a prerelease is > having one
|
||
if (this.prerelease.length && !other.prerelease.length) {
|
||
return -1
|
||
} else if (!this.prerelease.length && other.prerelease.length) {
|
||
return 1
|
||
} else if (!this.prerelease.length && !other.prerelease.length) {
|
||
return 0
|
||
}
|
||
|
||
var i = 0
|
||
do {
|
||
var a = this.prerelease[i]
|
||
var b = other.prerelease[i]
|
||
debug('prerelease compare', i, a, b)
|
||
if (a === undefined && b === undefined) {
|
||
return 0
|
||
} else if (b === undefined) {
|
||
return 1
|
||
} else if (a === undefined) {
|
||
return -1
|
||
} else if (a === b) {
|
||
continue
|
||
} else {
|
||
return compareIdentifiers(a, b)
|
||
}
|
||
} while (++i)
|
||
}
|
||
|
||
SemVer.prototype.compareBuild = function (other) {
|
||
if (!(other instanceof SemVer)) {
|
||
other = new SemVer(other, this.options)
|
||
}
|
||
|
||
var i = 0
|
||
do {
|
||
var a = this.build[i]
|
||
var b = other.build[i]
|
||
debug('prerelease compare', i, a, b)
|
||
if (a === undefined && b === undefined) {
|
||
return 0
|
||
} else if (b === undefined) {
|
||
return 1
|
||
} else if (a === undefined) {
|
||
return -1
|
||
} else if (a === b) {
|
||
continue
|
||
} else {
|
||
return compareIdentifiers(a, b)
|
||
}
|
||
} while (++i)
|
||
}
|
||
|
||
// preminor will bump the version up to the next minor release, and immediately
|
||
// down to pre-release. premajor and prepatch work the same way.
|
||
SemVer.prototype.inc = function (release, identifier) {
|
||
switch (release) {
|
||
case 'premajor':
|
||
this.prerelease.length = 0
|
||
this.patch = 0
|
||
this.minor = 0
|
||
this.major++
|
||
this.inc('pre', identifier)
|
||
break
|
||
case 'preminor':
|
||
this.prerelease.length = 0
|
||
this.patch = 0
|
||
this.minor++
|
||
this.inc('pre', identifier)
|
||
break
|
||
case 'prepatch':
|
||
// If this is already a prerelease, it will bump to the next version
|
||
// drop any prereleases that might already exist, since they are not
|
||
// relevant at this point.
|
||
this.prerelease.length = 0
|
||
this.inc('patch', identifier)
|
||
this.inc('pre', identifier)
|
||
break
|
||
// If the input is a non-prerelease version, this acts the same as
|
||
// prepatch.
|
||
case 'prerelease':
|
||
if (this.prerelease.length === 0) {
|
||
this.inc('patch', identifier)
|
||
}
|
||
this.inc('pre', identifier)
|
||
break
|
||
|
||
case 'major':
|
||
// If this is a pre-major version, bump up to the same major version.
|
||
// Otherwise increment major.
|
||
// 1.0.0-5 bumps to 1.0.0
|
||
// 1.1.0 bumps to 2.0.0
|
||
if (this.minor !== 0 ||
|
||
this.patch !== 0 ||
|
||
this.prerelease.length === 0) {
|
||
this.major++
|
||
}
|
||
this.minor = 0
|
||
this.patch = 0
|
||
this.prerelease = []
|
||
break
|
||
case 'minor':
|
||
// If this is a pre-minor version, bump up to the same minor version.
|
||
// Otherwise increment minor.
|
||
// 1.2.0-5 bumps to 1.2.0
|
||
// 1.2.1 bumps to 1.3.0
|
||
if (this.patch !== 0 || this.prerelease.length === 0) {
|
||
this.minor++
|
||
}
|
||
this.patch = 0
|
||
this.prerelease = []
|
||
break
|
||
case 'patch':
|
||
// If this is not a pre-release version, it will increment the patch.
|
||
// If it is a pre-release it will bump up to the same patch version.
|
||
// 1.2.0-5 patches to 1.2.0
|
||
// 1.2.0 patches to 1.2.1
|
||
if (this.prerelease.length === 0) {
|
||
this.patch++
|
||
}
|
||
this.prerelease = []
|
||
break
|
||
// This probably shouldn't be used publicly.
|
||
// 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
|
||
case 'pre':
|
||
if (this.prerelease.length === 0) {
|
||
this.prerelease = [0]
|
||
} else {
|
||
var i = this.prerelease.length
|
||
while (--i >= 0) {
|
||
if (typeof this.prerelease[i] === 'number') {
|
||
this.prerelease[i]++
|
||
i = -2
|
||
}
|
||
}
|
||
if (i === -1) {
|
||
// didn't increment anything
|
||
this.prerelease.push(0)
|
||
}
|
||
}
|
||
if (identifier) {
|
||
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
|
||
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
|
||
if (this.prerelease[0] === identifier) {
|
||
if (isNaN(this.prerelease[1])) {
|
||
this.prerelease = [identifier, 0]
|
||
}
|
||
} else {
|
||
this.prerelease = [identifier, 0]
|
||
}
|
||
}
|
||
break
|
||
|
||
default:
|
||
throw new Error('invalid increment argument: ' + release)
|
||
}
|
||
this.format()
|
||
this.raw = this.version
|
||
return this
|
||
}
|
||
|
||
exports.inc = inc
|
||
function inc (version, release, loose, identifier) {
|
||
if (typeof (loose) === 'string') {
|
||
identifier = loose
|
||
loose = undefined
|
||
}
|
||
|
||
try {
|
||
return new SemVer(version, loose).inc(release, identifier).version
|
||
} catch (er) {
|
||
return null
|
||
}
|
||
}
|
||
|
||
exports.diff = diff
|
||
function diff (version1, version2) {
|
||
if (eq(version1, version2)) {
|
||
return null
|
||
} else {
|
||
var v1 = parse(version1)
|
||
var v2 = parse(version2)
|
||
var prefix = ''
|
||
if (v1.prerelease.length || v2.prerelease.length) {
|
||
prefix = 'pre'
|
||
var defaultResult = 'prerelease'
|
||
}
|
||
for (var key in v1) {
|
||
if (key === 'major' || key === 'minor' || key === 'patch') {
|
||
if (v1[key] !== v2[key]) {
|
||
return prefix + key
|
||
}
|
||
}
|
||
}
|
||
return defaultResult // may be undefined
|
||
}
|
||
}
|
||
|
||
exports.compareIdentifiers = compareIdentifiers
|
||
|
||
var numeric = /^[0-9]+$/
|
||
function compareIdentifiers (a, b) {
|
||
var anum = numeric.test(a)
|
||
var bnum = numeric.test(b)
|
||
|
||
if (anum && bnum) {
|
||
a = +a
|
||
b = +b
|
||
}
|
||
|
||
return a === b ? 0
|
||
: (anum && !bnum) ? -1
|
||
: (bnum && !anum) ? 1
|
||
: a < b ? -1
|
||
: 1
|
||
}
|
||
|
||
exports.rcompareIdentifiers = rcompareIdentifiers
|
||
function rcompareIdentifiers (a, b) {
|
||
return compareIdentifiers(b, a)
|
||
}
|
||
|
||
exports.major = major
|
||
function major (a, loose) {
|
||
return new SemVer(a, loose).major
|
||
}
|
||
|
||
exports.minor = minor
|
||
function minor (a, loose) {
|
||
return new SemVer(a, loose).minor
|
||
}
|
||
|
||
exports.patch = patch
|
||
function patch (a, loose) {
|
||
return new SemVer(a, loose).patch
|
||
}
|
||
|
||
exports.compare = compare
|
||
function compare (a, b, loose) {
|
||
return new SemVer(a, loose).compare(new SemVer(b, loose))
|
||
}
|
||
|
||
exports.compareLoose = compareLoose
|
||
function compareLoose (a, b) {
|
||
return compare(a, b, true)
|
||
}
|
||
|
||
exports.compareBuild = compareBuild
|
||
function compareBuild (a, b, loose) {
|
||
var versionA = new SemVer(a, loose)
|
||
var versionB = new SemVer(b, loose)
|
||
return versionA.compare(versionB) || versionA.compareBuild(versionB)
|
||
}
|
||
|
||
exports.rcompare = rcompare
|
||
function rcompare (a, b, loose) {
|
||
return compare(b, a, loose)
|
||
}
|
||
|
||
exports.sort = sort
|
||
function sort (list, loose) {
|
||
return list.sort(function (a, b) {
|
||
return exports.compareBuild(a, b, loose)
|
||
})
|
||
}
|
||
|
||
exports.rsort = rsort
|
||
function rsort (list, loose) {
|
||
return list.sort(function (a, b) {
|
||
return exports.compareBuild(b, a, loose)
|
||
})
|
||
}
|
||
|
||
exports.gt = gt
|
||
function gt (a, b, loose) {
|
||
return compare(a, b, loose) > 0
|
||
}
|
||
|
||
exports.lt = lt
|
||
function lt (a, b, loose) {
|
||
return compare(a, b, loose) < 0
|
||
}
|
||
|
||
exports.eq = eq
|
||
function eq (a, b, loose) {
|
||
return compare(a, b, loose) === 0
|
||
}
|
||
|
||
exports.neq = neq
|
||
function neq (a, b, loose) {
|
||
return compare(a, b, loose) !== 0
|
||
}
|
||
|
||
exports.gte = gte
|
||
function gte (a, b, loose) {
|
||
return compare(a, b, loose) >= 0
|
||
}
|
||
|
||
exports.lte = lte
|
||
function lte (a, b, loose) {
|
||
return compare(a, b, loose) <= 0
|
||
}
|
||
|
||
exports.cmp = cmp
|
||
function cmp (a, op, b, loose) {
|
||
switch (op) {
|
||
case '===':
|
||
if (typeof a === 'object')
|
||
a = a.version
|
||
if (typeof b === 'object')
|
||
b = b.version
|
||
return a === b
|
||
|
||
case '!==':
|
||
if (typeof a === 'object')
|
||
a = a.version
|
||
if (typeof b === 'object')
|
||
b = b.version
|
||
return a !== b
|
||
|
||
case '':
|
||
case '=':
|
||
case '==':
|
||
return eq(a, b, loose)
|
||
|
||
case '!=':
|
||
return neq(a, b, loose)
|
||
|
||
case '>':
|
||
return gt(a, b, loose)
|
||
|
||
case '>=':
|
||
return gte(a, b, loose)
|
||
|
||
case '<':
|
||
return lt(a, b, loose)
|
||
|
||
case '<=':
|
||
return lte(a, b, loose)
|
||
|
||
default:
|
||
throw new TypeError('Invalid operator: ' + op)
|
||
}
|
||
}
|
||
|
||
exports.Comparator = Comparator
|
||
function Comparator (comp, options) {
|
||
if (!options || typeof options !== 'object') {
|
||
options = {
|
||
loose: !!options,
|
||
includePrerelease: false
|
||
}
|
||
}
|
||
|
||
if (comp instanceof Comparator) {
|
||
if (comp.loose === !!options.loose) {
|
||
return comp
|
||
} else {
|
||
comp = comp.value
|
||
}
|
||
}
|
||
|
||
if (!(this instanceof Comparator)) {
|
||
return new Comparator(comp, options)
|
||
}
|
||
|
||
debug('comparator', comp, options)
|
||
this.options = options
|
||
this.loose = !!options.loose
|
||
this.parse(comp)
|
||
|
||
if (this.semver === ANY) {
|
||
this.value = ''
|
||
} else {
|
||
this.value = this.operator + this.semver.version
|
||
}
|
||
|
||
debug('comp', this)
|
||
}
|
||
|
||
var ANY = {}
|
||
Comparator.prototype.parse = function (comp) {
|
||
var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
|
||
var m = comp.match(r)
|
||
|
||
if (!m) {
|
||
throw new TypeError('Invalid comparator: ' + comp)
|
||
}
|
||
|
||
this.operator = m[1] !== undefined ? m[1] : ''
|
||
if (this.operator === '=') {
|
||
this.operator = ''
|
||
}
|
||
|
||
// if it literally is just '>' or '' then allow anything.
|
||
if (!m[2]) {
|
||
this.semver = ANY
|
||
} else {
|
||
this.semver = new SemVer(m[2], this.options.loose)
|
||
}
|
||
}
|
||
|
||
Comparator.prototype.toString = function () {
|
||
return this.value
|
||
}
|
||
|
||
Comparator.prototype.test = function (version) {
|
||
debug('Comparator.test', version, this.options.loose)
|
||
|
||
if (this.semver === ANY || version === ANY) {
|
||
return true
|
||
}
|
||
|
||
if (typeof version === 'string') {
|
||
try {
|
||
version = new SemVer(version, this.options)
|
||
} catch (er) {
|
||
return false
|
||
}
|
||
}
|
||
|
||
return cmp(version, this.operator, this.semver, this.options)
|
||
}
|
||
|
||
Comparator.prototype.intersects = function (comp, options) {
|
||
if (!(comp instanceof Comparator)) {
|
||
throw new TypeError('a Comparator is required')
|
||
}
|
||
|
||
if (!options || typeof options !== 'object') {
|
||
options = {
|
||
loose: !!options,
|
||
includePrerelease: false
|
||
}
|
||
}
|
||
|
||
var rangeTmp
|
||
|
||
if (this.operator === '') {
|
||
if (this.value === '') {
|
||
return true
|
||
}
|
||
rangeTmp = new Range(comp.value, options)
|
||
return satisfies(this.value, rangeTmp, options)
|
||
} else if (comp.operator === '') {
|
||
if (comp.value === '') {
|
||
return true
|
||
}
|
||
rangeTmp = new Range(this.value, options)
|
||
return satisfies(comp.semver, rangeTmp, options)
|
||
}
|
||
|
||
var sameDirectionIncreasing =
|
||
(this.operator === '>=' || this.operator === '>') &&
|
||
(comp.operator === '>=' || comp.operator === '>')
|
||
var sameDirectionDecreasing =
|
||
(this.operator === '<=' || this.operator === '<') &&
|
||
(comp.operator === '<=' || comp.operator === '<')
|
||
var sameSemVer = this.semver.version === comp.semver.version
|
||
var differentDirectionsInclusive =
|
||
(this.operator === '>=' || this.operator === '<=') &&
|
||
(comp.operator === '>=' || comp.operator === '<=')
|
||
var oppositeDirectionsLessThan =
|
||
cmp(this.semver, '<', comp.semver, options) &&
|
||
((this.operator === '>=' || this.operator === '>') &&
|
||
(comp.operator === '<=' || comp.operator === '<'))
|
||
var oppositeDirectionsGreaterThan =
|
||
cmp(this.semver, '>', comp.semver, options) &&
|
||
((this.operator === '<=' || this.operator === '<') &&
|
||
(comp.operator === '>=' || comp.operator === '>'))
|
||
|
||
return sameDirectionIncreasing || sameDirectionDecreasing ||
|
||
(sameSemVer && differentDirectionsInclusive) ||
|
||
oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
|
||
}
|
||
|
||
exports.Range = Range
|
||
function Range (range, options) {
|
||
if (!options || typeof options !== 'object') {
|
||
options = {
|
||
loose: !!options,
|
||
includePrerelease: false
|
||
}
|
||
}
|
||
|
||
if (range instanceof Range) {
|
||
if (range.loose === !!options.loose &&
|
||
range.includePrerelease === !!options.includePrerelease) {
|
||
return range
|
||
} else {
|
||
return new Range(range.raw, options)
|
||
}
|
||
}
|
||
|
||
if (range instanceof Comparator) {
|
||
return new Range(range.value, options)
|
||
}
|
||
|
||
if (!(this instanceof Range)) {
|
||
return new Range(range, options)
|
||
}
|
||
|
||
this.options = options
|
||
this.loose = !!options.loose
|
||
this.includePrerelease = !!options.includePrerelease
|
||
|
||
// First, split based on boolean or ||
|
||
this.raw = range
|
||
this.set = range.split(/\s*\|\|\s*/).map(function (range) {
|
||
return this.parseRange(range.trim())
|
||
}, this).filter(function (c) {
|
||
// throw out any that are not relevant for whatever reason
|
||
return c.length
|
||
})
|
||
|
||
if (!this.set.length) {
|
||
throw new TypeError('Invalid SemVer Range: ' + range)
|
||
}
|
||
|
||
this.format()
|
||
}
|
||
|
||
Range.prototype.format = function () {
|
||
this.range = this.set.map(function (comps) {
|
||
return comps.join(' ').trim()
|
||
}).join('||').trim()
|
||
return this.range
|
||
}
|
||
|
||
Range.prototype.toString = function () {
|
||
return this.range
|
||
}
|
||
|
||
Range.prototype.parseRange = function (range) {
|
||
var loose = this.options.loose
|
||
range = range.trim()
|
||
// `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
|
||
var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]
|
||
range = range.replace(hr, hyphenReplace)
|
||
debug('hyphen replace', range)
|
||
// `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
|
||
range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)
|
||
debug('comparator trim', range, re[COMPARATORTRIM])
|
||
|
||
// `~ 1.2.3` => `~1.2.3`
|
||
range = range.replace(re[TILDETRIM], tildeTrimReplace)
|
||
|
||
// `^ 1.2.3` => `^1.2.3`
|
||
range = range.replace(re[CARETTRIM], caretTrimReplace)
|
||
|
||
// normalize spaces
|
||
range = range.split(/\s+/).join(' ')
|
||
|
||
// At this point, the range is completely trimmed and
|
||
// ready to be split into comparators.
|
||
|
||
var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
|
||
var set = range.split(' ').map(function (comp) {
|
||
return parseComparator(comp, this.options)
|
||
}, this).join(' ').split(/\s+/)
|
||
if (this.options.loose) {
|
||
// in loose mode, throw out any that are not valid comparators
|
||
set = set.filter(function (comp) {
|
||
return !!comp.match(compRe)
|
||
})
|
||
}
|
||
set = set.map(function (comp) {
|
||
return new Comparator(comp, this.options)
|
||
}, this)
|
||
|
||
return set
|
||
}
|
||
|
||
Range.prototype.intersects = function (range, options) {
|
||
if (!(range instanceof Range)) {
|
||
throw new TypeError('a Range is required')
|
||
}
|
||
|
||
return this.set.some(function (thisComparators) {
|
||
return (
|
||
isSatisfiable(thisComparators, options) &&
|
||
range.set.some(function (rangeComparators) {
|
||
return (
|
||
isSatisfiable(rangeComparators, options) &&
|
||
thisComparators.every(function (thisComparator) {
|
||
return rangeComparators.every(function (rangeComparator) {
|
||
return thisComparator.intersects(rangeComparator, options)
|
||
})
|
||
})
|
||
)
|
||
})
|
||
)
|
||
})
|
||
}
|
||
|
||
// take a set of comparators and determine whether there
|
||
// exists a version which can satisfy it
|
||
function isSatisfiable (comparators, options) {
|
||
var result = true
|
||
var remainingComparators = comparators.slice()
|
||
var testComparator = remainingComparators.pop()
|
||
|
||
while (result && remainingComparators.length) {
|
||
result = remainingComparators.every(function (otherComparator) {
|
||
return testComparator.intersects(otherComparator, options)
|
||
})
|
||
|
||
testComparator = remainingComparators.pop()
|
||
}
|
||
|
||
return result
|
||
}
|
||
|
||
// Mostly just for testing and legacy API reasons
|
||
exports.toComparators = toComparators
|
||
function toComparators (range, options) {
|
||
return new Range(range, options).set.map(function (comp) {
|
||
return comp.map(function (c) {
|
||
return c.value
|
||
}).join(' ').trim().split(' ')
|
||
})
|
||
}
|
||
|
||
// comprised of xranges, tildes, stars, and gtlt's at this point.
|
||
// already replaced the hyphen ranges
|
||
// turn into a set of JUST comparators.
|
||
function parseComparator (comp, options) {
|
||
debug('comp', comp, options)
|
||
comp = replaceCarets(comp, options)
|
||
debug('caret', comp)
|
||
comp = replaceTildes(comp, options)
|
||
debug('tildes', comp)
|
||
comp = replaceXRanges(comp, options)
|
||
debug('xrange', comp)
|
||
comp = replaceStars(comp, options)
|
||
debug('stars', comp)
|
||
return comp
|
||
}
|
||
|
||
function isX (id) {
|
||
return !id || id.toLowerCase() === 'x' || id === '*'
|
||
}
|
||
|
||
// ~, ~> --> * (any, kinda silly)
|
||
// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
|
||
// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
|
||
// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
|
||
// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
|
||
// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
|
||
function replaceTildes (comp, options) {
|
||
return comp.trim().split(/\s+/).map(function (comp) {
|
||
return replaceTilde(comp, options)
|
||
}).join(' ')
|
||
}
|
||
|
||
function replaceTilde (comp, options) {
|
||
var r = options.loose ? re[TILDELOOSE] : re[TILDE]
|
||
return comp.replace(r, function (_, M, m, p, pr) {
|
||
debug('tilde', comp, _, M, m, p, pr)
|
||
var ret
|
||
|
||
if (isX(M)) {
|
||
ret = ''
|
||
} else if (isX(m)) {
|
||
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
|
||
} else if (isX(p)) {
|
||
// ~1.2 == >=1.2.0 <1.3.0
|
||
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
|
||
} else if (pr) {
|
||
debug('replaceTilde pr', pr)
|
||
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
|
||
' <' + M + '.' + (+m + 1) + '.0'
|
||
} else {
|
||
// ~1.2.3 == >=1.2.3 <1.3.0
|
||
ret = '>=' + M + '.' + m + '.' + p +
|
||
' <' + M + '.' + (+m + 1) + '.0'
|
||
}
|
||
|
||
debug('tilde return', ret)
|
||
return ret
|
||
})
|
||
}
|
||
|
||
// ^ --> * (any, kinda silly)
|
||
// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
|
||
// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
|
||
// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
|
||
// ^1.2.3 --> >=1.2.3 <2.0.0
|
||
// ^1.2.0 --> >=1.2.0 <2.0.0
|
||
function replaceCarets (comp, options) {
|
||
return comp.trim().split(/\s+/).map(function (comp) {
|
||
return replaceCaret(comp, options)
|
||
}).join(' ')
|
||
}
|
||
|
||
function replaceCaret (comp, options) {
|
||
debug('caret', comp, options)
|
||
var r = options.loose ? re[CARETLOOSE] : re[CARET]
|
||
return comp.replace(r, function (_, M, m, p, pr) {
|
||
debug('caret', comp, _, M, m, p, pr)
|
||
var ret
|
||
|
||
if (isX(M)) {
|
||
ret = ''
|
||
} else if (isX(m)) {
|
||
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
|
||
} else if (isX(p)) {
|
||
if (M === '0') {
|
||
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
|
||
} else {
|
||
ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
|
||
}
|
||
} else if (pr) {
|
||
debug('replaceCaret pr', pr)
|
||
if (M === '0') {
|
||
if (m === '0') {
|
||
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
|
||
' <' + M + '.' + m + '.' + (+p + 1)
|
||
} else {
|
||
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
|
||
' <' + M + '.' + (+m + 1) + '.0'
|
||
}
|
||
} else {
|
||
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
|
||
' <' + (+M + 1) + '.0.0'
|
||
}
|
||
} else {
|
||
debug('no pr')
|
||
if (M === '0') {
|
||
if (m === '0') {
|
||
ret = '>=' + M + '.' + m + '.' + p +
|
||
' <' + M + '.' + m + '.' + (+p + 1)
|
||
} else {
|
||
ret = '>=' + M + '.' + m + '.' + p +
|
||
' <' + M + '.' + (+m + 1) + '.0'
|
||
}
|
||
} else {
|
||
ret = '>=' + M + '.' + m + '.' + p +
|
||
' <' + (+M + 1) + '.0.0'
|
||
}
|
||
}
|
||
|
||
debug('caret return', ret)
|
||
return ret
|
||
})
|
||
}
|
||
|
||
function replaceXRanges (comp, options) {
|
||
debug('replaceXRanges', comp, options)
|
||
return comp.split(/\s+/).map(function (comp) {
|
||
return replaceXRange(comp, options)
|
||
}).join(' ')
|
||
}
|
||
|
||
function replaceXRange (comp, options) {
|
||
comp = comp.trim()
|
||
var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]
|
||
return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
|
||
debug('xRange', comp, ret, gtlt, M, m, p, pr)
|
||
var xM = isX(M)
|
||
var xm = xM || isX(m)
|
||
var xp = xm || isX(p)
|
||
var anyX = xp
|
||
|
||
if (gtlt === '=' && anyX) {
|
||
gtlt = ''
|
||
}
|
||
|
||
if (xM) {
|
||
if (gtlt === '>' || gtlt === '<') {
|
||
// nothing is allowed
|
||
ret = '<0.0.0'
|
||
} else {
|
||
// nothing is forbidden
|
||
ret = '*'
|
||
}
|
||
} else if (gtlt && anyX) {
|
||
// we know patch is an x, because we have any x at all.
|
||
// replace X with 0
|
||
if (xm) {
|
||
m = 0
|
||
}
|
||
p = 0
|
||
|
||
if (gtlt === '>') {
|
||
// >1 => >=2.0.0
|
||
// >1.2 => >=1.3.0
|
||
// >1.2.3 => >= 1.2.4
|
||
gtlt = '>='
|
||
if (xm) {
|
||
M = +M + 1
|
||
m = 0
|
||
p = 0
|
||
} else {
|
||
m = +m + 1
|
||
p = 0
|
||
}
|
||
} else if (gtlt === '<=') {
|
||
// <=0.7.x is actually <0.8.0, since any 0.7.x should
|
||
// pass. Similarly, <=7.x is actually <8.0.0, etc.
|
||
gtlt = '<'
|
||
if (xm) {
|
||
M = +M + 1
|
||
} else {
|
||
m = +m + 1
|
||
}
|
||
}
|
||
|
||
ret = gtlt + M + '.' + m + '.' + p
|
||
} else if (xm) {
|
||
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
|
||
} else if (xp) {
|
||
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
|
||
}
|
||
|
||
debug('xRange return', ret)
|
||
|
||
return ret
|
||
})
|
||
}
|
||
|
||
// Because * is AND-ed with everything else in the comparator,
|
||
// and '' means "any version", just remove the *s entirely.
|
||
function replaceStars (comp, options) {
|
||
debug('replaceStars', comp, options)
|
||
// Looseness is ignored here. star is always as loose as it gets!
|
||
return comp.trim().replace(re[STAR], '')
|
||
}
|
||
|
||
// This function is passed to string.replace(re[HYPHENRANGE])
|
||
// M, m, patch, prerelease, build
|
||
// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
|
||
// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
|
||
// 1.2 - 3.4 => >=1.2.0 <3.5.0
|
||
function hyphenReplace ($0,
|
||
from, fM, fm, fp, fpr, fb,
|
||
to, tM, tm, tp, tpr, tb) {
|
||
if (isX(fM)) {
|
||
from = ''
|
||
} else if (isX(fm)) {
|
||
from = '>=' + fM + '.0.0'
|
||
} else if (isX(fp)) {
|
||
from = '>=' + fM + '.' + fm + '.0'
|
||
} else {
|
||
from = '>=' + from
|
||
}
|
||
|
||
if (isX(tM)) {
|
||
to = ''
|
||
} else if (isX(tm)) {
|
||
to = '<' + (+tM + 1) + '.0.0'
|
||
} else if (isX(tp)) {
|
||
to = '<' + tM + '.' + (+tm + 1) + '.0'
|
||
} else if (tpr) {
|
||
to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
|
||
} else {
|
||
to = '<=' + to
|
||
}
|
||
|
||
return (from + ' ' + to).trim()
|
||
}
|
||
|
||
// if ANY of the sets match ALL of its comparators, then pass
|
||
Range.prototype.test = function (version) {
|
||
if (!version) {
|
||
return false
|
||
}
|
||
|
||
if (typeof version === 'string') {
|
||
try {
|
||
version = new SemVer(version, this.options)
|
||
} catch (er) {
|
||
return false
|
||
}
|
||
}
|
||
|
||
for (var i = 0; i < this.set.length; i++) {
|
||
if (testSet(this.set[i], version, this.options)) {
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
|
||
function testSet (set, version, options) {
|
||
for (var i = 0; i < set.length; i++) {
|
||
if (!set[i].test(version)) {
|
||
return false
|
||
}
|
||
}
|
||
|
||
if (version.prerelease.length && !options.includePrerelease) {
|
||
// Find the set of versions that are allowed to have prereleases
|
||
// For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
|
||
// That should allow `1.2.3-pr.2` to pass.
|
||
// However, `1.2.4-alpha.notready` should NOT be allowed,
|
||
// even though it's within the range set by the comparators.
|
||
for (i = 0; i < set.length; i++) {
|
||
debug(set[i].semver)
|
||
if (set[i].semver === ANY) {
|
||
continue
|
||
}
|
||
|
||
if (set[i].semver.prerelease.length > 0) {
|
||
var allowed = set[i].semver
|
||
if (allowed.major === version.major &&
|
||
allowed.minor === version.minor &&
|
||
allowed.patch === version.patch) {
|
||
return true
|
||
}
|
||
}
|
||
}
|
||
|
||
// Version has a -pre, but it's not one of the ones we like.
|
||
return false
|
||
}
|
||
|
||
return true
|
||
}
|
||
|
||
exports.satisfies = satisfies
|
||
function satisfies (version, range, options) {
|
||
try {
|
||
range = new Range(range, options)
|
||
} catch (er) {
|
||
return false
|
||
}
|
||
return range.test(version)
|
||
}
|
||
|
||
exports.maxSatisfying = maxSatisfying
|
||
function maxSatisfying (versions, range, options) {
|
||
var max = null
|
||
var maxSV = null
|
||
try {
|
||
var rangeObj = new Range(range, options)
|
||
} catch (er) {
|
||
return null
|
||
}
|
||
versions.forEach(function (v) {
|
||
if (rangeObj.test(v)) {
|
||
// satisfies(v, range, options)
|
||
if (!max || maxSV.compare(v) === -1) {
|
||
// compare(max, v, true)
|
||
max = v
|
||
maxSV = new SemVer(max, options)
|
||
}
|
||
}
|
||
})
|
||
return max
|
||
}
|
||
|
||
exports.minSatisfying = minSatisfying
|
||
function minSatisfying (versions, range, options) {
|
||
var min = null
|
||
var minSV = null
|
||
try {
|
||
var rangeObj = new Range(range, options)
|
||
} catch (er) {
|
||
return null
|
||
}
|
||
versions.forEach(function (v) {
|
||
if (rangeObj.test(v)) {
|
||
// satisfies(v, range, options)
|
||
if (!min || minSV.compare(v) === 1) {
|
||
// compare(min, v, true)
|
||
min = v
|
||
minSV = new SemVer(min, options)
|
||
}
|
||
}
|
||
})
|
||
return min
|
||
}
|
||
|
||
exports.minVersion = minVersion
|
||
function minVersion (range, loose) {
|
||
range = new Range(range, loose)
|
||
|
||
var minver = new SemVer('0.0.0')
|
||
if (range.test(minver)) {
|
||
return minver
|
||
}
|
||
|
||
minver = new SemVer('0.0.0-0')
|
||
if (range.test(minver)) {
|
||
return minver
|
||
}
|
||
|
||
minver = null
|
||
for (var i = 0; i < range.set.length; ++i) {
|
||
var comparators = range.set[i]
|
||
|
||
comparators.forEach(function (comparator) {
|
||
// Clone to avoid manipulating the comparator's semver object.
|
||
var compver = new SemVer(comparator.semver.version)
|
||
switch (comparator.operator) {
|
||
case '>':
|
||
if (compver.prerelease.length === 0) {
|
||
compver.patch++
|
||
} else {
|
||
compver.prerelease.push(0)
|
||
}
|
||
compver.raw = compver.format()
|
||
/* fallthrough */
|
||
case '':
|
||
case '>=':
|
||
if (!minver || gt(minver, compver)) {
|
||
minver = compver
|
||
}
|
||
break
|
||
case '<':
|
||
case '<=':
|
||
/* Ignore maximum versions */
|
||
break
|
||
/* istanbul ignore next */
|
||
default:
|
||
throw new Error('Unexpected operation: ' + comparator.operator)
|
||
}
|
||
})
|
||
}
|
||
|
||
if (minver && range.test(minver)) {
|
||
return minver
|
||
}
|
||
|
||
return null
|
||
}
|
||
|
||
exports.validRange = validRange
|
||
function validRange (range, options) {
|
||
try {
|
||
// Return '*' instead of '' so that truthiness works.
|
||
// This will throw if it's invalid anyway
|
||
return new Range(range, options).range || '*'
|
||
} catch (er) {
|
||
return null
|
||
}
|
||
}
|
||
|
||
// Determine if version is less than all the versions possible in the range
|
||
exports.ltr = ltr
|
||
function ltr (version, range, options) {
|
||
return outside(version, range, '<', options)
|
||
}
|
||
|
||
// Determine if version is greater than all the versions possible in the range.
|
||
exports.gtr = gtr
|
||
function gtr (version, range, options) {
|
||
return outside(version, range, '>', options)
|
||
}
|
||
|
||
exports.outside = outside
|
||
function outside (version, range, hilo, options) {
|
||
version = new SemVer(version, options)
|
||
range = new Range(range, options)
|
||
|
||
var gtfn, ltefn, ltfn, comp, ecomp
|
||
switch (hilo) {
|
||
case '>':
|
||
gtfn = gt
|
||
ltefn = lte
|
||
ltfn = lt
|
||
comp = '>'
|
||
ecomp = '>='
|
||
break
|
||
case '<':
|
||
gtfn = lt
|
||
ltefn = gte
|
||
ltfn = gt
|
||
comp = '<'
|
||
ecomp = '<='
|
||
break
|
||
default:
|
||
throw new TypeError('Must provide a hilo val of "<" or ">"')
|
||
}
|
||
|
||
// If it satisifes the range it is not outside
|
||
if (satisfies(version, range, options)) {
|
||
return false
|
||
}
|
||
|
||
// From now on, variable terms are as if we're in "gtr" mode.
|
||
// but note that everything is flipped for the "ltr" function.
|
||
|
||
for (var i = 0; i < range.set.length; ++i) {
|
||
var comparators = range.set[i]
|
||
|
||
var high = null
|
||
var low = null
|
||
|
||
comparators.forEach(function (comparator) {
|
||
if (comparator.semver === ANY) {
|
||
comparator = new Comparator('>=0.0.0')
|
||
}
|
||
high = high || comparator
|
||
low = low || comparator
|
||
if (gtfn(comparator.semver, high.semver, options)) {
|
||
high = comparator
|
||
} else if (ltfn(comparator.semver, low.semver, options)) {
|
||
low = comparator
|
||
}
|
||
})
|
||
|
||
// If the edge version comparator has a operator then our version
|
||
// isn't outside it
|
||
if (high.operator === comp || high.operator === ecomp) {
|
||
return false
|
||
}
|
||
|
||
// If the lowest version comparator has an operator and our version
|
||
// is less than it then it isn't higher than the range
|
||
if ((!low.operator || low.operator === comp) &&
|
||
ltefn(version, low.semver)) {
|
||
return false
|
||
} else if (low.operator === ecomp && ltfn(version, low.semver)) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
}
|
||
|
||
exports.prerelease = prerelease
|
||
function prerelease (version, options) {
|
||
var parsed = parse(version, options)
|
||
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
|
||
}
|
||
|
||
exports.intersects = intersects
|
||
function intersects (r1, r2, options) {
|
||
r1 = new Range(r1, options)
|
||
r2 = new Range(r2, options)
|
||
return r1.intersects(r2)
|
||
}
|
||
|
||
exports.coerce = coerce
|
||
function coerce (version, options) {
|
||
if (version instanceof SemVer) {
|
||
return version
|
||
}
|
||
|
||
if (typeof version !== 'string') {
|
||
return null
|
||
}
|
||
|
||
var match = version.match(re[COERCE])
|
||
|
||
if (match == null) {
|
||
return null
|
||
}
|
||
|
||
return parse(match[1] +
|
||
'.' + (match[2] || '0') +
|
||
'.' + (match[3] || '0'), options)
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 281 */
|
||
/***/ (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 });
|
||
exports.hashFiles = exports.create = void 0;
|
||
const internal_globber_1 = __webpack_require__(760);
|
||
const internal_hash_files_1 = __webpack_require__(730);
|
||
/**
|
||
* Constructs a globber
|
||
*
|
||
* @param patterns Patterns separated by newlines
|
||
* @param options Glob options
|
||
*/
|
||
function create(patterns, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
return yield internal_globber_1.DefaultGlobber.create(patterns, options);
|
||
});
|
||
}
|
||
exports.create = create;
|
||
/**
|
||
* Computes the sha256 hash of a glob
|
||
*
|
||
* @param patterns Patterns separated by newlines
|
||
* @param options Glob options
|
||
*/
|
||
function hashFiles(patterns, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let followSymbolicLinks = true;
|
||
if (options && typeof options.followSymbolicLinks === 'boolean') {
|
||
followSymbolicLinks = options.followSymbolicLinks;
|
||
}
|
||
const globber = yield create(patterns, { followSymbolicLinks });
|
||
return internal_hash_files_1.hashFiles(globber);
|
||
});
|
||
}
|
||
exports.hashFiles = hashFiles;
|
||
//# sourceMappingURL=glob.js.map
|
||
|
||
/***/ }),
|
||
/* 282 */,
|
||
/* 283 */,
|
||
/* 284 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
module.exports = balanced;
|
||
function balanced(a, b, str) {
|
||
if (a instanceof RegExp) a = maybeMatch(a, str);
|
||
if (b instanceof RegExp) b = maybeMatch(b, str);
|
||
|
||
var r = range(a, b, str);
|
||
|
||
return r && {
|
||
start: r[0],
|
||
end: r[1],
|
||
pre: str.slice(0, r[0]),
|
||
body: str.slice(r[0] + a.length, r[1]),
|
||
post: str.slice(r[1] + b.length)
|
||
};
|
||
}
|
||
|
||
function maybeMatch(reg, str) {
|
||
var m = str.match(reg);
|
||
return m ? m[0] : null;
|
||
}
|
||
|
||
balanced.range = range;
|
||
function range(a, b, str) {
|
||
var begs, beg, left, right, result;
|
||
var ai = str.indexOf(a);
|
||
var bi = str.indexOf(b, ai + 1);
|
||
var i = ai;
|
||
|
||
if (ai >= 0 && bi > 0) {
|
||
begs = [];
|
||
left = str.length;
|
||
|
||
while (i >= 0 && !result) {
|
||
if (i == ai) {
|
||
begs.push(i);
|
||
ai = str.indexOf(a, i + 1);
|
||
} else if (begs.length == 1) {
|
||
result = [ begs.pop(), bi ];
|
||
} else {
|
||
beg = begs.pop();
|
||
if (beg < left) {
|
||
left = beg;
|
||
right = bi;
|
||
}
|
||
|
||
bi = str.indexOf(b, i + 1);
|
||
}
|
||
|
||
i = ai < bi && ai >= 0 ? ai : bi;
|
||
}
|
||
|
||
if (begs.length) {
|
||
result = [ left, right ];
|
||
}
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 285 */,
|
||
/* 286 */,
|
||
/* 287 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.getOptions = void 0;
|
||
const core = __importStar(__webpack_require__(470));
|
||
/**
|
||
* Returns a copy with defaults filled in.
|
||
*/
|
||
function getOptions(copy) {
|
||
const result = {
|
||
followSymbolicLinks: true,
|
||
implicitDescendants: true,
|
||
omitBrokenSymbolicLinks: true
|
||
};
|
||
if (copy) {
|
||
if (typeof copy.followSymbolicLinks === 'boolean') {
|
||
result.followSymbolicLinks = copy.followSymbolicLinks;
|
||
core.debug(`followSymbolicLinks '${result.followSymbolicLinks}'`);
|
||
}
|
||
if (typeof copy.implicitDescendants === 'boolean') {
|
||
result.implicitDescendants = copy.implicitDescendants;
|
||
core.debug(`implicitDescendants '${result.implicitDescendants}'`);
|
||
}
|
||
if (typeof copy.omitBrokenSymbolicLinks === 'boolean') {
|
||
result.omitBrokenSymbolicLinks = copy.omitBrokenSymbolicLinks;
|
||
core.debug(`omitBrokenSymbolicLinks '${result.omitBrokenSymbolicLinks}'`);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
exports.getOptions = getOptions;
|
||
//# sourceMappingURL=internal-glob-options-helper.js.map
|
||
|
||
/***/ }),
|
||
/* 288 */,
|
||
/* 289 */,
|
||
/* 290 */,
|
||
/* 291 */,
|
||
/* 292 */,
|
||
/* 293 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = authenticationRequestError;
|
||
|
||
const { RequestError } = __webpack_require__(463);
|
||
|
||
function authenticationRequestError(state, error, options) {
|
||
if (!error.headers) throw error;
|
||
|
||
const otpRequired = /required/.test(error.headers["x-github-otp"] || "");
|
||
// handle "2FA required" error only
|
||
if (error.status !== 401 || !otpRequired) {
|
||
throw error;
|
||
}
|
||
|
||
if (
|
||
error.status === 401 &&
|
||
otpRequired &&
|
||
error.request &&
|
||
error.request.headers["x-github-otp"]
|
||
) {
|
||
if (state.otp) {
|
||
delete state.otp; // no longer valid, request again
|
||
} else {
|
||
throw new RequestError(
|
||
"Invalid one-time password for two-factor authentication",
|
||
401,
|
||
{
|
||
headers: error.headers,
|
||
request: options
|
||
}
|
||
);
|
||
}
|
||
}
|
||
|
||
if (typeof state.auth.on2fa !== "function") {
|
||
throw new RequestError(
|
||
"2FA required, but options.on2fa is not a function. See https://github.com/octokit/rest.js#authentication",
|
||
401,
|
||
{
|
||
headers: error.headers,
|
||
request: options
|
||
}
|
||
);
|
||
}
|
||
|
||
return Promise.resolve()
|
||
.then(() => {
|
||
return state.auth.on2fa();
|
||
})
|
||
.then(oneTimePassword => {
|
||
const newOptions = Object.assign(options, {
|
||
headers: Object.assign(options.headers, {
|
||
"x-github-otp": oneTimePassword
|
||
})
|
||
});
|
||
return state.octokit.request(newOptions).then(response => {
|
||
// If OTP still valid, then persist it for following requests
|
||
state.otp = oneTimePassword;
|
||
return response;
|
||
});
|
||
});
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 294 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = parseOptions;
|
||
|
||
const { Deprecation } = __webpack_require__(692);
|
||
const { getUserAgent } = __webpack_require__(619);
|
||
const once = __webpack_require__(969);
|
||
|
||
const pkg = __webpack_require__(215);
|
||
|
||
const deprecateOptionsTimeout = once((log, deprecation) =>
|
||
log.warn(deprecation)
|
||
);
|
||
const deprecateOptionsAgent = once((log, deprecation) => log.warn(deprecation));
|
||
const deprecateOptionsHeaders = once((log, deprecation) =>
|
||
log.warn(deprecation)
|
||
);
|
||
|
||
function parseOptions(options, log, hook) {
|
||
if (options.headers) {
|
||
options.headers = Object.keys(options.headers).reduce((newObj, key) => {
|
||
newObj[key.toLowerCase()] = options.headers[key];
|
||
return newObj;
|
||
}, {});
|
||
}
|
||
|
||
const clientDefaults = {
|
||
headers: options.headers || {},
|
||
request: options.request || {},
|
||
mediaType: {
|
||
previews: [],
|
||
format: ""
|
||
}
|
||
};
|
||
|
||
if (options.baseUrl) {
|
||
clientDefaults.baseUrl = options.baseUrl;
|
||
}
|
||
|
||
if (options.userAgent) {
|
||
clientDefaults.headers["user-agent"] = options.userAgent;
|
||
}
|
||
|
||
if (options.previews) {
|
||
clientDefaults.mediaType.previews = options.previews;
|
||
}
|
||
|
||
if (options.timeZone) {
|
||
clientDefaults.headers["time-zone"] = options.timeZone;
|
||
}
|
||
|
||
if (options.timeout) {
|
||
deprecateOptionsTimeout(
|
||
log,
|
||
new Deprecation(
|
||
"[@octokit/rest] new Octokit({timeout}) is deprecated. Use {request: {timeout}} instead. See https://github.com/octokit/request.js#request"
|
||
)
|
||
);
|
||
clientDefaults.request.timeout = options.timeout;
|
||
}
|
||
|
||
if (options.agent) {
|
||
deprecateOptionsAgent(
|
||
log,
|
||
new Deprecation(
|
||
"[@octokit/rest] new Octokit({agent}) is deprecated. Use {request: {agent}} instead. See https://github.com/octokit/request.js#request"
|
||
)
|
||
);
|
||
clientDefaults.request.agent = options.agent;
|
||
}
|
||
|
||
if (options.headers) {
|
||
deprecateOptionsHeaders(
|
||
log,
|
||
new Deprecation(
|
||
"[@octokit/rest] new Octokit({headers}) is deprecated. Use {userAgent, previews} instead. See https://github.com/octokit/request.js#request"
|
||
)
|
||
);
|
||
}
|
||
|
||
const userAgentOption = clientDefaults.headers["user-agent"];
|
||
const defaultUserAgent = `octokit.js/${pkg.version} ${getUserAgent()}`;
|
||
|
||
clientDefaults.headers["user-agent"] = [userAgentOption, defaultUserAgent]
|
||
.filter(Boolean)
|
||
.join(" ");
|
||
|
||
clientDefaults.request.hook = hook.bind(null, "request");
|
||
|
||
return clientDefaults;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 295 */,
|
||
/* 296 */,
|
||
/* 297 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = class HttpError extends Error {
|
||
constructor (message, code, headers) {
|
||
super(message)
|
||
|
||
// Maintains proper stack trace (only available on V8)
|
||
/* istanbul ignore next */
|
||
if (Error.captureStackTrace) {
|
||
Error.captureStackTrace(this, this.constructor)
|
||
}
|
||
|
||
this.name = 'HttpError'
|
||
this.code = code
|
||
this.headers = headers
|
||
}
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 298 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
|
||
var _v = _interopRequireDefault(__webpack_require__(241));
|
||
|
||
var _md = _interopRequireDefault(__webpack_require__(245));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
const v3 = (0, _v.default)('v3', 0x30, _md.default);
|
||
var _default = v3;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 299 */
|
||
/***/ (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 });
|
||
exports.create = void 0;
|
||
const internal_globber_1 = __webpack_require__(857);
|
||
/**
|
||
* Constructs a globber
|
||
*
|
||
* @param patterns Patterns separated by newlines
|
||
* @param options Glob options
|
||
*/
|
||
function create(patterns, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
return yield internal_globber_1.DefaultGlobber.create(patterns, options);
|
||
});
|
||
}
|
||
exports.create = create;
|
||
//# sourceMappingURL=glob.js.map
|
||
|
||
/***/ }),
|
||
/* 300 */
|
||
/***/ (function(module) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var XMLNodeList;
|
||
|
||
module.exports = XMLNodeList = (function() {
|
||
function XMLNodeList(nodes) {
|
||
this.nodes = nodes;
|
||
}
|
||
|
||
Object.defineProperty(XMLNodeList.prototype, 'length', {
|
||
get: function() {
|
||
return this.nodes.length || 0;
|
||
}
|
||
});
|
||
|
||
XMLNodeList.prototype.clone = function() {
|
||
return this.nodes = null;
|
||
};
|
||
|
||
XMLNodeList.prototype.item = function(index) {
|
||
return this.nodes[index] || null;
|
||
};
|
||
|
||
return XMLNodeList;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 301 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
/**
|
||
* Some “list” response that can be paginated have a different response structure
|
||
*
|
||
* They have a `total_count` key in the response (search also has `incomplete_results`,
|
||
* /installation/repositories also has `repository_selection`), as well as a key with
|
||
* the list of the items which name varies from endpoint to endpoint:
|
||
*
|
||
* - https://developer.github.com/v3/search/#example (key `items`)
|
||
* - https://developer.github.com/v3/checks/runs/#response-3 (key: `check_runs`)
|
||
* - https://developer.github.com/v3/checks/suites/#response-1 (key: `check_suites`)
|
||
* - https://developer.github.com/v3/apps/installations/#list-repositories (key: `repositories`)
|
||
* - https://developer.github.com/v3/apps/installations/#list-installations-for-a-user (key `installations`)
|
||
* - https://developer.github.com/v3/orgs/#list-installations-for-an-organization (key `installations`)
|
||
*
|
||
* Octokit normalizes these responses so that paginated results are always returned following
|
||
* the same structure. One challenge is that if the list response has only one page, no Link
|
||
* header is provided, so this header alone is not sufficient to check wether a response is
|
||
* paginated or not. For the exceptions with the namespace, a fallback check for the route
|
||
* paths has to be added in order to normalize the response. We cannot check for the total_count
|
||
* property because it also exists in the response of Get the combined status for a specific ref.
|
||
*/
|
||
|
||
module.exports = normalizePaginatedListResponse;
|
||
|
||
const { Deprecation } = __webpack_require__(692);
|
||
const once = __webpack_require__(969);
|
||
|
||
const deprecateIncompleteResults = once((log, deprecation) =>
|
||
log.warn(deprecation)
|
||
);
|
||
const deprecateTotalCount = once((log, deprecation) => log.warn(deprecation));
|
||
const deprecateNamespace = once((log, deprecation) => log.warn(deprecation));
|
||
|
||
const REGEX_IS_SEARCH_PATH = /^\/search\//;
|
||
const REGEX_IS_CHECKS_PATH = /^\/repos\/[^/]+\/[^/]+\/commits\/[^/]+\/(check-runs|check-suites)/;
|
||
const REGEX_IS_INSTALLATION_REPOSITORIES_PATH = /^\/installation\/repositories/;
|
||
const REGEX_IS_USER_INSTALLATIONS_PATH = /^\/user\/installations/;
|
||
const REGEX_IS_ORG_INSTALLATIONS_PATH = /^\/orgs\/[^/]+\/installations/;
|
||
|
||
function normalizePaginatedListResponse(octokit, url, response) {
|
||
const path = url.replace(octokit.request.endpoint.DEFAULTS.baseUrl, "");
|
||
if (
|
||
!REGEX_IS_SEARCH_PATH.test(path) &&
|
||
!REGEX_IS_CHECKS_PATH.test(path) &&
|
||
!REGEX_IS_INSTALLATION_REPOSITORIES_PATH.test(path) &&
|
||
!REGEX_IS_USER_INSTALLATIONS_PATH.test(path) &&
|
||
!REGEX_IS_ORG_INSTALLATIONS_PATH.test(path)
|
||
) {
|
||
return;
|
||
}
|
||
|
||
// keep the additional properties intact to avoid a breaking change,
|
||
// but log a deprecation warning when accessed
|
||
const incompleteResults = response.data.incomplete_results;
|
||
const repositorySelection = response.data.repository_selection;
|
||
const totalCount = response.data.total_count;
|
||
delete response.data.incomplete_results;
|
||
delete response.data.repository_selection;
|
||
delete response.data.total_count;
|
||
|
||
const namespaceKey = Object.keys(response.data)[0];
|
||
|
||
response.data = response.data[namespaceKey];
|
||
|
||
Object.defineProperty(response.data, namespaceKey, {
|
||
get() {
|
||
deprecateNamespace(
|
||
octokit.log,
|
||
new Deprecation(
|
||
`[@octokit/rest] "result.data.${namespaceKey}" is deprecated. Use "result.data" instead`
|
||
)
|
||
);
|
||
return response.data;
|
||
}
|
||
});
|
||
|
||
if (typeof incompleteResults !== "undefined") {
|
||
Object.defineProperty(response.data, "incomplete_results", {
|
||
get() {
|
||
deprecateIncompleteResults(
|
||
octokit.log,
|
||
new Deprecation(
|
||
'[@octokit/rest] "result.data.incomplete_results" is deprecated.'
|
||
)
|
||
);
|
||
return incompleteResults;
|
||
}
|
||
});
|
||
}
|
||
|
||
if (typeof repositorySelection !== "undefined") {
|
||
Object.defineProperty(response.data, "repository_selection", {
|
||
get() {
|
||
deprecateTotalCount(
|
||
octokit.log,
|
||
new Deprecation(
|
||
'[@octokit/rest] "result.data.repository_selection" is deprecated.'
|
||
)
|
||
);
|
||
return repositorySelection;
|
||
}
|
||
});
|
||
}
|
||
|
||
Object.defineProperty(response.data, "total_count", {
|
||
get() {
|
||
deprecateTotalCount(
|
||
octokit.log,
|
||
new Deprecation(
|
||
'[@octokit/rest] "result.data.total_count" is deprecated.'
|
||
)
|
||
);
|
||
return totalCount;
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 302 */,
|
||
/* 303 */,
|
||
/* 304 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("string_decoder");
|
||
|
||
/***/ }),
|
||
/* 305 */,
|
||
/* 306 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var concatMap = __webpack_require__(896);
|
||
var balanced = __webpack_require__(284);
|
||
|
||
module.exports = expandTop;
|
||
|
||
var escSlash = '\0SLASH'+Math.random()+'\0';
|
||
var escOpen = '\0OPEN'+Math.random()+'\0';
|
||
var escClose = '\0CLOSE'+Math.random()+'\0';
|
||
var escComma = '\0COMMA'+Math.random()+'\0';
|
||
var escPeriod = '\0PERIOD'+Math.random()+'\0';
|
||
|
||
function numeric(str) {
|
||
return parseInt(str, 10) == str
|
||
? parseInt(str, 10)
|
||
: str.charCodeAt(0);
|
||
}
|
||
|
||
function escapeBraces(str) {
|
||
return str.split('\\\\').join(escSlash)
|
||
.split('\\{').join(escOpen)
|
||
.split('\\}').join(escClose)
|
||
.split('\\,').join(escComma)
|
||
.split('\\.').join(escPeriod);
|
||
}
|
||
|
||
function unescapeBraces(str) {
|
||
return str.split(escSlash).join('\\')
|
||
.split(escOpen).join('{')
|
||
.split(escClose).join('}')
|
||
.split(escComma).join(',')
|
||
.split(escPeriod).join('.');
|
||
}
|
||
|
||
|
||
// Basically just str.split(","), but handling cases
|
||
// where we have nested braced sections, which should be
|
||
// treated as individual members, like {a,{b,c},d}
|
||
function parseCommaParts(str) {
|
||
if (!str)
|
||
return [''];
|
||
|
||
var parts = [];
|
||
var m = balanced('{', '}', str);
|
||
|
||
if (!m)
|
||
return str.split(',');
|
||
|
||
var pre = m.pre;
|
||
var body = m.body;
|
||
var post = m.post;
|
||
var p = pre.split(',');
|
||
|
||
p[p.length-1] += '{' + body + '}';
|
||
var postParts = parseCommaParts(post);
|
||
if (post.length) {
|
||
p[p.length-1] += postParts.shift();
|
||
p.push.apply(p, postParts);
|
||
}
|
||
|
||
parts.push.apply(parts, p);
|
||
|
||
return parts;
|
||
}
|
||
|
||
function expandTop(str) {
|
||
if (!str)
|
||
return [];
|
||
|
||
// I don't know why Bash 4.3 does this, but it does.
|
||
// Anything starting with {} will have the first two bytes preserved
|
||
// but *only* at the top level, so {},a}b will not expand to anything,
|
||
// but a{},b}c will be expanded to [a}c,abc].
|
||
// One could argue that this is a bug in Bash, but since the goal of
|
||
// this module is to match Bash's rules, we escape a leading {}
|
||
if (str.substr(0, 2) === '{}') {
|
||
str = '\\{\\}' + str.substr(2);
|
||
}
|
||
|
||
return expand(escapeBraces(str), true).map(unescapeBraces);
|
||
}
|
||
|
||
function identity(e) {
|
||
return e;
|
||
}
|
||
|
||
function embrace(str) {
|
||
return '{' + str + '}';
|
||
}
|
||
function isPadded(el) {
|
||
return /^-?0\d/.test(el);
|
||
}
|
||
|
||
function lte(i, y) {
|
||
return i <= y;
|
||
}
|
||
function gte(i, y) {
|
||
return i >= y;
|
||
}
|
||
|
||
function expand(str, isTop) {
|
||
var expansions = [];
|
||
|
||
var m = balanced('{', '}', str);
|
||
if (!m || /\$$/.test(m.pre)) return [str];
|
||
|
||
var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
|
||
var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
|
||
var isSequence = isNumericSequence || isAlphaSequence;
|
||
var isOptions = m.body.indexOf(',') >= 0;
|
||
if (!isSequence && !isOptions) {
|
||
// {a},b}
|
||
if (m.post.match(/,.*\}/)) {
|
||
str = m.pre + '{' + m.body + escClose + m.post;
|
||
return expand(str);
|
||
}
|
||
return [str];
|
||
}
|
||
|
||
var n;
|
||
if (isSequence) {
|
||
n = m.body.split(/\.\./);
|
||
} else {
|
||
n = parseCommaParts(m.body);
|
||
if (n.length === 1) {
|
||
// x{{a,b}}y ==> x{a}y x{b}y
|
||
n = expand(n[0], false).map(embrace);
|
||
if (n.length === 1) {
|
||
var post = m.post.length
|
||
? expand(m.post, false)
|
||
: [''];
|
||
return post.map(function(p) {
|
||
return m.pre + n[0] + p;
|
||
});
|
||
}
|
||
}
|
||
}
|
||
|
||
// at this point, n is the parts, and we know it's not a comma set
|
||
// with a single entry.
|
||
|
||
// no need to expand pre, since it is guaranteed to be free of brace-sets
|
||
var pre = m.pre;
|
||
var post = m.post.length
|
||
? expand(m.post, false)
|
||
: [''];
|
||
|
||
var N;
|
||
|
||
if (isSequence) {
|
||
var x = numeric(n[0]);
|
||
var y = numeric(n[1]);
|
||
var width = Math.max(n[0].length, n[1].length)
|
||
var incr = n.length == 3
|
||
? Math.abs(numeric(n[2]))
|
||
: 1;
|
||
var test = lte;
|
||
var reverse = y < x;
|
||
if (reverse) {
|
||
incr *= -1;
|
||
test = gte;
|
||
}
|
||
var pad = n.some(isPadded);
|
||
|
||
N = [];
|
||
|
||
for (var i = x; test(i, y); i += incr) {
|
||
var c;
|
||
if (isAlphaSequence) {
|
||
c = String.fromCharCode(i);
|
||
if (c === '\\')
|
||
c = '';
|
||
} else {
|
||
c = String(i);
|
||
if (pad) {
|
||
var need = width - c.length;
|
||
if (need > 0) {
|
||
var z = new Array(need + 1).join('0');
|
||
if (i < 0)
|
||
c = '-' + z + c.slice(1);
|
||
else
|
||
c = z + c;
|
||
}
|
||
}
|
||
}
|
||
N.push(c);
|
||
}
|
||
} else {
|
||
N = concatMap(n, function(el) { return expand(el, false) });
|
||
}
|
||
|
||
for (var j = 0; j < N.length; j++) {
|
||
for (var k = 0; k < post.length; k++) {
|
||
var expansion = pre + N[j] + post[k];
|
||
if (!isTop || isSequence || expansion)
|
||
expansions.push(expansion);
|
||
}
|
||
}
|
||
|
||
return expansions;
|
||
}
|
||
|
||
|
||
|
||
/***/ }),
|
||
/* 307 */,
|
||
/* 308 */,
|
||
/* 309 */,
|
||
/* 310 */,
|
||
/* 311 */,
|
||
/* 312 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;
|
||
|
||
ref = __webpack_require__(582), assign = ref.assign, isFunction = ref.isFunction;
|
||
|
||
XMLDOMImplementation = __webpack_require__(515);
|
||
|
||
XMLDocument = __webpack_require__(559);
|
||
|
||
XMLDocumentCB = __webpack_require__(472);
|
||
|
||
XMLStringWriter = __webpack_require__(231);
|
||
|
||
XMLStreamWriter = __webpack_require__(458);
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
WriterState = __webpack_require__(541);
|
||
|
||
module.exports.create = function(name, xmldec, doctype, options) {
|
||
var doc, root;
|
||
if (name == null) {
|
||
throw new Error("Root element needs a name.");
|
||
}
|
||
options = assign({}, xmldec, doctype, options);
|
||
doc = new XMLDocument(options);
|
||
root = doc.element(name);
|
||
if (!options.headless) {
|
||
doc.declaration(options);
|
||
if ((options.pubID != null) || (options.sysID != null)) {
|
||
doc.dtd(options);
|
||
}
|
||
}
|
||
return root;
|
||
};
|
||
|
||
module.exports.begin = function(options, onData, onEnd) {
|
||
var ref1;
|
||
if (isFunction(options)) {
|
||
ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];
|
||
options = {};
|
||
}
|
||
if (onData) {
|
||
return new XMLDocumentCB(options, onData, onEnd);
|
||
} else {
|
||
return new XMLDocument(options);
|
||
}
|
||
};
|
||
|
||
module.exports.stringWriter = function(options) {
|
||
return new XMLStringWriter(options);
|
||
};
|
||
|
||
module.exports.streamWriter = function(stream, options) {
|
||
return new XMLStreamWriter(stream, options);
|
||
};
|
||
|
||
module.exports.implementation = new XMLDOMImplementation();
|
||
|
||
module.exports.nodeType = NodeType;
|
||
|
||
module.exports.writerState = WriterState;
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 313 */,
|
||
/* 314 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = {"name":"@octokit/graphql","version":"2.1.3","publishConfig":{"access":"public"},"description":"GitHub GraphQL API client for browsers and Node","main":"index.js","scripts":{"prebuild":"mkdirp dist/","build":"npm-run-all build:*","build:development":"webpack --mode development --entry . --output-library=octokitGraphql --output=./dist/octokit-graphql.js --profile --json > dist/bundle-stats.json","build:production":"webpack --mode production --entry . --plugin=compression-webpack-plugin --output-library=octokitGraphql --output-path=./dist --output-filename=octokit-graphql.min.js --devtool source-map","bundle-report":"webpack-bundle-analyzer dist/bundle-stats.json --mode=static --no-open --report dist/bundle-report.html","coverage":"nyc report --reporter=html && open coverage/index.html","coverage:upload":"nyc report --reporter=text-lcov | coveralls","pretest":"standard","test":"nyc mocha test/*-test.js","test:browser":"cypress run --browser chrome"},"repository":{"type":"git","url":"https://github.com/octokit/graphql.js.git"},"keywords":["octokit","github","api","graphql"],"author":"Gregor Martynus (https://github.com/gr2m)","license":"MIT","bugs":{"url":"https://github.com/octokit/graphql.js/issues"},"homepage":"https://github.com/octokit/graphql.js#readme","dependencies":{"@octokit/request":"^5.0.0","universal-user-agent":"^2.0.3"},"devDependencies":{"chai":"^4.2.0","compression-webpack-plugin":"^2.0.0","coveralls":"^3.0.3","cypress":"^3.1.5","fetch-mock":"^7.3.1","mkdirp":"^0.5.1","mocha":"^6.0.0","npm-run-all":"^4.1.3","nyc":"^14.0.0","semantic-release":"^15.13.3","simple-mock":"^0.8.0","standard":"^12.0.1","webpack":"^4.29.6","webpack-bundle-analyzer":"^3.1.0","webpack-cli":"^3.2.3"},"bundlesize":[{"path":"./dist/octokit-graphql.min.js.gz","maxSize":"5KB"}],"release":{"publish":["@semantic-release/npm",{"path":"@semantic-release/github","assets":["dist/*","!dist/*.map.gz"]}]},"standard":{"globals":["describe","before","beforeEach","afterEach","after","it","expect"]},"files":["lib"],"_resolved":"https://registry.npmjs.org/@octokit/graphql/-/graphql-2.1.3.tgz","_integrity":"sha512-XoXJqL2ondwdnMIW3wtqJWEwcBfKk37jO/rYkoxNPEVeLBDGsGO1TCWggrAlq3keGt/O+C/7VepXnukUxwt5vA==","_from":"@octokit/graphql@2.1.3"};
|
||
|
||
/***/ }),
|
||
/* 315 */,
|
||
/* 316 */,
|
||
/* 317 */,
|
||
/* 318 */,
|
||
/* 319 */,
|
||
/* 320 */,
|
||
/* 321 */,
|
||
/* 322 */,
|
||
/* 323 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
|
||
var isStream = module.exports = function (stream) {
|
||
return stream !== null && typeof stream === 'object' && typeof stream.pipe === 'function';
|
||
};
|
||
|
||
isStream.writable = function (stream) {
|
||
return isStream(stream) && stream.writable !== false && typeof stream._write === 'function' && typeof stream._writableState === 'object';
|
||
};
|
||
|
||
isStream.readable = function (stream) {
|
||
return isStream(stream) && stream.readable !== false && typeof stream._read === 'function' && typeof stream._readableState === 'object';
|
||
};
|
||
|
||
isStream.duplex = function (stream) {
|
||
return isStream.writable(stream) && isStream.readable(stream);
|
||
};
|
||
|
||
isStream.transform = function (stream) {
|
||
return isStream.duplex(stream) && typeof stream._transform === 'function' && typeof stream._transformState === 'object';
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 324 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
/*!
|
||
* Copyright (c) 2018, Salesforce.com, Inc.
|
||
* All rights reserved.
|
||
*
|
||
* Redistribution and use in source and binary forms, with or without
|
||
* modification, are permitted provided that the following conditions are met:
|
||
*
|
||
* 1. Redistributions of source code must retain the above copyright notice,
|
||
* this list of conditions and the following disclaimer.
|
||
*
|
||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||
* this list of conditions and the following disclaimer in the documentation
|
||
* and/or other materials provided with the distribution.
|
||
*
|
||
* 3. Neither the name of Salesforce.com nor the names of its contributors may
|
||
* be used to endorse or promote products derived from this software without
|
||
* specific prior written permission.
|
||
*
|
||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
* POSSIBILITY OF SUCH DAMAGE.
|
||
*/
|
||
|
||
const psl = __webpack_require__(750);
|
||
|
||
function getPublicSuffix(domain) {
|
||
return psl.get(domain);
|
||
}
|
||
|
||
exports.getPublicSuffix = getPublicSuffix;
|
||
|
||
|
||
/***/ }),
|
||
/* 325 */,
|
||
/* 326 */,
|
||
/* 327 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.MatchKind = void 0;
|
||
/**
|
||
* Indicates whether a pattern matches a path
|
||
*/
|
||
var MatchKind;
|
||
(function (MatchKind) {
|
||
/** Not matched */
|
||
MatchKind[MatchKind["None"] = 0] = "None";
|
||
/** Matched if the path is a directory */
|
||
MatchKind[MatchKind["Directory"] = 1] = "Directory";
|
||
/** Matched if the path is a regular file */
|
||
MatchKind[MatchKind["File"] = 2] = "File";
|
||
/** Matched */
|
||
MatchKind[MatchKind["All"] = 3] = "All";
|
||
})(MatchKind = exports.MatchKind || (exports.MatchKind = {}));
|
||
//# sourceMappingURL=internal-match-kind.js.map
|
||
|
||
/***/ }),
|
||
/* 328 */,
|
||
/* 329 */,
|
||
/* 330 */,
|
||
/* 331 */,
|
||
/* 332 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
/*!
|
||
* Copyright (c) 2015, Salesforce.com, Inc.
|
||
* All rights reserved.
|
||
*
|
||
* Redistribution and use in source and binary forms, with or without
|
||
* modification, are permitted provided that the following conditions are met:
|
||
*
|
||
* 1. Redistributions of source code must retain the above copyright notice,
|
||
* this list of conditions and the following disclaimer.
|
||
*
|
||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||
* this list of conditions and the following disclaimer in the documentation
|
||
* and/or other materials provided with the distribution.
|
||
*
|
||
* 3. Neither the name of Salesforce.com nor the names of its contributors may
|
||
* be used to endorse or promote products derived from this software without
|
||
* specific prior written permission.
|
||
*
|
||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
* POSSIBILITY OF SUCH DAMAGE.
|
||
*/
|
||
|
||
const { fromCallback } = __webpack_require__(147);
|
||
const Store = __webpack_require__(338).Store;
|
||
const permuteDomain = __webpack_require__(898).permuteDomain;
|
||
const pathMatch = __webpack_require__(678).pathMatch;
|
||
const util = __webpack_require__(669);
|
||
|
||
class MemoryCookieStore extends Store {
|
||
constructor() {
|
||
super();
|
||
this.synchronous = true;
|
||
this.idx = {};
|
||
if (util.inspect.custom) {
|
||
this[util.inspect.custom] = this.inspect;
|
||
}
|
||
}
|
||
|
||
inspect() {
|
||
return `{ idx: ${util.inspect(this.idx, false, 2)} }`;
|
||
}
|
||
|
||
findCookie(domain, path, key, cb) {
|
||
if (!this.idx[domain]) {
|
||
return cb(null, undefined);
|
||
}
|
||
if (!this.idx[domain][path]) {
|
||
return cb(null, undefined);
|
||
}
|
||
return cb(null, this.idx[domain][path][key] || null);
|
||
}
|
||
findCookies(domain, path, allowSpecialUseDomain, cb) {
|
||
const results = [];
|
||
if (typeof allowSpecialUseDomain === "function") {
|
||
cb = allowSpecialUseDomain;
|
||
allowSpecialUseDomain = false;
|
||
}
|
||
if (!domain) {
|
||
return cb(null, []);
|
||
}
|
||
|
||
let pathMatcher;
|
||
if (!path) {
|
||
// null means "all paths"
|
||
pathMatcher = function matchAll(domainIndex) {
|
||
for (const curPath in domainIndex) {
|
||
const pathIndex = domainIndex[curPath];
|
||
for (const key in pathIndex) {
|
||
results.push(pathIndex[key]);
|
||
}
|
||
}
|
||
};
|
||
} else {
|
||
pathMatcher = function matchRFC(domainIndex) {
|
||
//NOTE: we should use path-match algorithm from S5.1.4 here
|
||
//(see : https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/canonical_cookie.cc#L299)
|
||
Object.keys(domainIndex).forEach(cookiePath => {
|
||
if (pathMatch(path, cookiePath)) {
|
||
const pathIndex = domainIndex[cookiePath];
|
||
for (const key in pathIndex) {
|
||
results.push(pathIndex[key]);
|
||
}
|
||
}
|
||
});
|
||
};
|
||
}
|
||
|
||
const domains = permuteDomain(domain, allowSpecialUseDomain) || [domain];
|
||
const idx = this.idx;
|
||
domains.forEach(curDomain => {
|
||
const domainIndex = idx[curDomain];
|
||
if (!domainIndex) {
|
||
return;
|
||
}
|
||
pathMatcher(domainIndex);
|
||
});
|
||
|
||
cb(null, results);
|
||
}
|
||
|
||
putCookie(cookie, cb) {
|
||
if (!this.idx[cookie.domain]) {
|
||
this.idx[cookie.domain] = {};
|
||
}
|
||
if (!this.idx[cookie.domain][cookie.path]) {
|
||
this.idx[cookie.domain][cookie.path] = {};
|
||
}
|
||
this.idx[cookie.domain][cookie.path][cookie.key] = cookie;
|
||
cb(null);
|
||
}
|
||
updateCookie(oldCookie, newCookie, cb) {
|
||
// updateCookie() may avoid updating cookies that are identical. For example,
|
||
// lastAccessed may not be important to some stores and an equality
|
||
// comparison could exclude that field.
|
||
this.putCookie(newCookie, cb);
|
||
}
|
||
removeCookie(domain, path, key, cb) {
|
||
if (
|
||
this.idx[domain] &&
|
||
this.idx[domain][path] &&
|
||
this.idx[domain][path][key]
|
||
) {
|
||
delete this.idx[domain][path][key];
|
||
}
|
||
cb(null);
|
||
}
|
||
removeCookies(domain, path, cb) {
|
||
if (this.idx[domain]) {
|
||
if (path) {
|
||
delete this.idx[domain][path];
|
||
} else {
|
||
delete this.idx[domain];
|
||
}
|
||
}
|
||
return cb(null);
|
||
}
|
||
removeAllCookies(cb) {
|
||
this.idx = {};
|
||
return cb(null);
|
||
}
|
||
getAllCookies(cb) {
|
||
const cookies = [];
|
||
const idx = this.idx;
|
||
|
||
const domains = Object.keys(idx);
|
||
domains.forEach(domain => {
|
||
const paths = Object.keys(idx[domain]);
|
||
paths.forEach(path => {
|
||
const keys = Object.keys(idx[domain][path]);
|
||
keys.forEach(key => {
|
||
if (key !== null) {
|
||
cookies.push(idx[domain][path][key]);
|
||
}
|
||
});
|
||
});
|
||
});
|
||
|
||
// Sort by creationIndex so deserializing retains the creation order.
|
||
// When implementing your own store, this SHOULD retain the order too
|
||
cookies.sort((a, b) => {
|
||
return (a.creationIndex || 0) - (b.creationIndex || 0);
|
||
});
|
||
|
||
cb(null, cookies);
|
||
}
|
||
}
|
||
|
||
[
|
||
"findCookie",
|
||
"findCookies",
|
||
"putCookie",
|
||
"updateCookie",
|
||
"removeCookie",
|
||
"removeCookies",
|
||
"removeAllCookies",
|
||
"getAllCookies"
|
||
].forEach(name => {
|
||
MemoryCookieStore[name] = fromCallback(MemoryCookieStore.prototype[name]);
|
||
});
|
||
|
||
exports.MemoryCookieStore = MemoryCookieStore;
|
||
|
||
|
||
/***/ }),
|
||
/* 333 */,
|
||
/* 334 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports =
|
||
{
|
||
parallel : __webpack_require__(424),
|
||
serial : __webpack_require__(91),
|
||
serialOrdered : __webpack_require__(892)
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 335 */,
|
||
/* 336 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = hasLastPage
|
||
|
||
const deprecate = __webpack_require__(370)
|
||
const getPageLinks = __webpack_require__(577)
|
||
|
||
function hasLastPage (link) {
|
||
deprecate(`octokit.hasLastPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
|
||
return getPageLinks(link).last
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 337 */,
|
||
/* 338 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
/*!
|
||
* Copyright (c) 2015, Salesforce.com, Inc.
|
||
* All rights reserved.
|
||
*
|
||
* Redistribution and use in source and binary forms, with or without
|
||
* modification, are permitted provided that the following conditions are met:
|
||
*
|
||
* 1. Redistributions of source code must retain the above copyright notice,
|
||
* this list of conditions and the following disclaimer.
|
||
*
|
||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||
* this list of conditions and the following disclaimer in the documentation
|
||
* and/or other materials provided with the distribution.
|
||
*
|
||
* 3. Neither the name of Salesforce.com nor the names of its contributors may
|
||
* be used to endorse or promote products derived from this software without
|
||
* specific prior written permission.
|
||
*
|
||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
* POSSIBILITY OF SUCH DAMAGE.
|
||
*/
|
||
|
||
/*jshint unused:false */
|
||
|
||
class Store {
|
||
constructor() {
|
||
this.synchronous = false;
|
||
}
|
||
|
||
findCookie(domain, path, key, cb) {
|
||
throw new Error("findCookie is not implemented");
|
||
}
|
||
|
||
findCookies(domain, path, allowSpecialUseDomain, cb) {
|
||
throw new Error("findCookies is not implemented");
|
||
}
|
||
|
||
putCookie(cookie, cb) {
|
||
throw new Error("putCookie is not implemented");
|
||
}
|
||
|
||
updateCookie(oldCookie, newCookie, cb) {
|
||
// recommended default implementation:
|
||
// return this.putCookie(newCookie, cb);
|
||
throw new Error("updateCookie is not implemented");
|
||
}
|
||
|
||
removeCookie(domain, path, key, cb) {
|
||
throw new Error("removeCookie is not implemented");
|
||
}
|
||
|
||
removeCookies(domain, path, cb) {
|
||
throw new Error("removeCookies is not implemented");
|
||
}
|
||
|
||
removeAllCookies(cb) {
|
||
throw new Error("removeAllCookies is not implemented");
|
||
}
|
||
|
||
getAllCookies(cb) {
|
||
throw new Error(
|
||
"getAllCookies is not implemented (therefore jar cannot be serialized)"
|
||
);
|
||
}
|
||
}
|
||
|
||
exports.Store = Store;
|
||
|
||
|
||
/***/ }),
|
||
/* 339 */,
|
||
/* 340 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.SamplingDecision = void 0;
|
||
/**
|
||
* A sampling decision that determines how a {@link Span} will be recorded
|
||
* and collected.
|
||
*/
|
||
var SamplingDecision;
|
||
(function (SamplingDecision) {
|
||
/**
|
||
* `Span.isRecording() === false`, span will not be recorded and all events
|
||
* and attributes will be dropped.
|
||
*/
|
||
SamplingDecision[SamplingDecision["NOT_RECORD"] = 0] = "NOT_RECORD";
|
||
/**
|
||
* `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}
|
||
* MUST NOT be set.
|
||
*/
|
||
SamplingDecision[SamplingDecision["RECORD"] = 1] = "RECORD";
|
||
/**
|
||
* `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}
|
||
* MUST be set.
|
||
*/
|
||
SamplingDecision[SamplingDecision["RECORD_AND_SAMPLED"] = 2] = "RECORD_AND_SAMPLED";
|
||
})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));
|
||
//# sourceMappingURL=SamplingResult.js.map
|
||
|
||
/***/ }),
|
||
/* 341 */,
|
||
/* 342 */,
|
||
/* 343 */,
|
||
/* 344 */,
|
||
/* 345 */,
|
||
/* 346 */,
|
||
/* 347 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
|
||
var _validate = _interopRequireDefault(__webpack_require__(676));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
function parse(uuid) {
|
||
if (!(0, _validate.default)(uuid)) {
|
||
throw TypeError('Invalid UUID');
|
||
}
|
||
|
||
let v;
|
||
const arr = new Uint8Array(16); // Parse ########-....-....-....-............
|
||
|
||
arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
|
||
arr[1] = v >>> 16 & 0xff;
|
||
arr[2] = v >>> 8 & 0xff;
|
||
arr[3] = v & 0xff; // Parse ........-####-....-....-............
|
||
|
||
arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
|
||
arr[5] = v & 0xff; // Parse ........-....-####-....-............
|
||
|
||
arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
|
||
arr[7] = v & 0xff; // Parse ........-....-....-####-............
|
||
|
||
arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
|
||
arr[9] = v & 0xff; // Parse ........-....-....-....-############
|
||
// (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
|
||
|
||
arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;
|
||
arr[11] = v / 0x100000000 & 0xff;
|
||
arr[12] = v >>> 24 & 0xff;
|
||
arr[13] = v >>> 16 & 0xff;
|
||
arr[14] = v >>> 8 & 0xff;
|
||
arr[15] = v & 0xff;
|
||
return arr;
|
||
}
|
||
|
||
var _default = parse;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 348 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
module.exports = validate;
|
||
|
||
const { RequestError } = __webpack_require__(463);
|
||
const get = __webpack_require__(854);
|
||
const set = __webpack_require__(883);
|
||
|
||
function validate(octokit, options) {
|
||
if (!options.request.validate) {
|
||
return;
|
||
}
|
||
const { validate: params } = options.request;
|
||
|
||
Object.keys(params).forEach(parameterName => {
|
||
const parameter = get(params, parameterName);
|
||
|
||
const expectedType = parameter.type;
|
||
let parentParameterName;
|
||
let parentValue;
|
||
let parentParamIsPresent = true;
|
||
let parentParameterIsArray = false;
|
||
|
||
if (/\./.test(parameterName)) {
|
||
parentParameterName = parameterName.replace(/\.[^.]+$/, "");
|
||
parentParameterIsArray = parentParameterName.slice(-2) === "[]";
|
||
if (parentParameterIsArray) {
|
||
parentParameterName = parentParameterName.slice(0, -2);
|
||
}
|
||
parentValue = get(options, parentParameterName);
|
||
parentParamIsPresent =
|
||
parentParameterName === "headers" ||
|
||
(typeof parentValue === "object" && parentValue !== null);
|
||
}
|
||
|
||
const values = parentParameterIsArray
|
||
? (get(options, parentParameterName) || []).map(
|
||
value => value[parameterName.split(/\./).pop()]
|
||
)
|
||
: [get(options, parameterName)];
|
||
|
||
values.forEach((value, i) => {
|
||
const valueIsPresent = typeof value !== "undefined";
|
||
const valueIsNull = value === null;
|
||
const currentParameterName = parentParameterIsArray
|
||
? parameterName.replace(/\[\]/, `[${i}]`)
|
||
: parameterName;
|
||
|
||
if (!parameter.required && !valueIsPresent) {
|
||
return;
|
||
}
|
||
|
||
// if the parent parameter is of type object but allows null
|
||
// then the child parameters can be ignored
|
||
if (!parentParamIsPresent) {
|
||
return;
|
||
}
|
||
|
||
if (parameter.allowNull && valueIsNull) {
|
||
return;
|
||
}
|
||
|
||
if (!parameter.allowNull && valueIsNull) {
|
||
throw new RequestError(
|
||
`'${currentParameterName}' cannot be null`,
|
||
400,
|
||
{
|
||
request: options
|
||
}
|
||
);
|
||
}
|
||
|
||
if (parameter.required && !valueIsPresent) {
|
||
throw new RequestError(
|
||
`Empty value for parameter '${currentParameterName}': ${JSON.stringify(
|
||
value
|
||
)}`,
|
||
400,
|
||
{
|
||
request: options
|
||
}
|
||
);
|
||
}
|
||
|
||
// parse to integer before checking for enum
|
||
// so that string "1" will match enum with number 1
|
||
if (expectedType === "integer") {
|
||
const unparsedValue = value;
|
||
value = parseInt(value, 10);
|
||
if (isNaN(value)) {
|
||
throw new RequestError(
|
||
`Invalid value for parameter '${currentParameterName}': ${JSON.stringify(
|
||
unparsedValue
|
||
)} is NaN`,
|
||
400,
|
||
{
|
||
request: options
|
||
}
|
||
);
|
||
}
|
||
}
|
||
|
||
if (parameter.enum && parameter.enum.indexOf(String(value)) === -1) {
|
||
throw new RequestError(
|
||
`Invalid value for parameter '${currentParameterName}': ${JSON.stringify(
|
||
value
|
||
)}`,
|
||
400,
|
||
{
|
||
request: options
|
||
}
|
||
);
|
||
}
|
||
|
||
if (parameter.validation) {
|
||
const regex = new RegExp(parameter.validation);
|
||
if (!regex.test(value)) {
|
||
throw new RequestError(
|
||
`Invalid value for parameter '${currentParameterName}': ${JSON.stringify(
|
||
value
|
||
)}`,
|
||
400,
|
||
{
|
||
request: options
|
||
}
|
||
);
|
||
}
|
||
}
|
||
|
||
if (expectedType === "object" && typeof value === "string") {
|
||
try {
|
||
value = JSON.parse(value);
|
||
} catch (exception) {
|
||
throw new RequestError(
|
||
`JSON parse error of value for parameter '${currentParameterName}': ${JSON.stringify(
|
||
value
|
||
)}`,
|
||
400,
|
||
{
|
||
request: options
|
||
}
|
||
);
|
||
}
|
||
}
|
||
|
||
set(options, parameter.mapTo || currentParameterName, value);
|
||
});
|
||
});
|
||
|
||
return options;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 349 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = authenticationRequestError;
|
||
|
||
const { RequestError } = __webpack_require__(463);
|
||
|
||
function authenticationRequestError(state, error, options) {
|
||
/* istanbul ignore next */
|
||
if (!error.headers) throw error;
|
||
|
||
const otpRequired = /required/.test(error.headers["x-github-otp"] || "");
|
||
// handle "2FA required" error only
|
||
if (error.status !== 401 || !otpRequired) {
|
||
throw error;
|
||
}
|
||
|
||
if (
|
||
error.status === 401 &&
|
||
otpRequired &&
|
||
error.request &&
|
||
error.request.headers["x-github-otp"]
|
||
) {
|
||
throw new RequestError(
|
||
"Invalid one-time password for two-factor authentication",
|
||
401,
|
||
{
|
||
headers: error.headers,
|
||
request: options
|
||
}
|
||
);
|
||
}
|
||
|
||
if (typeof state.auth.on2fa !== "function") {
|
||
throw new RequestError(
|
||
"2FA required, but options.on2fa is not a function. See https://github.com/octokit/rest.js#authentication",
|
||
401,
|
||
{
|
||
headers: error.headers,
|
||
request: options
|
||
}
|
||
);
|
||
}
|
||
|
||
return Promise.resolve()
|
||
.then(() => {
|
||
return state.auth.on2fa();
|
||
})
|
||
.then(oneTimePassword => {
|
||
const newOptions = Object.assign(options, {
|
||
headers: Object.assign(
|
||
{ "x-github-otp": oneTimePassword },
|
||
options.headers
|
||
)
|
||
});
|
||
return state.octokit.request(newOptions);
|
||
});
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 350 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
"use strict";
|
||
var prefixMatch;
|
||
|
||
prefixMatch = new RegExp(/(?!xmlns)^.*:/);
|
||
|
||
exports.normalize = function(str) {
|
||
return str.toLowerCase();
|
||
};
|
||
|
||
exports.firstCharLowerCase = function(str) {
|
||
return str.charAt(0).toLowerCase() + str.slice(1);
|
||
};
|
||
|
||
exports.stripPrefix = function(str) {
|
||
return str.replace(prefixMatch, '');
|
||
};
|
||
|
||
exports.parseNumbers = function(str) {
|
||
if (!isNaN(str)) {
|
||
str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str);
|
||
}
|
||
return str;
|
||
};
|
||
|
||
exports.parseBooleans = function(str) {
|
||
if (/^(?:true|false)$/i.test(str)) {
|
||
str = str.toLowerCase() === 'true';
|
||
}
|
||
return str;
|
||
};
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 351 */,
|
||
/* 352 */,
|
||
/* 353 */,
|
||
/* 354 */,
|
||
/* 355 */,
|
||
/* 356 */,
|
||
/* 357 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("assert");
|
||
|
||
/***/ }),
|
||
/* 358 */,
|
||
/* 359 */,
|
||
/* 360 */,
|
||
/* 361 */,
|
||
/* 362 */,
|
||
/* 363 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = register
|
||
|
||
function register (state, name, method, options) {
|
||
if (typeof method !== 'function') {
|
||
throw new Error('method for before hook must be a function')
|
||
}
|
||
|
||
if (!options) {
|
||
options = {}
|
||
}
|
||
|
||
if (Array.isArray(name)) {
|
||
return name.reverse().reduce(function (callback, name) {
|
||
return register.bind(null, state, name, callback, options)
|
||
}, method)()
|
||
}
|
||
|
||
return Promise.resolve()
|
||
.then(function () {
|
||
if (!state.registry[name]) {
|
||
return method(options)
|
||
}
|
||
|
||
return (state.registry[name]).reduce(function (method, registered) {
|
||
return registered.hook.bind(null, method, options)
|
||
}, method)()
|
||
})
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 364 */,
|
||
/* 365 */,
|
||
/* 366 */,
|
||
/* 367 */,
|
||
/* 368 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = function atob(str) {
|
||
return Buffer.from(str, 'base64').toString('binary')
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 369 */,
|
||
/* 370 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = deprecate
|
||
|
||
const loggedMessages = {}
|
||
|
||
function deprecate (message) {
|
||
if (loggedMessages[message]) {
|
||
return
|
||
}
|
||
|
||
console.warn(`DEPRECATED (@octokit/rest): ${message}`)
|
||
loggedMessages[message] = 1
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 371 */,
|
||
/* 372 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = octokitDebug;
|
||
|
||
function octokitDebug(octokit) {
|
||
octokit.hook.wrap("request", (request, options) => {
|
||
octokit.log.debug("request", options);
|
||
const start = Date.now();
|
||
const requestOptions = octokit.request.endpoint.parse(options);
|
||
const path = requestOptions.url.replace(options.baseUrl, "");
|
||
|
||
return request(options)
|
||
.then(response => {
|
||
octokit.log.info(
|
||
`${requestOptions.method} ${path} - ${
|
||
response.status
|
||
} in ${Date.now() - start}ms`
|
||
);
|
||
return response;
|
||
})
|
||
|
||
.catch(error => {
|
||
octokit.log.info(
|
||
`${requestOptions.method} ${path} - ${error.status} in ${Date.now() -
|
||
start}ms`
|
||
);
|
||
throw error;
|
||
});
|
||
});
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 373 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
var coreHttp = __webpack_require__(999);
|
||
var tslib = __webpack_require__(608);
|
||
var coreTracing = __webpack_require__(263);
|
||
var logger$1 = __webpack_require__(928);
|
||
var abortController = __webpack_require__(106);
|
||
var os = __webpack_require__(87);
|
||
var crypto = __webpack_require__(417);
|
||
var stream = __webpack_require__(794);
|
||
__webpack_require__(711);
|
||
var coreLro = __webpack_require__(889);
|
||
var events = __webpack_require__(614);
|
||
var fs = __webpack_require__(747);
|
||
var util = __webpack_require__(669);
|
||
|
||
/*
|
||
* Copyright (c) Microsoft Corporation.
|
||
* Licensed under the MIT License.
|
||
*
|
||
* Code generated by Microsoft (R) AutoRest Code Generator.
|
||
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||
*/
|
||
var BlobServiceProperties = {
|
||
serializedName: "BlobServiceProperties",
|
||
xmlName: "StorageServiceProperties",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobServiceProperties",
|
||
modelProperties: {
|
||
blobAnalyticsLogging: {
|
||
serializedName: "Logging",
|
||
xmlName: "Logging",
|
||
type: {
|
||
name: "Composite",
|
||
className: "Logging"
|
||
}
|
||
},
|
||
hourMetrics: {
|
||
serializedName: "HourMetrics",
|
||
xmlName: "HourMetrics",
|
||
type: {
|
||
name: "Composite",
|
||
className: "Metrics"
|
||
}
|
||
},
|
||
minuteMetrics: {
|
||
serializedName: "MinuteMetrics",
|
||
xmlName: "MinuteMetrics",
|
||
type: {
|
||
name: "Composite",
|
||
className: "Metrics"
|
||
}
|
||
},
|
||
cors: {
|
||
serializedName: "Cors",
|
||
xmlName: "Cors",
|
||
xmlIsWrapped: true,
|
||
xmlElementName: "CorsRule",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "CorsRule"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
defaultServiceVersion: {
|
||
serializedName: "DefaultServiceVersion",
|
||
xmlName: "DefaultServiceVersion",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
deleteRetentionPolicy: {
|
||
serializedName: "DeleteRetentionPolicy",
|
||
xmlName: "DeleteRetentionPolicy",
|
||
type: {
|
||
name: "Composite",
|
||
className: "RetentionPolicy"
|
||
}
|
||
},
|
||
staticWebsite: {
|
||
serializedName: "StaticWebsite",
|
||
xmlName: "StaticWebsite",
|
||
type: {
|
||
name: "Composite",
|
||
className: "StaticWebsite"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var Logging = {
|
||
serializedName: "Logging",
|
||
type: {
|
||
name: "Composite",
|
||
className: "Logging",
|
||
modelProperties: {
|
||
version: {
|
||
serializedName: "Version",
|
||
required: true,
|
||
xmlName: "Version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
deleteProperty: {
|
||
serializedName: "Delete",
|
||
required: true,
|
||
xmlName: "Delete",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
read: {
|
||
serializedName: "Read",
|
||
required: true,
|
||
xmlName: "Read",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
write: {
|
||
serializedName: "Write",
|
||
required: true,
|
||
xmlName: "Write",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
retentionPolicy: {
|
||
serializedName: "RetentionPolicy",
|
||
xmlName: "RetentionPolicy",
|
||
type: {
|
||
name: "Composite",
|
||
className: "RetentionPolicy"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var RetentionPolicy = {
|
||
serializedName: "RetentionPolicy",
|
||
type: {
|
||
name: "Composite",
|
||
className: "RetentionPolicy",
|
||
modelProperties: {
|
||
enabled: {
|
||
serializedName: "Enabled",
|
||
required: true,
|
||
xmlName: "Enabled",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
days: {
|
||
constraints: {
|
||
InclusiveMinimum: 1
|
||
},
|
||
serializedName: "Days",
|
||
xmlName: "Days",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var Metrics = {
|
||
serializedName: "Metrics",
|
||
type: {
|
||
name: "Composite",
|
||
className: "Metrics",
|
||
modelProperties: {
|
||
version: {
|
||
serializedName: "Version",
|
||
xmlName: "Version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
enabled: {
|
||
serializedName: "Enabled",
|
||
required: true,
|
||
xmlName: "Enabled",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
includeAPIs: {
|
||
serializedName: "IncludeAPIs",
|
||
xmlName: "IncludeAPIs",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
retentionPolicy: {
|
||
serializedName: "RetentionPolicy",
|
||
xmlName: "RetentionPolicy",
|
||
type: {
|
||
name: "Composite",
|
||
className: "RetentionPolicy"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var CorsRule = {
|
||
serializedName: "CorsRule",
|
||
type: {
|
||
name: "Composite",
|
||
className: "CorsRule",
|
||
modelProperties: {
|
||
allowedOrigins: {
|
||
serializedName: "AllowedOrigins",
|
||
required: true,
|
||
xmlName: "AllowedOrigins",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
allowedMethods: {
|
||
serializedName: "AllowedMethods",
|
||
required: true,
|
||
xmlName: "AllowedMethods",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
allowedHeaders: {
|
||
serializedName: "AllowedHeaders",
|
||
required: true,
|
||
xmlName: "AllowedHeaders",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
exposedHeaders: {
|
||
serializedName: "ExposedHeaders",
|
||
required: true,
|
||
xmlName: "ExposedHeaders",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
maxAgeInSeconds: {
|
||
constraints: {
|
||
InclusiveMinimum: 0
|
||
},
|
||
serializedName: "MaxAgeInSeconds",
|
||
required: true,
|
||
xmlName: "MaxAgeInSeconds",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var StaticWebsite = {
|
||
serializedName: "StaticWebsite",
|
||
type: {
|
||
name: "Composite",
|
||
className: "StaticWebsite",
|
||
modelProperties: {
|
||
enabled: {
|
||
serializedName: "Enabled",
|
||
required: true,
|
||
xmlName: "Enabled",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
indexDocument: {
|
||
serializedName: "IndexDocument",
|
||
xmlName: "IndexDocument",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorDocument404Path: {
|
||
serializedName: "ErrorDocument404Path",
|
||
xmlName: "ErrorDocument404Path",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
defaultIndexDocumentPath: {
|
||
serializedName: "DefaultIndexDocumentPath",
|
||
xmlName: "DefaultIndexDocumentPath",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var StorageError = {
|
||
serializedName: "StorageError",
|
||
type: {
|
||
name: "Composite",
|
||
className: "StorageError",
|
||
modelProperties: {
|
||
message: {
|
||
serializedName: "Message",
|
||
xmlName: "Message",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
code: {
|
||
serializedName: "Code",
|
||
xmlName: "Code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobServiceStatistics = {
|
||
serializedName: "BlobServiceStatistics",
|
||
xmlName: "StorageServiceStats",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobServiceStatistics",
|
||
modelProperties: {
|
||
geoReplication: {
|
||
serializedName: "GeoReplication",
|
||
xmlName: "GeoReplication",
|
||
type: {
|
||
name: "Composite",
|
||
className: "GeoReplication"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var GeoReplication = {
|
||
serializedName: "GeoReplication",
|
||
type: {
|
||
name: "Composite",
|
||
className: "GeoReplication",
|
||
modelProperties: {
|
||
status: {
|
||
serializedName: "Status",
|
||
required: true,
|
||
xmlName: "Status",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["live", "bootstrap", "unavailable"]
|
||
}
|
||
},
|
||
lastSyncOn: {
|
||
serializedName: "LastSyncTime",
|
||
required: true,
|
||
xmlName: "LastSyncTime",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ListContainersSegmentResponse = {
|
||
serializedName: "ListContainersSegmentResponse",
|
||
xmlName: "EnumerationResults",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ListContainersSegmentResponse",
|
||
modelProperties: {
|
||
serviceEndpoint: {
|
||
serializedName: "ServiceEndpoint",
|
||
required: true,
|
||
xmlName: "ServiceEndpoint",
|
||
xmlIsAttribute: true,
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
prefix: {
|
||
serializedName: "Prefix",
|
||
xmlName: "Prefix",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
marker: {
|
||
serializedName: "Marker",
|
||
xmlName: "Marker",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
maxPageSize: {
|
||
serializedName: "MaxResults",
|
||
xmlName: "MaxResults",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
containerItems: {
|
||
serializedName: "ContainerItems",
|
||
required: true,
|
||
xmlName: "Containers",
|
||
xmlIsWrapped: true,
|
||
xmlElementName: "Container",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerItem"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
continuationToken: {
|
||
serializedName: "NextMarker",
|
||
xmlName: "NextMarker",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerItem = {
|
||
serializedName: "ContainerItem",
|
||
xmlName: "Container",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerItem",
|
||
modelProperties: {
|
||
name: {
|
||
serializedName: "Name",
|
||
required: true,
|
||
xmlName: "Name",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
deleted: {
|
||
serializedName: "Deleted",
|
||
xmlName: "Deleted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "Version",
|
||
xmlName: "Version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
properties: {
|
||
serializedName: "Properties",
|
||
xmlName: "Properties",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerProperties"
|
||
}
|
||
},
|
||
metadata: {
|
||
serializedName: "Metadata",
|
||
xmlName: "Metadata",
|
||
type: {
|
||
name: "Dictionary",
|
||
value: { type: { name: "String" } }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerProperties = {
|
||
serializedName: "ContainerProperties",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerProperties",
|
||
modelProperties: {
|
||
lastModified: {
|
||
serializedName: "Last-Modified",
|
||
required: true,
|
||
xmlName: "Last-Modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "Etag",
|
||
required: true,
|
||
xmlName: "Etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
leaseStatus: {
|
||
serializedName: "LeaseStatus",
|
||
xmlName: "LeaseStatus",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["locked", "unlocked"]
|
||
}
|
||
},
|
||
leaseState: {
|
||
serializedName: "LeaseState",
|
||
xmlName: "LeaseState",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"available",
|
||
"leased",
|
||
"expired",
|
||
"breaking",
|
||
"broken"
|
||
]
|
||
}
|
||
},
|
||
leaseDuration: {
|
||
serializedName: "LeaseDuration",
|
||
xmlName: "LeaseDuration",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["infinite", "fixed"]
|
||
}
|
||
},
|
||
publicAccess: {
|
||
serializedName: "PublicAccess",
|
||
xmlName: "PublicAccess",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["container", "blob"]
|
||
}
|
||
},
|
||
hasImmutabilityPolicy: {
|
||
serializedName: "HasImmutabilityPolicy",
|
||
xmlName: "HasImmutabilityPolicy",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
hasLegalHold: {
|
||
serializedName: "HasLegalHold",
|
||
xmlName: "HasLegalHold",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
defaultEncryptionScope: {
|
||
serializedName: "DefaultEncryptionScope",
|
||
xmlName: "DefaultEncryptionScope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
preventEncryptionScopeOverride: {
|
||
serializedName: "DenyEncryptionScopeOverride",
|
||
xmlName: "DenyEncryptionScopeOverride",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
deletedOn: {
|
||
serializedName: "DeletedTime",
|
||
xmlName: "DeletedTime",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
remainingRetentionDays: {
|
||
serializedName: "RemainingRetentionDays",
|
||
xmlName: "RemainingRetentionDays",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var KeyInfo = {
|
||
serializedName: "KeyInfo",
|
||
type: {
|
||
name: "Composite",
|
||
className: "KeyInfo",
|
||
modelProperties: {
|
||
startsOn: {
|
||
serializedName: "Start",
|
||
required: true,
|
||
xmlName: "Start",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
expiresOn: {
|
||
serializedName: "Expiry",
|
||
required: true,
|
||
xmlName: "Expiry",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var UserDelegationKey = {
|
||
serializedName: "UserDelegationKey",
|
||
type: {
|
||
name: "Composite",
|
||
className: "UserDelegationKey",
|
||
modelProperties: {
|
||
signedObjectId: {
|
||
serializedName: "SignedOid",
|
||
required: true,
|
||
xmlName: "SignedOid",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
signedTenantId: {
|
||
serializedName: "SignedTid",
|
||
required: true,
|
||
xmlName: "SignedTid",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
signedStartsOn: {
|
||
serializedName: "SignedStart",
|
||
required: true,
|
||
xmlName: "SignedStart",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
signedExpiresOn: {
|
||
serializedName: "SignedExpiry",
|
||
required: true,
|
||
xmlName: "SignedExpiry",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
signedService: {
|
||
serializedName: "SignedService",
|
||
required: true,
|
||
xmlName: "SignedService",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
signedVersion: {
|
||
serializedName: "SignedVersion",
|
||
required: true,
|
||
xmlName: "SignedVersion",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
value: {
|
||
serializedName: "Value",
|
||
required: true,
|
||
xmlName: "Value",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var FilterBlobSegment = {
|
||
serializedName: "FilterBlobSegment",
|
||
xmlName: "EnumerationResults",
|
||
type: {
|
||
name: "Composite",
|
||
className: "FilterBlobSegment",
|
||
modelProperties: {
|
||
serviceEndpoint: {
|
||
serializedName: "ServiceEndpoint",
|
||
required: true,
|
||
xmlName: "ServiceEndpoint",
|
||
xmlIsAttribute: true,
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
where: {
|
||
serializedName: "Where",
|
||
required: true,
|
||
xmlName: "Where",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobs: {
|
||
serializedName: "Blobs",
|
||
required: true,
|
||
xmlName: "Blobs",
|
||
xmlIsWrapped: true,
|
||
xmlElementName: "Blob",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "FilterBlobItem"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
continuationToken: {
|
||
serializedName: "NextMarker",
|
||
xmlName: "NextMarker",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var FilterBlobItem = {
|
||
serializedName: "FilterBlobItem",
|
||
xmlName: "Blob",
|
||
type: {
|
||
name: "Composite",
|
||
className: "FilterBlobItem",
|
||
modelProperties: {
|
||
name: {
|
||
serializedName: "Name",
|
||
required: true,
|
||
xmlName: "Name",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
containerName: {
|
||
serializedName: "ContainerName",
|
||
required: true,
|
||
xmlName: "ContainerName",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
tags: {
|
||
serializedName: "Tags",
|
||
xmlName: "Tags",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobTags"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobTags = {
|
||
serializedName: "BlobTags",
|
||
xmlName: "Tags",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobTags",
|
||
modelProperties: {
|
||
blobTagSet: {
|
||
serializedName: "BlobTagSet",
|
||
required: true,
|
||
xmlName: "TagSet",
|
||
xmlIsWrapped: true,
|
||
xmlElementName: "Tag",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobTag"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobTag = {
|
||
serializedName: "BlobTag",
|
||
xmlName: "Tag",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobTag",
|
||
modelProperties: {
|
||
key: {
|
||
serializedName: "Key",
|
||
required: true,
|
||
xmlName: "Key",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
value: {
|
||
serializedName: "Value",
|
||
required: true,
|
||
xmlName: "Value",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var SignedIdentifier = {
|
||
serializedName: "SignedIdentifier",
|
||
xmlName: "SignedIdentifier",
|
||
type: {
|
||
name: "Composite",
|
||
className: "SignedIdentifier",
|
||
modelProperties: {
|
||
id: {
|
||
serializedName: "Id",
|
||
required: true,
|
||
xmlName: "Id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
accessPolicy: {
|
||
serializedName: "AccessPolicy",
|
||
xmlName: "AccessPolicy",
|
||
type: {
|
||
name: "Composite",
|
||
className: "AccessPolicy"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var AccessPolicy = {
|
||
serializedName: "AccessPolicy",
|
||
type: {
|
||
name: "Composite",
|
||
className: "AccessPolicy",
|
||
modelProperties: {
|
||
startsOn: {
|
||
serializedName: "Start",
|
||
xmlName: "Start",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
expiresOn: {
|
||
serializedName: "Expiry",
|
||
xmlName: "Expiry",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
permissions: {
|
||
serializedName: "Permission",
|
||
xmlName: "Permission",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ListBlobsFlatSegmentResponse = {
|
||
serializedName: "ListBlobsFlatSegmentResponse",
|
||
xmlName: "EnumerationResults",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ListBlobsFlatSegmentResponse",
|
||
modelProperties: {
|
||
serviceEndpoint: {
|
||
serializedName: "ServiceEndpoint",
|
||
required: true,
|
||
xmlName: "ServiceEndpoint",
|
||
xmlIsAttribute: true,
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
containerName: {
|
||
serializedName: "ContainerName",
|
||
required: true,
|
||
xmlName: "ContainerName",
|
||
xmlIsAttribute: true,
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
prefix: {
|
||
serializedName: "Prefix",
|
||
xmlName: "Prefix",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
marker: {
|
||
serializedName: "Marker",
|
||
xmlName: "Marker",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
maxPageSize: {
|
||
serializedName: "MaxResults",
|
||
xmlName: "MaxResults",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
segment: {
|
||
serializedName: "Segment",
|
||
xmlName: "Blobs",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobFlatListSegment"
|
||
}
|
||
},
|
||
continuationToken: {
|
||
serializedName: "NextMarker",
|
||
xmlName: "NextMarker",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobFlatListSegment = {
|
||
serializedName: "BlobFlatListSegment",
|
||
xmlName: "Blobs",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobFlatListSegment",
|
||
modelProperties: {
|
||
blobItems: {
|
||
serializedName: "BlobItems",
|
||
required: true,
|
||
xmlName: "BlobItems",
|
||
xmlElementName: "Blob",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobItemInternal"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobItemInternal = {
|
||
serializedName: "BlobItemInternal",
|
||
xmlName: "Blob",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobItemInternal",
|
||
modelProperties: {
|
||
name: {
|
||
serializedName: "Name",
|
||
required: true,
|
||
xmlName: "Name",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
deleted: {
|
||
serializedName: "Deleted",
|
||
required: true,
|
||
xmlName: "Deleted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
snapshot: {
|
||
serializedName: "Snapshot",
|
||
required: true,
|
||
xmlName: "Snapshot",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "VersionId",
|
||
xmlName: "VersionId",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
isCurrentVersion: {
|
||
serializedName: "IsCurrentVersion",
|
||
xmlName: "IsCurrentVersion",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
properties: {
|
||
serializedName: "Properties",
|
||
xmlName: "Properties",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobPropertiesInternal"
|
||
}
|
||
},
|
||
metadata: {
|
||
serializedName: "Metadata",
|
||
xmlName: "Metadata",
|
||
type: {
|
||
name: "Dictionary",
|
||
value: { type: { name: "String" } }
|
||
}
|
||
},
|
||
blobTags: {
|
||
serializedName: "BlobTags",
|
||
xmlName: "Tags",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobTags"
|
||
}
|
||
},
|
||
objectReplicationMetadata: {
|
||
serializedName: "ObjectReplicationMetadata",
|
||
xmlName: "OrMetadata",
|
||
type: {
|
||
name: "Dictionary",
|
||
value: { type: { name: "String" } }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobPropertiesInternal = {
|
||
serializedName: "BlobPropertiesInternal",
|
||
xmlName: "Properties",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobPropertiesInternal",
|
||
modelProperties: {
|
||
createdOn: {
|
||
serializedName: "Creation-Time",
|
||
xmlName: "Creation-Time",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "Last-Modified",
|
||
required: true,
|
||
xmlName: "Last-Modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "Etag",
|
||
required: true,
|
||
xmlName: "Etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentLength: {
|
||
serializedName: "Content-Length",
|
||
xmlName: "Content-Length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
contentType: {
|
||
serializedName: "Content-Type",
|
||
xmlName: "Content-Type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentEncoding: {
|
||
serializedName: "Content-Encoding",
|
||
xmlName: "Content-Encoding",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentLanguage: {
|
||
serializedName: "Content-Language",
|
||
xmlName: "Content-Language",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "Content-MD5",
|
||
xmlName: "Content-MD5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
contentDisposition: {
|
||
serializedName: "Content-Disposition",
|
||
xmlName: "Content-Disposition",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
cacheControl: {
|
||
serializedName: "Cache-Control",
|
||
xmlName: "Cache-Control",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobSequenceNumber: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
blobType: {
|
||
serializedName: "BlobType",
|
||
xmlName: "BlobType",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
|
||
}
|
||
},
|
||
leaseStatus: {
|
||
serializedName: "LeaseStatus",
|
||
xmlName: "LeaseStatus",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["locked", "unlocked"]
|
||
}
|
||
},
|
||
leaseState: {
|
||
serializedName: "LeaseState",
|
||
xmlName: "LeaseState",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"available",
|
||
"leased",
|
||
"expired",
|
||
"breaking",
|
||
"broken"
|
||
]
|
||
}
|
||
},
|
||
leaseDuration: {
|
||
serializedName: "LeaseDuration",
|
||
xmlName: "LeaseDuration",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["infinite", "fixed"]
|
||
}
|
||
},
|
||
copyId: {
|
||
serializedName: "CopyId",
|
||
xmlName: "CopyId",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyStatus: {
|
||
serializedName: "CopyStatus",
|
||
xmlName: "CopyStatus",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["pending", "success", "aborted", "failed"]
|
||
}
|
||
},
|
||
copySource: {
|
||
serializedName: "CopySource",
|
||
xmlName: "CopySource",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyProgress: {
|
||
serializedName: "CopyProgress",
|
||
xmlName: "CopyProgress",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyCompletedOn: {
|
||
serializedName: "CopyCompletionTime",
|
||
xmlName: "CopyCompletionTime",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
copyStatusDescription: {
|
||
serializedName: "CopyStatusDescription",
|
||
xmlName: "CopyStatusDescription",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
serverEncrypted: {
|
||
serializedName: "ServerEncrypted",
|
||
xmlName: "ServerEncrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
incrementalCopy: {
|
||
serializedName: "IncrementalCopy",
|
||
xmlName: "IncrementalCopy",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
destinationSnapshot: {
|
||
serializedName: "DestinationSnapshot",
|
||
xmlName: "DestinationSnapshot",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
deletedOn: {
|
||
serializedName: "DeletedTime",
|
||
xmlName: "DeletedTime",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
remainingRetentionDays: {
|
||
serializedName: "RemainingRetentionDays",
|
||
xmlName: "RemainingRetentionDays",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
accessTier: {
|
||
serializedName: "AccessTier",
|
||
xmlName: "AccessTier",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"P4",
|
||
"P6",
|
||
"P10",
|
||
"P15",
|
||
"P20",
|
||
"P30",
|
||
"P40",
|
||
"P50",
|
||
"P60",
|
||
"P70",
|
||
"P80",
|
||
"Hot",
|
||
"Cool",
|
||
"Archive"
|
||
]
|
||
}
|
||
},
|
||
accessTierInferred: {
|
||
serializedName: "AccessTierInferred",
|
||
xmlName: "AccessTierInferred",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
archiveStatus: {
|
||
serializedName: "ArchiveStatus",
|
||
xmlName: "ArchiveStatus",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"rehydrate-pending-to-hot",
|
||
"rehydrate-pending-to-cool"
|
||
]
|
||
}
|
||
},
|
||
customerProvidedKeySha256: {
|
||
serializedName: "CustomerProvidedKeySha256",
|
||
xmlName: "CustomerProvidedKeySha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "EncryptionScope",
|
||
xmlName: "EncryptionScope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
accessTierChangedOn: {
|
||
serializedName: "AccessTierChangeTime",
|
||
xmlName: "AccessTierChangeTime",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
tagCount: {
|
||
serializedName: "TagCount",
|
||
xmlName: "TagCount",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
expiresOn: {
|
||
serializedName: "Expiry-Time",
|
||
xmlName: "Expiry-Time",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isSealed: {
|
||
serializedName: "Sealed",
|
||
xmlName: "Sealed",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
rehydratePriority: {
|
||
serializedName: "RehydratePriority",
|
||
xmlName: "RehydratePriority",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["High", "Standard"]
|
||
}
|
||
},
|
||
lastAccessedOn: {
|
||
serializedName: "LastAccessTime",
|
||
xmlName: "LastAccessTime",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ListBlobsHierarchySegmentResponse = {
|
||
serializedName: "ListBlobsHierarchySegmentResponse",
|
||
xmlName: "EnumerationResults",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ListBlobsHierarchySegmentResponse",
|
||
modelProperties: {
|
||
serviceEndpoint: {
|
||
serializedName: "ServiceEndpoint",
|
||
required: true,
|
||
xmlName: "ServiceEndpoint",
|
||
xmlIsAttribute: true,
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
containerName: {
|
||
serializedName: "ContainerName",
|
||
required: true,
|
||
xmlName: "ContainerName",
|
||
xmlIsAttribute: true,
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
prefix: {
|
||
serializedName: "Prefix",
|
||
xmlName: "Prefix",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
marker: {
|
||
serializedName: "Marker",
|
||
xmlName: "Marker",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
maxPageSize: {
|
||
serializedName: "MaxResults",
|
||
xmlName: "MaxResults",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
delimiter: {
|
||
serializedName: "Delimiter",
|
||
xmlName: "Delimiter",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
segment: {
|
||
serializedName: "Segment",
|
||
xmlName: "Blobs",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobHierarchyListSegment"
|
||
}
|
||
},
|
||
continuationToken: {
|
||
serializedName: "NextMarker",
|
||
xmlName: "NextMarker",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobHierarchyListSegment = {
|
||
serializedName: "BlobHierarchyListSegment",
|
||
xmlName: "Blobs",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobHierarchyListSegment",
|
||
modelProperties: {
|
||
blobPrefixes: {
|
||
serializedName: "BlobPrefixes",
|
||
xmlName: "BlobPrefixes",
|
||
xmlElementName: "BlobPrefix",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobPrefix"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
blobItems: {
|
||
serializedName: "BlobItems",
|
||
required: true,
|
||
xmlName: "BlobItems",
|
||
xmlElementName: "Blob",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobItemInternal"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobPrefix = {
|
||
serializedName: "BlobPrefix",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobPrefix",
|
||
modelProperties: {
|
||
name: {
|
||
serializedName: "Name",
|
||
required: true,
|
||
xmlName: "Name",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DataLakeStorageError = {
|
||
serializedName: "DataLakeStorageError",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DataLakeStorageError",
|
||
modelProperties: {
|
||
dataLakeStorageErrorDetails: {
|
||
serializedName: "error",
|
||
xmlName: "error",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DataLakeStorageErrorError"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DataLakeStorageErrorError = {
|
||
serializedName: "DataLakeStorageErrorError",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DataLakeStorageErrorError",
|
||
modelProperties: {
|
||
code: {
|
||
serializedName: "Code",
|
||
xmlName: "Code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
message: {
|
||
serializedName: "Message",
|
||
xmlName: "Message",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockLookupList = {
|
||
serializedName: "BlockLookupList",
|
||
xmlName: "BlockList",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockLookupList",
|
||
modelProperties: {
|
||
committed: {
|
||
serializedName: "Committed",
|
||
xmlName: "Committed",
|
||
xmlElementName: "Committed",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
uncommitted: {
|
||
serializedName: "Uncommitted",
|
||
xmlName: "Uncommitted",
|
||
xmlElementName: "Uncommitted",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
latest: {
|
||
serializedName: "Latest",
|
||
xmlName: "Latest",
|
||
xmlElementName: "Latest",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockList = {
|
||
serializedName: "BlockList",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockList",
|
||
modelProperties: {
|
||
committedBlocks: {
|
||
serializedName: "CommittedBlocks",
|
||
xmlName: "CommittedBlocks",
|
||
xmlIsWrapped: true,
|
||
xmlElementName: "Block",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "Block"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
uncommittedBlocks: {
|
||
serializedName: "UncommittedBlocks",
|
||
xmlName: "UncommittedBlocks",
|
||
xmlIsWrapped: true,
|
||
xmlElementName: "Block",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "Block"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var Block = {
|
||
serializedName: "Block",
|
||
type: {
|
||
name: "Composite",
|
||
className: "Block",
|
||
modelProperties: {
|
||
name: {
|
||
serializedName: "Name",
|
||
required: true,
|
||
xmlName: "Name",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
size: {
|
||
serializedName: "Size",
|
||
required: true,
|
||
xmlName: "Size",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageList = {
|
||
serializedName: "PageList",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageList",
|
||
modelProperties: {
|
||
pageRange: {
|
||
serializedName: "PageRange",
|
||
xmlName: "PageRange",
|
||
xmlElementName: "PageRange",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageRange"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
clearRange: {
|
||
serializedName: "ClearRange",
|
||
xmlName: "ClearRange",
|
||
xmlElementName: "ClearRange",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "ClearRange"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageRange = {
|
||
serializedName: "PageRange",
|
||
xmlName: "PageRange",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageRange",
|
||
modelProperties: {
|
||
start: {
|
||
serializedName: "Start",
|
||
required: true,
|
||
xmlName: "Start",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
end: {
|
||
serializedName: "End",
|
||
required: true,
|
||
xmlName: "End",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ClearRange = {
|
||
serializedName: "ClearRange",
|
||
xmlName: "ClearRange",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ClearRange",
|
||
modelProperties: {
|
||
start: {
|
||
serializedName: "Start",
|
||
required: true,
|
||
xmlName: "Start",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
end: {
|
||
serializedName: "End",
|
||
required: true,
|
||
xmlName: "End",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var QueryRequest = {
|
||
serializedName: "QueryRequest",
|
||
xmlName: "QueryRequest",
|
||
type: {
|
||
name: "Composite",
|
||
className: "QueryRequest",
|
||
modelProperties: {
|
||
queryType: {
|
||
serializedName: "QueryType",
|
||
required: true,
|
||
xmlName: "QueryType",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
expression: {
|
||
serializedName: "Expression",
|
||
required: true,
|
||
xmlName: "Expression",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
inputSerialization: {
|
||
serializedName: "InputSerialization",
|
||
xmlName: "InputSerialization",
|
||
type: {
|
||
name: "Composite",
|
||
className: "QuerySerialization"
|
||
}
|
||
},
|
||
outputSerialization: {
|
||
serializedName: "OutputSerialization",
|
||
xmlName: "OutputSerialization",
|
||
type: {
|
||
name: "Composite",
|
||
className: "QuerySerialization"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var QuerySerialization = {
|
||
serializedName: "QuerySerialization",
|
||
type: {
|
||
name: "Composite",
|
||
className: "QuerySerialization",
|
||
modelProperties: {
|
||
format: {
|
||
serializedName: "Format",
|
||
xmlName: "Format",
|
||
type: {
|
||
name: "Composite",
|
||
className: "QueryFormat"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var QueryFormat = {
|
||
serializedName: "QueryFormat",
|
||
type: {
|
||
name: "Composite",
|
||
className: "QueryFormat",
|
||
modelProperties: {
|
||
type: {
|
||
serializedName: "Type",
|
||
xmlName: "Type",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["delimited", "json", "arrow"]
|
||
}
|
||
},
|
||
delimitedTextConfiguration: {
|
||
serializedName: "DelimitedTextConfiguration",
|
||
xmlName: "DelimitedTextConfiguration",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DelimitedTextConfiguration"
|
||
}
|
||
},
|
||
jsonTextConfiguration: {
|
||
serializedName: "JsonTextConfiguration",
|
||
xmlName: "JsonTextConfiguration",
|
||
type: {
|
||
name: "Composite",
|
||
className: "JsonTextConfiguration"
|
||
}
|
||
},
|
||
arrowConfiguration: {
|
||
serializedName: "ArrowConfiguration",
|
||
xmlName: "ArrowConfiguration",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ArrowConfiguration"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DelimitedTextConfiguration = {
|
||
serializedName: "DelimitedTextConfiguration",
|
||
xmlName: "DelimitedTextConfiguration",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DelimitedTextConfiguration",
|
||
modelProperties: {
|
||
columnSeparator: {
|
||
serializedName: "ColumnSeparator",
|
||
required: true,
|
||
xmlName: "ColumnSeparator",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
fieldQuote: {
|
||
serializedName: "FieldQuote",
|
||
required: true,
|
||
xmlName: "FieldQuote",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
recordSeparator: {
|
||
serializedName: "RecordSeparator",
|
||
required: true,
|
||
xmlName: "RecordSeparator",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
escapeChar: {
|
||
serializedName: "EscapeChar",
|
||
required: true,
|
||
xmlName: "EscapeChar",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
headersPresent: {
|
||
serializedName: "HeadersPresent",
|
||
required: true,
|
||
xmlName: "HasHeaders",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var JsonTextConfiguration = {
|
||
serializedName: "JsonTextConfiguration",
|
||
xmlName: "JsonTextConfiguration",
|
||
type: {
|
||
name: "Composite",
|
||
className: "JsonTextConfiguration",
|
||
modelProperties: {
|
||
recordSeparator: {
|
||
serializedName: "RecordSeparator",
|
||
required: true,
|
||
xmlName: "RecordSeparator",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ArrowConfiguration = {
|
||
serializedName: "ArrowConfiguration",
|
||
xmlName: "ArrowConfiguration",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ArrowConfiguration",
|
||
modelProperties: {
|
||
schema: {
|
||
serializedName: "Schema",
|
||
required: true,
|
||
xmlName: "Schema",
|
||
xmlIsWrapped: true,
|
||
xmlElementName: "Field",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "ArrowField"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ArrowField = {
|
||
serializedName: "ArrowField",
|
||
xmlName: "Field",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ArrowField",
|
||
modelProperties: {
|
||
type: {
|
||
serializedName: "Type",
|
||
required: true,
|
||
xmlName: "Type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
name: {
|
||
serializedName: "Name",
|
||
xmlName: "Name",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
precision: {
|
||
serializedName: "Precision",
|
||
xmlName: "Precision",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
scale: {
|
||
serializedName: "Scale",
|
||
xmlName: "Scale",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceSetPropertiesHeaders = {
|
||
serializedName: "Service_setPropertiesHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceSetPropertiesHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceSetPropertiesExceptionHeaders = {
|
||
serializedName: "Service_setPropertiesExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceSetPropertiesExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceGetPropertiesHeaders = {
|
||
serializedName: "Service_getPropertiesHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceGetPropertiesHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceGetPropertiesExceptionHeaders = {
|
||
serializedName: "Service_getPropertiesExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceGetPropertiesExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceGetStatisticsHeaders = {
|
||
serializedName: "Service_getStatisticsHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceGetStatisticsHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceGetStatisticsExceptionHeaders = {
|
||
serializedName: "Service_getStatisticsExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceGetStatisticsExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceListContainersSegmentHeaders = {
|
||
serializedName: "Service_listContainersSegmentHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceListContainersSegmentHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceListContainersSegmentExceptionHeaders = {
|
||
serializedName: "Service_listContainersSegmentExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceListContainersSegmentExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceGetUserDelegationKeyHeaders = {
|
||
serializedName: "Service_getUserDelegationKeyHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceGetUserDelegationKeyHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceGetUserDelegationKeyExceptionHeaders = {
|
||
serializedName: "Service_getUserDelegationKeyExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceGetUserDelegationKeyExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceGetAccountInfoHeaders = {
|
||
serializedName: "Service_getAccountInfoHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceGetAccountInfoHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
skuName: {
|
||
serializedName: "x-ms-sku-name",
|
||
xmlName: "x-ms-sku-name",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"Standard_LRS",
|
||
"Standard_GRS",
|
||
"Standard_RAGRS",
|
||
"Standard_ZRS",
|
||
"Premium_LRS"
|
||
]
|
||
}
|
||
},
|
||
accountKind: {
|
||
serializedName: "x-ms-account-kind",
|
||
xmlName: "x-ms-account-kind",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"Storage",
|
||
"BlobStorage",
|
||
"StorageV2",
|
||
"FileStorage",
|
||
"BlockBlobStorage"
|
||
]
|
||
}
|
||
},
|
||
isHierarchicalNamespaceEnabled: {
|
||
serializedName: "x-ms-is-hns-enabled",
|
||
xmlName: "x-ms-is-hns-enabled",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceGetAccountInfoExceptionHeaders = {
|
||
serializedName: "Service_getAccountInfoExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceGetAccountInfoExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceSubmitBatchHeaders = {
|
||
serializedName: "Service_submitBatchHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceSubmitBatchHeaders",
|
||
modelProperties: {
|
||
contentType: {
|
||
serializedName: "content-type",
|
||
xmlName: "content-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceSubmitBatchExceptionHeaders = {
|
||
serializedName: "Service_submitBatchExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceSubmitBatchExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceFilterBlobsHeaders = {
|
||
serializedName: "Service_filterBlobsHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceFilterBlobsHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ServiceFilterBlobsExceptionHeaders = {
|
||
serializedName: "Service_filterBlobsExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ServiceFilterBlobsExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerCreateHeaders = {
|
||
serializedName: "Container_createHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerCreateHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerCreateExceptionHeaders = {
|
||
serializedName: "Container_createExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerCreateExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerGetPropertiesHeaders = {
|
||
serializedName: "Container_getPropertiesHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerGetPropertiesHeaders",
|
||
modelProperties: {
|
||
metadata: {
|
||
serializedName: "x-ms-meta",
|
||
xmlName: "x-ms-meta",
|
||
type: {
|
||
name: "Dictionary",
|
||
value: { type: { name: "String" } }
|
||
},
|
||
headerCollectionPrefix: "x-ms-meta-"
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
leaseDuration: {
|
||
serializedName: "x-ms-lease-duration",
|
||
xmlName: "x-ms-lease-duration",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["infinite", "fixed"]
|
||
}
|
||
},
|
||
leaseState: {
|
||
serializedName: "x-ms-lease-state",
|
||
xmlName: "x-ms-lease-state",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"available",
|
||
"leased",
|
||
"expired",
|
||
"breaking",
|
||
"broken"
|
||
]
|
||
}
|
||
},
|
||
leaseStatus: {
|
||
serializedName: "x-ms-lease-status",
|
||
xmlName: "x-ms-lease-status",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["locked", "unlocked"]
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
blobPublicAccess: {
|
||
serializedName: "x-ms-blob-public-access",
|
||
xmlName: "x-ms-blob-public-access",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["container", "blob"]
|
||
}
|
||
},
|
||
hasImmutabilityPolicy: {
|
||
serializedName: "x-ms-has-immutability-policy",
|
||
xmlName: "x-ms-has-immutability-policy",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
hasLegalHold: {
|
||
serializedName: "x-ms-has-legal-hold",
|
||
xmlName: "x-ms-has-legal-hold",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
defaultEncryptionScope: {
|
||
serializedName: "x-ms-default-encryption-scope",
|
||
xmlName: "x-ms-default-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
denyEncryptionScopeOverride: {
|
||
serializedName: "x-ms-deny-encryption-scope-override",
|
||
xmlName: "x-ms-deny-encryption-scope-override",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerGetPropertiesExceptionHeaders = {
|
||
serializedName: "Container_getPropertiesExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerGetPropertiesExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerDeleteHeaders = {
|
||
serializedName: "Container_deleteHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerDeleteHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerDeleteExceptionHeaders = {
|
||
serializedName: "Container_deleteExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerDeleteExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerSetMetadataHeaders = {
|
||
serializedName: "Container_setMetadataHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerSetMetadataHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerSetMetadataExceptionHeaders = {
|
||
serializedName: "Container_setMetadataExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerSetMetadataExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerGetAccessPolicyHeaders = {
|
||
serializedName: "Container_getAccessPolicyHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerGetAccessPolicyHeaders",
|
||
modelProperties: {
|
||
blobPublicAccess: {
|
||
serializedName: "x-ms-blob-public-access",
|
||
xmlName: "x-ms-blob-public-access",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["container", "blob"]
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerGetAccessPolicyExceptionHeaders = {
|
||
serializedName: "Container_getAccessPolicyExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerGetAccessPolicyExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerSetAccessPolicyHeaders = {
|
||
serializedName: "Container_setAccessPolicyHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerSetAccessPolicyHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerSetAccessPolicyExceptionHeaders = {
|
||
serializedName: "Container_setAccessPolicyExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerSetAccessPolicyExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerRestoreHeaders = {
|
||
serializedName: "Container_restoreHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerRestoreHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerRestoreExceptionHeaders = {
|
||
serializedName: "Container_restoreExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerRestoreExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerRenameHeaders = {
|
||
serializedName: "Container_renameHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerRenameHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerRenameExceptionHeaders = {
|
||
serializedName: "Container_renameExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerRenameExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerSubmitBatchHeaders = {
|
||
serializedName: "Container_submitBatchHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerSubmitBatchHeaders",
|
||
modelProperties: {
|
||
contentType: {
|
||
serializedName: "content-type",
|
||
xmlName: "content-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerSubmitBatchExceptionHeaders = {
|
||
serializedName: "Container_submitBatchExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerSubmitBatchExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerAcquireLeaseHeaders = {
|
||
serializedName: "Container_acquireLeaseHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerAcquireLeaseHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
leaseId: {
|
||
serializedName: "x-ms-lease-id",
|
||
xmlName: "x-ms-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerAcquireLeaseExceptionHeaders = {
|
||
serializedName: "Container_acquireLeaseExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerAcquireLeaseExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerReleaseLeaseHeaders = {
|
||
serializedName: "Container_releaseLeaseHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerReleaseLeaseHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerReleaseLeaseExceptionHeaders = {
|
||
serializedName: "Container_releaseLeaseExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerReleaseLeaseExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerRenewLeaseHeaders = {
|
||
serializedName: "Container_renewLeaseHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerRenewLeaseHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
leaseId: {
|
||
serializedName: "x-ms-lease-id",
|
||
xmlName: "x-ms-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerRenewLeaseExceptionHeaders = {
|
||
serializedName: "Container_renewLeaseExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerRenewLeaseExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerBreakLeaseHeaders = {
|
||
serializedName: "Container_breakLeaseHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerBreakLeaseHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
leaseTime: {
|
||
serializedName: "x-ms-lease-time",
|
||
xmlName: "x-ms-lease-time",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerBreakLeaseExceptionHeaders = {
|
||
serializedName: "Container_breakLeaseExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerBreakLeaseExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerChangeLeaseHeaders = {
|
||
serializedName: "Container_changeLeaseHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerChangeLeaseHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
leaseId: {
|
||
serializedName: "x-ms-lease-id",
|
||
xmlName: "x-ms-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerChangeLeaseExceptionHeaders = {
|
||
serializedName: "Container_changeLeaseExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerChangeLeaseExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerListBlobFlatSegmentHeaders = {
|
||
serializedName: "Container_listBlobFlatSegmentHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerListBlobFlatSegmentHeaders",
|
||
modelProperties: {
|
||
contentType: {
|
||
serializedName: "content-type",
|
||
xmlName: "content-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerListBlobFlatSegmentExceptionHeaders = {
|
||
serializedName: "Container_listBlobFlatSegmentExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerListBlobFlatSegmentExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerListBlobHierarchySegmentHeaders = {
|
||
serializedName: "Container_listBlobHierarchySegmentHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerListBlobHierarchySegmentHeaders",
|
||
modelProperties: {
|
||
contentType: {
|
||
serializedName: "content-type",
|
||
xmlName: "content-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerListBlobHierarchySegmentExceptionHeaders = {
|
||
serializedName: "Container_listBlobHierarchySegmentExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerListBlobHierarchySegmentExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerGetAccountInfoHeaders = {
|
||
serializedName: "Container_getAccountInfoHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerGetAccountInfoHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
skuName: {
|
||
serializedName: "x-ms-sku-name",
|
||
xmlName: "x-ms-sku-name",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"Standard_LRS",
|
||
"Standard_GRS",
|
||
"Standard_RAGRS",
|
||
"Standard_ZRS",
|
||
"Premium_LRS"
|
||
]
|
||
}
|
||
},
|
||
accountKind: {
|
||
serializedName: "x-ms-account-kind",
|
||
xmlName: "x-ms-account-kind",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"Storage",
|
||
"BlobStorage",
|
||
"StorageV2",
|
||
"FileStorage",
|
||
"BlockBlobStorage"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var ContainerGetAccountInfoExceptionHeaders = {
|
||
serializedName: "Container_getAccountInfoExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "ContainerGetAccountInfoExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DirectoryCreateHeaders = {
|
||
serializedName: "Directory_createHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DirectoryCreateHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentLength: {
|
||
serializedName: "content-length",
|
||
xmlName: "content-length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DirectoryCreateExceptionHeaders = {
|
||
serializedName: "Directory_createExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DirectoryCreateExceptionHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DirectoryRenameHeaders = {
|
||
serializedName: "Directory_renameHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DirectoryRenameHeaders",
|
||
modelProperties: {
|
||
marker: {
|
||
serializedName: "x-ms-continuation",
|
||
xmlName: "x-ms-continuation",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentLength: {
|
||
serializedName: "content-length",
|
||
xmlName: "content-length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DirectoryRenameExceptionHeaders = {
|
||
serializedName: "Directory_renameExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DirectoryRenameExceptionHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DirectoryDeleteHeaders = {
|
||
serializedName: "Directory_deleteHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DirectoryDeleteHeaders",
|
||
modelProperties: {
|
||
marker: {
|
||
serializedName: "x-ms-continuation",
|
||
xmlName: "x-ms-continuation",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DirectoryDeleteExceptionHeaders = {
|
||
serializedName: "Directory_deleteExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DirectoryDeleteExceptionHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DirectorySetAccessControlHeaders = {
|
||
serializedName: "Directory_setAccessControlHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DirectorySetAccessControlHeaders",
|
||
modelProperties: {
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DirectorySetAccessControlExceptionHeaders = {
|
||
serializedName: "Directory_setAccessControlExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DirectorySetAccessControlExceptionHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DirectoryGetAccessControlHeaders = {
|
||
serializedName: "Directory_getAccessControlHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DirectoryGetAccessControlHeaders",
|
||
modelProperties: {
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
xMsOwner: {
|
||
serializedName: "x-ms-owner",
|
||
xmlName: "x-ms-owner",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
xMsGroup: {
|
||
serializedName: "x-ms-group",
|
||
xmlName: "x-ms-group",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
xMsPermissions: {
|
||
serializedName: "x-ms-permissions",
|
||
xmlName: "x-ms-permissions",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
xMsAcl: {
|
||
serializedName: "x-ms-acl",
|
||
xmlName: "x-ms-acl",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var DirectoryGetAccessControlExceptionHeaders = {
|
||
serializedName: "Directory_getAccessControlExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "DirectoryGetAccessControlExceptionHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobDownloadHeaders = {
|
||
serializedName: "Blob_downloadHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobDownloadHeaders",
|
||
modelProperties: {
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
metadata: {
|
||
serializedName: "x-ms-meta",
|
||
xmlName: "x-ms-meta",
|
||
type: {
|
||
name: "Dictionary",
|
||
value: { type: { name: "String" } }
|
||
},
|
||
headerCollectionPrefix: "x-ms-meta-"
|
||
},
|
||
objectReplicationPolicyId: {
|
||
serializedName: "x-ms-or-policy-id",
|
||
xmlName: "x-ms-or-policy-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
objectReplicationRules: {
|
||
serializedName: "x-ms-or",
|
||
xmlName: "x-ms-or",
|
||
type: {
|
||
name: "Dictionary",
|
||
value: { type: { name: "String" } }
|
||
},
|
||
headerCollectionPrefix: "x-ms-or-"
|
||
},
|
||
contentLength: {
|
||
serializedName: "content-length",
|
||
xmlName: "content-length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
contentType: {
|
||
serializedName: "content-type",
|
||
xmlName: "content-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentRange: {
|
||
serializedName: "content-range",
|
||
xmlName: "content-range",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
contentEncoding: {
|
||
serializedName: "content-encoding",
|
||
xmlName: "content-encoding",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
cacheControl: {
|
||
serializedName: "cache-control",
|
||
xmlName: "cache-control",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentDisposition: {
|
||
serializedName: "content-disposition",
|
||
xmlName: "content-disposition",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentLanguage: {
|
||
serializedName: "content-language",
|
||
xmlName: "content-language",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobSequenceNumber: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
blobType: {
|
||
serializedName: "x-ms-blob-type",
|
||
xmlName: "x-ms-blob-type",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
|
||
}
|
||
},
|
||
copyCompletedOn: {
|
||
serializedName: "x-ms-copy-completion-time",
|
||
xmlName: "x-ms-copy-completion-time",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
copyStatusDescription: {
|
||
serializedName: "x-ms-copy-status-description",
|
||
xmlName: "x-ms-copy-status-description",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyId: {
|
||
serializedName: "x-ms-copy-id",
|
||
xmlName: "x-ms-copy-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyProgress: {
|
||
serializedName: "x-ms-copy-progress",
|
||
xmlName: "x-ms-copy-progress",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copySource: {
|
||
serializedName: "x-ms-copy-source",
|
||
xmlName: "x-ms-copy-source",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyStatus: {
|
||
serializedName: "x-ms-copy-status",
|
||
xmlName: "x-ms-copy-status",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["pending", "success", "aborted", "failed"]
|
||
}
|
||
},
|
||
leaseDuration: {
|
||
serializedName: "x-ms-lease-duration",
|
||
xmlName: "x-ms-lease-duration",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["infinite", "fixed"]
|
||
}
|
||
},
|
||
leaseState: {
|
||
serializedName: "x-ms-lease-state",
|
||
xmlName: "x-ms-lease-state",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"available",
|
||
"leased",
|
||
"expired",
|
||
"breaking",
|
||
"broken"
|
||
]
|
||
}
|
||
},
|
||
leaseStatus: {
|
||
serializedName: "x-ms-lease-status",
|
||
xmlName: "x-ms-lease-status",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["locked", "unlocked"]
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
isCurrentVersion: {
|
||
serializedName: "x-ms-is-current-version",
|
||
xmlName: "x-ms-is-current-version",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
acceptRanges: {
|
||
serializedName: "accept-ranges",
|
||
xmlName: "accept-ranges",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
blobCommittedBlockCount: {
|
||
serializedName: "x-ms-blob-committed-block-count",
|
||
xmlName: "x-ms-blob-committed-block-count",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-server-encrypted",
|
||
xmlName: "x-ms-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobContentMD5: {
|
||
serializedName: "x-ms-blob-content-md5",
|
||
xmlName: "x-ms-blob-content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
tagCount: {
|
||
serializedName: "x-ms-tag-count",
|
||
xmlName: "x-ms-tag-count",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
isSealed: {
|
||
serializedName: "x-ms-blob-sealed",
|
||
xmlName: "x-ms-blob-sealed",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
lastAccessed: {
|
||
serializedName: "x-ms-last-access-time",
|
||
xmlName: "x-ms-last-access-time",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobDownloadExceptionHeaders = {
|
||
serializedName: "Blob_downloadExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobDownloadExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobGetPropertiesHeaders = {
|
||
serializedName: "Blob_getPropertiesHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobGetPropertiesHeaders",
|
||
modelProperties: {
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
createdOn: {
|
||
serializedName: "x-ms-creation-time",
|
||
xmlName: "x-ms-creation-time",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
metadata: {
|
||
serializedName: "x-ms-meta",
|
||
xmlName: "x-ms-meta",
|
||
type: {
|
||
name: "Dictionary",
|
||
value: { type: { name: "String" } }
|
||
},
|
||
headerCollectionPrefix: "x-ms-meta-"
|
||
},
|
||
objectReplicationPolicyId: {
|
||
serializedName: "x-ms-or-policy-id",
|
||
xmlName: "x-ms-or-policy-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
objectReplicationRules: {
|
||
serializedName: "x-ms-or",
|
||
xmlName: "x-ms-or",
|
||
type: {
|
||
name: "Dictionary",
|
||
value: { type: { name: "String" } }
|
||
},
|
||
headerCollectionPrefix: "x-ms-or-"
|
||
},
|
||
blobType: {
|
||
serializedName: "x-ms-blob-type",
|
||
xmlName: "x-ms-blob-type",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
|
||
}
|
||
},
|
||
copyCompletedOn: {
|
||
serializedName: "x-ms-copy-completion-time",
|
||
xmlName: "x-ms-copy-completion-time",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
copyStatusDescription: {
|
||
serializedName: "x-ms-copy-status-description",
|
||
xmlName: "x-ms-copy-status-description",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyId: {
|
||
serializedName: "x-ms-copy-id",
|
||
xmlName: "x-ms-copy-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyProgress: {
|
||
serializedName: "x-ms-copy-progress",
|
||
xmlName: "x-ms-copy-progress",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copySource: {
|
||
serializedName: "x-ms-copy-source",
|
||
xmlName: "x-ms-copy-source",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyStatus: {
|
||
serializedName: "x-ms-copy-status",
|
||
xmlName: "x-ms-copy-status",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["pending", "success", "aborted", "failed"]
|
||
}
|
||
},
|
||
isIncrementalCopy: {
|
||
serializedName: "x-ms-incremental-copy",
|
||
xmlName: "x-ms-incremental-copy",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
destinationSnapshot: {
|
||
serializedName: "x-ms-copy-destination-snapshot",
|
||
xmlName: "x-ms-copy-destination-snapshot",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
leaseDuration: {
|
||
serializedName: "x-ms-lease-duration",
|
||
xmlName: "x-ms-lease-duration",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["infinite", "fixed"]
|
||
}
|
||
},
|
||
leaseState: {
|
||
serializedName: "x-ms-lease-state",
|
||
xmlName: "x-ms-lease-state",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"available",
|
||
"leased",
|
||
"expired",
|
||
"breaking",
|
||
"broken"
|
||
]
|
||
}
|
||
},
|
||
leaseStatus: {
|
||
serializedName: "x-ms-lease-status",
|
||
xmlName: "x-ms-lease-status",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["locked", "unlocked"]
|
||
}
|
||
},
|
||
contentLength: {
|
||
serializedName: "content-length",
|
||
xmlName: "content-length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
contentType: {
|
||
serializedName: "content-type",
|
||
xmlName: "content-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
contentEncoding: {
|
||
serializedName: "content-encoding",
|
||
xmlName: "content-encoding",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentDisposition: {
|
||
serializedName: "content-disposition",
|
||
xmlName: "content-disposition",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentLanguage: {
|
||
serializedName: "content-language",
|
||
xmlName: "content-language",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
cacheControl: {
|
||
serializedName: "cache-control",
|
||
xmlName: "cache-control",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobSequenceNumber: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
acceptRanges: {
|
||
serializedName: "accept-ranges",
|
||
xmlName: "accept-ranges",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobCommittedBlockCount: {
|
||
serializedName: "x-ms-blob-committed-block-count",
|
||
xmlName: "x-ms-blob-committed-block-count",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-server-encrypted",
|
||
xmlName: "x-ms-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
accessTier: {
|
||
serializedName: "x-ms-access-tier",
|
||
xmlName: "x-ms-access-tier",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
accessTierInferred: {
|
||
serializedName: "x-ms-access-tier-inferred",
|
||
xmlName: "x-ms-access-tier-inferred",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
archiveStatus: {
|
||
serializedName: "x-ms-archive-status",
|
||
xmlName: "x-ms-archive-status",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
accessTierChangedOn: {
|
||
serializedName: "x-ms-access-tier-change-time",
|
||
xmlName: "x-ms-access-tier-change-time",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
isCurrentVersion: {
|
||
serializedName: "x-ms-is-current-version",
|
||
xmlName: "x-ms-is-current-version",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
tagCount: {
|
||
serializedName: "x-ms-tag-count",
|
||
xmlName: "x-ms-tag-count",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
expiresOn: {
|
||
serializedName: "x-ms-expiry-time",
|
||
xmlName: "x-ms-expiry-time",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isSealed: {
|
||
serializedName: "x-ms-blob-sealed",
|
||
xmlName: "x-ms-blob-sealed",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
rehydratePriority: {
|
||
serializedName: "x-ms-rehydrate-priority",
|
||
xmlName: "x-ms-rehydrate-priority",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["High", "Standard"]
|
||
}
|
||
},
|
||
lastAccessed: {
|
||
serializedName: "x-ms-last-access-time",
|
||
xmlName: "x-ms-last-access-time",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobGetPropertiesExceptionHeaders = {
|
||
serializedName: "Blob_getPropertiesExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobGetPropertiesExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobDeleteHeaders = {
|
||
serializedName: "Blob_deleteHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobDeleteHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobDeleteExceptionHeaders = {
|
||
serializedName: "Blob_deleteExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobDeleteExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetAccessControlHeaders = {
|
||
serializedName: "Blob_setAccessControlHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetAccessControlHeaders",
|
||
modelProperties: {
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetAccessControlExceptionHeaders = {
|
||
serializedName: "Blob_setAccessControlExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetAccessControlExceptionHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobGetAccessControlHeaders = {
|
||
serializedName: "Blob_getAccessControlHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobGetAccessControlHeaders",
|
||
modelProperties: {
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
xMsOwner: {
|
||
serializedName: "x-ms-owner",
|
||
xmlName: "x-ms-owner",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
xMsGroup: {
|
||
serializedName: "x-ms-group",
|
||
xmlName: "x-ms-group",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
xMsPermissions: {
|
||
serializedName: "x-ms-permissions",
|
||
xmlName: "x-ms-permissions",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
xMsAcl: {
|
||
serializedName: "x-ms-acl",
|
||
xmlName: "x-ms-acl",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobGetAccessControlExceptionHeaders = {
|
||
serializedName: "Blob_getAccessControlExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobGetAccessControlExceptionHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobRenameHeaders = {
|
||
serializedName: "Blob_renameHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobRenameHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentLength: {
|
||
serializedName: "content-length",
|
||
xmlName: "content-length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobRenameExceptionHeaders = {
|
||
serializedName: "Blob_renameExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobRenameExceptionHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobUndeleteHeaders = {
|
||
serializedName: "Blob_undeleteHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobUndeleteHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobUndeleteExceptionHeaders = {
|
||
serializedName: "Blob_undeleteExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobUndeleteExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetExpiryHeaders = {
|
||
serializedName: "Blob_setExpiryHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetExpiryHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetExpiryExceptionHeaders = {
|
||
serializedName: "Blob_setExpiryExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetExpiryExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetHttpHeadersHeaders = {
|
||
serializedName: "Blob_setHttpHeadersHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetHttpHeadersHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
blobSequenceNumber: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetHttpHeadersExceptionHeaders = {
|
||
serializedName: "Blob_setHttpHeadersExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetHttpHeadersExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetMetadataHeaders = {
|
||
serializedName: "Blob_setMetadataHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetMetadataHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetMetadataExceptionHeaders = {
|
||
serializedName: "Blob_setMetadataExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetMetadataExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobAcquireLeaseHeaders = {
|
||
serializedName: "Blob_acquireLeaseHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobAcquireLeaseHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
leaseId: {
|
||
serializedName: "x-ms-lease-id",
|
||
xmlName: "x-ms-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobAcquireLeaseExceptionHeaders = {
|
||
serializedName: "Blob_acquireLeaseExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobAcquireLeaseExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobReleaseLeaseHeaders = {
|
||
serializedName: "Blob_releaseLeaseHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobReleaseLeaseHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobReleaseLeaseExceptionHeaders = {
|
||
serializedName: "Blob_releaseLeaseExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobReleaseLeaseExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobRenewLeaseHeaders = {
|
||
serializedName: "Blob_renewLeaseHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobRenewLeaseHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
leaseId: {
|
||
serializedName: "x-ms-lease-id",
|
||
xmlName: "x-ms-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobRenewLeaseExceptionHeaders = {
|
||
serializedName: "Blob_renewLeaseExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobRenewLeaseExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobChangeLeaseHeaders = {
|
||
serializedName: "Blob_changeLeaseHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobChangeLeaseHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
leaseId: {
|
||
serializedName: "x-ms-lease-id",
|
||
xmlName: "x-ms-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobChangeLeaseExceptionHeaders = {
|
||
serializedName: "Blob_changeLeaseExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobChangeLeaseExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobBreakLeaseHeaders = {
|
||
serializedName: "Blob_breakLeaseHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobBreakLeaseHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
leaseTime: {
|
||
serializedName: "x-ms-lease-time",
|
||
xmlName: "x-ms-lease-time",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobBreakLeaseExceptionHeaders = {
|
||
serializedName: "Blob_breakLeaseExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobBreakLeaseExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobCreateSnapshotHeaders = {
|
||
serializedName: "Blob_createSnapshotHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobCreateSnapshotHeaders",
|
||
modelProperties: {
|
||
snapshot: {
|
||
serializedName: "x-ms-snapshot",
|
||
xmlName: "x-ms-snapshot",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobCreateSnapshotExceptionHeaders = {
|
||
serializedName: "Blob_createSnapshotExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobCreateSnapshotExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobStartCopyFromURLHeaders = {
|
||
serializedName: "Blob_startCopyFromURLHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobStartCopyFromURLHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
copyId: {
|
||
serializedName: "x-ms-copy-id",
|
||
xmlName: "x-ms-copy-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyStatus: {
|
||
serializedName: "x-ms-copy-status",
|
||
xmlName: "x-ms-copy-status",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["pending", "success", "aborted", "failed"]
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobStartCopyFromURLExceptionHeaders = {
|
||
serializedName: "Blob_startCopyFromURLExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobStartCopyFromURLExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobCopyFromURLHeaders = {
|
||
serializedName: "Blob_copyFromURLHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobCopyFromURLHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
copyId: {
|
||
serializedName: "x-ms-copy-id",
|
||
xmlName: "x-ms-copy-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyStatus: {
|
||
defaultValue: "success",
|
||
isConstant: true,
|
||
serializedName: "x-ms-copy-status",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
xMsContentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobCopyFromURLExceptionHeaders = {
|
||
serializedName: "Blob_copyFromURLExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobCopyFromURLExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobAbortCopyFromURLHeaders = {
|
||
serializedName: "Blob_abortCopyFromURLHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobAbortCopyFromURLHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobAbortCopyFromURLExceptionHeaders = {
|
||
serializedName: "Blob_abortCopyFromURLExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobAbortCopyFromURLExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetTierHeaders = {
|
||
serializedName: "Blob_setTierHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetTierHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetTierExceptionHeaders = {
|
||
serializedName: "Blob_setTierExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetTierExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobGetAccountInfoHeaders = {
|
||
serializedName: "Blob_getAccountInfoHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobGetAccountInfoHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
skuName: {
|
||
serializedName: "x-ms-sku-name",
|
||
xmlName: "x-ms-sku-name",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"Standard_LRS",
|
||
"Standard_GRS",
|
||
"Standard_RAGRS",
|
||
"Standard_ZRS",
|
||
"Premium_LRS"
|
||
]
|
||
}
|
||
},
|
||
accountKind: {
|
||
serializedName: "x-ms-account-kind",
|
||
xmlName: "x-ms-account-kind",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"Storage",
|
||
"BlobStorage",
|
||
"StorageV2",
|
||
"FileStorage",
|
||
"BlockBlobStorage"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobGetAccountInfoExceptionHeaders = {
|
||
serializedName: "Blob_getAccountInfoExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobGetAccountInfoExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobQueryHeaders = {
|
||
serializedName: "Blob_queryHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobQueryHeaders",
|
||
modelProperties: {
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
metadata: {
|
||
serializedName: "x-ms-meta",
|
||
xmlName: "x-ms-meta",
|
||
type: {
|
||
name: "Dictionary",
|
||
value: { type: { name: "String" } }
|
||
}
|
||
},
|
||
contentLength: {
|
||
serializedName: "content-length",
|
||
xmlName: "content-length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
contentType: {
|
||
serializedName: "content-type",
|
||
xmlName: "content-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentRange: {
|
||
serializedName: "content-range",
|
||
xmlName: "content-range",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
contentEncoding: {
|
||
serializedName: "content-encoding",
|
||
xmlName: "content-encoding",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
cacheControl: {
|
||
serializedName: "cache-control",
|
||
xmlName: "cache-control",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentDisposition: {
|
||
serializedName: "content-disposition",
|
||
xmlName: "content-disposition",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentLanguage: {
|
||
serializedName: "content-language",
|
||
xmlName: "content-language",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobSequenceNumber: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
blobType: {
|
||
serializedName: "x-ms-blob-type",
|
||
xmlName: "x-ms-blob-type",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
|
||
}
|
||
},
|
||
copyCompletionTime: {
|
||
serializedName: "x-ms-copy-completion-time",
|
||
xmlName: "x-ms-copy-completion-time",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
copyStatusDescription: {
|
||
serializedName: "x-ms-copy-status-description",
|
||
xmlName: "x-ms-copy-status-description",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyId: {
|
||
serializedName: "x-ms-copy-id",
|
||
xmlName: "x-ms-copy-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyProgress: {
|
||
serializedName: "x-ms-copy-progress",
|
||
xmlName: "x-ms-copy-progress",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copySource: {
|
||
serializedName: "x-ms-copy-source",
|
||
xmlName: "x-ms-copy-source",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyStatus: {
|
||
serializedName: "x-ms-copy-status",
|
||
xmlName: "x-ms-copy-status",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["pending", "success", "aborted", "failed"]
|
||
}
|
||
},
|
||
leaseDuration: {
|
||
serializedName: "x-ms-lease-duration",
|
||
xmlName: "x-ms-lease-duration",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["infinite", "fixed"]
|
||
}
|
||
},
|
||
leaseState: {
|
||
serializedName: "x-ms-lease-state",
|
||
xmlName: "x-ms-lease-state",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"available",
|
||
"leased",
|
||
"expired",
|
||
"breaking",
|
||
"broken"
|
||
]
|
||
}
|
||
},
|
||
leaseStatus: {
|
||
serializedName: "x-ms-lease-status",
|
||
xmlName: "x-ms-lease-status",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["locked", "unlocked"]
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
acceptRanges: {
|
||
serializedName: "accept-ranges",
|
||
xmlName: "accept-ranges",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
blobCommittedBlockCount: {
|
||
serializedName: "x-ms-blob-committed-block-count",
|
||
xmlName: "x-ms-blob-committed-block-count",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-server-encrypted",
|
||
xmlName: "x-ms-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobContentMD5: {
|
||
serializedName: "x-ms-blob-content-md5",
|
||
xmlName: "x-ms-blob-content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
contentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobQueryExceptionHeaders = {
|
||
serializedName: "Blob_queryExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobQueryExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobGetTagsHeaders = {
|
||
serializedName: "Blob_getTagsHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobGetTagsHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobGetTagsExceptionHeaders = {
|
||
serializedName: "Blob_getTagsExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobGetTagsExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetTagsHeaders = {
|
||
serializedName: "Blob_setTagsHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetTagsHeaders",
|
||
modelProperties: {
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlobSetTagsExceptionHeaders = {
|
||
serializedName: "Blob_setTagsExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlobSetTagsExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobCreateHeaders = {
|
||
serializedName: "PageBlob_createHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobCreateHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobCreateExceptionHeaders = {
|
||
serializedName: "PageBlob_createExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobCreateExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobUploadPagesHeaders = {
|
||
serializedName: "PageBlob_uploadPagesHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobUploadPagesHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
xMsContentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
blobSequenceNumber: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobUploadPagesExceptionHeaders = {
|
||
serializedName: "PageBlob_uploadPagesExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobUploadPagesExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobClearPagesHeaders = {
|
||
serializedName: "PageBlob_clearPagesHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobClearPagesHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
xMsContentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
blobSequenceNumber: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobClearPagesExceptionHeaders = {
|
||
serializedName: "PageBlob_clearPagesExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobClearPagesExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobUploadPagesFromURLHeaders = {
|
||
serializedName: "PageBlob_uploadPagesFromURLHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobUploadPagesFromURLHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
xMsContentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
blobSequenceNumber: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobUploadPagesFromURLExceptionHeaders = {
|
||
serializedName: "PageBlob_uploadPagesFromURLExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobUploadPagesFromURLExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobGetPageRangesHeaders = {
|
||
serializedName: "PageBlob_getPageRangesHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobGetPageRangesHeaders",
|
||
modelProperties: {
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobContentLength: {
|
||
serializedName: "x-ms-blob-content-length",
|
||
xmlName: "x-ms-blob-content-length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobGetPageRangesExceptionHeaders = {
|
||
serializedName: "PageBlob_getPageRangesExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobGetPageRangesExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobGetPageRangesDiffHeaders = {
|
||
serializedName: "PageBlob_getPageRangesDiffHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobGetPageRangesDiffHeaders",
|
||
modelProperties: {
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobContentLength: {
|
||
serializedName: "x-ms-blob-content-length",
|
||
xmlName: "x-ms-blob-content-length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobGetPageRangesDiffExceptionHeaders = {
|
||
serializedName: "PageBlob_getPageRangesDiffExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobGetPageRangesDiffExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobResizeHeaders = {
|
||
serializedName: "PageBlob_resizeHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobResizeHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
blobSequenceNumber: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobResizeExceptionHeaders = {
|
||
serializedName: "PageBlob_resizeExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobResizeExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobUpdateSequenceNumberHeaders = {
|
||
serializedName: "PageBlob_updateSequenceNumberHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobUpdateSequenceNumberHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
blobSequenceNumber: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobUpdateSequenceNumberExceptionHeaders = {
|
||
serializedName: "PageBlob_updateSequenceNumberExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobUpdateSequenceNumberExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobCopyIncrementalHeaders = {
|
||
serializedName: "PageBlob_copyIncrementalHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobCopyIncrementalHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
copyId: {
|
||
serializedName: "x-ms-copy-id",
|
||
xmlName: "x-ms-copy-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
copyStatus: {
|
||
serializedName: "x-ms-copy-status",
|
||
xmlName: "x-ms-copy-status",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["pending", "success", "aborted", "failed"]
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var PageBlobCopyIncrementalExceptionHeaders = {
|
||
serializedName: "PageBlob_copyIncrementalExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "PageBlobCopyIncrementalExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var AppendBlobCreateHeaders = {
|
||
serializedName: "AppendBlob_createHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "AppendBlobCreateHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var AppendBlobCreateExceptionHeaders = {
|
||
serializedName: "AppendBlob_createExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "AppendBlobCreateExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var AppendBlobAppendBlockHeaders = {
|
||
serializedName: "AppendBlob_appendBlockHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "AppendBlobAppendBlockHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
xMsContentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
blobAppendOffset: {
|
||
serializedName: "x-ms-blob-append-offset",
|
||
xmlName: "x-ms-blob-append-offset",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobCommittedBlockCount: {
|
||
serializedName: "x-ms-blob-committed-block-count",
|
||
xmlName: "x-ms-blob-committed-block-count",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var AppendBlobAppendBlockExceptionHeaders = {
|
||
serializedName: "AppendBlob_appendBlockExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "AppendBlobAppendBlockExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var AppendBlobAppendBlockFromUrlHeaders = {
|
||
serializedName: "AppendBlob_appendBlockFromUrlHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "AppendBlobAppendBlockFromUrlHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
xMsContentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
blobAppendOffset: {
|
||
serializedName: "x-ms-blob-append-offset",
|
||
xmlName: "x-ms-blob-append-offset",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobCommittedBlockCount: {
|
||
serializedName: "x-ms-blob-committed-block-count",
|
||
xmlName: "x-ms-blob-committed-block-count",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var AppendBlobAppendBlockFromUrlExceptionHeaders = {
|
||
serializedName: "AppendBlob_appendBlockFromUrlExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "AppendBlobAppendBlockFromUrlExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var AppendBlobSealHeaders = {
|
||
serializedName: "AppendBlob_sealHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "AppendBlobSealHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isSealed: {
|
||
serializedName: "x-ms-blob-sealed",
|
||
xmlName: "x-ms-blob-sealed",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var AppendBlobSealExceptionHeaders = {
|
||
serializedName: "AppendBlob_sealExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "AppendBlobSealExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobUploadHeaders = {
|
||
serializedName: "BlockBlob_uploadHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobUploadHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobUploadExceptionHeaders = {
|
||
serializedName: "BlockBlob_uploadExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobUploadExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobPutBlobFromUrlHeaders = {
|
||
serializedName: "BlockBlob_putBlobFromUrlHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobPutBlobFromUrlHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobPutBlobFromUrlExceptionHeaders = {
|
||
serializedName: "BlockBlob_putBlobFromUrlExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobPutBlobFromUrlExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobStageBlockHeaders = {
|
||
serializedName: "BlockBlob_stageBlockHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobStageBlockHeaders",
|
||
modelProperties: {
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
xMsContentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobStageBlockExceptionHeaders = {
|
||
serializedName: "BlockBlob_stageBlockExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobStageBlockExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobStageBlockFromURLHeaders = {
|
||
serializedName: "BlockBlob_stageBlockFromURLHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobStageBlockFromURLHeaders",
|
||
modelProperties: {
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
xMsContentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobStageBlockFromURLExceptionHeaders = {
|
||
serializedName: "BlockBlob_stageBlockFromURLExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobStageBlockFromURLExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobCommitBlockListHeaders = {
|
||
serializedName: "BlockBlob_commitBlockListHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobCommitBlockListHeaders",
|
||
modelProperties: {
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
contentMD5: {
|
||
serializedName: "content-md5",
|
||
xmlName: "content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
xMsContentCrc64: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
versionId: {
|
||
serializedName: "x-ms-version-id",
|
||
xmlName: "x-ms-version-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
isServerEncrypted: {
|
||
serializedName: "x-ms-request-server-encrypted",
|
||
xmlName: "x-ms-request-server-encrypted",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
},
|
||
encryptionKeySha256: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
encryptionScope: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobCommitBlockListExceptionHeaders = {
|
||
serializedName: "BlockBlob_commitBlockListExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobCommitBlockListExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobGetBlockListHeaders = {
|
||
serializedName: "BlockBlob_getBlockListHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobGetBlockListHeaders",
|
||
modelProperties: {
|
||
lastModified: {
|
||
serializedName: "last-modified",
|
||
xmlName: "last-modified",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
etag: {
|
||
serializedName: "etag",
|
||
xmlName: "etag",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
contentType: {
|
||
serializedName: "content-type",
|
||
xmlName: "content-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
blobContentLength: {
|
||
serializedName: "x-ms-blob-content-length",
|
||
xmlName: "x-ms-blob-content-length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
},
|
||
clientRequestId: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
requestId: {
|
||
serializedName: "x-ms-request-id",
|
||
xmlName: "x-ms-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
version: {
|
||
serializedName: "x-ms-version",
|
||
xmlName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
date: {
|
||
serializedName: "date",
|
||
xmlName: "date",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
},
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var BlockBlobGetBlockListExceptionHeaders = {
|
||
serializedName: "BlockBlob_getBlockListExceptionHeaders",
|
||
type: {
|
||
name: "Composite",
|
||
className: "BlockBlobGetBlockListExceptionHeaders",
|
||
modelProperties: {
|
||
errorCode: {
|
||
serializedName: "x-ms-error-code",
|
||
xmlName: "x-ms-error-code",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
var Mappers = /*#__PURE__*/Object.freeze({
|
||
__proto__: null,
|
||
BlobServiceProperties: BlobServiceProperties,
|
||
Logging: Logging,
|
||
RetentionPolicy: RetentionPolicy,
|
||
Metrics: Metrics,
|
||
CorsRule: CorsRule,
|
||
StaticWebsite: StaticWebsite,
|
||
StorageError: StorageError,
|
||
BlobServiceStatistics: BlobServiceStatistics,
|
||
GeoReplication: GeoReplication,
|
||
ListContainersSegmentResponse: ListContainersSegmentResponse,
|
||
ContainerItem: ContainerItem,
|
||
ContainerProperties: ContainerProperties,
|
||
KeyInfo: KeyInfo,
|
||
UserDelegationKey: UserDelegationKey,
|
||
FilterBlobSegment: FilterBlobSegment,
|
||
FilterBlobItem: FilterBlobItem,
|
||
BlobTags: BlobTags,
|
||
BlobTag: BlobTag,
|
||
SignedIdentifier: SignedIdentifier,
|
||
AccessPolicy: AccessPolicy,
|
||
ListBlobsFlatSegmentResponse: ListBlobsFlatSegmentResponse,
|
||
BlobFlatListSegment: BlobFlatListSegment,
|
||
BlobItemInternal: BlobItemInternal,
|
||
BlobPropertiesInternal: BlobPropertiesInternal,
|
||
ListBlobsHierarchySegmentResponse: ListBlobsHierarchySegmentResponse,
|
||
BlobHierarchyListSegment: BlobHierarchyListSegment,
|
||
BlobPrefix: BlobPrefix,
|
||
DataLakeStorageError: DataLakeStorageError,
|
||
DataLakeStorageErrorError: DataLakeStorageErrorError,
|
||
BlockLookupList: BlockLookupList,
|
||
BlockList: BlockList,
|
||
Block: Block,
|
||
PageList: PageList,
|
||
PageRange: PageRange,
|
||
ClearRange: ClearRange,
|
||
QueryRequest: QueryRequest,
|
||
QuerySerialization: QuerySerialization,
|
||
QueryFormat: QueryFormat,
|
||
DelimitedTextConfiguration: DelimitedTextConfiguration,
|
||
JsonTextConfiguration: JsonTextConfiguration,
|
||
ArrowConfiguration: ArrowConfiguration,
|
||
ArrowField: ArrowField,
|
||
ServiceSetPropertiesHeaders: ServiceSetPropertiesHeaders,
|
||
ServiceSetPropertiesExceptionHeaders: ServiceSetPropertiesExceptionHeaders,
|
||
ServiceGetPropertiesHeaders: ServiceGetPropertiesHeaders,
|
||
ServiceGetPropertiesExceptionHeaders: ServiceGetPropertiesExceptionHeaders,
|
||
ServiceGetStatisticsHeaders: ServiceGetStatisticsHeaders,
|
||
ServiceGetStatisticsExceptionHeaders: ServiceGetStatisticsExceptionHeaders,
|
||
ServiceListContainersSegmentHeaders: ServiceListContainersSegmentHeaders,
|
||
ServiceListContainersSegmentExceptionHeaders: ServiceListContainersSegmentExceptionHeaders,
|
||
ServiceGetUserDelegationKeyHeaders: ServiceGetUserDelegationKeyHeaders,
|
||
ServiceGetUserDelegationKeyExceptionHeaders: ServiceGetUserDelegationKeyExceptionHeaders,
|
||
ServiceGetAccountInfoHeaders: ServiceGetAccountInfoHeaders,
|
||
ServiceGetAccountInfoExceptionHeaders: ServiceGetAccountInfoExceptionHeaders,
|
||
ServiceSubmitBatchHeaders: ServiceSubmitBatchHeaders,
|
||
ServiceSubmitBatchExceptionHeaders: ServiceSubmitBatchExceptionHeaders,
|
||
ServiceFilterBlobsHeaders: ServiceFilterBlobsHeaders,
|
||
ServiceFilterBlobsExceptionHeaders: ServiceFilterBlobsExceptionHeaders,
|
||
ContainerCreateHeaders: ContainerCreateHeaders,
|
||
ContainerCreateExceptionHeaders: ContainerCreateExceptionHeaders,
|
||
ContainerGetPropertiesHeaders: ContainerGetPropertiesHeaders,
|
||
ContainerGetPropertiesExceptionHeaders: ContainerGetPropertiesExceptionHeaders,
|
||
ContainerDeleteHeaders: ContainerDeleteHeaders,
|
||
ContainerDeleteExceptionHeaders: ContainerDeleteExceptionHeaders,
|
||
ContainerSetMetadataHeaders: ContainerSetMetadataHeaders,
|
||
ContainerSetMetadataExceptionHeaders: ContainerSetMetadataExceptionHeaders,
|
||
ContainerGetAccessPolicyHeaders: ContainerGetAccessPolicyHeaders,
|
||
ContainerGetAccessPolicyExceptionHeaders: ContainerGetAccessPolicyExceptionHeaders,
|
||
ContainerSetAccessPolicyHeaders: ContainerSetAccessPolicyHeaders,
|
||
ContainerSetAccessPolicyExceptionHeaders: ContainerSetAccessPolicyExceptionHeaders,
|
||
ContainerRestoreHeaders: ContainerRestoreHeaders,
|
||
ContainerRestoreExceptionHeaders: ContainerRestoreExceptionHeaders,
|
||
ContainerRenameHeaders: ContainerRenameHeaders,
|
||
ContainerRenameExceptionHeaders: ContainerRenameExceptionHeaders,
|
||
ContainerSubmitBatchHeaders: ContainerSubmitBatchHeaders,
|
||
ContainerSubmitBatchExceptionHeaders: ContainerSubmitBatchExceptionHeaders,
|
||
ContainerAcquireLeaseHeaders: ContainerAcquireLeaseHeaders,
|
||
ContainerAcquireLeaseExceptionHeaders: ContainerAcquireLeaseExceptionHeaders,
|
||
ContainerReleaseLeaseHeaders: ContainerReleaseLeaseHeaders,
|
||
ContainerReleaseLeaseExceptionHeaders: ContainerReleaseLeaseExceptionHeaders,
|
||
ContainerRenewLeaseHeaders: ContainerRenewLeaseHeaders,
|
||
ContainerRenewLeaseExceptionHeaders: ContainerRenewLeaseExceptionHeaders,
|
||
ContainerBreakLeaseHeaders: ContainerBreakLeaseHeaders,
|
||
ContainerBreakLeaseExceptionHeaders: ContainerBreakLeaseExceptionHeaders,
|
||
ContainerChangeLeaseHeaders: ContainerChangeLeaseHeaders,
|
||
ContainerChangeLeaseExceptionHeaders: ContainerChangeLeaseExceptionHeaders,
|
||
ContainerListBlobFlatSegmentHeaders: ContainerListBlobFlatSegmentHeaders,
|
||
ContainerListBlobFlatSegmentExceptionHeaders: ContainerListBlobFlatSegmentExceptionHeaders,
|
||
ContainerListBlobHierarchySegmentHeaders: ContainerListBlobHierarchySegmentHeaders,
|
||
ContainerListBlobHierarchySegmentExceptionHeaders: ContainerListBlobHierarchySegmentExceptionHeaders,
|
||
ContainerGetAccountInfoHeaders: ContainerGetAccountInfoHeaders,
|
||
ContainerGetAccountInfoExceptionHeaders: ContainerGetAccountInfoExceptionHeaders,
|
||
DirectoryCreateHeaders: DirectoryCreateHeaders,
|
||
DirectoryCreateExceptionHeaders: DirectoryCreateExceptionHeaders,
|
||
DirectoryRenameHeaders: DirectoryRenameHeaders,
|
||
DirectoryRenameExceptionHeaders: DirectoryRenameExceptionHeaders,
|
||
DirectoryDeleteHeaders: DirectoryDeleteHeaders,
|
||
DirectoryDeleteExceptionHeaders: DirectoryDeleteExceptionHeaders,
|
||
DirectorySetAccessControlHeaders: DirectorySetAccessControlHeaders,
|
||
DirectorySetAccessControlExceptionHeaders: DirectorySetAccessControlExceptionHeaders,
|
||
DirectoryGetAccessControlHeaders: DirectoryGetAccessControlHeaders,
|
||
DirectoryGetAccessControlExceptionHeaders: DirectoryGetAccessControlExceptionHeaders,
|
||
BlobDownloadHeaders: BlobDownloadHeaders,
|
||
BlobDownloadExceptionHeaders: BlobDownloadExceptionHeaders,
|
||
BlobGetPropertiesHeaders: BlobGetPropertiesHeaders,
|
||
BlobGetPropertiesExceptionHeaders: BlobGetPropertiesExceptionHeaders,
|
||
BlobDeleteHeaders: BlobDeleteHeaders,
|
||
BlobDeleteExceptionHeaders: BlobDeleteExceptionHeaders,
|
||
BlobSetAccessControlHeaders: BlobSetAccessControlHeaders,
|
||
BlobSetAccessControlExceptionHeaders: BlobSetAccessControlExceptionHeaders,
|
||
BlobGetAccessControlHeaders: BlobGetAccessControlHeaders,
|
||
BlobGetAccessControlExceptionHeaders: BlobGetAccessControlExceptionHeaders,
|
||
BlobRenameHeaders: BlobRenameHeaders,
|
||
BlobRenameExceptionHeaders: BlobRenameExceptionHeaders,
|
||
BlobUndeleteHeaders: BlobUndeleteHeaders,
|
||
BlobUndeleteExceptionHeaders: BlobUndeleteExceptionHeaders,
|
||
BlobSetExpiryHeaders: BlobSetExpiryHeaders,
|
||
BlobSetExpiryExceptionHeaders: BlobSetExpiryExceptionHeaders,
|
||
BlobSetHttpHeadersHeaders: BlobSetHttpHeadersHeaders,
|
||
BlobSetHttpHeadersExceptionHeaders: BlobSetHttpHeadersExceptionHeaders,
|
||
BlobSetMetadataHeaders: BlobSetMetadataHeaders,
|
||
BlobSetMetadataExceptionHeaders: BlobSetMetadataExceptionHeaders,
|
||
BlobAcquireLeaseHeaders: BlobAcquireLeaseHeaders,
|
||
BlobAcquireLeaseExceptionHeaders: BlobAcquireLeaseExceptionHeaders,
|
||
BlobReleaseLeaseHeaders: BlobReleaseLeaseHeaders,
|
||
BlobReleaseLeaseExceptionHeaders: BlobReleaseLeaseExceptionHeaders,
|
||
BlobRenewLeaseHeaders: BlobRenewLeaseHeaders,
|
||
BlobRenewLeaseExceptionHeaders: BlobRenewLeaseExceptionHeaders,
|
||
BlobChangeLeaseHeaders: BlobChangeLeaseHeaders,
|
||
BlobChangeLeaseExceptionHeaders: BlobChangeLeaseExceptionHeaders,
|
||
BlobBreakLeaseHeaders: BlobBreakLeaseHeaders,
|
||
BlobBreakLeaseExceptionHeaders: BlobBreakLeaseExceptionHeaders,
|
||
BlobCreateSnapshotHeaders: BlobCreateSnapshotHeaders,
|
||
BlobCreateSnapshotExceptionHeaders: BlobCreateSnapshotExceptionHeaders,
|
||
BlobStartCopyFromURLHeaders: BlobStartCopyFromURLHeaders,
|
||
BlobStartCopyFromURLExceptionHeaders: BlobStartCopyFromURLExceptionHeaders,
|
||
BlobCopyFromURLHeaders: BlobCopyFromURLHeaders,
|
||
BlobCopyFromURLExceptionHeaders: BlobCopyFromURLExceptionHeaders,
|
||
BlobAbortCopyFromURLHeaders: BlobAbortCopyFromURLHeaders,
|
||
BlobAbortCopyFromURLExceptionHeaders: BlobAbortCopyFromURLExceptionHeaders,
|
||
BlobSetTierHeaders: BlobSetTierHeaders,
|
||
BlobSetTierExceptionHeaders: BlobSetTierExceptionHeaders,
|
||
BlobGetAccountInfoHeaders: BlobGetAccountInfoHeaders,
|
||
BlobGetAccountInfoExceptionHeaders: BlobGetAccountInfoExceptionHeaders,
|
||
BlobQueryHeaders: BlobQueryHeaders,
|
||
BlobQueryExceptionHeaders: BlobQueryExceptionHeaders,
|
||
BlobGetTagsHeaders: BlobGetTagsHeaders,
|
||
BlobGetTagsExceptionHeaders: BlobGetTagsExceptionHeaders,
|
||
BlobSetTagsHeaders: BlobSetTagsHeaders,
|
||
BlobSetTagsExceptionHeaders: BlobSetTagsExceptionHeaders,
|
||
PageBlobCreateHeaders: PageBlobCreateHeaders,
|
||
PageBlobCreateExceptionHeaders: PageBlobCreateExceptionHeaders,
|
||
PageBlobUploadPagesHeaders: PageBlobUploadPagesHeaders,
|
||
PageBlobUploadPagesExceptionHeaders: PageBlobUploadPagesExceptionHeaders,
|
||
PageBlobClearPagesHeaders: PageBlobClearPagesHeaders,
|
||
PageBlobClearPagesExceptionHeaders: PageBlobClearPagesExceptionHeaders,
|
||
PageBlobUploadPagesFromURLHeaders: PageBlobUploadPagesFromURLHeaders,
|
||
PageBlobUploadPagesFromURLExceptionHeaders: PageBlobUploadPagesFromURLExceptionHeaders,
|
||
PageBlobGetPageRangesHeaders: PageBlobGetPageRangesHeaders,
|
||
PageBlobGetPageRangesExceptionHeaders: PageBlobGetPageRangesExceptionHeaders,
|
||
PageBlobGetPageRangesDiffHeaders: PageBlobGetPageRangesDiffHeaders,
|
||
PageBlobGetPageRangesDiffExceptionHeaders: PageBlobGetPageRangesDiffExceptionHeaders,
|
||
PageBlobResizeHeaders: PageBlobResizeHeaders,
|
||
PageBlobResizeExceptionHeaders: PageBlobResizeExceptionHeaders,
|
||
PageBlobUpdateSequenceNumberHeaders: PageBlobUpdateSequenceNumberHeaders,
|
||
PageBlobUpdateSequenceNumberExceptionHeaders: PageBlobUpdateSequenceNumberExceptionHeaders,
|
||
PageBlobCopyIncrementalHeaders: PageBlobCopyIncrementalHeaders,
|
||
PageBlobCopyIncrementalExceptionHeaders: PageBlobCopyIncrementalExceptionHeaders,
|
||
AppendBlobCreateHeaders: AppendBlobCreateHeaders,
|
||
AppendBlobCreateExceptionHeaders: AppendBlobCreateExceptionHeaders,
|
||
AppendBlobAppendBlockHeaders: AppendBlobAppendBlockHeaders,
|
||
AppendBlobAppendBlockExceptionHeaders: AppendBlobAppendBlockExceptionHeaders,
|
||
AppendBlobAppendBlockFromUrlHeaders: AppendBlobAppendBlockFromUrlHeaders,
|
||
AppendBlobAppendBlockFromUrlExceptionHeaders: AppendBlobAppendBlockFromUrlExceptionHeaders,
|
||
AppendBlobSealHeaders: AppendBlobSealHeaders,
|
||
AppendBlobSealExceptionHeaders: AppendBlobSealExceptionHeaders,
|
||
BlockBlobUploadHeaders: BlockBlobUploadHeaders,
|
||
BlockBlobUploadExceptionHeaders: BlockBlobUploadExceptionHeaders,
|
||
BlockBlobPutBlobFromUrlHeaders: BlockBlobPutBlobFromUrlHeaders,
|
||
BlockBlobPutBlobFromUrlExceptionHeaders: BlockBlobPutBlobFromUrlExceptionHeaders,
|
||
BlockBlobStageBlockHeaders: BlockBlobStageBlockHeaders,
|
||
BlockBlobStageBlockExceptionHeaders: BlockBlobStageBlockExceptionHeaders,
|
||
BlockBlobStageBlockFromURLHeaders: BlockBlobStageBlockFromURLHeaders,
|
||
BlockBlobStageBlockFromURLExceptionHeaders: BlockBlobStageBlockFromURLExceptionHeaders,
|
||
BlockBlobCommitBlockListHeaders: BlockBlobCommitBlockListHeaders,
|
||
BlockBlobCommitBlockListExceptionHeaders: BlockBlobCommitBlockListExceptionHeaders,
|
||
BlockBlobGetBlockListHeaders: BlockBlobGetBlockListHeaders,
|
||
BlockBlobGetBlockListExceptionHeaders: BlockBlobGetBlockListExceptionHeaders
|
||
});
|
||
|
||
/*
|
||
* Copyright (c) Microsoft Corporation.
|
||
* Licensed under the MIT License.
|
||
*
|
||
* Code generated by Microsoft (R) AutoRest Code Generator.
|
||
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||
*/
|
||
var contentType = {
|
||
parameterPath: ["options", "contentType"],
|
||
mapper: {
|
||
defaultValue: "application/xml",
|
||
isConstant: true,
|
||
serializedName: "Content-Type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blobServiceProperties = {
|
||
parameterPath: "blobServiceProperties",
|
||
mapper: BlobServiceProperties
|
||
};
|
||
var accept = {
|
||
parameterPath: "accept",
|
||
mapper: {
|
||
defaultValue: "application/xml",
|
||
isConstant: true,
|
||
serializedName: "Accept",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var url = {
|
||
parameterPath: "url",
|
||
mapper: {
|
||
serializedName: "url",
|
||
required: true,
|
||
xmlName: "url",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
},
|
||
skipEncoding: true
|
||
};
|
||
var restype = {
|
||
parameterPath: "restype",
|
||
mapper: {
|
||
defaultValue: "service",
|
||
isConstant: true,
|
||
serializedName: "restype",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "properties",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var timeoutInSeconds = {
|
||
parameterPath: ["options", "timeoutInSeconds"],
|
||
mapper: {
|
||
constraints: {
|
||
InclusiveMinimum: 0
|
||
},
|
||
serializedName: "timeout",
|
||
xmlName: "timeout",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var version = {
|
||
parameterPath: "version",
|
||
mapper: {
|
||
defaultValue: "2020-08-04",
|
||
isConstant: true,
|
||
serializedName: "x-ms-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var requestId = {
|
||
parameterPath: ["options", "requestId"],
|
||
mapper: {
|
||
serializedName: "x-ms-client-request-id",
|
||
xmlName: "x-ms-client-request-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var accept1 = {
|
||
parameterPath: "accept",
|
||
mapper: {
|
||
defaultValue: "application/xml",
|
||
isConstant: true,
|
||
serializedName: "Accept",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp1 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "stats",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp2 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "list",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var prefix = {
|
||
parameterPath: ["options", "prefix"],
|
||
mapper: {
|
||
serializedName: "prefix",
|
||
xmlName: "prefix",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var marker = {
|
||
parameterPath: ["options", "marker"],
|
||
mapper: {
|
||
serializedName: "marker",
|
||
xmlName: "marker",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var maxPageSize = {
|
||
parameterPath: ["options", "maxPageSize"],
|
||
mapper: {
|
||
constraints: {
|
||
InclusiveMinimum: 1
|
||
},
|
||
serializedName: "maxresults",
|
||
xmlName: "maxresults",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var include = {
|
||
parameterPath: ["options", "include"],
|
||
mapper: {
|
||
serializedName: "include",
|
||
xmlName: "include",
|
||
xmlElementName: "ListContainersIncludeType",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["metadata", "deleted"]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
collectionFormat: coreHttp.QueryCollectionFormat.Csv
|
||
};
|
||
var keyInfo = {
|
||
parameterPath: "keyInfo",
|
||
mapper: KeyInfo
|
||
};
|
||
var comp3 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "userdelegationkey",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var restype1 = {
|
||
parameterPath: "restype",
|
||
mapper: {
|
||
defaultValue: "account",
|
||
isConstant: true,
|
||
serializedName: "restype",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var body = {
|
||
parameterPath: "body",
|
||
mapper: {
|
||
serializedName: "body",
|
||
required: true,
|
||
xmlName: "body",
|
||
type: {
|
||
name: "Stream"
|
||
}
|
||
}
|
||
};
|
||
var comp4 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "batch",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var contentLength = {
|
||
parameterPath: "contentLength",
|
||
mapper: {
|
||
serializedName: "Content-Length",
|
||
required: true,
|
||
xmlName: "Content-Length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var multipartContentType = {
|
||
parameterPath: "multipartContentType",
|
||
mapper: {
|
||
serializedName: "Content-Type",
|
||
required: true,
|
||
xmlName: "Content-Type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp5 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "blobs",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var where = {
|
||
parameterPath: ["options", "where"],
|
||
mapper: {
|
||
serializedName: "where",
|
||
xmlName: "where",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var restype2 = {
|
||
parameterPath: "restype",
|
||
mapper: {
|
||
defaultValue: "container",
|
||
isConstant: true,
|
||
serializedName: "restype",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var metadata = {
|
||
parameterPath: ["options", "metadata"],
|
||
mapper: {
|
||
serializedName: "x-ms-meta",
|
||
xmlName: "x-ms-meta",
|
||
type: {
|
||
name: "Dictionary",
|
||
value: { type: { name: "String" } }
|
||
},
|
||
headerCollectionPrefix: "x-ms-meta-"
|
||
}
|
||
};
|
||
var access = {
|
||
parameterPath: ["options", "access"],
|
||
mapper: {
|
||
serializedName: "x-ms-blob-public-access",
|
||
xmlName: "x-ms-blob-public-access",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["container", "blob"]
|
||
}
|
||
}
|
||
};
|
||
var defaultEncryptionScope = {
|
||
parameterPath: [
|
||
"options",
|
||
"containerEncryptionScope",
|
||
"defaultEncryptionScope"
|
||
],
|
||
mapper: {
|
||
serializedName: "x-ms-default-encryption-scope",
|
||
xmlName: "x-ms-default-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var preventEncryptionScopeOverride = {
|
||
parameterPath: [
|
||
"options",
|
||
"containerEncryptionScope",
|
||
"preventEncryptionScopeOverride"
|
||
],
|
||
mapper: {
|
||
serializedName: "x-ms-deny-encryption-scope-override",
|
||
xmlName: "x-ms-deny-encryption-scope-override",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
}
|
||
};
|
||
var leaseId = {
|
||
parameterPath: ["options", "leaseAccessConditions", "leaseId"],
|
||
mapper: {
|
||
serializedName: "x-ms-lease-id",
|
||
xmlName: "x-ms-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var ifModifiedSince = {
|
||
parameterPath: ["options", "modifiedAccessConditions", "ifModifiedSince"],
|
||
mapper: {
|
||
serializedName: "If-Modified-Since",
|
||
xmlName: "If-Modified-Since",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
};
|
||
var ifUnmodifiedSince = {
|
||
parameterPath: ["options", "modifiedAccessConditions", "ifUnmodifiedSince"],
|
||
mapper: {
|
||
serializedName: "If-Unmodified-Since",
|
||
xmlName: "If-Unmodified-Since",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
};
|
||
var comp6 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "metadata",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp7 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "acl",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var containerAcl = {
|
||
parameterPath: ["options", "containerAcl"],
|
||
mapper: {
|
||
serializedName: "containerAcl",
|
||
xmlName: "SignedIdentifiers",
|
||
xmlIsWrapped: true,
|
||
xmlElementName: "SignedIdentifier",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Composite",
|
||
className: "SignedIdentifier"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var comp8 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "undelete",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var deletedContainerName = {
|
||
parameterPath: ["options", "deletedContainerName"],
|
||
mapper: {
|
||
serializedName: "x-ms-deleted-container-name",
|
||
xmlName: "x-ms-deleted-container-name",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var deletedContainerVersion = {
|
||
parameterPath: ["options", "deletedContainerVersion"],
|
||
mapper: {
|
||
serializedName: "x-ms-deleted-container-version",
|
||
xmlName: "x-ms-deleted-container-version",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp9 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "rename",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var sourceContainerName = {
|
||
parameterPath: "sourceContainerName",
|
||
mapper: {
|
||
serializedName: "x-ms-source-container-name",
|
||
required: true,
|
||
xmlName: "x-ms-source-container-name",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var sourceLeaseId = {
|
||
parameterPath: ["options", "sourceLeaseId"],
|
||
mapper: {
|
||
serializedName: "x-ms-source-lease-id",
|
||
xmlName: "x-ms-source-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp10 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "lease",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var action = {
|
||
parameterPath: "action",
|
||
mapper: {
|
||
defaultValue: "acquire",
|
||
isConstant: true,
|
||
serializedName: "x-ms-lease-action",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var duration = {
|
||
parameterPath: ["options", "duration"],
|
||
mapper: {
|
||
serializedName: "x-ms-lease-duration",
|
||
xmlName: "x-ms-lease-duration",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var proposedLeaseId = {
|
||
parameterPath: ["options", "proposedLeaseId"],
|
||
mapper: {
|
||
serializedName: "x-ms-proposed-lease-id",
|
||
xmlName: "x-ms-proposed-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var action1 = {
|
||
parameterPath: "action",
|
||
mapper: {
|
||
defaultValue: "release",
|
||
isConstant: true,
|
||
serializedName: "x-ms-lease-action",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var leaseId1 = {
|
||
parameterPath: "leaseId",
|
||
mapper: {
|
||
serializedName: "x-ms-lease-id",
|
||
required: true,
|
||
xmlName: "x-ms-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var action2 = {
|
||
parameterPath: "action",
|
||
mapper: {
|
||
defaultValue: "renew",
|
||
isConstant: true,
|
||
serializedName: "x-ms-lease-action",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var action3 = {
|
||
parameterPath: "action",
|
||
mapper: {
|
||
defaultValue: "break",
|
||
isConstant: true,
|
||
serializedName: "x-ms-lease-action",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var breakPeriod = {
|
||
parameterPath: ["options", "breakPeriod"],
|
||
mapper: {
|
||
serializedName: "x-ms-lease-break-period",
|
||
xmlName: "x-ms-lease-break-period",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var action4 = {
|
||
parameterPath: "action",
|
||
mapper: {
|
||
defaultValue: "change",
|
||
isConstant: true,
|
||
serializedName: "x-ms-lease-action",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var proposedLeaseId1 = {
|
||
parameterPath: "proposedLeaseId",
|
||
mapper: {
|
||
serializedName: "x-ms-proposed-lease-id",
|
||
required: true,
|
||
xmlName: "x-ms-proposed-lease-id",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var include1 = {
|
||
parameterPath: ["options", "include"],
|
||
mapper: {
|
||
serializedName: "include",
|
||
xmlName: "include",
|
||
xmlElementName: "ListBlobsIncludeItem",
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"copy",
|
||
"deleted",
|
||
"metadata",
|
||
"snapshots",
|
||
"uncommittedblobs",
|
||
"versions",
|
||
"tags"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
collectionFormat: coreHttp.QueryCollectionFormat.Csv
|
||
};
|
||
var delimiter = {
|
||
parameterPath: "delimiter",
|
||
mapper: {
|
||
serializedName: "delimiter",
|
||
required: true,
|
||
xmlName: "delimiter",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var directoryProperties = {
|
||
parameterPath: ["options", "directoryProperties"],
|
||
mapper: {
|
||
serializedName: "x-ms-properties",
|
||
xmlName: "x-ms-properties",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var posixPermissions = {
|
||
parameterPath: ["options", "posixPermissions"],
|
||
mapper: {
|
||
serializedName: "x-ms-permissions",
|
||
xmlName: "x-ms-permissions",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var posixUmask = {
|
||
parameterPath: ["options", "posixUmask"],
|
||
mapper: {
|
||
serializedName: "x-ms-umask",
|
||
xmlName: "x-ms-umask",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var cacheControl = {
|
||
parameterPath: ["options", "directoryHttpHeaders", "cacheControl"],
|
||
mapper: {
|
||
serializedName: "x-ms-cache-control",
|
||
xmlName: "x-ms-cache-control",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var contentType1 = {
|
||
parameterPath: ["options", "directoryHttpHeaders", "contentType"],
|
||
mapper: {
|
||
serializedName: "x-ms-content-type",
|
||
xmlName: "x-ms-content-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var contentEncoding = {
|
||
parameterPath: ["options", "directoryHttpHeaders", "contentEncoding"],
|
||
mapper: {
|
||
serializedName: "x-ms-content-encoding",
|
||
xmlName: "x-ms-content-encoding",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var contentLanguage = {
|
||
parameterPath: ["options", "directoryHttpHeaders", "contentLanguage"],
|
||
mapper: {
|
||
serializedName: "x-ms-content-language",
|
||
xmlName: "x-ms-content-language",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var contentDisposition = {
|
||
parameterPath: ["options", "directoryHttpHeaders", "contentDisposition"],
|
||
mapper: {
|
||
serializedName: "x-ms-content-disposition",
|
||
xmlName: "x-ms-content-disposition",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var ifMatch = {
|
||
parameterPath: ["options", "modifiedAccessConditions", "ifMatch"],
|
||
mapper: {
|
||
serializedName: "If-Match",
|
||
xmlName: "If-Match",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var ifNoneMatch = {
|
||
parameterPath: ["options", "modifiedAccessConditions", "ifNoneMatch"],
|
||
mapper: {
|
||
serializedName: "If-None-Match",
|
||
xmlName: "If-None-Match",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var pathRenameMode = {
|
||
parameterPath: ["options", "pathRenameMode"],
|
||
mapper: {
|
||
serializedName: "mode",
|
||
xmlName: "mode",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["legacy", "posix"]
|
||
}
|
||
}
|
||
};
|
||
var renameSource = {
|
||
parameterPath: "renameSource",
|
||
mapper: {
|
||
serializedName: "x-ms-rename-source",
|
||
required: true,
|
||
xmlName: "x-ms-rename-source",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var sourceIfModifiedSince = {
|
||
parameterPath: [
|
||
"options",
|
||
"sourceModifiedAccessConditions",
|
||
"sourceIfModifiedSince"
|
||
],
|
||
mapper: {
|
||
serializedName: "x-ms-source-if-modified-since",
|
||
xmlName: "x-ms-source-if-modified-since",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
};
|
||
var sourceIfUnmodifiedSince = {
|
||
parameterPath: [
|
||
"options",
|
||
"sourceModifiedAccessConditions",
|
||
"sourceIfUnmodifiedSince"
|
||
],
|
||
mapper: {
|
||
serializedName: "x-ms-source-if-unmodified-since",
|
||
xmlName: "x-ms-source-if-unmodified-since",
|
||
type: {
|
||
name: "DateTimeRfc1123"
|
||
}
|
||
}
|
||
};
|
||
var sourceIfMatch = {
|
||
parameterPath: ["options", "sourceModifiedAccessConditions", "sourceIfMatch"],
|
||
mapper: {
|
||
serializedName: "x-ms-source-if-match",
|
||
xmlName: "x-ms-source-if-match",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var sourceIfNoneMatch = {
|
||
parameterPath: [
|
||
"options",
|
||
"sourceModifiedAccessConditions",
|
||
"sourceIfNoneMatch"
|
||
],
|
||
mapper: {
|
||
serializedName: "x-ms-source-if-none-match",
|
||
xmlName: "x-ms-source-if-none-match",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var action5 = {
|
||
parameterPath: "action",
|
||
mapper: {
|
||
defaultValue: "setAccessControl",
|
||
isConstant: true,
|
||
serializedName: "action",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var owner = {
|
||
parameterPath: ["options", "owner"],
|
||
mapper: {
|
||
serializedName: "x-ms-owner",
|
||
xmlName: "x-ms-owner",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var group = {
|
||
parameterPath: ["options", "group"],
|
||
mapper: {
|
||
serializedName: "x-ms-group",
|
||
xmlName: "x-ms-group",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var posixAcl = {
|
||
parameterPath: ["options", "posixAcl"],
|
||
mapper: {
|
||
serializedName: "x-ms-acl",
|
||
xmlName: "x-ms-acl",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var action6 = {
|
||
parameterPath: "action",
|
||
mapper: {
|
||
defaultValue: "getAccessControl",
|
||
isConstant: true,
|
||
serializedName: "action",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var upn = {
|
||
parameterPath: ["options", "upn"],
|
||
mapper: {
|
||
serializedName: "upn",
|
||
xmlName: "upn",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
}
|
||
};
|
||
var snapshot = {
|
||
parameterPath: ["options", "snapshot"],
|
||
mapper: {
|
||
serializedName: "snapshot",
|
||
xmlName: "snapshot",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var versionId = {
|
||
parameterPath: ["options", "versionId"],
|
||
mapper: {
|
||
serializedName: "versionid",
|
||
xmlName: "versionid",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var range = {
|
||
parameterPath: ["options", "range"],
|
||
mapper: {
|
||
serializedName: "x-ms-range",
|
||
xmlName: "x-ms-range",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var rangeGetContentMD5 = {
|
||
parameterPath: ["options", "rangeGetContentMD5"],
|
||
mapper: {
|
||
serializedName: "x-ms-range-get-content-md5",
|
||
xmlName: "x-ms-range-get-content-md5",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
}
|
||
};
|
||
var rangeGetContentCRC64 = {
|
||
parameterPath: ["options", "rangeGetContentCRC64"],
|
||
mapper: {
|
||
serializedName: "x-ms-range-get-content-crc64",
|
||
xmlName: "x-ms-range-get-content-crc64",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
}
|
||
};
|
||
var encryptionKey = {
|
||
parameterPath: ["options", "cpkInfo", "encryptionKey"],
|
||
mapper: {
|
||
serializedName: "x-ms-encryption-key",
|
||
xmlName: "x-ms-encryption-key",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var encryptionKeySha256 = {
|
||
parameterPath: ["options", "cpkInfo", "encryptionKeySha256"],
|
||
mapper: {
|
||
serializedName: "x-ms-encryption-key-sha256",
|
||
xmlName: "x-ms-encryption-key-sha256",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var encryptionAlgorithm = {
|
||
parameterPath: ["options", "encryptionAlgorithm"],
|
||
mapper: {
|
||
defaultValue: "AES256",
|
||
isConstant: true,
|
||
serializedName: "x-ms-encryption-algorithm",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var ifTags = {
|
||
parameterPath: ["options", "modifiedAccessConditions", "ifTags"],
|
||
mapper: {
|
||
serializedName: "x-ms-if-tags",
|
||
xmlName: "x-ms-if-tags",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var deleteSnapshots = {
|
||
parameterPath: ["options", "deleteSnapshots"],
|
||
mapper: {
|
||
serializedName: "x-ms-delete-snapshots",
|
||
xmlName: "x-ms-delete-snapshots",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["include", "only"]
|
||
}
|
||
}
|
||
};
|
||
var blobDeleteType = {
|
||
parameterPath: ["options", "blobDeleteType"],
|
||
mapper: {
|
||
serializedName: "deletetype",
|
||
xmlName: "deletetype",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp11 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "expiry",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var expiryOptions = {
|
||
parameterPath: "expiryOptions",
|
||
mapper: {
|
||
serializedName: "x-ms-expiry-option",
|
||
required: true,
|
||
xmlName: "x-ms-expiry-option",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var expiresOn = {
|
||
parameterPath: ["options", "expiresOn"],
|
||
mapper: {
|
||
serializedName: "x-ms-expiry-time",
|
||
xmlName: "x-ms-expiry-time",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blobCacheControl = {
|
||
parameterPath: ["options", "blobHttpHeaders", "blobCacheControl"],
|
||
mapper: {
|
||
serializedName: "x-ms-blob-cache-control",
|
||
xmlName: "x-ms-blob-cache-control",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blobContentType = {
|
||
parameterPath: ["options", "blobHttpHeaders", "blobContentType"],
|
||
mapper: {
|
||
serializedName: "x-ms-blob-content-type",
|
||
xmlName: "x-ms-blob-content-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blobContentMD5 = {
|
||
parameterPath: ["options", "blobHttpHeaders", "blobContentMD5"],
|
||
mapper: {
|
||
serializedName: "x-ms-blob-content-md5",
|
||
xmlName: "x-ms-blob-content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
}
|
||
};
|
||
var blobContentEncoding = {
|
||
parameterPath: ["options", "blobHttpHeaders", "blobContentEncoding"],
|
||
mapper: {
|
||
serializedName: "x-ms-blob-content-encoding",
|
||
xmlName: "x-ms-blob-content-encoding",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blobContentLanguage = {
|
||
parameterPath: ["options", "blobHttpHeaders", "blobContentLanguage"],
|
||
mapper: {
|
||
serializedName: "x-ms-blob-content-language",
|
||
xmlName: "x-ms-blob-content-language",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blobContentDisposition = {
|
||
parameterPath: ["options", "blobHttpHeaders", "blobContentDisposition"],
|
||
mapper: {
|
||
serializedName: "x-ms-blob-content-disposition",
|
||
xmlName: "x-ms-blob-content-disposition",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var encryptionScope = {
|
||
parameterPath: ["options", "encryptionScope"],
|
||
mapper: {
|
||
serializedName: "x-ms-encryption-scope",
|
||
xmlName: "x-ms-encryption-scope",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp12 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "snapshot",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var tier = {
|
||
parameterPath: ["options", "tier"],
|
||
mapper: {
|
||
serializedName: "x-ms-access-tier",
|
||
xmlName: "x-ms-access-tier",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"P4",
|
||
"P6",
|
||
"P10",
|
||
"P15",
|
||
"P20",
|
||
"P30",
|
||
"P40",
|
||
"P50",
|
||
"P60",
|
||
"P70",
|
||
"P80",
|
||
"Hot",
|
||
"Cool",
|
||
"Archive"
|
||
]
|
||
}
|
||
}
|
||
};
|
||
var rehydratePriority = {
|
||
parameterPath: ["options", "rehydratePriority"],
|
||
mapper: {
|
||
serializedName: "x-ms-rehydrate-priority",
|
||
xmlName: "x-ms-rehydrate-priority",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["High", "Standard"]
|
||
}
|
||
}
|
||
};
|
||
var sourceIfTags = {
|
||
parameterPath: ["options", "sourceModifiedAccessConditions", "sourceIfTags"],
|
||
mapper: {
|
||
serializedName: "x-ms-source-if-tags",
|
||
xmlName: "x-ms-source-if-tags",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var copySource = {
|
||
parameterPath: "copySource",
|
||
mapper: {
|
||
serializedName: "x-ms-copy-source",
|
||
required: true,
|
||
xmlName: "x-ms-copy-source",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blobTagsString = {
|
||
parameterPath: ["options", "blobTagsString"],
|
||
mapper: {
|
||
serializedName: "x-ms-tags",
|
||
xmlName: "x-ms-tags",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var sealBlob = {
|
||
parameterPath: ["options", "sealBlob"],
|
||
mapper: {
|
||
serializedName: "x-ms-seal-blob",
|
||
xmlName: "x-ms-seal-blob",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
}
|
||
};
|
||
var xMsRequiresSync = {
|
||
parameterPath: "xMsRequiresSync",
|
||
mapper: {
|
||
defaultValue: "true",
|
||
isConstant: true,
|
||
serializedName: "x-ms-requires-sync",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var sourceContentMD5 = {
|
||
parameterPath: ["options", "sourceContentMD5"],
|
||
mapper: {
|
||
serializedName: "x-ms-source-content-md5",
|
||
xmlName: "x-ms-source-content-md5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
}
|
||
};
|
||
var comp13 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "copy",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var copyActionAbortConstant = {
|
||
parameterPath: "copyActionAbortConstant",
|
||
mapper: {
|
||
defaultValue: "abort",
|
||
isConstant: true,
|
||
serializedName: "x-ms-copy-action",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var copyId = {
|
||
parameterPath: "copyId",
|
||
mapper: {
|
||
serializedName: "copyid",
|
||
required: true,
|
||
xmlName: "copyid",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp14 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "tier",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var tier1 = {
|
||
parameterPath: "tier",
|
||
mapper: {
|
||
serializedName: "x-ms-access-tier",
|
||
required: true,
|
||
xmlName: "x-ms-access-tier",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: [
|
||
"P4",
|
||
"P6",
|
||
"P10",
|
||
"P15",
|
||
"P20",
|
||
"P30",
|
||
"P40",
|
||
"P50",
|
||
"P60",
|
||
"P70",
|
||
"P80",
|
||
"Hot",
|
||
"Cool",
|
||
"Archive"
|
||
]
|
||
}
|
||
}
|
||
};
|
||
var queryRequest = {
|
||
parameterPath: ["options", "queryRequest"],
|
||
mapper: QueryRequest
|
||
};
|
||
var comp15 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "query",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp16 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "tags",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var tags = {
|
||
parameterPath: ["options", "tags"],
|
||
mapper: BlobTags
|
||
};
|
||
var transactionalContentMD5 = {
|
||
parameterPath: ["options", "transactionalContentMD5"],
|
||
mapper: {
|
||
serializedName: "Content-MD5",
|
||
xmlName: "Content-MD5",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
}
|
||
};
|
||
var transactionalContentCrc64 = {
|
||
parameterPath: ["options", "transactionalContentCrc64"],
|
||
mapper: {
|
||
serializedName: "x-ms-content-crc64",
|
||
xmlName: "x-ms-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
}
|
||
};
|
||
var blobType = {
|
||
parameterPath: "blobType",
|
||
mapper: {
|
||
defaultValue: "PageBlob",
|
||
isConstant: true,
|
||
serializedName: "x-ms-blob-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blobContentLength = {
|
||
parameterPath: "blobContentLength",
|
||
mapper: {
|
||
serializedName: "x-ms-blob-content-length",
|
||
required: true,
|
||
xmlName: "x-ms-blob-content-length",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var blobSequenceNumber = {
|
||
parameterPath: ["options", "blobSequenceNumber"],
|
||
mapper: {
|
||
serializedName: "x-ms-blob-sequence-number",
|
||
xmlName: "x-ms-blob-sequence-number",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var contentType2 = {
|
||
parameterPath: ["options", "contentType"],
|
||
mapper: {
|
||
defaultValue: "application/octet-stream",
|
||
isConstant: true,
|
||
serializedName: "Content-Type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var body1 = {
|
||
parameterPath: "body",
|
||
mapper: {
|
||
serializedName: "body",
|
||
required: true,
|
||
xmlName: "body",
|
||
type: {
|
||
name: "Stream"
|
||
}
|
||
}
|
||
};
|
||
var accept2 = {
|
||
parameterPath: "accept",
|
||
mapper: {
|
||
defaultValue: "application/xml",
|
||
isConstant: true,
|
||
serializedName: "Accept",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp17 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "page",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var pageWrite = {
|
||
parameterPath: "pageWrite",
|
||
mapper: {
|
||
defaultValue: "update",
|
||
isConstant: true,
|
||
serializedName: "x-ms-page-write",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var ifSequenceNumberLessThanOrEqualTo = {
|
||
parameterPath: [
|
||
"options",
|
||
"sequenceNumberAccessConditions",
|
||
"ifSequenceNumberLessThanOrEqualTo"
|
||
],
|
||
mapper: {
|
||
serializedName: "x-ms-if-sequence-number-le",
|
||
xmlName: "x-ms-if-sequence-number-le",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var ifSequenceNumberLessThan = {
|
||
parameterPath: [
|
||
"options",
|
||
"sequenceNumberAccessConditions",
|
||
"ifSequenceNumberLessThan"
|
||
],
|
||
mapper: {
|
||
serializedName: "x-ms-if-sequence-number-lt",
|
||
xmlName: "x-ms-if-sequence-number-lt",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var ifSequenceNumberEqualTo = {
|
||
parameterPath: [
|
||
"options",
|
||
"sequenceNumberAccessConditions",
|
||
"ifSequenceNumberEqualTo"
|
||
],
|
||
mapper: {
|
||
serializedName: "x-ms-if-sequence-number-eq",
|
||
xmlName: "x-ms-if-sequence-number-eq",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var pageWrite1 = {
|
||
parameterPath: "pageWrite",
|
||
mapper: {
|
||
defaultValue: "clear",
|
||
isConstant: true,
|
||
serializedName: "x-ms-page-write",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var sourceUrl = {
|
||
parameterPath: "sourceUrl",
|
||
mapper: {
|
||
serializedName: "x-ms-copy-source",
|
||
required: true,
|
||
xmlName: "x-ms-copy-source",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var sourceRange = {
|
||
parameterPath: "sourceRange",
|
||
mapper: {
|
||
serializedName: "x-ms-source-range",
|
||
required: true,
|
||
xmlName: "x-ms-source-range",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var sourceContentCrc64 = {
|
||
parameterPath: ["options", "sourceContentCrc64"],
|
||
mapper: {
|
||
serializedName: "x-ms-source-content-crc64",
|
||
xmlName: "x-ms-source-content-crc64",
|
||
type: {
|
||
name: "ByteArray"
|
||
}
|
||
}
|
||
};
|
||
var range1 = {
|
||
parameterPath: "range",
|
||
mapper: {
|
||
serializedName: "x-ms-range",
|
||
required: true,
|
||
xmlName: "x-ms-range",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp18 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "pagelist",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var prevsnapshot = {
|
||
parameterPath: ["options", "prevsnapshot"],
|
||
mapper: {
|
||
serializedName: "prevsnapshot",
|
||
xmlName: "prevsnapshot",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var prevSnapshotUrl = {
|
||
parameterPath: ["options", "prevSnapshotUrl"],
|
||
mapper: {
|
||
serializedName: "x-ms-previous-snapshot-url",
|
||
xmlName: "x-ms-previous-snapshot-url",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var sequenceNumberAction = {
|
||
parameterPath: "sequenceNumberAction",
|
||
mapper: {
|
||
serializedName: "x-ms-sequence-number-action",
|
||
required: true,
|
||
xmlName: "x-ms-sequence-number-action",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["max", "update", "increment"]
|
||
}
|
||
}
|
||
};
|
||
var comp19 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "incrementalcopy",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blobType1 = {
|
||
parameterPath: "blobType",
|
||
mapper: {
|
||
defaultValue: "AppendBlob",
|
||
isConstant: true,
|
||
serializedName: "x-ms-blob-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp20 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "appendblock",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var maxSize = {
|
||
parameterPath: ["options", "appendPositionAccessConditions", "maxSize"],
|
||
mapper: {
|
||
serializedName: "x-ms-blob-condition-maxsize",
|
||
xmlName: "x-ms-blob-condition-maxsize",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var appendPosition = {
|
||
parameterPath: [
|
||
"options",
|
||
"appendPositionAccessConditions",
|
||
"appendPosition"
|
||
],
|
||
mapper: {
|
||
serializedName: "x-ms-blob-condition-appendpos",
|
||
xmlName: "x-ms-blob-condition-appendpos",
|
||
type: {
|
||
name: "Number"
|
||
}
|
||
}
|
||
};
|
||
var sourceRange1 = {
|
||
parameterPath: ["options", "sourceRange"],
|
||
mapper: {
|
||
serializedName: "x-ms-source-range",
|
||
xmlName: "x-ms-source-range",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var comp21 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "seal",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blobType2 = {
|
||
parameterPath: "blobType",
|
||
mapper: {
|
||
defaultValue: "BlockBlob",
|
||
isConstant: true,
|
||
serializedName: "x-ms-blob-type",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var copySourceBlobProperties = {
|
||
parameterPath: ["options", "copySourceBlobProperties"],
|
||
mapper: {
|
||
serializedName: "x-ms-copy-source-blob-properties",
|
||
xmlName: "x-ms-copy-source-blob-properties",
|
||
type: {
|
||
name: "Boolean"
|
||
}
|
||
}
|
||
};
|
||
var comp22 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "block",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blockId = {
|
||
parameterPath: "blockId",
|
||
mapper: {
|
||
serializedName: "blockid",
|
||
required: true,
|
||
xmlName: "blockid",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var blocks = {
|
||
parameterPath: "blocks",
|
||
mapper: BlockLookupList
|
||
};
|
||
var comp23 = {
|
||
parameterPath: "comp",
|
||
mapper: {
|
||
defaultValue: "blocklist",
|
||
isConstant: true,
|
||
serializedName: "comp",
|
||
type: {
|
||
name: "String"
|
||
}
|
||
}
|
||
};
|
||
var listType = {
|
||
parameterPath: "listType",
|
||
mapper: {
|
||
defaultValue: "committed",
|
||
serializedName: "blocklisttype",
|
||
required: true,
|
||
xmlName: "blocklisttype",
|
||
type: {
|
||
name: "Enum",
|
||
allowedValues: ["committed", "uncommitted", "all"]
|
||
}
|
||
}
|
||
};
|
||
|
||
/*
|
||
* Copyright (c) Microsoft Corporation.
|
||
* Licensed under the MIT License.
|
||
*
|
||
* Code generated by Microsoft (R) AutoRest Code Generator.
|
||
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||
*/
|
||
/** Class representing a Service. */
|
||
var Service = /** @class */ (function () {
|
||
/**
|
||
* Initialize a new instance of the class Service class.
|
||
* @param client Reference to the service client
|
||
*/
|
||
function Service(client) {
|
||
this.client = client;
|
||
}
|
||
/**
|
||
* Sets properties for a storage account's Blob service endpoint, including properties for Storage
|
||
* Analytics and CORS (Cross-Origin Resource Sharing) rules
|
||
* @param blobServiceProperties The StorageService properties.
|
||
* @param options The options parameters.
|
||
*/
|
||
Service.prototype.setProperties = function (blobServiceProperties, options) {
|
||
var operationArguments = {
|
||
blobServiceProperties: blobServiceProperties,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, setPropertiesOperationSpec);
|
||
};
|
||
/**
|
||
* gets the properties of a storage account's Blob service, including properties for Storage Analytics
|
||
* and CORS (Cross-Origin Resource Sharing) rules.
|
||
* @param options The options parameters.
|
||
*/
|
||
Service.prototype.getProperties = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec);
|
||
};
|
||
/**
|
||
* Retrieves statistics related to replication for the Blob service. It is only available on the
|
||
* secondary location endpoint when read-access geo-redundant replication is enabled for the storage
|
||
* account.
|
||
* @param options The options parameters.
|
||
*/
|
||
Service.prototype.getStatistics = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getStatisticsOperationSpec);
|
||
};
|
||
/**
|
||
* The List Containers Segment operation returns a list of the containers under the specified account
|
||
* @param options The options parameters.
|
||
*/
|
||
Service.prototype.listContainersSegment = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, listContainersSegmentOperationSpec);
|
||
};
|
||
/**
|
||
* Retrieves a user delegation key for the Blob service. This is only a valid operation when using
|
||
* bearer token authentication.
|
||
* @param keyInfo Key information
|
||
* @param options The options parameters.
|
||
*/
|
||
Service.prototype.getUserDelegationKey = function (keyInfo, options) {
|
||
var operationArguments = {
|
||
keyInfo: keyInfo,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getUserDelegationKeyOperationSpec);
|
||
};
|
||
/**
|
||
* Returns the sku name and account kind
|
||
* @param options The options parameters.
|
||
*/
|
||
Service.prototype.getAccountInfo = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec);
|
||
};
|
||
/**
|
||
* The Batch operation allows multiple API calls to be embedded into a single HTTP request.
|
||
* @param contentLength The length of the request.
|
||
* @param multipartContentType Required. The value of this header must be multipart/mixed with a batch
|
||
* boundary. Example header value: multipart/mixed; boundary=batch_<GUID>
|
||
* @param body Initial data
|
||
* @param options The options parameters.
|
||
*/
|
||
Service.prototype.submitBatch = function (contentLength, multipartContentType, body, options) {
|
||
var operationArguments = {
|
||
contentLength: contentLength,
|
||
multipartContentType: multipartContentType,
|
||
body: body,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec);
|
||
};
|
||
/**
|
||
* The Filter Blobs operation enables callers to list blobs across all containers whose tags match a
|
||
* given search expression. Filter blobs searches across all containers within a storage account but
|
||
* can be scoped within the expression to a single container.
|
||
* @param options The options parameters.
|
||
*/
|
||
Service.prototype.filterBlobs = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, filterBlobsOperationSpec);
|
||
};
|
||
return Service;
|
||
}());
|
||
// Operation Specifications
|
||
var xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);
|
||
var setPropertiesOperationSpec = {
|
||
path: "/",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
202: {
|
||
headersMapper: ServiceSetPropertiesHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ServiceSetPropertiesExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: blobServiceProperties,
|
||
queryParameters: [
|
||
restype,
|
||
comp,
|
||
timeoutInSeconds
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
contentType,
|
||
accept,
|
||
version,
|
||
requestId
|
||
],
|
||
isXML: true,
|
||
contentType: "application/xml; charset=utf-8",
|
||
mediaType: "xml",
|
||
serializer: xmlSerializer
|
||
};
|
||
var getPropertiesOperationSpec = {
|
||
path: "/",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: BlobServiceProperties,
|
||
headersMapper: ServiceGetPropertiesHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ServiceGetPropertiesExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
restype,
|
||
comp,
|
||
timeoutInSeconds
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer
|
||
};
|
||
var getStatisticsOperationSpec = {
|
||
path: "/",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: BlobServiceStatistics,
|
||
headersMapper: ServiceGetStatisticsHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ServiceGetStatisticsExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
restype,
|
||
timeoutInSeconds,
|
||
comp1
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer
|
||
};
|
||
var listContainersSegmentOperationSpec = {
|
||
path: "/",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: ListContainersSegmentResponse,
|
||
headersMapper: ServiceListContainersSegmentHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ServiceListContainersSegmentExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
comp2,
|
||
prefix,
|
||
marker,
|
||
maxPageSize,
|
||
include
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer
|
||
};
|
||
var getUserDelegationKeyOperationSpec = {
|
||
path: "/",
|
||
httpMethod: "POST",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: UserDelegationKey,
|
||
headersMapper: ServiceGetUserDelegationKeyHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ServiceGetUserDelegationKeyExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: keyInfo,
|
||
queryParameters: [
|
||
restype,
|
||
timeoutInSeconds,
|
||
comp3
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
contentType,
|
||
accept,
|
||
version,
|
||
requestId
|
||
],
|
||
isXML: true,
|
||
contentType: "application/xml; charset=utf-8",
|
||
mediaType: "xml",
|
||
serializer: xmlSerializer
|
||
};
|
||
var getAccountInfoOperationSpec = {
|
||
path: "/",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
headersMapper: ServiceGetAccountInfoHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ServiceGetAccountInfoExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [comp, restype1],
|
||
urlParameters: [url],
|
||
headerParameters: [version, accept1],
|
||
isXML: true,
|
||
serializer: xmlSerializer
|
||
};
|
||
var submitBatchOperationSpec = {
|
||
path: "/",
|
||
httpMethod: "POST",
|
||
responses: {
|
||
202: {
|
||
bodyMapper: {
|
||
type: { name: "Stream" },
|
||
serializedName: "parsedResponse"
|
||
},
|
||
headersMapper: ServiceSubmitBatchHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ServiceSubmitBatchExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: body,
|
||
queryParameters: [timeoutInSeconds, comp4],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
contentType,
|
||
accept,
|
||
version,
|
||
requestId,
|
||
contentLength,
|
||
multipartContentType
|
||
],
|
||
isXML: true,
|
||
contentType: "application/xml; charset=utf-8",
|
||
mediaType: "xml",
|
||
serializer: xmlSerializer
|
||
};
|
||
var filterBlobsOperationSpec = {
|
||
path: "/",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: FilterBlobSegment,
|
||
headersMapper: ServiceFilterBlobsHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ServiceFilterBlobsExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
marker,
|
||
maxPageSize,
|
||
comp5,
|
||
where
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer
|
||
};
|
||
|
||
/*
|
||
* Copyright (c) Microsoft Corporation.
|
||
* Licensed under the MIT License.
|
||
*
|
||
* Code generated by Microsoft (R) AutoRest Code Generator.
|
||
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||
*/
|
||
/** Class representing a Container. */
|
||
var Container = /** @class */ (function () {
|
||
/**
|
||
* Initialize a new instance of the class Container class.
|
||
* @param client Reference to the service client
|
||
*/
|
||
function Container(client) {
|
||
this.client = client;
|
||
}
|
||
/**
|
||
* creates a new container under the specified account. If the container with the same name already
|
||
* exists, the operation fails
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.create = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, createOperationSpec);
|
||
};
|
||
/**
|
||
* returns all user-defined metadata and system properties for the specified container. The data
|
||
* returned does not include the container's list of blobs
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.getProperties = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec$1);
|
||
};
|
||
/**
|
||
* operation marks the specified container for deletion. The container and any blobs contained within
|
||
* it are later deleted during garbage collection
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.delete = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, deleteOperationSpec);
|
||
};
|
||
/**
|
||
* operation sets one or more user-defined name-value pairs for the specified container.
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.setMetadata = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec);
|
||
};
|
||
/**
|
||
* gets the permissions for the specified container. The permissions indicate whether container data
|
||
* may be accessed publicly.
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.getAccessPolicy = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getAccessPolicyOperationSpec);
|
||
};
|
||
/**
|
||
* sets the permissions for the specified container. The permissions indicate whether blobs in a
|
||
* container may be accessed publicly.
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.setAccessPolicy = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, setAccessPolicyOperationSpec);
|
||
};
|
||
/**
|
||
* Restores a previously-deleted container.
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.restore = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, restoreOperationSpec);
|
||
};
|
||
/**
|
||
* Renames an existing container.
|
||
* @param sourceContainerName Required. Specifies the name of the container to rename.
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.rename = function (sourceContainerName, options) {
|
||
var operationArguments = {
|
||
sourceContainerName: sourceContainerName,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, renameOperationSpec);
|
||
};
|
||
/**
|
||
* The Batch operation allows multiple API calls to be embedded into a single HTTP request.
|
||
* @param contentLength The length of the request.
|
||
* @param multipartContentType Required. The value of this header must be multipart/mixed with a batch
|
||
* boundary. Example header value: multipart/mixed; boundary=batch_<GUID>
|
||
* @param body Initial data
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.submitBatch = function (contentLength, multipartContentType, body, options) {
|
||
var operationArguments = {
|
||
contentLength: contentLength,
|
||
multipartContentType: multipartContentType,
|
||
body: body,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec$1);
|
||
};
|
||
/**
|
||
* [Update] establishes and manages a lock on a container for delete operations. The lock duration can
|
||
* be 15 to 60 seconds, or can be infinite
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.acquireLease = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec);
|
||
};
|
||
/**
|
||
* [Update] establishes and manages a lock on a container for delete operations. The lock duration can
|
||
* be 15 to 60 seconds, or can be infinite
|
||
* @param leaseId Specifies the current lease ID on the resource.
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.releaseLease = function (leaseId, options) {
|
||
var operationArguments = {
|
||
leaseId: leaseId,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec);
|
||
};
|
||
/**
|
||
* [Update] establishes and manages a lock on a container for delete operations. The lock duration can
|
||
* be 15 to 60 seconds, or can be infinite
|
||
* @param leaseId Specifies the current lease ID on the resource.
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.renewLease = function (leaseId, options) {
|
||
var operationArguments = {
|
||
leaseId: leaseId,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec);
|
||
};
|
||
/**
|
||
* [Update] establishes and manages a lock on a container for delete operations. The lock duration can
|
||
* be 15 to 60 seconds, or can be infinite
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.breakLease = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec);
|
||
};
|
||
/**
|
||
* [Update] establishes and manages a lock on a container for delete operations. The lock duration can
|
||
* be 15 to 60 seconds, or can be infinite
|
||
* @param leaseId Specifies the current lease ID on the resource.
|
||
* @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400
|
||
* (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor
|
||
* (String) for a list of valid GUID string formats.
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.changeLease = function (leaseId, proposedLeaseId, options) {
|
||
var operationArguments = {
|
||
leaseId: leaseId,
|
||
proposedLeaseId: proposedLeaseId,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec);
|
||
};
|
||
/**
|
||
* [Update] The List Blobs operation returns a list of the blobs under the specified container
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.listBlobFlatSegment = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, listBlobFlatSegmentOperationSpec);
|
||
};
|
||
/**
|
||
* [Update] The List Blobs operation returns a list of the blobs under the specified container
|
||
* @param delimiter When the request includes this parameter, the operation returns a BlobPrefix
|
||
* element in the response body that acts as a placeholder for all blobs whose names begin with the
|
||
* same substring up to the appearance of the delimiter character. The delimiter may be a single
|
||
* character or a string.
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.listBlobHierarchySegment = function (delimiter, options) {
|
||
var operationArguments = {
|
||
delimiter: delimiter,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, listBlobHierarchySegmentOperationSpec);
|
||
};
|
||
/**
|
||
* Returns the sku name and account kind
|
||
* @param options The options parameters.
|
||
*/
|
||
Container.prototype.getAccountInfo = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec$1);
|
||
};
|
||
return Container;
|
||
}());
|
||
// Operation Specifications
|
||
var xmlSerializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ true);
|
||
var createOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: ContainerCreateHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerCreateExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, restype2],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
metadata,
|
||
access,
|
||
defaultEncryptionScope,
|
||
preventEncryptionScopeOverride
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var getPropertiesOperationSpec$1 = {
|
||
path: "/{containerName}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
headersMapper: ContainerGetPropertiesHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerGetPropertiesExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, restype2],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var deleteOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "DELETE",
|
||
responses: {
|
||
202: {
|
||
headersMapper: ContainerDeleteHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerDeleteExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, restype2],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var setMetadataOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: ContainerSetMetadataHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerSetMetadataExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
restype2,
|
||
comp6
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
metadata,
|
||
leaseId,
|
||
ifModifiedSince
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var getAccessPolicyOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: {
|
||
type: {
|
||
name: "Sequence",
|
||
element: {
|
||
type: { name: "Composite", className: "SignedIdentifier" }
|
||
}
|
||
},
|
||
serializedName: "SignedIdentifiers",
|
||
xmlName: "SignedIdentifiers",
|
||
xmlIsWrapped: true,
|
||
xmlElementName: "SignedIdentifier"
|
||
},
|
||
headersMapper: ContainerGetAccessPolicyHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerGetAccessPolicyExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
restype2,
|
||
comp7
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var setAccessPolicyOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: ContainerSetAccessPolicyHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerSetAccessPolicyExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: containerAcl,
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
restype2,
|
||
comp7
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
contentType,
|
||
accept,
|
||
version,
|
||
requestId,
|
||
access,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince
|
||
],
|
||
isXML: true,
|
||
contentType: "application/xml; charset=utf-8",
|
||
mediaType: "xml",
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var restoreOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: ContainerRestoreHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerRestoreExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
restype2,
|
||
comp8
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
deletedContainerName,
|
||
deletedContainerVersion
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var renameOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: ContainerRenameHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerRenameExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
restype2,
|
||
comp9
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
sourceContainerName,
|
||
sourceLeaseId
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var submitBatchOperationSpec$1 = {
|
||
path: "/{containerName}",
|
||
httpMethod: "POST",
|
||
responses: {
|
||
202: {
|
||
bodyMapper: {
|
||
type: { name: "Stream" },
|
||
serializedName: "parsedResponse"
|
||
},
|
||
headersMapper: ContainerSubmitBatchHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerSubmitBatchExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: body,
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
comp4,
|
||
restype2
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
contentType,
|
||
accept,
|
||
version,
|
||
requestId,
|
||
contentLength,
|
||
multipartContentType
|
||
],
|
||
isXML: true,
|
||
contentType: "application/xml; charset=utf-8",
|
||
mediaType: "xml",
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var acquireLeaseOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: ContainerAcquireLeaseHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerAcquireLeaseExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
restype2,
|
||
comp10
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
action,
|
||
duration,
|
||
proposedLeaseId
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var releaseLeaseOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: ContainerReleaseLeaseHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerReleaseLeaseExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
restype2,
|
||
comp10
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
action1,
|
||
leaseId1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var renewLeaseOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: ContainerRenewLeaseHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerRenewLeaseExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
restype2,
|
||
comp10
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
leaseId1,
|
||
action2
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var breakLeaseOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
202: {
|
||
headersMapper: ContainerBreakLeaseHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerBreakLeaseExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
restype2,
|
||
comp10
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
action3,
|
||
breakPeriod
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var changeLeaseOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: ContainerChangeLeaseHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerChangeLeaseExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
restype2,
|
||
comp10
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
leaseId1,
|
||
action4,
|
||
proposedLeaseId1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var listBlobFlatSegmentOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: ListBlobsFlatSegmentResponse,
|
||
headersMapper: ContainerListBlobFlatSegmentHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerListBlobFlatSegmentExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
comp2,
|
||
prefix,
|
||
marker,
|
||
maxPageSize,
|
||
restype2,
|
||
include1
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var listBlobHierarchySegmentOperationSpec = {
|
||
path: "/{containerName}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: ListBlobsHierarchySegmentResponse,
|
||
headersMapper: ContainerListBlobHierarchySegmentHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerListBlobHierarchySegmentExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
comp2,
|
||
prefix,
|
||
marker,
|
||
maxPageSize,
|
||
restype2,
|
||
include1,
|
||
delimiter
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
var getAccountInfoOperationSpec$1 = {
|
||
path: "/{containerName}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
headersMapper: ContainerGetAccountInfoHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: ContainerGetAccountInfoExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [comp, restype1],
|
||
urlParameters: [url],
|
||
headerParameters: [version, accept1],
|
||
isXML: true,
|
||
serializer: xmlSerializer$1
|
||
};
|
||
|
||
/*
|
||
* Copyright (c) Microsoft Corporation.
|
||
* Licensed under the MIT License.
|
||
*
|
||
* Code generated by Microsoft (R) AutoRest Code Generator.
|
||
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||
*/
|
||
/** Class representing a Blob. */
|
||
var Blob$1 = /** @class */ (function () {
|
||
/**
|
||
* Initialize a new instance of the class Blob class.
|
||
* @param client Reference to the service client
|
||
*/
|
||
function Blob(client) {
|
||
this.client = client;
|
||
}
|
||
/**
|
||
* The Download operation reads or downloads a blob from the system, including its metadata and
|
||
* properties. You can also call Download to read a snapshot.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.download = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, downloadOperationSpec);
|
||
};
|
||
/**
|
||
* The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system
|
||
* properties for the blob. It does not return the content of the blob.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.getProperties = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec$2);
|
||
};
|
||
/**
|
||
* If the storage account's soft delete feature is disabled then, when a blob is deleted, it is
|
||
* permanently removed from the storage account. If the storage account's soft delete feature is
|
||
* enabled, then, when a blob is deleted, it is marked for deletion and becomes inaccessible
|
||
* immediately. However, the blob service retains the blob or snapshot for the number of days specified
|
||
* by the DeleteRetentionPolicy section of [Storage service properties]
|
||
* (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is
|
||
* permanently removed from the storage account. Note that you continue to be charged for the
|
||
* soft-deleted blob's storage until it is permanently removed. Use the List Blobs API and specify the
|
||
* "include=deleted" query parameter to discover which blobs and snapshots have been soft deleted. You
|
||
* can then use the Undelete Blob API to restore a soft-deleted blob. All other operations on a
|
||
* soft-deleted blob or snapshot causes the service to return an HTTP status code of 404
|
||
* (ResourceNotFound).
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.delete = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, deleteOperationSpec$1);
|
||
};
|
||
/**
|
||
* Set the owner, group, permissions, or access control list for a blob.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.setAccessControl = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, setAccessControlOperationSpec);
|
||
};
|
||
/**
|
||
* Get the owner, group, permissions, or access control list for a blob.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.getAccessControl = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getAccessControlOperationSpec);
|
||
};
|
||
/**
|
||
* Rename a blob/file. By default, the destination is overwritten and if the destination already
|
||
* exists and has a lease the lease is broken. This operation supports conditional HTTP requests. For
|
||
* more information, see [Specifying Conditional Headers for Blob Service
|
||
* Operations](https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations).
|
||
* To fail if the destination already exists, use a conditional request with If-None-Match: "*".
|
||
* @param renameSource The file or directory to be renamed. The value must have the following format:
|
||
* "/{filesysystem}/{path}". If "x-ms-properties" is specified, the properties will overwrite the
|
||
* existing properties; otherwise, the existing properties will be preserved.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.rename = function (renameSource, options) {
|
||
var operationArguments = {
|
||
renameSource: renameSource,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, renameOperationSpec$1);
|
||
};
|
||
/**
|
||
* Undelete a blob that was previously soft deleted
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.undelete = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, undeleteOperationSpec);
|
||
};
|
||
/**
|
||
* Sets the time a blob will expire and be deleted.
|
||
* @param expiryOptions Required. Indicates mode of the expiry time
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.setExpiry = function (expiryOptions, options) {
|
||
var operationArguments = {
|
||
expiryOptions: expiryOptions,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, setExpiryOperationSpec);
|
||
};
|
||
/**
|
||
* The Set HTTP Headers operation sets system properties on the blob
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.setHttpHeaders = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, setHttpHeadersOperationSpec);
|
||
};
|
||
/**
|
||
* The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more
|
||
* name-value pairs
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.setMetadata = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec$1);
|
||
};
|
||
/**
|
||
* [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
|
||
* operations
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.acquireLease = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec$1);
|
||
};
|
||
/**
|
||
* [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
|
||
* operations
|
||
* @param leaseId Specifies the current lease ID on the resource.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.releaseLease = function (leaseId, options) {
|
||
var operationArguments = {
|
||
leaseId: leaseId,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec$1);
|
||
};
|
||
/**
|
||
* [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
|
||
* operations
|
||
* @param leaseId Specifies the current lease ID on the resource.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.renewLease = function (leaseId, options) {
|
||
var operationArguments = {
|
||
leaseId: leaseId,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec$1);
|
||
};
|
||
/**
|
||
* [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
|
||
* operations
|
||
* @param leaseId Specifies the current lease ID on the resource.
|
||
* @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400
|
||
* (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor
|
||
* (String) for a list of valid GUID string formats.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.changeLease = function (leaseId, proposedLeaseId, options) {
|
||
var operationArguments = {
|
||
leaseId: leaseId,
|
||
proposedLeaseId: proposedLeaseId,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec$1);
|
||
};
|
||
/**
|
||
* [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
|
||
* operations
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.breakLease = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec$1);
|
||
};
|
||
/**
|
||
* The Create Snapshot operation creates a read-only snapshot of a blob
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.createSnapshot = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, createSnapshotOperationSpec);
|
||
};
|
||
/**
|
||
* The Start Copy From URL operation copies a blob or an internet resource to a new blob.
|
||
* @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
|
||
* 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
|
||
* appear in a request URI. The source blob must either be public or must be authenticated via a shared
|
||
* access signature.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.startCopyFromURL = function (copySource, options) {
|
||
var operationArguments = {
|
||
copySource: copySource,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, startCopyFromURLOperationSpec);
|
||
};
|
||
/**
|
||
* The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return
|
||
* a response until the copy is complete.
|
||
* @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
|
||
* 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
|
||
* appear in a request URI. The source blob must either be public or must be authenticated via a shared
|
||
* access signature.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.copyFromURL = function (copySource, options) {
|
||
var operationArguments = {
|
||
copySource: copySource,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, copyFromURLOperationSpec);
|
||
};
|
||
/**
|
||
* The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination
|
||
* blob with zero length and full metadata.
|
||
* @param copyId The copy identifier provided in the x-ms-copy-id header of the original Copy Blob
|
||
* operation.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.abortCopyFromURL = function (copyId, options) {
|
||
var operationArguments = {
|
||
copyId: copyId,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, abortCopyFromURLOperationSpec);
|
||
};
|
||
/**
|
||
* The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium
|
||
* storage account and on a block blob in a blob storage account (locally redundant storage only). A
|
||
* premium page blob's tier determines the allowed size, IOPS, and bandwidth of the blob. A block
|
||
* blob's tier determines Hot/Cool/Archive storage type. This operation does not update the blob's
|
||
* ETag.
|
||
* @param tier Indicates the tier to be set on the blob.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.setTier = function (tier, options) {
|
||
var operationArguments = {
|
||
tier: tier,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, setTierOperationSpec);
|
||
};
|
||
/**
|
||
* Returns the sku name and account kind
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.getAccountInfo = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec$2);
|
||
};
|
||
/**
|
||
* The Query operation enables users to select/project on blob data by providing simple query
|
||
* expressions.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.query = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, queryOperationSpec);
|
||
};
|
||
/**
|
||
* The Get Tags operation enables users to get the tags associated with a blob.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.getTags = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getTagsOperationSpec);
|
||
};
|
||
/**
|
||
* The Set Tags operation enables users to set tags on a blob.
|
||
* @param options The options parameters.
|
||
*/
|
||
Blob.prototype.setTags = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, setTagsOperationSpec);
|
||
};
|
||
return Blob;
|
||
}());
|
||
// Operation Specifications
|
||
var xmlSerializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ true);
|
||
var downloadOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: {
|
||
type: { name: "Stream" },
|
||
serializedName: "parsedResponse"
|
||
},
|
||
headersMapper: BlobDownloadHeaders
|
||
},
|
||
206: {
|
||
bodyMapper: {
|
||
type: { name: "Stream" },
|
||
serializedName: "parsedResponse"
|
||
},
|
||
headersMapper: BlobDownloadHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobDownloadExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
snapshot,
|
||
versionId
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
range,
|
||
rangeGetContentMD5,
|
||
rangeGetContentCRC64,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var getPropertiesOperationSpec$2 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "HEAD",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobGetPropertiesHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobGetPropertiesExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
snapshot,
|
||
versionId
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var deleteOperationSpec$1 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "DELETE",
|
||
responses: {
|
||
202: {
|
||
headersMapper: BlobDeleteHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobDeleteExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
snapshot,
|
||
versionId,
|
||
blobDeleteType
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
ifTags,
|
||
deleteSnapshots
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var setAccessControlOperationSpec = {
|
||
path: "/{filesystem}/{path}",
|
||
httpMethod: "PATCH",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobSetAccessControlHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: DataLakeStorageError,
|
||
headersMapper: BlobSetAccessControlExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, action5],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
posixPermissions,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
owner,
|
||
group,
|
||
posixAcl
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var getAccessControlOperationSpec = {
|
||
path: "/{filesystem}/{path}",
|
||
httpMethod: "HEAD",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobGetAccessControlHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: DataLakeStorageError,
|
||
headersMapper: BlobGetAccessControlExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
action6,
|
||
upn
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var renameOperationSpec$1 = {
|
||
path: "/{filesystem}/{path}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: BlobRenameHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: DataLakeStorageError,
|
||
headersMapper: BlobRenameExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, pathRenameMode],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
sourceLeaseId,
|
||
directoryProperties,
|
||
posixPermissions,
|
||
posixUmask,
|
||
cacheControl,
|
||
contentType1,
|
||
contentEncoding,
|
||
contentLanguage,
|
||
contentDisposition,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
renameSource,
|
||
sourceIfModifiedSince,
|
||
sourceIfUnmodifiedSince,
|
||
sourceIfMatch,
|
||
sourceIfNoneMatch
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var undeleteOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobUndeleteHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobUndeleteExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp8],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var setExpiryOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobSetExpiryHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobSetExpiryExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp11],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
expiryOptions,
|
||
expiresOn
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var setHttpHeadersOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobSetHttpHeadersHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobSetHttpHeadersExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [comp, timeoutInSeconds],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
ifTags,
|
||
blobCacheControl,
|
||
blobContentType,
|
||
blobContentMD5,
|
||
blobContentEncoding,
|
||
blobContentLanguage,
|
||
blobContentDisposition
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var setMetadataOperationSpec$1 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobSetMetadataHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobSetMetadataExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp6],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
metadata,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
encryptionScope
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var acquireLeaseOperationSpec$1 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: BlobAcquireLeaseHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobAcquireLeaseExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp10],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
action,
|
||
duration,
|
||
proposedLeaseId,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var releaseLeaseOperationSpec$1 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobReleaseLeaseHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobReleaseLeaseExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp10],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
action1,
|
||
leaseId1,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var renewLeaseOperationSpec$1 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobRenewLeaseHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobRenewLeaseExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp10],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
leaseId1,
|
||
action2,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var changeLeaseOperationSpec$1 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobChangeLeaseHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobChangeLeaseExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp10],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
leaseId1,
|
||
action4,
|
||
proposedLeaseId1,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var breakLeaseOperationSpec$1 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
202: {
|
||
headersMapper: BlobBreakLeaseHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobBreakLeaseExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp10],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
action3,
|
||
breakPeriod,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var createSnapshotOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: BlobCreateSnapshotHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobCreateSnapshotExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp12],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
metadata,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
encryptionScope
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var startCopyFromURLOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
202: {
|
||
headersMapper: BlobStartCopyFromURLHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobStartCopyFromURLExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
metadata,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
sourceIfModifiedSince,
|
||
sourceIfUnmodifiedSince,
|
||
sourceIfMatch,
|
||
sourceIfNoneMatch,
|
||
ifTags,
|
||
tier,
|
||
rehydratePriority,
|
||
sourceIfTags,
|
||
copySource,
|
||
blobTagsString,
|
||
sealBlob
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var copyFromURLOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
202: {
|
||
headersMapper: BlobCopyFromURLHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobCopyFromURLExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
metadata,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
sourceIfModifiedSince,
|
||
sourceIfUnmodifiedSince,
|
||
sourceIfMatch,
|
||
sourceIfNoneMatch,
|
||
ifTags,
|
||
tier,
|
||
copySource,
|
||
blobTagsString,
|
||
xMsRequiresSync,
|
||
sourceContentMD5
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var abortCopyFromURLOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
204: {
|
||
headersMapper: BlobAbortCopyFromURLHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobAbortCopyFromURLExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
comp13,
|
||
copyId
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
copyActionAbortConstant
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var setTierOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobSetTierHeaders
|
||
},
|
||
202: {
|
||
headersMapper: BlobSetTierHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobSetTierExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
snapshot,
|
||
versionId,
|
||
comp14
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifTags,
|
||
rehydratePriority,
|
||
tier1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var getAccountInfoOperationSpec$2 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
headersMapper: BlobGetAccountInfoHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobGetAccountInfoExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [comp, restype1],
|
||
urlParameters: [url],
|
||
headerParameters: [version, accept1],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var queryOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "POST",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: {
|
||
type: { name: "Stream" },
|
||
serializedName: "parsedResponse"
|
||
},
|
||
headersMapper: BlobQueryHeaders
|
||
},
|
||
206: {
|
||
bodyMapper: {
|
||
type: { name: "Stream" },
|
||
serializedName: "parsedResponse"
|
||
},
|
||
headersMapper: BlobQueryHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobQueryExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: queryRequest,
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
snapshot,
|
||
comp15
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
contentType,
|
||
accept,
|
||
version,
|
||
requestId,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
contentType: "application/xml; charset=utf-8",
|
||
mediaType: "xml",
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var getTagsOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: BlobTags,
|
||
headersMapper: BlobGetTagsHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobGetTagsExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
snapshot,
|
||
versionId,
|
||
comp16
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$2
|
||
};
|
||
var setTagsOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
204: {
|
||
headersMapper: BlobSetTagsHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlobSetTagsExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: tags,
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
versionId,
|
||
comp16
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
contentType,
|
||
accept,
|
||
version,
|
||
requestId,
|
||
leaseId,
|
||
ifTags,
|
||
transactionalContentMD5,
|
||
transactionalContentCrc64
|
||
],
|
||
isXML: true,
|
||
contentType: "application/xml; charset=utf-8",
|
||
mediaType: "xml",
|
||
serializer: xmlSerializer$2
|
||
};
|
||
|
||
/*
|
||
* Copyright (c) Microsoft Corporation.
|
||
* Licensed under the MIT License.
|
||
*
|
||
* Code generated by Microsoft (R) AutoRest Code Generator.
|
||
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||
*/
|
||
/** Class representing a PageBlob. */
|
||
var PageBlob = /** @class */ (function () {
|
||
/**
|
||
* Initialize a new instance of the class PageBlob class.
|
||
* @param client Reference to the service client
|
||
*/
|
||
function PageBlob(client) {
|
||
this.client = client;
|
||
}
|
||
/**
|
||
* The Create operation creates a new page blob.
|
||
* @param contentLength The length of the request.
|
||
* @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The
|
||
* page blob size must be aligned to a 512-byte boundary.
|
||
* @param options The options parameters.
|
||
*/
|
||
PageBlob.prototype.create = function (contentLength, blobContentLength, options) {
|
||
var operationArguments = {
|
||
contentLength: contentLength,
|
||
blobContentLength: blobContentLength,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, createOperationSpec$1);
|
||
};
|
||
/**
|
||
* The Upload Pages operation writes a range of pages to a page blob
|
||
* @param contentLength The length of the request.
|
||
* @param body Initial data
|
||
* @param options The options parameters.
|
||
*/
|
||
PageBlob.prototype.uploadPages = function (contentLength, body, options) {
|
||
var operationArguments = {
|
||
contentLength: contentLength,
|
||
body: body,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, uploadPagesOperationSpec);
|
||
};
|
||
/**
|
||
* The Clear Pages operation clears a set of pages from a page blob
|
||
* @param contentLength The length of the request.
|
||
* @param options The options parameters.
|
||
*/
|
||
PageBlob.prototype.clearPages = function (contentLength, options) {
|
||
var operationArguments = {
|
||
contentLength: contentLength,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, clearPagesOperationSpec);
|
||
};
|
||
/**
|
||
* The Upload Pages operation writes a range of pages to a page blob where the contents are read from a
|
||
* URL
|
||
* @param sourceUrl Specify a URL to the copy source.
|
||
* @param sourceRange Bytes of source data in the specified range. The length of this range should
|
||
* match the ContentLength header and x-ms-range/Range destination range header.
|
||
* @param contentLength The length of the request.
|
||
* @param range The range of bytes to which the source range would be written. The range should be 512
|
||
* aligned and range-end is required.
|
||
* @param options The options parameters.
|
||
*/
|
||
PageBlob.prototype.uploadPagesFromURL = function (sourceUrl, sourceRange, contentLength, range, options) {
|
||
var operationArguments = {
|
||
sourceUrl: sourceUrl,
|
||
sourceRange: sourceRange,
|
||
contentLength: contentLength,
|
||
range: range,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, uploadPagesFromURLOperationSpec);
|
||
};
|
||
/**
|
||
* The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a
|
||
* page blob
|
||
* @param options The options parameters.
|
||
*/
|
||
PageBlob.prototype.getPageRanges = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getPageRangesOperationSpec);
|
||
};
|
||
/**
|
||
* The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were
|
||
* changed between target blob and previous snapshot.
|
||
* @param options The options parameters.
|
||
*/
|
||
PageBlob.prototype.getPageRangesDiff = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getPageRangesDiffOperationSpec);
|
||
};
|
||
/**
|
||
* Resize the Blob
|
||
* @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The
|
||
* page blob size must be aligned to a 512-byte boundary.
|
||
* @param options The options parameters.
|
||
*/
|
||
PageBlob.prototype.resize = function (blobContentLength, options) {
|
||
var operationArguments = {
|
||
blobContentLength: blobContentLength,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, resizeOperationSpec);
|
||
};
|
||
/**
|
||
* Update the sequence number of the blob
|
||
* @param sequenceNumberAction Required if the x-ms-blob-sequence-number header is set for the request.
|
||
* This property applies to page blobs only. This property indicates how the service should modify the
|
||
* blob's sequence number
|
||
* @param options The options parameters.
|
||
*/
|
||
PageBlob.prototype.updateSequenceNumber = function (sequenceNumberAction, options) {
|
||
var operationArguments = {
|
||
sequenceNumberAction: sequenceNumberAction,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, updateSequenceNumberOperationSpec);
|
||
};
|
||
/**
|
||
* The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob.
|
||
* The snapshot is copied such that only the differential changes between the previously copied
|
||
* snapshot are transferred to the destination. The copied snapshots are complete copies of the
|
||
* original snapshot and can be read or copied from as usual. This API is supported since REST version
|
||
* 2016-05-31.
|
||
* @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
|
||
* 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
|
||
* appear in a request URI. The source blob must either be public or must be authenticated via a shared
|
||
* access signature.
|
||
* @param options The options parameters.
|
||
*/
|
||
PageBlob.prototype.copyIncremental = function (copySource, options) {
|
||
var operationArguments = {
|
||
copySource: copySource,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, copyIncrementalOperationSpec);
|
||
};
|
||
return PageBlob;
|
||
}());
|
||
// Operation Specifications
|
||
var xmlSerializer$3 = new coreHttp.Serializer(Mappers, /* isXml */ true);
|
||
var serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);
|
||
var createOperationSpec$1 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: PageBlobCreateHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: PageBlobCreateExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
contentLength,
|
||
metadata,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
blobCacheControl,
|
||
blobContentType,
|
||
blobContentMD5,
|
||
blobContentEncoding,
|
||
blobContentLanguage,
|
||
blobContentDisposition,
|
||
encryptionScope,
|
||
tier,
|
||
blobTagsString,
|
||
blobType,
|
||
blobContentLength,
|
||
blobSequenceNumber
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$3
|
||
};
|
||
var uploadPagesOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: PageBlobUploadPagesHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: PageBlobUploadPagesExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: body1,
|
||
queryParameters: [timeoutInSeconds, comp17],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
contentLength,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
range,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
encryptionScope,
|
||
transactionalContentMD5,
|
||
transactionalContentCrc64,
|
||
contentType2,
|
||
accept2,
|
||
pageWrite,
|
||
ifSequenceNumberLessThanOrEqualTo,
|
||
ifSequenceNumberLessThan,
|
||
ifSequenceNumberEqualTo
|
||
],
|
||
mediaType: "binary",
|
||
serializer: serializer
|
||
};
|
||
var clearPagesOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: PageBlobClearPagesHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: PageBlobClearPagesExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp17],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
contentLength,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
range,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
encryptionScope,
|
||
ifSequenceNumberLessThanOrEqualTo,
|
||
ifSequenceNumberLessThan,
|
||
ifSequenceNumberEqualTo,
|
||
pageWrite1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$3
|
||
};
|
||
var uploadPagesFromURLOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: PageBlobUploadPagesFromURLHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: PageBlobUploadPagesFromURLExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp17],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
contentLength,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
sourceIfModifiedSince,
|
||
sourceIfUnmodifiedSince,
|
||
sourceIfMatch,
|
||
sourceIfNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
encryptionScope,
|
||
sourceContentMD5,
|
||
pageWrite,
|
||
ifSequenceNumberLessThanOrEqualTo,
|
||
ifSequenceNumberLessThan,
|
||
ifSequenceNumberEqualTo,
|
||
sourceUrl,
|
||
sourceRange,
|
||
sourceContentCrc64,
|
||
range1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$3
|
||
};
|
||
var getPageRangesOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: PageList,
|
||
headersMapper: PageBlobGetPageRangesHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: PageBlobGetPageRangesExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
snapshot,
|
||
comp18
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
range,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$3
|
||
};
|
||
var getPageRangesDiffOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: PageList,
|
||
headersMapper: PageBlobGetPageRangesDiffHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: PageBlobGetPageRangesDiffExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
snapshot,
|
||
comp18,
|
||
prevsnapshot
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
range,
|
||
ifTags,
|
||
prevSnapshotUrl
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$3
|
||
};
|
||
var resizeOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: PageBlobResizeHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: PageBlobResizeExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [comp, timeoutInSeconds],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
encryptionScope,
|
||
blobContentLength
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$3
|
||
};
|
||
var updateSequenceNumberOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: PageBlobUpdateSequenceNumberHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: PageBlobUpdateSequenceNumberExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [comp, timeoutInSeconds],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
ifTags,
|
||
blobSequenceNumber,
|
||
sequenceNumberAction
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$3
|
||
};
|
||
var copyIncrementalOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
202: {
|
||
headersMapper: PageBlobCopyIncrementalHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: PageBlobCopyIncrementalExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp19],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
ifTags,
|
||
copySource
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$3
|
||
};
|
||
|
||
/*
|
||
* Copyright (c) Microsoft Corporation.
|
||
* Licensed under the MIT License.
|
||
*
|
||
* Code generated by Microsoft (R) AutoRest Code Generator.
|
||
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||
*/
|
||
/** Class representing a AppendBlob. */
|
||
var AppendBlob = /** @class */ (function () {
|
||
/**
|
||
* Initialize a new instance of the class AppendBlob class.
|
||
* @param client Reference to the service client
|
||
*/
|
||
function AppendBlob(client) {
|
||
this.client = client;
|
||
}
|
||
/**
|
||
* The Create Append Blob operation creates a new append blob.
|
||
* @param contentLength The length of the request.
|
||
* @param options The options parameters.
|
||
*/
|
||
AppendBlob.prototype.create = function (contentLength, options) {
|
||
var operationArguments = {
|
||
contentLength: contentLength,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, createOperationSpec$2);
|
||
};
|
||
/**
|
||
* The Append Block operation commits a new block of data to the end of an existing append blob. The
|
||
* Append Block operation is permitted only if the blob was created with x-ms-blob-type set to
|
||
* AppendBlob. Append Block is supported only on version 2015-02-21 version or later.
|
||
* @param contentLength The length of the request.
|
||
* @param body Initial data
|
||
* @param options The options parameters.
|
||
*/
|
||
AppendBlob.prototype.appendBlock = function (contentLength, body, options) {
|
||
var operationArguments = {
|
||
contentLength: contentLength,
|
||
body: body,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, appendBlockOperationSpec);
|
||
};
|
||
/**
|
||
* The Append Block operation commits a new block of data to the end of an existing append blob where
|
||
* the contents are read from a source url. The Append Block operation is permitted only if the blob
|
||
* was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version
|
||
* 2015-02-21 version or later.
|
||
* @param sourceUrl Specify a URL to the copy source.
|
||
* @param contentLength The length of the request.
|
||
* @param options The options parameters.
|
||
*/
|
||
AppendBlob.prototype.appendBlockFromUrl = function (sourceUrl, contentLength, options) {
|
||
var operationArguments = {
|
||
sourceUrl: sourceUrl,
|
||
contentLength: contentLength,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, appendBlockFromUrlOperationSpec);
|
||
};
|
||
/**
|
||
* The Seal operation seals the Append Blob to make it read-only. Seal is supported only on version
|
||
* 2019-12-12 version or later.
|
||
* @param options The options parameters.
|
||
*/
|
||
AppendBlob.prototype.seal = function (options) {
|
||
var operationArguments = {
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, sealOperationSpec);
|
||
};
|
||
return AppendBlob;
|
||
}());
|
||
// Operation Specifications
|
||
var xmlSerializer$4 = new coreHttp.Serializer(Mappers, /* isXml */ true);
|
||
var serializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ false);
|
||
var createOperationSpec$2 = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: AppendBlobCreateHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: AppendBlobCreateExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
contentLength,
|
||
metadata,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
blobCacheControl,
|
||
blobContentType,
|
||
blobContentMD5,
|
||
blobContentEncoding,
|
||
blobContentLanguage,
|
||
blobContentDisposition,
|
||
encryptionScope,
|
||
blobTagsString,
|
||
blobType1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$4
|
||
};
|
||
var appendBlockOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: AppendBlobAppendBlockHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: AppendBlobAppendBlockExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: body1,
|
||
queryParameters: [timeoutInSeconds, comp20],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
contentLength,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
encryptionScope,
|
||
transactionalContentMD5,
|
||
transactionalContentCrc64,
|
||
contentType2,
|
||
accept2,
|
||
maxSize,
|
||
appendPosition
|
||
],
|
||
mediaType: "binary",
|
||
serializer: serializer$1
|
||
};
|
||
var appendBlockFromUrlOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: AppendBlobAppendBlockFromUrlHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: AppendBlobAppendBlockFromUrlExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp20],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
contentLength,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
sourceIfModifiedSince,
|
||
sourceIfUnmodifiedSince,
|
||
sourceIfMatch,
|
||
sourceIfNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
encryptionScope,
|
||
sourceContentMD5,
|
||
transactionalContentMD5,
|
||
sourceUrl,
|
||
sourceContentCrc64,
|
||
maxSize,
|
||
appendPosition,
|
||
sourceRange1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$4
|
||
};
|
||
var sealOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
200: {
|
||
headersMapper: AppendBlobSealHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: AppendBlobSealExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds, comp21],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
appendPosition
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$4
|
||
};
|
||
|
||
/*
|
||
* Copyright (c) Microsoft Corporation.
|
||
* Licensed under the MIT License.
|
||
*
|
||
* Code generated by Microsoft (R) AutoRest Code Generator.
|
||
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||
*/
|
||
/** Class representing a BlockBlob. */
|
||
var BlockBlob = /** @class */ (function () {
|
||
/**
|
||
* Initialize a new instance of the class BlockBlob class.
|
||
* @param client Reference to the service client
|
||
*/
|
||
function BlockBlob(client) {
|
||
this.client = client;
|
||
}
|
||
/**
|
||
* The Upload Block Blob operation updates the content of an existing block blob. Updating an existing
|
||
* block blob overwrites any existing metadata on the blob. Partial updates are not supported with Put
|
||
* Blob; the content of the existing blob is overwritten with the content of the new blob. To perform a
|
||
* partial update of the content of a block blob, use the Put Block List operation.
|
||
* @param contentLength The length of the request.
|
||
* @param body Initial data
|
||
* @param options The options parameters.
|
||
*/
|
||
BlockBlob.prototype.upload = function (contentLength, body, options) {
|
||
var operationArguments = {
|
||
contentLength: contentLength,
|
||
body: body,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, uploadOperationSpec);
|
||
};
|
||
/**
|
||
* The Put Blob from URL operation creates a new Block Blob where the contents of the blob are read
|
||
* from a given URL. This API is supported beginning with the 2020-04-08 version. Partial updates are
|
||
* not supported with Put Blob from URL; the content of an existing blob is overwritten with the
|
||
* content of the new blob. To perform partial updates to a block blob’s contents using a source URL,
|
||
* use the Put Block from URL API in conjunction with Put Block List.
|
||
* @param contentLength The length of the request.
|
||
* @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
|
||
* 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
|
||
* appear in a request URI. The source blob must either be public or must be authenticated via a shared
|
||
* access signature.
|
||
* @param options The options parameters.
|
||
*/
|
||
BlockBlob.prototype.putBlobFromUrl = function (contentLength, copySource, options) {
|
||
var operationArguments = {
|
||
contentLength: contentLength,
|
||
copySource: copySource,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, putBlobFromUrlOperationSpec);
|
||
};
|
||
/**
|
||
* The Stage Block operation creates a new block to be committed as part of a blob
|
||
* @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string
|
||
* must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified
|
||
* for the blockid parameter must be the same size for each block.
|
||
* @param contentLength The length of the request.
|
||
* @param body Initial data
|
||
* @param options The options parameters.
|
||
*/
|
||
BlockBlob.prototype.stageBlock = function (blockId, contentLength, body, options) {
|
||
var operationArguments = {
|
||
blockId: blockId,
|
||
contentLength: contentLength,
|
||
body: body,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, stageBlockOperationSpec);
|
||
};
|
||
/**
|
||
* The Stage Block operation creates a new block to be committed as part of a blob where the contents
|
||
* are read from a URL.
|
||
* @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string
|
||
* must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified
|
||
* for the blockid parameter must be the same size for each block.
|
||
* @param contentLength The length of the request.
|
||
* @param sourceUrl Specify a URL to the copy source.
|
||
* @param options The options parameters.
|
||
*/
|
||
BlockBlob.prototype.stageBlockFromURL = function (blockId, contentLength, sourceUrl, options) {
|
||
var operationArguments = {
|
||
blockId: blockId,
|
||
contentLength: contentLength,
|
||
sourceUrl: sourceUrl,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, stageBlockFromURLOperationSpec);
|
||
};
|
||
/**
|
||
* The Commit Block List operation writes a blob by specifying the list of block IDs that make up the
|
||
* blob. In order to be written as part of a blob, a block must have been successfully written to the
|
||
* server in a prior Put Block operation. You can call Put Block List to update a blob by uploading
|
||
* only those blocks that have changed, then committing the new and existing blocks together. You can
|
||
* do this by specifying whether to commit a block from the committed block list or from the
|
||
* uncommitted block list, or to commit the most recently uploaded version of the block, whichever list
|
||
* it may belong to.
|
||
* @param blocks
|
||
* @param options The options parameters.
|
||
*/
|
||
BlockBlob.prototype.commitBlockList = function (blocks, options) {
|
||
var operationArguments = {
|
||
blocks: blocks,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, commitBlockListOperationSpec);
|
||
};
|
||
/**
|
||
* The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block
|
||
* blob
|
||
* @param listType Specifies whether to return the list of committed blocks, the list of uncommitted
|
||
* blocks, or both lists together.
|
||
* @param options The options parameters.
|
||
*/
|
||
BlockBlob.prototype.getBlockList = function (listType, options) {
|
||
var operationArguments = {
|
||
listType: listType,
|
||
options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
|
||
};
|
||
return this.client.sendOperationRequest(operationArguments, getBlockListOperationSpec);
|
||
};
|
||
return BlockBlob;
|
||
}());
|
||
// Operation Specifications
|
||
var xmlSerializer$5 = new coreHttp.Serializer(Mappers, /* isXml */ true);
|
||
var serializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ false);
|
||
var uploadOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: BlockBlobUploadHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlockBlobUploadExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: body1,
|
||
queryParameters: [timeoutInSeconds],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
contentLength,
|
||
metadata,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
blobCacheControl,
|
||
blobContentType,
|
||
blobContentMD5,
|
||
blobContentEncoding,
|
||
blobContentLanguage,
|
||
blobContentDisposition,
|
||
encryptionScope,
|
||
tier,
|
||
blobTagsString,
|
||
transactionalContentMD5,
|
||
contentType2,
|
||
accept2,
|
||
blobType2
|
||
],
|
||
mediaType: "binary",
|
||
serializer: serializer$2
|
||
};
|
||
var putBlobFromUrlOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: BlockBlobPutBlobFromUrlHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlockBlobPutBlobFromUrlExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [timeoutInSeconds],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
contentLength,
|
||
metadata,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
sourceIfModifiedSince,
|
||
sourceIfUnmodifiedSince,
|
||
sourceIfMatch,
|
||
sourceIfNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
blobCacheControl,
|
||
blobContentType,
|
||
blobContentMD5,
|
||
blobContentEncoding,
|
||
blobContentLanguage,
|
||
blobContentDisposition,
|
||
encryptionScope,
|
||
tier,
|
||
sourceIfTags,
|
||
copySource,
|
||
blobTagsString,
|
||
sourceContentMD5,
|
||
transactionalContentMD5,
|
||
blobType2,
|
||
copySourceBlobProperties
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$5
|
||
};
|
||
var stageBlockOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: BlockBlobStageBlockHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlockBlobStageBlockExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: body1,
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
comp22,
|
||
blockId
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
contentLength,
|
||
leaseId,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
encryptionScope,
|
||
transactionalContentMD5,
|
||
transactionalContentCrc64,
|
||
contentType2,
|
||
accept2
|
||
],
|
||
mediaType: "binary",
|
||
serializer: serializer$2
|
||
};
|
||
var stageBlockFromURLOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: BlockBlobStageBlockFromURLHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlockBlobStageBlockFromURLExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
comp22,
|
||
blockId
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
contentLength,
|
||
leaseId,
|
||
sourceIfModifiedSince,
|
||
sourceIfUnmodifiedSince,
|
||
sourceIfMatch,
|
||
sourceIfNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
encryptionScope,
|
||
sourceContentMD5,
|
||
sourceUrl,
|
||
sourceContentCrc64,
|
||
sourceRange1
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$5
|
||
};
|
||
var commitBlockListOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "PUT",
|
||
responses: {
|
||
201: {
|
||
headersMapper: BlockBlobCommitBlockListHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlockBlobCommitBlockListExceptionHeaders
|
||
}
|
||
},
|
||
requestBody: blocks,
|
||
queryParameters: [timeoutInSeconds, comp23],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
contentType,
|
||
accept,
|
||
version,
|
||
requestId,
|
||
metadata,
|
||
leaseId,
|
||
ifModifiedSince,
|
||
ifUnmodifiedSince,
|
||
ifMatch,
|
||
ifNoneMatch,
|
||
encryptionKey,
|
||
encryptionKeySha256,
|
||
encryptionAlgorithm,
|
||
ifTags,
|
||
blobCacheControl,
|
||
blobContentType,
|
||
blobContentMD5,
|
||
blobContentEncoding,
|
||
blobContentLanguage,
|
||
blobContentDisposition,
|
||
encryptionScope,
|
||
tier,
|
||
blobTagsString,
|
||
transactionalContentMD5,
|
||
transactionalContentCrc64
|
||
],
|
||
isXML: true,
|
||
contentType: "application/xml; charset=utf-8",
|
||
mediaType: "xml",
|
||
serializer: xmlSerializer$5
|
||
};
|
||
var getBlockListOperationSpec = {
|
||
path: "/{containerName}/{blob}",
|
||
httpMethod: "GET",
|
||
responses: {
|
||
200: {
|
||
bodyMapper: BlockList,
|
||
headersMapper: BlockBlobGetBlockListHeaders
|
||
},
|
||
default: {
|
||
bodyMapper: StorageError,
|
||
headersMapper: BlockBlobGetBlockListExceptionHeaders
|
||
}
|
||
},
|
||
queryParameters: [
|
||
timeoutInSeconds,
|
||
snapshot,
|
||
comp23,
|
||
listType
|
||
],
|
||
urlParameters: [url],
|
||
headerParameters: [
|
||
version,
|
||
requestId,
|
||
accept1,
|
||
leaseId,
|
||
ifTags
|
||
],
|
||
isXML: true,
|
||
serializer: xmlSerializer$5
|
||
};
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* The `@azure/logger` configuration for this package.
|
||
*/
|
||
var logger = logger$1.createClientLogger("storage-blob");
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
var SDK_VERSION = "12.6.0";
|
||
var SERVICE_VERSION = "2020-08-04";
|
||
var BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB
|
||
var BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB
|
||
var BLOCK_BLOB_MAX_BLOCKS = 50000;
|
||
var DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB
|
||
var DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB
|
||
var DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;
|
||
/**
|
||
* The OAuth scope to use with Azure Storage.
|
||
*/
|
||
var StorageOAuthScopes = "https://storage.azure.com/.default";
|
||
var URLConstants = {
|
||
Parameters: {
|
||
FORCE_BROWSER_NO_CACHE: "_",
|
||
SIGNATURE: "sig",
|
||
SNAPSHOT: "snapshot",
|
||
VERSIONID: "versionid",
|
||
TIMEOUT: "timeout"
|
||
}
|
||
};
|
||
var HTTPURLConnection = {
|
||
HTTP_ACCEPTED: 202,
|
||
HTTP_CONFLICT: 409,
|
||
HTTP_NOT_FOUND: 404,
|
||
HTTP_PRECON_FAILED: 412,
|
||
HTTP_RANGE_NOT_SATISFIABLE: 416
|
||
};
|
||
var HeaderConstants = {
|
||
AUTHORIZATION: "Authorization",
|
||
AUTHORIZATION_SCHEME: "Bearer",
|
||
CONTENT_ENCODING: "Content-Encoding",
|
||
CONTENT_ID: "Content-ID",
|
||
CONTENT_LANGUAGE: "Content-Language",
|
||
CONTENT_LENGTH: "Content-Length",
|
||
CONTENT_MD5: "Content-Md5",
|
||
CONTENT_TRANSFER_ENCODING: "Content-Transfer-Encoding",
|
||
CONTENT_TYPE: "Content-Type",
|
||
COOKIE: "Cookie",
|
||
DATE: "date",
|
||
IF_MATCH: "if-match",
|
||
IF_MODIFIED_SINCE: "if-modified-since",
|
||
IF_NONE_MATCH: "if-none-match",
|
||
IF_UNMODIFIED_SINCE: "if-unmodified-since",
|
||
PREFIX_FOR_STORAGE: "x-ms-",
|
||
RANGE: "Range",
|
||
USER_AGENT: "User-Agent",
|
||
X_MS_CLIENT_REQUEST_ID: "x-ms-client-request-id",
|
||
X_MS_COPY_SOURCE: "x-ms-copy-source",
|
||
X_MS_DATE: "x-ms-date",
|
||
X_MS_ERROR_CODE: "x-ms-error-code",
|
||
X_MS_VERSION: "x-ms-version"
|
||
};
|
||
var ETagNone = "";
|
||
var ETagAny = "*";
|
||
var SIZE_1_MB = 1 * 1024 * 1024;
|
||
var BATCH_MAX_REQUEST = 256;
|
||
var BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;
|
||
var HTTP_LINE_ENDING = "\r\n";
|
||
var HTTP_VERSION_1_1 = "HTTP/1.1";
|
||
var EncryptionAlgorithmAES25 = "AES256";
|
||
var DevelopmentConnectionString = "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;";
|
||
var StorageBlobLoggingAllowedHeaderNames = [
|
||
"Access-Control-Allow-Origin",
|
||
"Cache-Control",
|
||
"Content-Length",
|
||
"Content-Type",
|
||
"Date",
|
||
"Request-Id",
|
||
"traceparent",
|
||
"Transfer-Encoding",
|
||
"User-Agent",
|
||
"x-ms-client-request-id",
|
||
"x-ms-date",
|
||
"x-ms-error-code",
|
||
"x-ms-request-id",
|
||
"x-ms-return-client-request-id",
|
||
"x-ms-version",
|
||
"Accept-Ranges",
|
||
"Content-Disposition",
|
||
"Content-Encoding",
|
||
"Content-Language",
|
||
"Content-MD5",
|
||
"Content-Range",
|
||
"ETag",
|
||
"Last-Modified",
|
||
"Server",
|
||
"Vary",
|
||
"x-ms-content-crc64",
|
||
"x-ms-copy-action",
|
||
"x-ms-copy-completion-time",
|
||
"x-ms-copy-id",
|
||
"x-ms-copy-progress",
|
||
"x-ms-copy-status",
|
||
"x-ms-has-immutability-policy",
|
||
"x-ms-has-legal-hold",
|
||
"x-ms-lease-state",
|
||
"x-ms-lease-status",
|
||
"x-ms-range",
|
||
"x-ms-request-server-encrypted",
|
||
"x-ms-server-encrypted",
|
||
"x-ms-snapshot",
|
||
"x-ms-source-range",
|
||
"If-Match",
|
||
"If-Modified-Since",
|
||
"If-None-Match",
|
||
"If-Unmodified-Since",
|
||
"x-ms-access-tier",
|
||
"x-ms-access-tier-change-time",
|
||
"x-ms-access-tier-inferred",
|
||
"x-ms-account-kind",
|
||
"x-ms-archive-status",
|
||
"x-ms-blob-append-offset",
|
||
"x-ms-blob-cache-control",
|
||
"x-ms-blob-committed-block-count",
|
||
"x-ms-blob-condition-appendpos",
|
||
"x-ms-blob-condition-maxsize",
|
||
"x-ms-blob-content-disposition",
|
||
"x-ms-blob-content-encoding",
|
||
"x-ms-blob-content-language",
|
||
"x-ms-blob-content-length",
|
||
"x-ms-blob-content-md5",
|
||
"x-ms-blob-content-type",
|
||
"x-ms-blob-public-access",
|
||
"x-ms-blob-sequence-number",
|
||
"x-ms-blob-type",
|
||
"x-ms-copy-destination-snapshot",
|
||
"x-ms-creation-time",
|
||
"x-ms-default-encryption-scope",
|
||
"x-ms-delete-snapshots",
|
||
"x-ms-delete-type-permanent",
|
||
"x-ms-deny-encryption-scope-override",
|
||
"x-ms-encryption-algorithm",
|
||
"x-ms-if-sequence-number-eq",
|
||
"x-ms-if-sequence-number-le",
|
||
"x-ms-if-sequence-number-lt",
|
||
"x-ms-incremental-copy",
|
||
"x-ms-lease-action",
|
||
"x-ms-lease-break-period",
|
||
"x-ms-lease-duration",
|
||
"x-ms-lease-id",
|
||
"x-ms-lease-time",
|
||
"x-ms-page-write",
|
||
"x-ms-proposed-lease-id",
|
||
"x-ms-range-get-content-md5",
|
||
"x-ms-rehydrate-priority",
|
||
"x-ms-sequence-number-action",
|
||
"x-ms-sku-name",
|
||
"x-ms-source-content-md5",
|
||
"x-ms-source-if-match",
|
||
"x-ms-source-if-modified-since",
|
||
"x-ms-source-if-none-match",
|
||
"x-ms-source-if-unmodified-since",
|
||
"x-ms-tag-count",
|
||
"x-ms-encryption-key-sha256",
|
||
"x-ms-if-tags",
|
||
"x-ms-source-if-tags"
|
||
];
|
||
var StorageBlobLoggingAllowedQueryParameters = [
|
||
"comp",
|
||
"maxresults",
|
||
"rscc",
|
||
"rscd",
|
||
"rsce",
|
||
"rscl",
|
||
"rsct",
|
||
"se",
|
||
"si",
|
||
"sip",
|
||
"sp",
|
||
"spr",
|
||
"sr",
|
||
"srt",
|
||
"ss",
|
||
"st",
|
||
"sv",
|
||
"include",
|
||
"marker",
|
||
"prefix",
|
||
"copyid",
|
||
"restype",
|
||
"blockid",
|
||
"blocklisttype",
|
||
"delimiter",
|
||
"prevsnapshot",
|
||
"ske",
|
||
"skoid",
|
||
"sks",
|
||
"skt",
|
||
"sktid",
|
||
"skv",
|
||
"snapshot"
|
||
];
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Reserved URL characters must be properly escaped for Storage services like Blob or File.
|
||
*
|
||
* ## URL encode and escape strategy for JS SDKs
|
||
*
|
||
* When customers pass a URL string into XxxClient classes constructor, the URL string may already be URL encoded or not.
|
||
* But before sending to Azure Storage server, the URL must be encoded. However, it's hard for a SDK to guess whether the URL
|
||
* string has been encoded or not. We have 2 potential strategies, and chose strategy two for the XxxClient constructors.
|
||
*
|
||
* ### Strategy One: Assume the customer URL string is not encoded, and always encode URL string in SDK.
|
||
*
|
||
* This is what legacy V2 SDK does, simple and works for most of the cases.
|
||
* - When customer URL string is "http://account.blob.core.windows.net/con/b:",
|
||
* SDK will encode it to "http://account.blob.core.windows.net/con/b%3A" and send to server. A blob named "b:" will be created.
|
||
* - When customer URL string is "http://account.blob.core.windows.net/con/b%3A",
|
||
* SDK will encode it to "http://account.blob.core.windows.net/con/b%253A" and send to server. A blob named "b%3A" will be created.
|
||
*
|
||
* But this strategy will make it not possible to create a blob with "?" in it's name. Because when customer URL string is
|
||
* "http://account.blob.core.windows.net/con/blob?name", the "?name" will be treated as URL paramter instead of blob name.
|
||
* If customer URL string is "http://account.blob.core.windows.net/con/blob%3Fname", a blob named "blob%3Fname" will be created.
|
||
* V2 SDK doesn't have this issue because it doesn't allow customer pass in a full URL, it accepts a separate blob name and encodeURIComponent for it.
|
||
* We cannot accept a SDK cannot create a blob name with "?". So we implement strategy two:
|
||
*
|
||
* ### Strategy Two: SDK doesn't assume the URL has been encoded or not. It will just escape the special characters.
|
||
*
|
||
* This is what V10 Blob Go SDK does. It accepts a URL type in Go, and call url.EscapedPath() to escape the special chars unescaped.
|
||
* - When customer URL string is "http://account.blob.core.windows.net/con/b:",
|
||
* SDK will escape ":" like "http://account.blob.core.windows.net/con/b%3A" and send to server. A blob named "b:" will be created.
|
||
* - When customer URL string is "http://account.blob.core.windows.net/con/b%3A",
|
||
* There is no special characters, so send "http://account.blob.core.windows.net/con/b%3A" to server. A blob named "b:" will be created.
|
||
* - When customer URL string is "http://account.blob.core.windows.net/con/b%253A",
|
||
* There is no special characters, so send "http://account.blob.core.windows.net/con/b%253A" to server. A blob named "b%3A" will be created.
|
||
*
|
||
* This strategy gives us flexibility to create with any special characters. But "%" will be treated as a special characters, if the URL string
|
||
* is not encoded, there shouldn't a "%" in the URL string, otherwise the URL is not a valid URL.
|
||
* If customer needs to create a blob with "%" in it's blob name, use "%25" instead of "%". Just like above 3rd sample.
|
||
* And following URL strings are invalid:
|
||
* - "http://account.blob.core.windows.net/con/b%"
|
||
* - "http://account.blob.core.windows.net/con/b%2"
|
||
* - "http://account.blob.core.windows.net/con/b%G"
|
||
*
|
||
* Another special character is "?", use "%2F" to represent a blob name with "?" in a URL string.
|
||
*
|
||
* ### Strategy for containerName, blobName or other specific XXXName parameters in methods such as `containerClient.getBlobClient(blobName)`
|
||
*
|
||
* We will apply strategy one, and call encodeURIComponent for these parameters like blobName. Because what customers passes in is a plain name instead of a URL.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-shares--directories--files--and-metadata
|
||
*
|
||
* @param url -
|
||
*/
|
||
function escapeURLPath(url) {
|
||
var urlParsed = coreHttp.URLBuilder.parse(url);
|
||
var path = urlParsed.getPath();
|
||
path = path || "/";
|
||
path = escape(path);
|
||
urlParsed.setPath(path);
|
||
return urlParsed.toString();
|
||
}
|
||
function getProxyUriFromDevConnString(connectionString) {
|
||
// Development Connection String
|
||
// https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key
|
||
var proxyUri = "";
|
||
if (connectionString.search("DevelopmentStorageProxyUri=") !== -1) {
|
||
// CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri
|
||
var matchCredentials = connectionString.split(";");
|
||
for (var _i = 0, matchCredentials_1 = matchCredentials; _i < matchCredentials_1.length; _i++) {
|
||
var element = matchCredentials_1[_i];
|
||
if (element.trim().startsWith("DevelopmentStorageProxyUri=")) {
|
||
proxyUri = element.trim().match("DevelopmentStorageProxyUri=(.*)")[1];
|
||
}
|
||
}
|
||
}
|
||
return proxyUri;
|
||
}
|
||
function getValueInConnString(connectionString, argument) {
|
||
var elements = connectionString.split(";");
|
||
for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {
|
||
var element = elements_1[_i];
|
||
if (element.trim().startsWith(argument)) {
|
||
return element.trim().match(argument + "=(.*)")[1];
|
||
}
|
||
}
|
||
return "";
|
||
}
|
||
/**
|
||
* Extracts the parts of an Azure Storage account connection string.
|
||
*
|
||
* @param connectionString - Connection string.
|
||
* @returns String key value pairs of the storage account's url and credentials.
|
||
*/
|
||
function extractConnectionStringParts(connectionString) {
|
||
var proxyUri = "";
|
||
if (connectionString.startsWith("UseDevelopmentStorage=true")) {
|
||
// Development connection string
|
||
proxyUri = getProxyUriFromDevConnString(connectionString);
|
||
connectionString = DevelopmentConnectionString;
|
||
}
|
||
// Matching BlobEndpoint in the Account connection string
|
||
var blobEndpoint = getValueInConnString(connectionString, "BlobEndpoint");
|
||
// Slicing off '/' at the end if exists
|
||
// (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)
|
||
blobEndpoint = blobEndpoint.endsWith("/") ? blobEndpoint.slice(0, -1) : blobEndpoint;
|
||
if (connectionString.search("DefaultEndpointsProtocol=") !== -1 &&
|
||
connectionString.search("AccountKey=") !== -1) {
|
||
// Account connection string
|
||
var defaultEndpointsProtocol = "";
|
||
var accountName = "";
|
||
var accountKey = Buffer.from("accountKey", "base64");
|
||
var endpointSuffix = "";
|
||
// Get account name and key
|
||
accountName = getValueInConnString(connectionString, "AccountName");
|
||
accountKey = Buffer.from(getValueInConnString(connectionString, "AccountKey"), "base64");
|
||
if (!blobEndpoint) {
|
||
// BlobEndpoint is not present in the Account connection string
|
||
// Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`
|
||
defaultEndpointsProtocol = getValueInConnString(connectionString, "DefaultEndpointsProtocol");
|
||
var protocol = defaultEndpointsProtocol.toLowerCase();
|
||
if (protocol !== "https" && protocol !== "http") {
|
||
throw new Error("Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'");
|
||
}
|
||
endpointSuffix = getValueInConnString(connectionString, "EndpointSuffix");
|
||
if (!endpointSuffix) {
|
||
throw new Error("Invalid EndpointSuffix in the provided Connection String");
|
||
}
|
||
blobEndpoint = defaultEndpointsProtocol + "://" + accountName + ".blob." + endpointSuffix;
|
||
}
|
||
if (!accountName) {
|
||
throw new Error("Invalid AccountName in the provided Connection String");
|
||
}
|
||
else if (accountKey.length === 0) {
|
||
throw new Error("Invalid AccountKey in the provided Connection String");
|
||
}
|
||
return {
|
||
kind: "AccountConnString",
|
||
url: blobEndpoint,
|
||
accountName: accountName,
|
||
accountKey: accountKey,
|
||
proxyUri: proxyUri
|
||
};
|
||
}
|
||
else {
|
||
// SAS connection string
|
||
var accountSas = getValueInConnString(connectionString, "SharedAccessSignature");
|
||
var accountName = getAccountNameFromUrl(blobEndpoint);
|
||
if (!blobEndpoint) {
|
||
throw new Error("Invalid BlobEndpoint in the provided SAS Connection String");
|
||
}
|
||
else if (!accountSas) {
|
||
throw new Error("Invalid SharedAccessSignature in the provided SAS Connection String");
|
||
}
|
||
return { kind: "SASConnString", url: blobEndpoint, accountName: accountName, accountSas: accountSas };
|
||
}
|
||
}
|
||
/**
|
||
* Internal escape method implemented Strategy Two mentioned in escapeURL() description.
|
||
*
|
||
* @param text -
|
||
*/
|
||
function escape(text) {
|
||
return encodeURIComponent(text)
|
||
.replace(/%2F/g, "/") // Don't escape for "/"
|
||
.replace(/'/g, "%27") // Escape for "'"
|
||
.replace(/\+/g, "%20")
|
||
.replace(/%25/g, "%"); // Revert encoded "%"
|
||
}
|
||
/**
|
||
* Append a string to URL path. Will remove duplicated "/" in front of the string
|
||
* when URL path ends with a "/".
|
||
*
|
||
* @param url - Source URL string
|
||
* @param name - String to be appended to URL
|
||
* @returns An updated URL string
|
||
*/
|
||
function appendToURLPath(url, name) {
|
||
var urlParsed = coreHttp.URLBuilder.parse(url);
|
||
var path = urlParsed.getPath();
|
||
path = path ? (path.endsWith("/") ? "" + path + name : path + "/" + name) : name;
|
||
urlParsed.setPath(path);
|
||
return urlParsed.toString();
|
||
}
|
||
/**
|
||
* Set URL parameter name and value. If name exists in URL parameters, old value
|
||
* will be replaced by name key. If not provide value, the parameter will be deleted.
|
||
*
|
||
* @param url - Source URL string
|
||
* @param name - Parameter name
|
||
* @param value - Parameter value
|
||
* @returns An updated URL string
|
||
*/
|
||
function setURLParameter(url, name, value) {
|
||
var urlParsed = coreHttp.URLBuilder.parse(url);
|
||
urlParsed.setQueryParameter(name, value);
|
||
return urlParsed.toString();
|
||
}
|
||
/**
|
||
* Get URL parameter by name.
|
||
*
|
||
* @param url -
|
||
* @param name -
|
||
*/
|
||
function getURLParameter(url, name) {
|
||
var urlParsed = coreHttp.URLBuilder.parse(url);
|
||
return urlParsed.getQueryParameterValue(name);
|
||
}
|
||
/**
|
||
* Set URL host.
|
||
*
|
||
* @param url - Source URL string
|
||
* @param host - New host string
|
||
* @returns An updated URL string
|
||
*/
|
||
function setURLHost(url, host) {
|
||
var urlParsed = coreHttp.URLBuilder.parse(url);
|
||
urlParsed.setHost(host);
|
||
return urlParsed.toString();
|
||
}
|
||
/**
|
||
* Get URL path from an URL string.
|
||
*
|
||
* @param url - Source URL string
|
||
*/
|
||
function getURLPath(url) {
|
||
var urlParsed = coreHttp.URLBuilder.parse(url);
|
||
return urlParsed.getPath();
|
||
}
|
||
/**
|
||
* Get URL scheme from an URL string.
|
||
*
|
||
* @param url - Source URL string
|
||
*/
|
||
function getURLScheme(url) {
|
||
var urlParsed = coreHttp.URLBuilder.parse(url);
|
||
return urlParsed.getScheme();
|
||
}
|
||
/**
|
||
* Get URL path and query from an URL string.
|
||
*
|
||
* @param url - Source URL string
|
||
*/
|
||
function getURLPathAndQuery(url) {
|
||
var urlParsed = coreHttp.URLBuilder.parse(url);
|
||
var pathString = urlParsed.getPath();
|
||
if (!pathString) {
|
||
throw new RangeError("Invalid url without valid path.");
|
||
}
|
||
var queryString = urlParsed.getQuery() || "";
|
||
queryString = queryString.trim();
|
||
if (queryString != "") {
|
||
queryString = queryString.startsWith("?") ? queryString : "?" + queryString; // Ensure query string start with '?'
|
||
}
|
||
return "" + pathString + queryString;
|
||
}
|
||
/**
|
||
* Get URL query key value pairs from an URL string.
|
||
*
|
||
* @param url -
|
||
*/
|
||
function getURLQueries(url) {
|
||
var queryString = coreHttp.URLBuilder.parse(url).getQuery();
|
||
if (!queryString) {
|
||
return {};
|
||
}
|
||
queryString = queryString.trim();
|
||
queryString = queryString.startsWith("?") ? queryString.substr(1) : queryString;
|
||
var querySubStrings = queryString.split("&");
|
||
querySubStrings = querySubStrings.filter(function (value) {
|
||
var indexOfEqual = value.indexOf("=");
|
||
var lastIndexOfEqual = value.lastIndexOf("=");
|
||
return (indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1);
|
||
});
|
||
var queries = {};
|
||
for (var _i = 0, querySubStrings_1 = querySubStrings; _i < querySubStrings_1.length; _i++) {
|
||
var querySubString = querySubStrings_1[_i];
|
||
var splitResults = querySubString.split("=");
|
||
var key = splitResults[0];
|
||
var value = splitResults[1];
|
||
queries[key] = value;
|
||
}
|
||
return queries;
|
||
}
|
||
/**
|
||
* Append a string to URL query.
|
||
*
|
||
* @param url - Source URL string.
|
||
* @param queryParts - String to be appended to the URL query.
|
||
* @returns An updated URL string.
|
||
*/
|
||
function appendToURLQuery(url, queryParts) {
|
||
var urlParsed = coreHttp.URLBuilder.parse(url);
|
||
var query = urlParsed.getQuery();
|
||
if (query) {
|
||
query += "&" + queryParts;
|
||
}
|
||
else {
|
||
query = queryParts;
|
||
}
|
||
urlParsed.setQuery(query);
|
||
return urlParsed.toString();
|
||
}
|
||
/**
|
||
* Rounds a date off to seconds.
|
||
*
|
||
* @param date -
|
||
* @param withMilliseconds - If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;
|
||
* If false, YYYY-MM-DDThh:mm:ssZ will be returned.
|
||
* @returns Date string in ISO8061 format, with or without 7 milliseconds component
|
||
*/
|
||
function truncatedISO8061Date(date, withMilliseconds) {
|
||
if (withMilliseconds === void 0) { withMilliseconds = true; }
|
||
// Date.toISOString() will return like "2018-10-29T06:34:36.139Z"
|
||
var dateString = date.toISOString();
|
||
return withMilliseconds
|
||
? dateString.substring(0, dateString.length - 1) + "0000" + "Z"
|
||
: dateString.substring(0, dateString.length - 5) + "Z";
|
||
}
|
||
/**
|
||
* Base64 encode.
|
||
*
|
||
* @param content -
|
||
*/
|
||
function base64encode(content) {
|
||
return !coreHttp.isNode ? btoa(content) : Buffer.from(content).toString("base64");
|
||
}
|
||
/**
|
||
* Generate a 64 bytes base64 block ID string.
|
||
*
|
||
* @param blockIndex -
|
||
*/
|
||
function generateBlockID(blockIDPrefix, blockIndex) {
|
||
// To generate a 64 bytes base64 string, source string should be 48
|
||
var maxSourceStringLength = 48;
|
||
// A blob can have a maximum of 100,000 uncommitted blocks at any given time
|
||
var maxBlockIndexLength = 6;
|
||
var maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;
|
||
if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {
|
||
blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);
|
||
}
|
||
var res = blockIDPrefix +
|
||
padStart(blockIndex.toString(), maxSourceStringLength - blockIDPrefix.length, "0");
|
||
return base64encode(res);
|
||
}
|
||
/**
|
||
* Delay specified time interval.
|
||
*
|
||
* @param timeInMs -
|
||
* @param aborter -
|
||
* @param abortError -
|
||
*/
|
||
function delay(timeInMs, aborter, abortError) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, new Promise(function (resolve, reject) {
|
||
var timeout;
|
||
var abortHandler = function () {
|
||
if (timeout !== undefined) {
|
||
clearTimeout(timeout);
|
||
}
|
||
reject(abortError);
|
||
};
|
||
var resolveHandler = function () {
|
||
if (aborter !== undefined) {
|
||
aborter.removeEventListener("abort", abortHandler);
|
||
}
|
||
resolve();
|
||
};
|
||
timeout = setTimeout(resolveHandler, timeInMs);
|
||
if (aborter !== undefined) {
|
||
aborter.addEventListener("abort", abortHandler);
|
||
}
|
||
})];
|
||
});
|
||
});
|
||
}
|
||
/**
|
||
* String.prototype.padStart()
|
||
*
|
||
* @param currentString -
|
||
* @param targetLength -
|
||
* @param padString -
|
||
*/
|
||
function padStart(currentString, targetLength, padString) {
|
||
if (padString === void 0) { padString = " "; }
|
||
// TS doesn't know this code needs to run downlevel sometimes.
|
||
// @ts-expect-error
|
||
if (String.prototype.padStart) {
|
||
return currentString.padStart(targetLength, padString);
|
||
}
|
||
padString = padString || " ";
|
||
if (currentString.length > targetLength) {
|
||
return currentString;
|
||
}
|
||
else {
|
||
targetLength = targetLength - currentString.length;
|
||
if (targetLength > padString.length) {
|
||
padString += padString.repeat(targetLength / padString.length);
|
||
}
|
||
return padString.slice(0, targetLength) + currentString;
|
||
}
|
||
}
|
||
/**
|
||
* If two strings are equal when compared case insensitive.
|
||
*
|
||
* @param str1 -
|
||
* @param str2 -
|
||
*/
|
||
function iEqual(str1, str2) {
|
||
return str1.toLocaleLowerCase() === str2.toLocaleLowerCase();
|
||
}
|
||
/**
|
||
* Extracts account name from the url
|
||
* @param url - url to extract the account name from
|
||
* @returns with the account name
|
||
*/
|
||
function getAccountNameFromUrl(url) {
|
||
var parsedUrl = coreHttp.URLBuilder.parse(url);
|
||
var accountName;
|
||
try {
|
||
if (parsedUrl.getHost().split(".")[1] === "blob") {
|
||
// `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;
|
||
accountName = parsedUrl.getHost().split(".")[0];
|
||
}
|
||
else if (isIpEndpointStyle(parsedUrl)) {
|
||
// IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/
|
||
// Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/
|
||
// .getPath() -> /devstoreaccount1/
|
||
accountName = parsedUrl.getPath().split("/")[1];
|
||
}
|
||
else {
|
||
// Custom domain case: "https://customdomain.com/containername/blob".
|
||
accountName = "";
|
||
}
|
||
return accountName;
|
||
}
|
||
catch (error) {
|
||
throw new Error("Unable to extract accountName with provided information.");
|
||
}
|
||
}
|
||
function isIpEndpointStyle(parsedUrl) {
|
||
if (parsedUrl.getHost() == undefined) {
|
||
return false;
|
||
}
|
||
var host = parsedUrl.getHost() + (parsedUrl.getPort() == undefined ? "" : ":" + parsedUrl.getPort());
|
||
// Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.
|
||
// Case 2: localhost(:port), use broad regex to match port part.
|
||
// Case 3: Ipv4, use broad regex which just check if host contains Ipv4.
|
||
// For valid host please refer to https://man7.org/linux/man-pages/man7/hostname.7.html.
|
||
return /^.*:.*:.*$|^localhost(:[0-9]+)?$|^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])){3}(:[0-9]+)?$/.test(host);
|
||
}
|
||
/**
|
||
* Convert Tags to encoded string.
|
||
*
|
||
* @param tags -
|
||
*/
|
||
function toBlobTagsString(tags) {
|
||
if (tags === undefined) {
|
||
return undefined;
|
||
}
|
||
var tagPairs = [];
|
||
for (var key in tags) {
|
||
if (tags.hasOwnProperty(key)) {
|
||
var value = tags[key];
|
||
tagPairs.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
|
||
}
|
||
}
|
||
return tagPairs.join("&");
|
||
}
|
||
/**
|
||
* Convert Tags type to BlobTags.
|
||
*
|
||
* @param tags -
|
||
*/
|
||
function toBlobTags(tags) {
|
||
if (tags === undefined) {
|
||
return undefined;
|
||
}
|
||
var res = {
|
||
blobTagSet: []
|
||
};
|
||
for (var key in tags) {
|
||
if (tags.hasOwnProperty(key)) {
|
||
var value = tags[key];
|
||
res.blobTagSet.push({
|
||
key: key,
|
||
value: value
|
||
});
|
||
}
|
||
}
|
||
return res;
|
||
}
|
||
/**
|
||
* Covert BlobTags to Tags type.
|
||
*
|
||
* @param tags -
|
||
*/
|
||
function toTags(tags) {
|
||
if (tags === undefined) {
|
||
return undefined;
|
||
}
|
||
var res = {};
|
||
for (var _i = 0, _a = tags.blobTagSet; _i < _a.length; _i++) {
|
||
var blobTag = _a[_i];
|
||
res[blobTag.key] = blobTag.value;
|
||
}
|
||
return res;
|
||
}
|
||
/**
|
||
* Convert BlobQueryTextConfiguration to QuerySerialization type.
|
||
*
|
||
* @param textConfiguration -
|
||
*/
|
||
function toQuerySerialization(textConfiguration) {
|
||
if (textConfiguration === undefined) {
|
||
return undefined;
|
||
}
|
||
switch (textConfiguration.kind) {
|
||
case "csv":
|
||
return {
|
||
format: {
|
||
type: "delimited",
|
||
delimitedTextConfiguration: {
|
||
columnSeparator: textConfiguration.columnSeparator || ",",
|
||
fieldQuote: textConfiguration.fieldQuote || "",
|
||
recordSeparator: textConfiguration.recordSeparator,
|
||
escapeChar: textConfiguration.escapeCharacter || "",
|
||
headersPresent: textConfiguration.hasHeaders || false
|
||
}
|
||
}
|
||
};
|
||
case "json":
|
||
return {
|
||
format: {
|
||
type: "json",
|
||
jsonTextConfiguration: {
|
||
recordSeparator: textConfiguration.recordSeparator
|
||
}
|
||
}
|
||
};
|
||
case "arrow":
|
||
return {
|
||
format: {
|
||
type: "arrow",
|
||
arrowConfiguration: {
|
||
schema: textConfiguration.schema
|
||
}
|
||
}
|
||
};
|
||
default:
|
||
throw Error("Invalid BlobQueryTextConfiguration.");
|
||
}
|
||
}
|
||
function parseObjectReplicationRecord(objectReplicationRecord) {
|
||
if (!objectReplicationRecord) {
|
||
return undefined;
|
||
}
|
||
if ("policy-id" in objectReplicationRecord) {
|
||
// If the dictionary contains a key with policy id, we are not required to do any parsing since
|
||
// the policy id should already be stored in the ObjectReplicationDestinationPolicyId.
|
||
return undefined;
|
||
}
|
||
var orProperties = [];
|
||
var _loop_1 = function (key) {
|
||
var ids = key.split("_");
|
||
var policyPrefix = "or-";
|
||
if (ids[0].startsWith(policyPrefix)) {
|
||
ids[0] = ids[0].substring(policyPrefix.length);
|
||
}
|
||
var rule = {
|
||
ruleId: ids[1],
|
||
replicationStatus: objectReplicationRecord[key]
|
||
};
|
||
var policyIndex = orProperties.findIndex(function (policy) { return policy.policyId === ids[0]; });
|
||
if (policyIndex > -1) {
|
||
orProperties[policyIndex].rules.push(rule);
|
||
}
|
||
else {
|
||
orProperties.push({
|
||
policyId: ids[0],
|
||
rules: [rule]
|
||
});
|
||
}
|
||
};
|
||
for (var key in objectReplicationRecord) {
|
||
_loop_1(key);
|
||
}
|
||
return orProperties;
|
||
}
|
||
/**
|
||
* Attach a TokenCredential to an object.
|
||
*
|
||
* @param thing -
|
||
* @param credential -
|
||
*/
|
||
function attachCredential(thing, credential) {
|
||
thing.credential = credential;
|
||
return thing;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* StorageBrowserPolicy will handle differences between Node.js and browser runtime, including:
|
||
*
|
||
* 1. Browsers cache GET/HEAD requests by adding conditional headers such as 'IF_MODIFIED_SINCE'.
|
||
* StorageBrowserPolicy is a policy used to add a timestamp query to GET/HEAD request URL
|
||
* thus avoid the browser cache.
|
||
*
|
||
* 2. Remove cookie header for security
|
||
*
|
||
* 3. Remove content-length header to avoid browsers warning
|
||
*/
|
||
var StorageBrowserPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(StorageBrowserPolicy, _super);
|
||
/**
|
||
* Creates an instance of StorageBrowserPolicy.
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
*/
|
||
function StorageBrowserPolicy(nextPolicy, options) {
|
||
return _super.call(this, nextPolicy, options) || this;
|
||
}
|
||
/**
|
||
* Sends out request.
|
||
*
|
||
* @param request -
|
||
*/
|
||
StorageBrowserPolicy.prototype.sendRequest = function (request) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
{
|
||
return [2 /*return*/, this._nextPolicy.sendRequest(request)];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return StorageBrowserPolicy;
|
||
}(coreHttp.BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* StorageBrowserPolicyFactory is a factory class helping generating StorageBrowserPolicy objects.
|
||
*/
|
||
var StorageBrowserPolicyFactory = /** @class */ (function () {
|
||
function StorageBrowserPolicyFactory() {
|
||
}
|
||
/**
|
||
* Creates a StorageBrowserPolicyFactory object.
|
||
*
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
*/
|
||
StorageBrowserPolicyFactory.prototype.create = function (nextPolicy, options) {
|
||
return new StorageBrowserPolicy(nextPolicy, options);
|
||
};
|
||
return StorageBrowserPolicyFactory;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
(function (StorageRetryPolicyType) {
|
||
/**
|
||
* Exponential retry. Retry time delay grows exponentially.
|
||
*/
|
||
StorageRetryPolicyType[StorageRetryPolicyType["EXPONENTIAL"] = 0] = "EXPONENTIAL";
|
||
/**
|
||
* Linear retry. Retry time delay grows linearly.
|
||
*/
|
||
StorageRetryPolicyType[StorageRetryPolicyType["FIXED"] = 1] = "FIXED";
|
||
})(exports.StorageRetryPolicyType || (exports.StorageRetryPolicyType = {}));
|
||
// Default values of StorageRetryOptions
|
||
var DEFAULT_RETRY_OPTIONS = {
|
||
maxRetryDelayInMs: 120 * 1000,
|
||
maxTries: 4,
|
||
retryDelayInMs: 4 * 1000,
|
||
retryPolicyType: exports.StorageRetryPolicyType.EXPONENTIAL,
|
||
secondaryHost: "",
|
||
tryTimeoutInMs: undefined // Use server side default timeout strategy
|
||
};
|
||
var RETRY_ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
|
||
/**
|
||
* Retry policy with exponential retry and linear retry implemented.
|
||
*/
|
||
var StorageRetryPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(StorageRetryPolicy, _super);
|
||
/**
|
||
* Creates an instance of RetryPolicy.
|
||
*
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
* @param retryOptions -
|
||
*/
|
||
function StorageRetryPolicy(nextPolicy, options, retryOptions) {
|
||
if (retryOptions === void 0) { retryOptions = DEFAULT_RETRY_OPTIONS; }
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
// Initialize retry options
|
||
_this.retryOptions = {
|
||
retryPolicyType: retryOptions.retryPolicyType
|
||
? retryOptions.retryPolicyType
|
||
: DEFAULT_RETRY_OPTIONS.retryPolicyType,
|
||
maxTries: retryOptions.maxTries && retryOptions.maxTries >= 1
|
||
? Math.floor(retryOptions.maxTries)
|
||
: DEFAULT_RETRY_OPTIONS.maxTries,
|
||
tryTimeoutInMs: retryOptions.tryTimeoutInMs && retryOptions.tryTimeoutInMs >= 0
|
||
? retryOptions.tryTimeoutInMs
|
||
: DEFAULT_RETRY_OPTIONS.tryTimeoutInMs,
|
||
retryDelayInMs: retryOptions.retryDelayInMs && retryOptions.retryDelayInMs >= 0
|
||
? Math.min(retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs
|
||
? retryOptions.maxRetryDelayInMs
|
||
: DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs)
|
||
: DEFAULT_RETRY_OPTIONS.retryDelayInMs,
|
||
maxRetryDelayInMs: retryOptions.maxRetryDelayInMs && retryOptions.maxRetryDelayInMs >= 0
|
||
? retryOptions.maxRetryDelayInMs
|
||
: DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs,
|
||
secondaryHost: retryOptions.secondaryHost
|
||
? retryOptions.secondaryHost
|
||
: DEFAULT_RETRY_OPTIONS.secondaryHost
|
||
};
|
||
return _this;
|
||
}
|
||
/**
|
||
* Sends request.
|
||
*
|
||
* @param request -
|
||
*/
|
||
StorageRetryPolicy.prototype.sendRequest = function (request) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, this.attemptSendRequest(request, false, 1)];
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Decide and perform next retry. Won't mutate request parameter.
|
||
*
|
||
* @param request -
|
||
* @param secondaryHas404 - If attempt was against the secondary & it returned a StatusNotFound (404), then
|
||
* the resource was not found. This may be due to replication delay. So, in this
|
||
* case, we'll never try the secondary again for this operation.
|
||
* @param attempt - How many retries has been attempted to performed, starting from 1, which includes
|
||
* the attempt will be performed by this method call.
|
||
*/
|
||
StorageRetryPolicy.prototype.attemptSendRequest = function (request, secondaryHas404, attempt) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var newRequest, isPrimaryRetry, response, err_1;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
newRequest = request.clone();
|
||
isPrimaryRetry = secondaryHas404 ||
|
||
!this.retryOptions.secondaryHost ||
|
||
!(request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") ||
|
||
attempt % 2 === 1;
|
||
if (!isPrimaryRetry) {
|
||
newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);
|
||
}
|
||
// Set the server-side timeout query parameter "timeout=[seconds]"
|
||
if (this.retryOptions.tryTimeoutInMs) {
|
||
newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());
|
||
}
|
||
_a.label = 1;
|
||
case 1:
|
||
_a.trys.push([1, 3, , 4]);
|
||
logger.info("RetryPolicy: =====> Try=" + attempt + " " + (isPrimaryRetry ? "Primary" : "Secondary"));
|
||
return [4 /*yield*/, this._nextPolicy.sendRequest(newRequest)];
|
||
case 2:
|
||
response = _a.sent();
|
||
if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {
|
||
return [2 /*return*/, response];
|
||
}
|
||
secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
|
||
return [3 /*break*/, 4];
|
||
case 3:
|
||
err_1 = _a.sent();
|
||
logger.error("RetryPolicy: Caught error, message: " + err_1.message + ", code: " + err_1.code);
|
||
if (!this.shouldRetry(isPrimaryRetry, attempt, response, err_1)) {
|
||
throw err_1;
|
||
}
|
||
return [3 /*break*/, 4];
|
||
case 4: return [4 /*yield*/, this.delay(isPrimaryRetry, attempt, request.abortSignal)];
|
||
case 5:
|
||
_a.sent();
|
||
return [4 /*yield*/, this.attemptSendRequest(request, secondaryHas404, ++attempt)];
|
||
case 6: return [2 /*return*/, _a.sent()];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Decide whether to retry according to last HTTP response and retry counters.
|
||
*
|
||
* @param isPrimaryRetry -
|
||
* @param attempt -
|
||
* @param response -
|
||
* @param err -
|
||
*/
|
||
StorageRetryPolicy.prototype.shouldRetry = function (isPrimaryRetry, attempt, response, err) {
|
||
if (attempt >= this.retryOptions.maxTries) {
|
||
logger.info("RetryPolicy: Attempt(s) " + attempt + " >= maxTries " + this.retryOptions
|
||
.maxTries + ", no further try.");
|
||
return false;
|
||
}
|
||
// Handle network failures, you may need to customize the list when you implement
|
||
// your own http client
|
||
var retriableErrors = [
|
||
"ETIMEDOUT",
|
||
"ESOCKETTIMEDOUT",
|
||
"ECONNREFUSED",
|
||
"ECONNRESET",
|
||
"ENOENT",
|
||
"ENOTFOUND",
|
||
"TIMEOUT",
|
||
"EPIPE",
|
||
"REQUEST_SEND_ERROR" // For default xhr based http client provided in ms-rest-js
|
||
];
|
||
if (err) {
|
||
for (var _i = 0, retriableErrors_1 = retriableErrors; _i < retriableErrors_1.length; _i++) {
|
||
var retriableError = retriableErrors_1[_i];
|
||
if (err.name.toUpperCase().includes(retriableError) ||
|
||
err.message.toUpperCase().includes(retriableError) ||
|
||
(err.code && err.code.toString().toUpperCase() === retriableError)) {
|
||
logger.info("RetryPolicy: Network error " + retriableError + " found, will retry.");
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
// If attempt was against the secondary & it returned a StatusNotFound (404), then
|
||
// the resource was not found. This may be due to replication delay. So, in this
|
||
// case, we'll never try the secondary again for this operation.
|
||
if (response || err) {
|
||
var statusCode = response ? response.status : err ? err.statusCode : 0;
|
||
if (!isPrimaryRetry && statusCode === 404) {
|
||
logger.info("RetryPolicy: Secondary access with 404, will retry.");
|
||
return true;
|
||
}
|
||
// Server internal error or server timeout
|
||
if (statusCode === 503 || statusCode === 500) {
|
||
logger.info("RetryPolicy: Will retry for status code " + statusCode + ".");
|
||
return true;
|
||
}
|
||
}
|
||
if ((err === null || err === void 0 ? void 0 : err.code) === "PARSE_ERROR" && (err === null || err === void 0 ? void 0 : err.message.startsWith("Error \"Error: Unclosed root tag"))) {
|
||
logger.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry.");
|
||
return true;
|
||
}
|
||
return false;
|
||
};
|
||
/**
|
||
* Delay a calculated time between retries.
|
||
*
|
||
* @param isPrimaryRetry -
|
||
* @param attempt -
|
||
* @param abortSignal -
|
||
*/
|
||
StorageRetryPolicy.prototype.delay = function (isPrimaryRetry, attempt, abortSignal) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var delayTimeInMs;
|
||
return tslib.__generator(this, function (_a) {
|
||
delayTimeInMs = 0;
|
||
if (isPrimaryRetry) {
|
||
switch (this.retryOptions.retryPolicyType) {
|
||
case exports.StorageRetryPolicyType.EXPONENTIAL:
|
||
delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);
|
||
break;
|
||
case exports.StorageRetryPolicyType.FIXED:
|
||
delayTimeInMs = this.retryOptions.retryDelayInMs;
|
||
break;
|
||
}
|
||
}
|
||
else {
|
||
delayTimeInMs = Math.random() * 1000;
|
||
}
|
||
logger.info("RetryPolicy: Delay for " + delayTimeInMs + "ms");
|
||
return [2 /*return*/, delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR)];
|
||
});
|
||
});
|
||
};
|
||
return StorageRetryPolicy;
|
||
}(coreHttp.BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* StorageRetryPolicyFactory is a factory class helping generating {@link StorageRetryPolicy} objects.
|
||
*/
|
||
var StorageRetryPolicyFactory = /** @class */ (function () {
|
||
/**
|
||
* Creates an instance of StorageRetryPolicyFactory.
|
||
* @param retryOptions -
|
||
*/
|
||
function StorageRetryPolicyFactory(retryOptions) {
|
||
this.retryOptions = retryOptions;
|
||
}
|
||
/**
|
||
* Creates a StorageRetryPolicy object.
|
||
*
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
*/
|
||
StorageRetryPolicyFactory.prototype.create = function (nextPolicy, options) {
|
||
return new StorageRetryPolicy(nextPolicy, options, this.retryOptions);
|
||
};
|
||
return StorageRetryPolicyFactory;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Credential policy used to sign HTTP(S) requests before sending. This is an
|
||
* abstract class.
|
||
*/
|
||
var CredentialPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(CredentialPolicy, _super);
|
||
function CredentialPolicy() {
|
||
return _super !== null && _super.apply(this, arguments) || this;
|
||
}
|
||
/**
|
||
* Sends out request.
|
||
*
|
||
* @param request -
|
||
*/
|
||
CredentialPolicy.prototype.sendRequest = function (request) {
|
||
return this._nextPolicy.sendRequest(this.signRequest(request));
|
||
};
|
||
/**
|
||
* Child classes must implement this method with request signing. This method
|
||
* will be executed in {@link sendRequest}.
|
||
*
|
||
* @param request -
|
||
*/
|
||
CredentialPolicy.prototype.signRequest = function (request) {
|
||
// Child classes must override this method with request signing. This method
|
||
// will be executed in sendRequest().
|
||
return request;
|
||
};
|
||
return CredentialPolicy;
|
||
}(coreHttp.BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* AnonymousCredentialPolicy is used with HTTP(S) requests that read public resources
|
||
* or for use with Shared Access Signatures (SAS).
|
||
*/
|
||
var AnonymousCredentialPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(AnonymousCredentialPolicy, _super);
|
||
/**
|
||
* Creates an instance of AnonymousCredentialPolicy.
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
*/
|
||
function AnonymousCredentialPolicy(nextPolicy, options) {
|
||
return _super.call(this, nextPolicy, options) || this;
|
||
}
|
||
return AnonymousCredentialPolicy;
|
||
}(CredentialPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* Credential is an abstract class for Azure Storage HTTP requests signing. This
|
||
* class will host an credentialPolicyCreator factory which generates CredentialPolicy.
|
||
*/
|
||
var Credential = /** @class */ (function () {
|
||
function Credential() {
|
||
}
|
||
/**
|
||
* Creates a RequestPolicy object.
|
||
*
|
||
* @param _nextPolicy -
|
||
* @param _options -
|
||
*/
|
||
Credential.prototype.create = function (
|
||
// tslint:disable-next-line:variable-name
|
||
_nextPolicy,
|
||
// tslint:disable-next-line:variable-name
|
||
_options) {
|
||
throw new Error("Method should be implemented in children classes.");
|
||
};
|
||
return Credential;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* AnonymousCredential provides a credentialPolicyCreator member used to create
|
||
* AnonymousCredentialPolicy objects. AnonymousCredentialPolicy is used with
|
||
* HTTP(S) requests that read public resources or for use with Shared Access
|
||
* Signatures (SAS).
|
||
*/
|
||
var AnonymousCredential = /** @class */ (function (_super) {
|
||
tslib.__extends(AnonymousCredential, _super);
|
||
function AnonymousCredential() {
|
||
return _super !== null && _super.apply(this, arguments) || this;
|
||
}
|
||
/**
|
||
* Creates an {@link AnonymousCredentialPolicy} object.
|
||
*
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
*/
|
||
AnonymousCredential.prototype.create = function (nextPolicy, options) {
|
||
return new AnonymousCredentialPolicy(nextPolicy, options);
|
||
};
|
||
return AnonymousCredential;
|
||
}(Credential));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* TelemetryPolicy is a policy used to tag user-agent header for every requests.
|
||
*/
|
||
var TelemetryPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(TelemetryPolicy, _super);
|
||
/**
|
||
* Creates an instance of TelemetryPolicy.
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
* @param telemetry -
|
||
*/
|
||
function TelemetryPolicy(nextPolicy, options, telemetry) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.telemetry = telemetry;
|
||
return _this;
|
||
}
|
||
/**
|
||
* Sends out request.
|
||
*
|
||
* @param request -
|
||
*/
|
||
TelemetryPolicy.prototype.sendRequest = function (request) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
{
|
||
if (!request.headers) {
|
||
request.headers = new coreHttp.HttpHeaders();
|
||
}
|
||
if (!request.headers.get(HeaderConstants.USER_AGENT)) {
|
||
request.headers.set(HeaderConstants.USER_AGENT, this.telemetry);
|
||
}
|
||
}
|
||
return [2 /*return*/, this._nextPolicy.sendRequest(request)];
|
||
});
|
||
});
|
||
};
|
||
return TelemetryPolicy;
|
||
}(coreHttp.BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* TelemetryPolicyFactory is a factory class helping generating {@link TelemetryPolicy} objects.
|
||
*/
|
||
var TelemetryPolicyFactory = /** @class */ (function () {
|
||
/**
|
||
* Creates an instance of TelemetryPolicyFactory.
|
||
* @param telemetry -
|
||
*/
|
||
function TelemetryPolicyFactory(telemetry) {
|
||
var userAgentInfo = [];
|
||
{
|
||
if (telemetry) {
|
||
var telemetryString = telemetry.userAgentPrefix || "";
|
||
if (telemetryString.length > 0 && userAgentInfo.indexOf(telemetryString) === -1) {
|
||
userAgentInfo.push(telemetryString);
|
||
}
|
||
}
|
||
// e.g. azsdk-js-storageblob/10.0.0
|
||
var libInfo = "azsdk-js-storageblob/" + SDK_VERSION;
|
||
if (userAgentInfo.indexOf(libInfo) === -1) {
|
||
userAgentInfo.push(libInfo);
|
||
}
|
||
// e.g. (NODE-VERSION 4.9.1; Windows_NT 10.0.16299)
|
||
var runtimeInfo = "(NODE-VERSION " + process.version + "; " + os.type() + " " + os.release() + ")";
|
||
if (userAgentInfo.indexOf(runtimeInfo) === -1) {
|
||
userAgentInfo.push(runtimeInfo);
|
||
}
|
||
}
|
||
this.telemetryString = userAgentInfo.join(" ");
|
||
}
|
||
/**
|
||
* Creates a TelemetryPolicy object.
|
||
*
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
*/
|
||
TelemetryPolicyFactory.prototype.create = function (nextPolicy, options) {
|
||
return new TelemetryPolicy(nextPolicy, options, this.telemetryString);
|
||
};
|
||
return TelemetryPolicyFactory;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var _defaultHttpClient = new coreHttp.DefaultHttpClient();
|
||
function getCachedDefaultHttpClient() {
|
||
return _defaultHttpClient;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* A Pipeline class containing HTTP request policies.
|
||
* You can create a default Pipeline by calling {@link newPipeline}.
|
||
* Or you can create a Pipeline with your own policies by the constructor of Pipeline.
|
||
*
|
||
* Refer to {@link newPipeline} and provided policies before implementing your
|
||
* customized Pipeline.
|
||
*/
|
||
var Pipeline = /** @class */ (function () {
|
||
/**
|
||
* Creates an instance of Pipeline. Customize HTTPClient by implementing IHttpClient interface.
|
||
*
|
||
* @param factories -
|
||
* @param options -
|
||
*/
|
||
function Pipeline(factories, options) {
|
||
if (options === void 0) { options = {}; }
|
||
this.factories = factories;
|
||
// when options.httpClient is not specified, passing in a DefaultHttpClient instance to
|
||
// avoid each client creating its own http client.
|
||
this.options = tslib.__assign(tslib.__assign({}, options), { httpClient: options.httpClient || getCachedDefaultHttpClient() });
|
||
}
|
||
/**
|
||
* Transfer Pipeline object to ServiceClientOptions object which is required by
|
||
* ServiceClient constructor.
|
||
*
|
||
* @returns The ServiceClientOptions object from this Pipeline.
|
||
*/
|
||
Pipeline.prototype.toServiceClientOptions = function () {
|
||
return {
|
||
httpClient: this.options.httpClient,
|
||
requestPolicyFactories: this.factories
|
||
};
|
||
};
|
||
return Pipeline;
|
||
}());
|
||
/**
|
||
* Creates a new Pipeline object with Credential provided.
|
||
*
|
||
* @param credential - Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
|
||
* @param pipelineOptions - Optional. Options.
|
||
* @returns A new Pipeline object.
|
||
*/
|
||
function newPipeline(credential, pipelineOptions) {
|
||
if (pipelineOptions === void 0) { pipelineOptions = {}; }
|
||
if (credential === undefined) {
|
||
credential = new AnonymousCredential();
|
||
}
|
||
// Order is important. Closer to the API at the top & closer to the network at the bottom.
|
||
// The credential's policy factory must appear close to the wire so it can sign any
|
||
// changes made by other factories (like UniqueRequestIDPolicyFactory)
|
||
var telemetryPolicy = new TelemetryPolicyFactory(pipelineOptions.userAgentOptions);
|
||
var factories = [
|
||
coreHttp.tracingPolicy({ userAgent: telemetryPolicy.telemetryString }),
|
||
coreHttp.keepAlivePolicy(pipelineOptions.keepAliveOptions),
|
||
telemetryPolicy,
|
||
coreHttp.generateClientRequestIdPolicy(),
|
||
new StorageBrowserPolicyFactory(),
|
||
new StorageRetryPolicyFactory(pipelineOptions.retryOptions),
|
||
// Default deserializationPolicy is provided by protocol layer
|
||
// Use customized XML char key of "#" so we could deserialize metadata
|
||
// with "_" key
|
||
coreHttp.deserializationPolicy(undefined, { xmlCharKey: "#" }),
|
||
coreHttp.logPolicy({
|
||
logger: logger.info,
|
||
allowedHeaderNames: StorageBlobLoggingAllowedHeaderNames,
|
||
allowedQueryParameters: StorageBlobLoggingAllowedQueryParameters
|
||
})
|
||
];
|
||
{
|
||
// policies only available in Node.js runtime, not in browsers
|
||
factories.push(coreHttp.proxyPolicy(pipelineOptions.proxyOptions));
|
||
factories.push(coreHttp.disableResponseDecompressionPolicy());
|
||
}
|
||
factories.push(coreHttp.isTokenCredential(credential)
|
||
? attachCredential(coreHttp.bearerTokenAuthenticationPolicy(credential, StorageOAuthScopes), credential)
|
||
: credential);
|
||
return new Pipeline(factories, pipelineOptions);
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.
|
||
*/
|
||
var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(StorageSharedKeyCredentialPolicy, _super);
|
||
/**
|
||
* Creates an instance of StorageSharedKeyCredentialPolicy.
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
* @param factory -
|
||
*/
|
||
function StorageSharedKeyCredentialPolicy(nextPolicy, options, factory) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.factory = factory;
|
||
return _this;
|
||
}
|
||
/**
|
||
* Signs request.
|
||
*
|
||
* @param request -
|
||
*/
|
||
StorageSharedKeyCredentialPolicy.prototype.signRequest = function (request) {
|
||
request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());
|
||
if (request.body && typeof request.body === "string" && request.body.length > 0) {
|
||
request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));
|
||
}
|
||
var stringToSign = [
|
||
request.method.toUpperCase(),
|
||
this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),
|
||
this.getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),
|
||
this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LENGTH),
|
||
this.getHeaderValueToSign(request, HeaderConstants.CONTENT_MD5),
|
||
this.getHeaderValueToSign(request, HeaderConstants.CONTENT_TYPE),
|
||
this.getHeaderValueToSign(request, HeaderConstants.DATE),
|
||
this.getHeaderValueToSign(request, HeaderConstants.IF_MODIFIED_SINCE),
|
||
this.getHeaderValueToSign(request, HeaderConstants.IF_MATCH),
|
||
this.getHeaderValueToSign(request, HeaderConstants.IF_NONE_MATCH),
|
||
this.getHeaderValueToSign(request, HeaderConstants.IF_UNMODIFIED_SINCE),
|
||
this.getHeaderValueToSign(request, HeaderConstants.RANGE)
|
||
].join("\n") +
|
||
"\n" +
|
||
this.getCanonicalizedHeadersString(request) +
|
||
this.getCanonicalizedResourceString(request);
|
||
var signature = this.factory.computeHMACSHA256(stringToSign);
|
||
request.headers.set(HeaderConstants.AUTHORIZATION, "SharedKey " + this.factory.accountName + ":" + signature);
|
||
// console.log(`[URL]:${request.url}`);
|
||
// console.log(`[HEADERS]:${request.headers.toString()}`);
|
||
// console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);
|
||
// console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);
|
||
return request;
|
||
};
|
||
/**
|
||
* Retrieve header value according to shared key sign rules.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key
|
||
*
|
||
* @param request -
|
||
* @param headerName -
|
||
*/
|
||
StorageSharedKeyCredentialPolicy.prototype.getHeaderValueToSign = function (request, headerName) {
|
||
var value = request.headers.get(headerName);
|
||
if (!value) {
|
||
return "";
|
||
}
|
||
// When using version 2015-02-21 or later, if Content-Length is zero, then
|
||
// set the Content-Length part of the StringToSign to an empty string.
|
||
// https://docs.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key
|
||
if (headerName === HeaderConstants.CONTENT_LENGTH && value === "0") {
|
||
return "";
|
||
}
|
||
return value;
|
||
};
|
||
/**
|
||
* To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
|
||
* 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
|
||
* 2. Convert each HTTP header name to lowercase.
|
||
* 3. Sort the headers lexicographically by header name, in ascending order.
|
||
* Each header may appear only once in the string.
|
||
* 4. Replace any linear whitespace in the header value with a single space.
|
||
* 5. Trim any whitespace around the colon in the header.
|
||
* 6. Finally, append a new-line character to each canonicalized header in the resulting list.
|
||
* Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.
|
||
*
|
||
* @param request -
|
||
*/
|
||
StorageSharedKeyCredentialPolicy.prototype.getCanonicalizedHeadersString = function (request) {
|
||
var headersArray = request.headers.headersArray().filter(function (value) {
|
||
return value.name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE);
|
||
});
|
||
headersArray.sort(function (a, b) {
|
||
return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
|
||
});
|
||
// Remove duplicate headers
|
||
headersArray = headersArray.filter(function (value, index, array) {
|
||
if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {
|
||
return false;
|
||
}
|
||
return true;
|
||
});
|
||
var canonicalizedHeadersStringToSign = "";
|
||
headersArray.forEach(function (header) {
|
||
canonicalizedHeadersStringToSign += header.name
|
||
.toLowerCase()
|
||
.trimRight() + ":" + header.value.trimLeft() + "\n";
|
||
});
|
||
return canonicalizedHeadersStringToSign;
|
||
};
|
||
/**
|
||
* Retrieves the webResource canonicalized resource string.
|
||
*
|
||
* @param request -
|
||
*/
|
||
StorageSharedKeyCredentialPolicy.prototype.getCanonicalizedResourceString = function (request) {
|
||
var path = getURLPath(request.url) || "/";
|
||
var canonicalizedResourceString = "";
|
||
canonicalizedResourceString += "/" + this.factory.accountName + path;
|
||
var queries = getURLQueries(request.url);
|
||
var lowercaseQueries = {};
|
||
if (queries) {
|
||
var queryKeys = [];
|
||
for (var key in queries) {
|
||
if (queries.hasOwnProperty(key)) {
|
||
var lowercaseKey = key.toLowerCase();
|
||
lowercaseQueries[lowercaseKey] = queries[key];
|
||
queryKeys.push(lowercaseKey);
|
||
}
|
||
}
|
||
queryKeys.sort();
|
||
for (var _i = 0, queryKeys_1 = queryKeys; _i < queryKeys_1.length; _i++) {
|
||
var key = queryKeys_1[_i];
|
||
canonicalizedResourceString += "\n" + key + ":" + decodeURIComponent(lowercaseQueries[key]);
|
||
}
|
||
}
|
||
return canonicalizedResourceString;
|
||
};
|
||
return StorageSharedKeyCredentialPolicy;
|
||
}(CredentialPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* StorageSharedKeyCredential for account key authorization of Azure Storage service.
|
||
*/
|
||
var StorageSharedKeyCredential = /** @class */ (function (_super) {
|
||
tslib.__extends(StorageSharedKeyCredential, _super);
|
||
/**
|
||
* Creates an instance of StorageSharedKeyCredential.
|
||
* @param accountName -
|
||
* @param accountKey -
|
||
*/
|
||
function StorageSharedKeyCredential(accountName, accountKey) {
|
||
var _this = _super.call(this) || this;
|
||
_this.accountName = accountName;
|
||
_this.accountKey = Buffer.from(accountKey, "base64");
|
||
return _this;
|
||
}
|
||
/**
|
||
* Creates a StorageSharedKeyCredentialPolicy object.
|
||
*
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
*/
|
||
StorageSharedKeyCredential.prototype.create = function (nextPolicy, options) {
|
||
return new StorageSharedKeyCredentialPolicy(nextPolicy, options, this);
|
||
};
|
||
/**
|
||
* Generates a hash signature for an HTTP request or for a SAS.
|
||
*
|
||
* @param stringToSign -
|
||
*/
|
||
StorageSharedKeyCredential.prototype.computeHMACSHA256 = function (stringToSign) {
|
||
return crypto.createHmac("sha256", this.accountKey)
|
||
.update(stringToSign, "utf8")
|
||
.digest("base64");
|
||
};
|
||
return StorageSharedKeyCredential;
|
||
}(Credential));
|
||
|
||
/*
|
||
* Copyright (c) Microsoft Corporation.
|
||
* Licensed under the MIT License.
|
||
*
|
||
* Code generated by Microsoft (R) AutoRest Code Generator.
|
||
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||
*/
|
||
var packageName = "azure-storage-blob";
|
||
var packageVersion = "12.6.0-beta.1";
|
||
var StorageClientContext = /** @class */ (function (_super) {
|
||
tslib.__extends(StorageClientContext, _super);
|
||
/**
|
||
* Initializes a new instance of the StorageClientContext class.
|
||
* @param url The URL of the service account, container, or blob that is the targe of the desired
|
||
* operation.
|
||
* @param options The parameter options
|
||
*/
|
||
function StorageClientContext(url, options) {
|
||
var _this = this;
|
||
if (url === undefined) {
|
||
throw new Error("'url' cannot be null");
|
||
}
|
||
// Initializing default values for options
|
||
if (!options) {
|
||
options = {};
|
||
}
|
||
if (!options.userAgent) {
|
||
var defaultUserAgent = coreHttp.getDefaultUserAgentValue();
|
||
options.userAgent = packageName + "/" + packageVersion + " " + defaultUserAgent;
|
||
}
|
||
_this = _super.call(this, undefined, options) || this;
|
||
_this.requestContentType = "application/json; charset=utf-8";
|
||
_this.baseUri = options.endpoint || "{url}";
|
||
// Parameter assignments
|
||
_this.url = url;
|
||
// Assigning values to Constant parameters
|
||
_this.version = options.version || "2020-08-04";
|
||
return _this;
|
||
}
|
||
return StorageClientContext;
|
||
}(coreHttp.ServiceClient));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* A StorageClient represents a based URL class for {@link BlobServiceClient}, {@link ContainerClient}
|
||
* and etc.
|
||
*/
|
||
var StorageClient = /** @class */ (function () {
|
||
/**
|
||
* Creates an instance of StorageClient.
|
||
* @param url - url to resource
|
||
* @param pipeline - request policy pipeline.
|
||
*/
|
||
function StorageClient(url, pipeline) {
|
||
// URL should be encoded and only once, protocol layer shouldn't encode URL again
|
||
this.url = escapeURLPath(url);
|
||
this.accountName = getAccountNameFromUrl(url);
|
||
this.pipeline = pipeline;
|
||
this.storageClientContext = new StorageClientContext(this.url, pipeline.toServiceClientOptions());
|
||
this.isHttps = iEqual(getURLScheme(this.url) || "", "https");
|
||
this.credential = new AnonymousCredential();
|
||
for (var _i = 0, _a = this.pipeline.factories; _i < _a.length; _i++) {
|
||
var factory = _a[_i];
|
||
if ((coreHttp.isNode && factory instanceof StorageSharedKeyCredential) ||
|
||
factory instanceof AnonymousCredential) {
|
||
this.credential = factory;
|
||
}
|
||
else if (coreHttp.isTokenCredential(factory.credential)) {
|
||
// Only works if the factory has been attached a "credential" property.
|
||
// We do that in newPipeline() when using TokenCredential.
|
||
this.credential = factory.credential;
|
||
}
|
||
}
|
||
// Override protocol layer's default content-type
|
||
var storageClientContext = this.storageClientContext;
|
||
storageClientContext.requestContentType = undefined;
|
||
}
|
||
return StorageClient;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Creates a span using the global tracer.
|
||
* @internal
|
||
*/
|
||
var createSpan = coreTracing.createSpanFunction({
|
||
packagePrefix: "Azure.Storage.Blob",
|
||
namespace: "Microsoft.Storage"
|
||
});
|
||
/**
|
||
* @internal
|
||
*
|
||
* Adapt the tracing options from OperationOptions to what they need to be for
|
||
* RequestOptionsBase (when we update to later OpenTelemetry versions this is now
|
||
* two separate fields, not just one).
|
||
*/
|
||
function convertTracingToRequestOptionsBase(options) {
|
||
var _a, _b;
|
||
return {
|
||
spanOptions: (_a = options === null || options === void 0 ? void 0 : options.tracingOptions) === null || _a === void 0 ? void 0 : _a.spanOptions,
|
||
tracingContext: (_b = options === null || options === void 0 ? void 0 : options.tracingOptions) === null || _b === void 0 ? void 0 : _b.tracingContext
|
||
};
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a blob. Setting
|
||
* a value to true means that any SAS which uses these permissions will grant permissions for that operation. Once all
|
||
* the values are set, this should be serialized with toString and set as the permissions field on a
|
||
* {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
|
||
* the order of the permissions is particular and this class guarantees correctness.
|
||
*/
|
||
var BlobSASPermissions = /** @class */ (function () {
|
||
function BlobSASPermissions() {
|
||
/**
|
||
* Specifies Read access granted.
|
||
*/
|
||
this.read = false;
|
||
/**
|
||
* Specifies Add access granted.
|
||
*/
|
||
this.add = false;
|
||
/**
|
||
* Specifies Create access granted.
|
||
*/
|
||
this.create = false;
|
||
/**
|
||
* Specifies Write access granted.
|
||
*/
|
||
this.write = false;
|
||
/**
|
||
* Specifies Delete access granted.
|
||
*/
|
||
this.delete = false;
|
||
/**
|
||
* Specifies Delete version access granted.
|
||
*/
|
||
this.deleteVersion = false;
|
||
/**
|
||
* Specfies Tag access granted.
|
||
*/
|
||
this.tag = false;
|
||
/**
|
||
* Specifies Move access granted.
|
||
*/
|
||
this.move = false;
|
||
/**
|
||
* Specifies Execute access granted.
|
||
*/
|
||
this.execute = false;
|
||
}
|
||
/**
|
||
* Creates a {@link BlobSASPermissions} from the specified permissions string. This method will throw an
|
||
* Error if it encounters a character that does not correspond to a valid permission.
|
||
*
|
||
* @param permissions -
|
||
*/
|
||
BlobSASPermissions.parse = function (permissions) {
|
||
var blobSASPermissions = new BlobSASPermissions();
|
||
for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
|
||
var char = permissions_1[_i];
|
||
switch (char) {
|
||
case "r":
|
||
blobSASPermissions.read = true;
|
||
break;
|
||
case "a":
|
||
blobSASPermissions.add = true;
|
||
break;
|
||
case "c":
|
||
blobSASPermissions.create = true;
|
||
break;
|
||
case "w":
|
||
blobSASPermissions.write = true;
|
||
break;
|
||
case "d":
|
||
blobSASPermissions.delete = true;
|
||
break;
|
||
case "x":
|
||
blobSASPermissions.deleteVersion = true;
|
||
break;
|
||
case "t":
|
||
blobSASPermissions.tag = true;
|
||
break;
|
||
case "m":
|
||
blobSASPermissions.move = true;
|
||
break;
|
||
case "e":
|
||
blobSASPermissions.execute = true;
|
||
break;
|
||
default:
|
||
throw new RangeError("Invalid permission: " + char);
|
||
}
|
||
}
|
||
return blobSASPermissions;
|
||
};
|
||
/**
|
||
* Creates a {@link BlobSASPermissions} from a raw object which contains same keys as it
|
||
* and boolean values for them.
|
||
*
|
||
* @param permissionLike -
|
||
*/
|
||
BlobSASPermissions.from = function (permissionLike) {
|
||
var blobSASPermissions = new BlobSASPermissions();
|
||
if (permissionLike.read) {
|
||
blobSASPermissions.read = true;
|
||
}
|
||
if (permissionLike.add) {
|
||
blobSASPermissions.add = true;
|
||
}
|
||
if (permissionLike.create) {
|
||
blobSASPermissions.create = true;
|
||
}
|
||
if (permissionLike.write) {
|
||
blobSASPermissions.write = true;
|
||
}
|
||
if (permissionLike.delete) {
|
||
blobSASPermissions.delete = true;
|
||
}
|
||
if (permissionLike.deleteVersion) {
|
||
blobSASPermissions.deleteVersion = true;
|
||
}
|
||
if (permissionLike.tag) {
|
||
blobSASPermissions.tag = true;
|
||
}
|
||
if (permissionLike.move) {
|
||
blobSASPermissions.move = true;
|
||
}
|
||
if (permissionLike.execute) {
|
||
blobSASPermissions.execute = true;
|
||
}
|
||
return blobSASPermissions;
|
||
};
|
||
/**
|
||
* Converts the given permissions to a string. Using this method will guarantee the permissions are in an
|
||
* order accepted by the service.
|
||
*
|
||
* @returns A string which represents the BlobSASPermissions
|
||
*/
|
||
BlobSASPermissions.prototype.toString = function () {
|
||
var permissions = [];
|
||
if (this.read) {
|
||
permissions.push("r");
|
||
}
|
||
if (this.add) {
|
||
permissions.push("a");
|
||
}
|
||
if (this.create) {
|
||
permissions.push("c");
|
||
}
|
||
if (this.write) {
|
||
permissions.push("w");
|
||
}
|
||
if (this.delete) {
|
||
permissions.push("d");
|
||
}
|
||
if (this.deleteVersion) {
|
||
permissions.push("x");
|
||
}
|
||
if (this.tag) {
|
||
permissions.push("t");
|
||
}
|
||
if (this.move) {
|
||
permissions.push("m");
|
||
}
|
||
if (this.execute) {
|
||
permissions.push("e");
|
||
}
|
||
return permissions.join("");
|
||
};
|
||
return BlobSASPermissions;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a container.
|
||
* Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.
|
||
* Once all the values are set, this should be serialized with toString and set as the permissions field on a
|
||
* {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
|
||
* the order of the permissions is particular and this class guarantees correctness.
|
||
*/
|
||
var ContainerSASPermissions = /** @class */ (function () {
|
||
function ContainerSASPermissions() {
|
||
/**
|
||
* Specifies Read access granted.
|
||
*/
|
||
this.read = false;
|
||
/**
|
||
* Specifies Add access granted.
|
||
*/
|
||
this.add = false;
|
||
/**
|
||
* Specifies Create access granted.
|
||
*/
|
||
this.create = false;
|
||
/**
|
||
* Specifies Write access granted.
|
||
*/
|
||
this.write = false;
|
||
/**
|
||
* Specifies Delete access granted.
|
||
*/
|
||
this.delete = false;
|
||
/**
|
||
* Specifies Delete version access granted.
|
||
*/
|
||
this.deleteVersion = false;
|
||
/**
|
||
* Specifies List access granted.
|
||
*/
|
||
this.list = false;
|
||
/**
|
||
* Specfies Tag access granted.
|
||
*/
|
||
this.tag = false;
|
||
/**
|
||
* Specifies Move access granted.
|
||
*/
|
||
this.move = false;
|
||
/**
|
||
* Specifies Execute access granted.
|
||
*/
|
||
this.execute = false;
|
||
}
|
||
/**
|
||
* Creates an {@link ContainerSASPermissions} from the specified permissions string. This method will throw an
|
||
* Error if it encounters a character that does not correspond to a valid permission.
|
||
*
|
||
* @param permissions -
|
||
*/
|
||
ContainerSASPermissions.parse = function (permissions) {
|
||
var containerSASPermissions = new ContainerSASPermissions();
|
||
for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
|
||
var char = permissions_1[_i];
|
||
switch (char) {
|
||
case "r":
|
||
containerSASPermissions.read = true;
|
||
break;
|
||
case "a":
|
||
containerSASPermissions.add = true;
|
||
break;
|
||
case "c":
|
||
containerSASPermissions.create = true;
|
||
break;
|
||
case "w":
|
||
containerSASPermissions.write = true;
|
||
break;
|
||
case "d":
|
||
containerSASPermissions.delete = true;
|
||
break;
|
||
case "l":
|
||
containerSASPermissions.list = true;
|
||
break;
|
||
case "t":
|
||
containerSASPermissions.tag = true;
|
||
break;
|
||
case "x":
|
||
containerSASPermissions.deleteVersion = true;
|
||
break;
|
||
case "m":
|
||
containerSASPermissions.move = true;
|
||
break;
|
||
case "e":
|
||
containerSASPermissions.execute = true;
|
||
break;
|
||
default:
|
||
throw new RangeError("Invalid permission " + char);
|
||
}
|
||
}
|
||
return containerSASPermissions;
|
||
};
|
||
/**
|
||
* Creates a {@link ContainerSASPermissions} from a raw object which contains same keys as it
|
||
* and boolean values for them.
|
||
*
|
||
* @param permissionLike -
|
||
*/
|
||
ContainerSASPermissions.from = function (permissionLike) {
|
||
var containerSASPermissions = new ContainerSASPermissions();
|
||
if (permissionLike.read) {
|
||
containerSASPermissions.read = true;
|
||
}
|
||
if (permissionLike.add) {
|
||
containerSASPermissions.add = true;
|
||
}
|
||
if (permissionLike.create) {
|
||
containerSASPermissions.create = true;
|
||
}
|
||
if (permissionLike.write) {
|
||
containerSASPermissions.write = true;
|
||
}
|
||
if (permissionLike.delete) {
|
||
containerSASPermissions.delete = true;
|
||
}
|
||
if (permissionLike.list) {
|
||
containerSASPermissions.list = true;
|
||
}
|
||
if (permissionLike.deleteVersion) {
|
||
containerSASPermissions.deleteVersion = true;
|
||
}
|
||
if (permissionLike.tag) {
|
||
containerSASPermissions.tag = true;
|
||
}
|
||
if (permissionLike.move) {
|
||
containerSASPermissions.move = true;
|
||
}
|
||
if (permissionLike.execute) {
|
||
containerSASPermissions.execute = true;
|
||
}
|
||
return containerSASPermissions;
|
||
};
|
||
/**
|
||
* Converts the given permissions to a string. Using this method will guarantee the permissions are in an
|
||
* order accepted by the service.
|
||
*
|
||
* The order of the characters should be as specified here to ensure correctness.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
|
||
*
|
||
*/
|
||
ContainerSASPermissions.prototype.toString = function () {
|
||
var permissions = [];
|
||
if (this.read) {
|
||
permissions.push("r");
|
||
}
|
||
if (this.add) {
|
||
permissions.push("a");
|
||
}
|
||
if (this.create) {
|
||
permissions.push("c");
|
||
}
|
||
if (this.write) {
|
||
permissions.push("w");
|
||
}
|
||
if (this.delete) {
|
||
permissions.push("d");
|
||
}
|
||
if (this.deleteVersion) {
|
||
permissions.push("x");
|
||
}
|
||
if (this.list) {
|
||
permissions.push("l");
|
||
}
|
||
if (this.tag) {
|
||
permissions.push("t");
|
||
}
|
||
if (this.move) {
|
||
permissions.push("m");
|
||
}
|
||
if (this.execute) {
|
||
permissions.push("e");
|
||
}
|
||
return permissions.join("");
|
||
};
|
||
return ContainerSASPermissions;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* UserDelegationKeyCredential is only used for generation of user delegation SAS.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas
|
||
*/
|
||
var UserDelegationKeyCredential = /** @class */ (function () {
|
||
/**
|
||
* Creates an instance of UserDelegationKeyCredential.
|
||
* @param accountName -
|
||
* @param userDelegationKey -
|
||
*/
|
||
function UserDelegationKeyCredential(accountName, userDelegationKey) {
|
||
this.accountName = accountName;
|
||
this.userDelegationKey = userDelegationKey;
|
||
this.key = Buffer.from(userDelegationKey.value, "base64");
|
||
}
|
||
/**
|
||
* Generates a hash signature for an HTTP request or for a SAS.
|
||
*
|
||
* @param stringToSign -
|
||
*/
|
||
UserDelegationKeyCredential.prototype.computeHMACSHA256 = function (stringToSign) {
|
||
// console.log(`stringToSign: ${JSON.stringify(stringToSign)}`);
|
||
return crypto.createHmac("sha256", this.key)
|
||
.update(stringToSign, "utf8")
|
||
.digest("base64");
|
||
};
|
||
return UserDelegationKeyCredential;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* Generate SasIPRange format string. For example:
|
||
*
|
||
* "8.8.8.8" or "1.1.1.1-255.255.255.255"
|
||
*
|
||
* @param ipRange -
|
||
*/
|
||
function ipRangeToString(ipRange) {
|
||
return ipRange.end ? ipRange.start + "-" + ipRange.end : ipRange.start;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
(function (SASProtocol) {
|
||
/**
|
||
* Protocol that allows HTTPS only
|
||
*/
|
||
SASProtocol["Https"] = "https";
|
||
/**
|
||
* Protocol that allows both HTTPS and HTTP
|
||
*/
|
||
SASProtocol["HttpsAndHttp"] = "https,http";
|
||
})(exports.SASProtocol || (exports.SASProtocol = {}));
|
||
/**
|
||
* Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly
|
||
* by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link BlobSASSignatureValues}
|
||
* types. Once generated, it can be encoded into a {@code String} and appended to a URL directly (though caution should
|
||
* be taken here in case there are existing query parameters, which might affect the appropriate means of appending
|
||
* these query parameters).
|
||
*
|
||
* NOTE: Instances of this class are immutable.
|
||
*/
|
||
var SASQueryParameters = /** @class */ (function () {
|
||
function SASQueryParameters(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId) {
|
||
this.version = version;
|
||
this.signature = signature;
|
||
if (permissionsOrOptions !== undefined && typeof permissionsOrOptions !== "string") {
|
||
// SASQueryParametersOptions
|
||
this.permissions = permissionsOrOptions.permissions;
|
||
this.services = permissionsOrOptions.services;
|
||
this.resourceTypes = permissionsOrOptions.resourceTypes;
|
||
this.protocol = permissionsOrOptions.protocol;
|
||
this.startsOn = permissionsOrOptions.startsOn;
|
||
this.expiresOn = permissionsOrOptions.expiresOn;
|
||
this.ipRangeInner = permissionsOrOptions.ipRange;
|
||
this.identifier = permissionsOrOptions.identifier;
|
||
this.resource = permissionsOrOptions.resource;
|
||
this.cacheControl = permissionsOrOptions.cacheControl;
|
||
this.contentDisposition = permissionsOrOptions.contentDisposition;
|
||
this.contentEncoding = permissionsOrOptions.contentEncoding;
|
||
this.contentLanguage = permissionsOrOptions.contentLanguage;
|
||
this.contentType = permissionsOrOptions.contentType;
|
||
if (permissionsOrOptions.userDelegationKey) {
|
||
this.signedOid = permissionsOrOptions.userDelegationKey.signedObjectId;
|
||
this.signedTenantId = permissionsOrOptions.userDelegationKey.signedTenantId;
|
||
this.signedStartsOn = permissionsOrOptions.userDelegationKey.signedStartsOn;
|
||
this.signedExpiresOn = permissionsOrOptions.userDelegationKey.signedExpiresOn;
|
||
this.signedService = permissionsOrOptions.userDelegationKey.signedService;
|
||
this.signedVersion = permissionsOrOptions.userDelegationKey.signedVersion;
|
||
this.preauthorizedAgentObjectId = permissionsOrOptions.preauthorizedAgentObjectId;
|
||
this.correlationId = permissionsOrOptions.correlationId;
|
||
}
|
||
}
|
||
else {
|
||
this.services = services;
|
||
this.resourceTypes = resourceTypes;
|
||
this.expiresOn = expiresOn;
|
||
this.permissions = permissionsOrOptions;
|
||
this.protocol = protocol;
|
||
this.startsOn = startsOn;
|
||
this.ipRangeInner = ipRange;
|
||
this.identifier = identifier;
|
||
this.resource = resource;
|
||
this.cacheControl = cacheControl;
|
||
this.contentDisposition = contentDisposition;
|
||
this.contentEncoding = contentEncoding;
|
||
this.contentLanguage = contentLanguage;
|
||
this.contentType = contentType;
|
||
if (userDelegationKey) {
|
||
this.signedOid = userDelegationKey.signedObjectId;
|
||
this.signedTenantId = userDelegationKey.signedTenantId;
|
||
this.signedStartsOn = userDelegationKey.signedStartsOn;
|
||
this.signedExpiresOn = userDelegationKey.signedExpiresOn;
|
||
this.signedService = userDelegationKey.signedService;
|
||
this.signedVersion = userDelegationKey.signedVersion;
|
||
this.preauthorizedAgentObjectId = preauthorizedAgentObjectId;
|
||
this.correlationId = correlationId;
|
||
}
|
||
}
|
||
}
|
||
Object.defineProperty(SASQueryParameters.prototype, "ipRange", {
|
||
/**
|
||
* Optional. IP range allowed for this SAS.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
if (this.ipRangeInner) {
|
||
return {
|
||
end: this.ipRangeInner.end,
|
||
start: this.ipRangeInner.start
|
||
};
|
||
}
|
||
return undefined;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
/**
|
||
* Encodes all SAS query parameters into a string that can be appended to a URL.
|
||
*
|
||
*/
|
||
SASQueryParameters.prototype.toString = function () {
|
||
var params = [
|
||
"sv",
|
||
"ss",
|
||
"srt",
|
||
"spr",
|
||
"st",
|
||
"se",
|
||
"sip",
|
||
"si",
|
||
"skoid",
|
||
"sktid",
|
||
"skt",
|
||
"ske",
|
||
"sks",
|
||
"skv",
|
||
"sr",
|
||
"sp",
|
||
"sig",
|
||
"rscc",
|
||
"rscd",
|
||
"rsce",
|
||
"rscl",
|
||
"rsct",
|
||
"saoid",
|
||
"scid"
|
||
];
|
||
var queries = [];
|
||
for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {
|
||
var param = params_1[_i];
|
||
switch (param) {
|
||
case "sv":
|
||
this.tryAppendQueryParameter(queries, param, this.version);
|
||
break;
|
||
case "ss":
|
||
this.tryAppendQueryParameter(queries, param, this.services);
|
||
break;
|
||
case "srt":
|
||
this.tryAppendQueryParameter(queries, param, this.resourceTypes);
|
||
break;
|
||
case "spr":
|
||
this.tryAppendQueryParameter(queries, param, this.protocol);
|
||
break;
|
||
case "st":
|
||
this.tryAppendQueryParameter(queries, param, this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined);
|
||
break;
|
||
case "se":
|
||
this.tryAppendQueryParameter(queries, param, this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined);
|
||
break;
|
||
case "sip":
|
||
this.tryAppendQueryParameter(queries, param, this.ipRange ? ipRangeToString(this.ipRange) : undefined);
|
||
break;
|
||
case "si":
|
||
this.tryAppendQueryParameter(queries, param, this.identifier);
|
||
break;
|
||
case "skoid": // Signed object ID
|
||
this.tryAppendQueryParameter(queries, param, this.signedOid);
|
||
break;
|
||
case "sktid": // Signed tenant ID
|
||
this.tryAppendQueryParameter(queries, param, this.signedTenantId);
|
||
break;
|
||
case "skt": // Signed key start time
|
||
this.tryAppendQueryParameter(queries, param, this.signedStartsOn ? truncatedISO8061Date(this.signedStartsOn, false) : undefined);
|
||
break;
|
||
case "ske": // Signed key expiry time
|
||
this.tryAppendQueryParameter(queries, param, this.signedExpiresOn ? truncatedISO8061Date(this.signedExpiresOn, false) : undefined);
|
||
break;
|
||
case "sks": // Signed key service
|
||
this.tryAppendQueryParameter(queries, param, this.signedService);
|
||
break;
|
||
case "skv": // Signed key version
|
||
this.tryAppendQueryParameter(queries, param, this.signedVersion);
|
||
break;
|
||
case "sr":
|
||
this.tryAppendQueryParameter(queries, param, this.resource);
|
||
break;
|
||
case "sp":
|
||
this.tryAppendQueryParameter(queries, param, this.permissions);
|
||
break;
|
||
case "sig":
|
||
this.tryAppendQueryParameter(queries, param, this.signature);
|
||
break;
|
||
case "rscc":
|
||
this.tryAppendQueryParameter(queries, param, this.cacheControl);
|
||
break;
|
||
case "rscd":
|
||
this.tryAppendQueryParameter(queries, param, this.contentDisposition);
|
||
break;
|
||
case "rsce":
|
||
this.tryAppendQueryParameter(queries, param, this.contentEncoding);
|
||
break;
|
||
case "rscl":
|
||
this.tryAppendQueryParameter(queries, param, this.contentLanguage);
|
||
break;
|
||
case "rsct":
|
||
this.tryAppendQueryParameter(queries, param, this.contentType);
|
||
break;
|
||
case "saoid":
|
||
this.tryAppendQueryParameter(queries, param, this.preauthorizedAgentObjectId);
|
||
break;
|
||
case "scid":
|
||
this.tryAppendQueryParameter(queries, param, this.correlationId);
|
||
break;
|
||
}
|
||
}
|
||
return queries.join("&");
|
||
};
|
||
/**
|
||
* A private helper method used to filter and append query key/value pairs into an array.
|
||
*
|
||
* @param queries -
|
||
* @param key -
|
||
* @param value -
|
||
*/
|
||
SASQueryParameters.prototype.tryAppendQueryParameter = function (queries, key, value) {
|
||
if (!value) {
|
||
return;
|
||
}
|
||
key = encodeURIComponent(key);
|
||
value = encodeURIComponent(value);
|
||
if (key.length > 0 && value.length > 0) {
|
||
queries.push(key + "=" + value);
|
||
}
|
||
};
|
||
return SASQueryParameters;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
|
||
var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
|
||
var sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential
|
||
? sharedKeyCredentialOrUserDelegationKey
|
||
: undefined;
|
||
var userDelegationKeyCredential;
|
||
if (sharedKeyCredential === undefined && accountName !== undefined) {
|
||
userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);
|
||
}
|
||
if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {
|
||
throw TypeError("Invalid sharedKeyCredential, userDelegationKey or accountName.");
|
||
}
|
||
// Version 2019-12-12 adds support for the blob tags permission.
|
||
// Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.
|
||
// https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string
|
||
if (version >= "2018-11-09") {
|
||
if (sharedKeyCredential !== undefined) {
|
||
return generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential);
|
||
}
|
||
else {
|
||
// Version 2020-02-10 delegation SAS signature construction includes preauthorizedAgentObjectId, agentObjectId, correlationId.
|
||
if (version >= "2020-02-10") {
|
||
return generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential);
|
||
}
|
||
else {
|
||
return generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential);
|
||
}
|
||
}
|
||
}
|
||
if (version >= "2015-04-05") {
|
||
if (sharedKeyCredential !== undefined) {
|
||
return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);
|
||
}
|
||
else {
|
||
throw new RangeError("'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.");
|
||
}
|
||
}
|
||
throw new RangeError("'version' must be >= '2015-04-05'.");
|
||
}
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
* IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.
|
||
*
|
||
* Creates an instance of SASQueryParameters.
|
||
*
|
||
* Only accepts required settings needed to create a SAS. For optional settings please
|
||
* set corresponding properties directly, such as permissions, startsOn and identifier.
|
||
*
|
||
* WARNING: When identifier is not provided, permissions and expiresOn are required.
|
||
* You MUST assign value to identifier or expiresOn & permissions manually if you initial with
|
||
* this constructor.
|
||
*
|
||
* @param blobSASSignatureValues -
|
||
* @param sharedKeyCredential -
|
||
*/
|
||
function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential) {
|
||
blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
|
||
if (!blobSASSignatureValues.identifier &&
|
||
!(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {
|
||
throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
|
||
}
|
||
var resource = "c";
|
||
if (blobSASSignatureValues.blobName) {
|
||
resource = "b";
|
||
}
|
||
// Calling parse and toString guarantees the proper ordering and throws on invalid characters.
|
||
var verifiedPermissions;
|
||
if (blobSASSignatureValues.permissions) {
|
||
if (blobSASSignatureValues.blobName) {
|
||
verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
|
||
}
|
||
else {
|
||
verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
|
||
}
|
||
}
|
||
// Signature is generated on the un-url-encoded values.
|
||
var stringToSign = [
|
||
verifiedPermissions ? verifiedPermissions : "",
|
||
blobSASSignatureValues.startsOn
|
||
? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
|
||
: "",
|
||
blobSASSignatureValues.expiresOn
|
||
? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
|
||
: "",
|
||
getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
|
||
blobSASSignatureValues.identifier,
|
||
blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
|
||
blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
|
||
blobSASSignatureValues.version,
|
||
blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : "",
|
||
blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : "",
|
||
blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : "",
|
||
blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
|
||
blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
|
||
].join("\n");
|
||
var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
|
||
return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
|
||
}
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
* IMPLEMENTATION FOR API VERSION FROM 2018-11-09.
|
||
*
|
||
* Creates an instance of SASQueryParameters.
|
||
*
|
||
* Only accepts required settings needed to create a SAS. For optional settings please
|
||
* set corresponding properties directly, such as permissions, startsOn and identifier.
|
||
*
|
||
* WARNING: When identifier is not provided, permissions and expiresOn are required.
|
||
* You MUST assign value to identifier or expiresOn & permissions manually if you initial with
|
||
* this constructor.
|
||
*
|
||
* @param blobSASSignatureValues -
|
||
* @param sharedKeyCredential -
|
||
*/
|
||
function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential) {
|
||
blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
|
||
if (!blobSASSignatureValues.identifier &&
|
||
!(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {
|
||
throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
|
||
}
|
||
var resource = "c";
|
||
var timestamp = blobSASSignatureValues.snapshotTime;
|
||
if (blobSASSignatureValues.blobName) {
|
||
resource = "b";
|
||
if (blobSASSignatureValues.snapshotTime) {
|
||
resource = "bs";
|
||
}
|
||
else if (blobSASSignatureValues.versionId) {
|
||
resource = "bv";
|
||
timestamp = blobSASSignatureValues.versionId;
|
||
}
|
||
}
|
||
// Calling parse and toString guarantees the proper ordering and throws on invalid characters.
|
||
var verifiedPermissions;
|
||
if (blobSASSignatureValues.permissions) {
|
||
if (blobSASSignatureValues.blobName) {
|
||
verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
|
||
}
|
||
else {
|
||
verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
|
||
}
|
||
}
|
||
// Signature is generated on the un-url-encoded values.
|
||
var stringToSign = [
|
||
verifiedPermissions ? verifiedPermissions : "",
|
||
blobSASSignatureValues.startsOn
|
||
? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
|
||
: "",
|
||
blobSASSignatureValues.expiresOn
|
||
? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
|
||
: "",
|
||
getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
|
||
blobSASSignatureValues.identifier,
|
||
blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
|
||
blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
|
||
blobSASSignatureValues.version,
|
||
resource,
|
||
timestamp,
|
||
blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : "",
|
||
blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : "",
|
||
blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : "",
|
||
blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
|
||
blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
|
||
].join("\n");
|
||
var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
|
||
return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
|
||
}
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
* IMPLEMENTATION FOR API VERSION FROM 2018-11-09.
|
||
*
|
||
* Creates an instance of SASQueryParameters.
|
||
*
|
||
* Only accepts required settings needed to create a SAS. For optional settings please
|
||
* set corresponding properties directly, such as permissions, startsOn.
|
||
*
|
||
* WARNING: identifier will be ignored, permissions and expiresOn are required.
|
||
*
|
||
* @param blobSASSignatureValues -
|
||
* @param userDelegationKeyCredential -
|
||
*/
|
||
function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential) {
|
||
blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
|
||
// Stored access policies are not supported for a user delegation SAS.
|
||
if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
|
||
throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
|
||
}
|
||
var resource = "c";
|
||
var timestamp = blobSASSignatureValues.snapshotTime;
|
||
if (blobSASSignatureValues.blobName) {
|
||
resource = "b";
|
||
if (blobSASSignatureValues.snapshotTime) {
|
||
resource = "bs";
|
||
}
|
||
else if (blobSASSignatureValues.versionId) {
|
||
resource = "bv";
|
||
timestamp = blobSASSignatureValues.versionId;
|
||
}
|
||
}
|
||
// Calling parse and toString guarantees the proper ordering and throws on invalid characters.
|
||
var verifiedPermissions;
|
||
if (blobSASSignatureValues.permissions) {
|
||
if (blobSASSignatureValues.blobName) {
|
||
verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
|
||
}
|
||
else {
|
||
verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
|
||
}
|
||
}
|
||
// Signature is generated on the un-url-encoded values.
|
||
var stringToSign = [
|
||
verifiedPermissions ? verifiedPermissions : "",
|
||
blobSASSignatureValues.startsOn
|
||
? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
|
||
: "",
|
||
blobSASSignatureValues.expiresOn
|
||
? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
|
||
: "",
|
||
getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
|
||
userDelegationKeyCredential.userDelegationKey.signedObjectId,
|
||
userDelegationKeyCredential.userDelegationKey.signedTenantId,
|
||
userDelegationKeyCredential.userDelegationKey.signedStartsOn
|
||
? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)
|
||
: "",
|
||
userDelegationKeyCredential.userDelegationKey.signedExpiresOn
|
||
? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)
|
||
: "",
|
||
userDelegationKeyCredential.userDelegationKey.signedService,
|
||
userDelegationKeyCredential.userDelegationKey.signedVersion,
|
||
blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
|
||
blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
|
||
blobSASSignatureValues.version,
|
||
resource,
|
||
timestamp,
|
||
blobSASSignatureValues.cacheControl,
|
||
blobSASSignatureValues.contentDisposition,
|
||
blobSASSignatureValues.contentEncoding,
|
||
blobSASSignatureValues.contentLanguage,
|
||
blobSASSignatureValues.contentType
|
||
].join("\n");
|
||
var signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
|
||
return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey);
|
||
}
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
* IMPLEMENTATION FOR API VERSION FROM 2020-02-10.
|
||
*
|
||
* Creates an instance of SASQueryParameters.
|
||
*
|
||
* Only accepts required settings needed to create a SAS. For optional settings please
|
||
* set corresponding properties directly, such as permissions, startsOn.
|
||
*
|
||
* WARNING: identifier will be ignored, permissions and expiresOn are required.
|
||
*
|
||
* @param blobSASSignatureValues -
|
||
* @param userDelegationKeyCredential -
|
||
*/
|
||
function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential) {
|
||
blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
|
||
// Stored access policies are not supported for a user delegation SAS.
|
||
if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
|
||
throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
|
||
}
|
||
var resource = "c";
|
||
var timestamp = blobSASSignatureValues.snapshotTime;
|
||
if (blobSASSignatureValues.blobName) {
|
||
resource = "b";
|
||
if (blobSASSignatureValues.snapshotTime) {
|
||
resource = "bs";
|
||
}
|
||
else if (blobSASSignatureValues.versionId) {
|
||
resource = "bv";
|
||
timestamp = blobSASSignatureValues.versionId;
|
||
}
|
||
}
|
||
// Calling parse and toString guarantees the proper ordering and throws on invalid characters.
|
||
var verifiedPermissions;
|
||
if (blobSASSignatureValues.permissions) {
|
||
if (blobSASSignatureValues.blobName) {
|
||
verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
|
||
}
|
||
else {
|
||
verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
|
||
}
|
||
}
|
||
// Signature is generated on the un-url-encoded values.
|
||
var stringToSign = [
|
||
verifiedPermissions ? verifiedPermissions : "",
|
||
blobSASSignatureValues.startsOn
|
||
? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
|
||
: "",
|
||
blobSASSignatureValues.expiresOn
|
||
? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
|
||
: "",
|
||
getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
|
||
userDelegationKeyCredential.userDelegationKey.signedObjectId,
|
||
userDelegationKeyCredential.userDelegationKey.signedTenantId,
|
||
userDelegationKeyCredential.userDelegationKey.signedStartsOn
|
||
? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)
|
||
: "",
|
||
userDelegationKeyCredential.userDelegationKey.signedExpiresOn
|
||
? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)
|
||
: "",
|
||
userDelegationKeyCredential.userDelegationKey.signedService,
|
||
userDelegationKeyCredential.userDelegationKey.signedVersion,
|
||
blobSASSignatureValues.preauthorizedAgentObjectId,
|
||
undefined,
|
||
blobSASSignatureValues.correlationId,
|
||
blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
|
||
blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
|
||
blobSASSignatureValues.version,
|
||
resource,
|
||
timestamp,
|
||
blobSASSignatureValues.cacheControl,
|
||
blobSASSignatureValues.contentDisposition,
|
||
blobSASSignatureValues.contentEncoding,
|
||
blobSASSignatureValues.contentLanguage,
|
||
blobSASSignatureValues.contentType
|
||
].join("\n");
|
||
var signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
|
||
return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId);
|
||
}
|
||
function getCanonicalName(accountName, containerName, blobName) {
|
||
// Container: "/blob/account/containerName"
|
||
// Blob: "/blob/account/containerName/blobName"
|
||
var elements = ["/blob/" + accountName + "/" + containerName];
|
||
if (blobName) {
|
||
elements.push("/" + blobName);
|
||
}
|
||
return elements.join("");
|
||
}
|
||
function SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {
|
||
var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
|
||
if (blobSASSignatureValues.snapshotTime && version < "2018-11-09") {
|
||
throw RangeError("'version' must be >= '2018-11-09' when providing 'snapshotTime'.");
|
||
}
|
||
if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {
|
||
throw RangeError("Must provide 'blobName' when providing 'snapshotTime'.");
|
||
}
|
||
if (blobSASSignatureValues.versionId && version < "2019-10-10") {
|
||
throw RangeError("'version' must be >= '2019-10-10' when providing 'versionId'.");
|
||
}
|
||
if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {
|
||
throw RangeError("Must provide 'blobName' when providing 'versionId'.");
|
||
}
|
||
if (blobSASSignatureValues.permissions &&
|
||
blobSASSignatureValues.permissions.deleteVersion &&
|
||
version < "2019-10-10") {
|
||
throw RangeError("'version' must be >= '2019-10-10' when providing 'x' permission.");
|
||
}
|
||
if (blobSASSignatureValues.permissions &&
|
||
blobSASSignatureValues.permissions.tag &&
|
||
version < "2019-12-12") {
|
||
throw RangeError("'version' must be >= '2019-12-12' when providing 't' permission.");
|
||
}
|
||
if (version < "2020-02-10" &&
|
||
blobSASSignatureValues.permissions &&
|
||
(blobSASSignatureValues.permissions.move || blobSASSignatureValues.permissions.execute)) {
|
||
throw RangeError("'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.");
|
||
}
|
||
if (version < "2020-02-10" &&
|
||
(blobSASSignatureValues.preauthorizedAgentObjectId || blobSASSignatureValues.correlationId)) {
|
||
throw RangeError("'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.");
|
||
}
|
||
blobSASSignatureValues.version = version;
|
||
return blobSASSignatureValues;
|
||
}
|
||
|
||
/**
|
||
* A client that manages leases for a {@link ContainerClient} or a {@link BlobClient}.
|
||
*/
|
||
var BlobLeaseClient = /** @class */ (function () {
|
||
/**
|
||
* Creates an instance of BlobLeaseClient.
|
||
* @param client - The client to make the lease operation requests.
|
||
* @param leaseId - Initial proposed lease id.
|
||
*/
|
||
function BlobLeaseClient(client, leaseId) {
|
||
var clientContext = new StorageClientContext(client.url, client.pipeline.toServiceClientOptions());
|
||
this._url = client.url;
|
||
if (client.name === undefined) {
|
||
this._isContainer = true;
|
||
this._containerOrBlobOperation = new Container(clientContext);
|
||
}
|
||
else {
|
||
this._isContainer = false;
|
||
this._containerOrBlobOperation = new Blob$1(clientContext);
|
||
}
|
||
if (!leaseId) {
|
||
leaseId = coreHttp.generateUuid();
|
||
}
|
||
this._leaseId = leaseId;
|
||
}
|
||
Object.defineProperty(BlobLeaseClient.prototype, "leaseId", {
|
||
/**
|
||
* Gets the lease Id.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this._leaseId;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobLeaseClient.prototype, "url", {
|
||
/**
|
||
* Gets the url.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this._url;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
/**
|
||
* Establishes and manages a lock on a container for delete operations, or on a blob
|
||
* for write and delete operations.
|
||
* The lock duration can be 15 to 60 seconds, or can be infinite.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
|
||
* and
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
|
||
*
|
||
* @param duration - Must be between 15 to 60 seconds, or infinite (-1)
|
||
* @param options - option to configure lease management operations.
|
||
* @returns Response data for acquire lease operation.
|
||
*/
|
||
BlobLeaseClient.prototype.acquireLease = function (duration, options) {
|
||
var _a, _b, _c, _d, _e, _f;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _g, span, updatedOptions, e_1;
|
||
return tslib.__generator(this, function (_h) {
|
||
switch (_h.label) {
|
||
case 0:
|
||
_g = createSpan("BlobLeaseClient-acquireLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
|
||
if (this._isContainer &&
|
||
((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
|
||
(((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
|
||
((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
|
||
throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
|
||
}
|
||
_h.label = 1;
|
||
case 1:
|
||
_h.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this._containerOrBlobOperation.acquireLease(tslib.__assign({ abortSignal: options.abortSignal, duration: duration, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }), proposedLeaseId: this._leaseId }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _h.sent()];
|
||
case 3:
|
||
e_1 = _h.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_1.message
|
||
});
|
||
throw e_1;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* To change the ID of the lease.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
|
||
* and
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
|
||
*
|
||
* @param proposedLeaseId - the proposed new lease Id.
|
||
* @param options - option to configure lease management operations.
|
||
* @returns Response data for change lease operation.
|
||
*/
|
||
BlobLeaseClient.prototype.changeLease = function (proposedLeaseId, options) {
|
||
var _a, _b, _c, _d, _e, _f;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _g, span, updatedOptions, response, e_2;
|
||
return tslib.__generator(this, function (_h) {
|
||
switch (_h.label) {
|
||
case 0:
|
||
_g = createSpan("BlobLeaseClient-changeLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
|
||
if (this._isContainer &&
|
||
((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
|
||
(((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
|
||
((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
|
||
throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
|
||
}
|
||
_h.label = 1;
|
||
case 1:
|
||
_h.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
response = _h.sent();
|
||
this._leaseId = proposedLeaseId;
|
||
return [2 /*return*/, response];
|
||
case 3:
|
||
e_2 = _h.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_2.message
|
||
});
|
||
throw e_2;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* To free the lease if it is no longer needed so that another client may
|
||
* immediately acquire a lease against the container or the blob.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
|
||
* and
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
|
||
*
|
||
* @param options - option to configure lease management operations.
|
||
* @returns Response data for release lease operation.
|
||
*/
|
||
BlobLeaseClient.prototype.releaseLease = function (options) {
|
||
var _a, _b, _c, _d, _e, _f;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _g, span, updatedOptions, e_3;
|
||
return tslib.__generator(this, function (_h) {
|
||
switch (_h.label) {
|
||
case 0:
|
||
_g = createSpan("BlobLeaseClient-releaseLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
|
||
if (this._isContainer &&
|
||
((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
|
||
(((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
|
||
((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
|
||
throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
|
||
}
|
||
_h.label = 1;
|
||
case 1:
|
||
_h.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this._containerOrBlobOperation.releaseLease(this._leaseId, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _h.sent()];
|
||
case 3:
|
||
e_3 = _h.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_3.message
|
||
});
|
||
throw e_3;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* To renew the lease.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
|
||
* and
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
|
||
*
|
||
* @param options - Optional option to configure lease management operations.
|
||
* @returns Response data for renew lease operation.
|
||
*/
|
||
BlobLeaseClient.prototype.renewLease = function (options) {
|
||
var _a, _b, _c, _d, _e, _f;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _g, span, updatedOptions, e_4;
|
||
return tslib.__generator(this, function (_h) {
|
||
switch (_h.label) {
|
||
case 0:
|
||
_g = createSpan("BlobLeaseClient-renewLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
|
||
if (this._isContainer &&
|
||
((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
|
||
(((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
|
||
((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
|
||
throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
|
||
}
|
||
_h.label = 1;
|
||
case 1:
|
||
_h.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this._containerOrBlobOperation.renewLease(this._leaseId, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _h.sent()];
|
||
case 3:
|
||
e_4 = _h.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_4.message
|
||
});
|
||
throw e_4;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* To end the lease but ensure that another client cannot acquire a new lease
|
||
* until the current lease period has expired.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
|
||
* and
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
|
||
*
|
||
* @param breakPeriod - Break period
|
||
* @param options - Optional options to configure lease management operations.
|
||
* @returns Response data for break lease operation.
|
||
*/
|
||
BlobLeaseClient.prototype.breakLease = function (breakPeriod, options) {
|
||
var _a, _b, _c, _d, _e, _f;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _g, span, updatedOptions, operationOptions, e_5;
|
||
return tslib.__generator(this, function (_h) {
|
||
switch (_h.label) {
|
||
case 0:
|
||
_g = createSpan("BlobLeaseClient-breakLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
|
||
if (this._isContainer &&
|
||
((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
|
||
(((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
|
||
((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
|
||
throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
|
||
}
|
||
_h.label = 1;
|
||
case 1:
|
||
_h.trys.push([1, 3, 4, 5]);
|
||
operationOptions = tslib.__assign({ abortSignal: options.abortSignal, breakPeriod: breakPeriod, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions));
|
||
return [4 /*yield*/, this._containerOrBlobOperation.breakLease(operationOptions)];
|
||
case 2: return [2 /*return*/, _h.sent()];
|
||
case 3:
|
||
e_5 = _h.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_5.message
|
||
});
|
||
throw e_5;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return BlobLeaseClient;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* A Node.js ReadableStream will internally retry when internal ReadableStream unexpected ends.
|
||
*/
|
||
var RetriableReadableStream = /** @class */ (function (_super) {
|
||
tslib.__extends(RetriableReadableStream, _super);
|
||
/**
|
||
* Creates an instance of RetriableReadableStream.
|
||
*
|
||
* @param source - The current ReadableStream returned from getter
|
||
* @param getter - A method calling downloading request returning
|
||
* a new ReadableStream from specified offset
|
||
* @param offset - Offset position in original data source to read
|
||
* @param count - How much data in original data source to read
|
||
* @param options -
|
||
*/
|
||
function RetriableReadableStream(source, getter, offset, count, options) {
|
||
if (options === void 0) { options = {}; }
|
||
var _this = _super.call(this, { highWaterMark: options.highWaterMark }) || this;
|
||
_this.retries = 0;
|
||
_this.sourceDataHandler = function (data) {
|
||
if (_this.options.doInjectErrorOnce) {
|
||
_this.options.doInjectErrorOnce = undefined;
|
||
_this.source.pause();
|
||
_this.source.removeAllListeners("data");
|
||
_this.source.emit("end");
|
||
return;
|
||
}
|
||
// console.log(
|
||
// `Offset: ${this.offset}, Received ${data.length} from internal stream`
|
||
// );
|
||
_this.offset += data.length;
|
||
if (_this.onProgress) {
|
||
_this.onProgress({ loadedBytes: _this.offset - _this.start });
|
||
}
|
||
if (!_this.push(data)) {
|
||
_this.source.pause();
|
||
}
|
||
};
|
||
_this.sourceErrorOrEndHandler = function (err) {
|
||
if (err && err.name === "AbortError") {
|
||
_this.destroy(err);
|
||
return;
|
||
}
|
||
// console.log(
|
||
// `Source stream emits end or error, offset: ${
|
||
// this.offset
|
||
// }, dest end : ${this.end}`
|
||
// );
|
||
_this.removeSourceEventHandlers();
|
||
if (_this.offset - 1 === _this.end) {
|
||
_this.push(null);
|
||
}
|
||
else if (_this.offset <= _this.end) {
|
||
// console.log(
|
||
// `retries: ${this.retries}, max retries: ${this.maxRetries}`
|
||
// );
|
||
if (_this.retries < _this.maxRetryRequests) {
|
||
_this.retries += 1;
|
||
_this.getter(_this.offset)
|
||
.then(function (newSource) {
|
||
_this.source = newSource;
|
||
_this.setSourceEventHandlers();
|
||
})
|
||
.catch(function (error) {
|
||
_this.destroy(error);
|
||
});
|
||
}
|
||
else {
|
||
_this.destroy(new Error(
|
||
// tslint:disable-next-line:max-line-length
|
||
"Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: " + (_this
|
||
.offset - 1) + ", data needed offset: " + _this.end + ", retries: " + _this.retries + ", max retries: " + _this.maxRetryRequests));
|
||
}
|
||
}
|
||
else {
|
||
_this.destroy(new Error("Data corruption failure: Received more data than original request, data needed offset is " + _this.end + ", received offset: " + (_this.offset - 1)));
|
||
}
|
||
};
|
||
_this.getter = getter;
|
||
_this.source = source;
|
||
_this.start = offset;
|
||
_this.offset = offset;
|
||
_this.end = offset + count - 1;
|
||
_this.maxRetryRequests =
|
||
options.maxRetryRequests && options.maxRetryRequests >= 0 ? options.maxRetryRequests : 0;
|
||
_this.onProgress = options.onProgress;
|
||
_this.options = options;
|
||
_this.setSourceEventHandlers();
|
||
return _this;
|
||
}
|
||
RetriableReadableStream.prototype._read = function () {
|
||
this.source.resume();
|
||
};
|
||
RetriableReadableStream.prototype.setSourceEventHandlers = function () {
|
||
this.source.on("data", this.sourceDataHandler);
|
||
this.source.on("end", this.sourceErrorOrEndHandler);
|
||
this.source.on("error", this.sourceErrorOrEndHandler);
|
||
};
|
||
RetriableReadableStream.prototype.removeSourceEventHandlers = function () {
|
||
this.source.removeListener("data", this.sourceDataHandler);
|
||
this.source.removeListener("end", this.sourceErrorOrEndHandler);
|
||
this.source.removeListener("error", this.sourceErrorOrEndHandler);
|
||
};
|
||
RetriableReadableStream.prototype._destroy = function (error, callback) {
|
||
// remove listener from source and release source
|
||
this.removeSourceEventHandlers();
|
||
this.source.destroy();
|
||
callback(error === null ? undefined : error);
|
||
};
|
||
return RetriableReadableStream;
|
||
}(stream.Readable));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* BlobDownloadResponse implements BlobDownloadResponseParsed interface, and in Node.js runtime it will
|
||
* automatically retry when internal read stream unexpected ends. (This kind of unexpected ends cannot
|
||
* trigger retries defined in pipeline retry policy.)
|
||
*
|
||
* The {@link readableStreamBody} stream will retry underlayer, you can just use it as a normal Node.js
|
||
* Readable stream.
|
||
*/
|
||
var BlobDownloadResponse = /** @class */ (function () {
|
||
/**
|
||
* Creates an instance of BlobDownloadResponse.
|
||
*
|
||
* @param originalResponse -
|
||
* @param getter -
|
||
* @param offset -
|
||
* @param count -
|
||
* @param options -
|
||
*/
|
||
function BlobDownloadResponse(originalResponse, getter, offset, count, options) {
|
||
if (options === void 0) { options = {}; }
|
||
this.originalResponse = originalResponse;
|
||
this.blobDownloadStream = new RetriableReadableStream(this.originalResponse.readableStreamBody, getter, offset, count, options);
|
||
}
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "acceptRanges", {
|
||
/**
|
||
* Indicates that the service supports
|
||
* requests for partial file content.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.acceptRanges;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "cacheControl", {
|
||
/**
|
||
* Returns if it was previously specified
|
||
* for the file.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.cacheControl;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "contentDisposition", {
|
||
/**
|
||
* Returns the value that was specified
|
||
* for the 'x-ms-content-disposition' header and specifies how to process the
|
||
* response.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentDisposition;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "contentEncoding", {
|
||
/**
|
||
* Returns the value that was specified
|
||
* for the Content-Encoding request header.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentEncoding;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "contentLanguage", {
|
||
/**
|
||
* Returns the value that was specified
|
||
* for the Content-Language request header.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentLanguage;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "blobSequenceNumber", {
|
||
/**
|
||
* The current sequence number for a
|
||
* page blob. This header is not returned for block blobs or append blobs.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.blobSequenceNumber;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "blobType", {
|
||
/**
|
||
* The blob's type. Possible values include:
|
||
* 'BlockBlob', 'PageBlob', 'AppendBlob'.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.blobType;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "contentLength", {
|
||
/**
|
||
* The number of bytes present in the
|
||
* response body.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentLength;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "contentMD5", {
|
||
/**
|
||
* If the file has an MD5 hash and the
|
||
* request is to read the full file, this response header is returned so that
|
||
* the client can check for message content integrity. If the request is to
|
||
* read a specified range and the 'x-ms-range-get-content-md5' is set to
|
||
* true, then the request returns an MD5 hash for the range, as long as the
|
||
* range size is less than or equal to 4 MB. If neither of these sets of
|
||
* conditions is true, then no value is returned for the 'Content-MD5'
|
||
* header.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentMD5;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "contentRange", {
|
||
/**
|
||
* Indicates the range of bytes returned if
|
||
* the client requested a subset of the file by setting the Range request
|
||
* header.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentRange;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "contentType", {
|
||
/**
|
||
* The content type specified for the file.
|
||
* The default content type is 'application/octet-stream'
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentType;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "copyCompletedOn", {
|
||
/**
|
||
* Conclusion time of the last attempted
|
||
* Copy File operation where this file was the destination file. This value
|
||
* can specify the time of a completed, aborted, or failed copy attempt.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copyCompletedOn;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "copyId", {
|
||
/**
|
||
* String identifier for the last attempted Copy
|
||
* File operation where this file was the destination file.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copyId;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "copyProgress", {
|
||
/**
|
||
* Contains the number of bytes copied and
|
||
* the total bytes in the source in the last attempted Copy File operation
|
||
* where this file was the destination file. Can show between 0 and
|
||
* Content-Length bytes copied.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copyProgress;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "copySource", {
|
||
/**
|
||
* URL up to 2KB in length that specifies the
|
||
* source file used in the last attempted Copy File operation where this file
|
||
* was the destination file.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copySource;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "copyStatus", {
|
||
/**
|
||
* State of the copy operation
|
||
* identified by 'x-ms-copy-id'. Possible values include: 'pending',
|
||
* 'success', 'aborted', 'failed'
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copyStatus;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "copyStatusDescription", {
|
||
/**
|
||
* Only appears when
|
||
* x-ms-copy-status is failed or pending. Describes cause of fatal or
|
||
* non-fatal copy operation failure.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copyStatusDescription;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "leaseDuration", {
|
||
/**
|
||
* When a blob is leased,
|
||
* specifies whether the lease is of infinite or fixed duration. Possible
|
||
* values include: 'infinite', 'fixed'.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.leaseDuration;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "leaseState", {
|
||
/**
|
||
* Lease state of the blob. Possible
|
||
* values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.leaseState;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "leaseStatus", {
|
||
/**
|
||
* The current lease status of the
|
||
* blob. Possible values include: 'locked', 'unlocked'.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.leaseStatus;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "date", {
|
||
/**
|
||
* A UTC date/time value generated by the service that
|
||
* indicates the time at which the response was initiated.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.date;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "blobCommittedBlockCount", {
|
||
/**
|
||
* The number of committed blocks
|
||
* present in the blob. This header is returned only for append blobs.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.blobCommittedBlockCount;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "etag", {
|
||
/**
|
||
* The ETag contains a value that you can use to
|
||
* perform operations conditionally, in quotes.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.etag;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "tagCount", {
|
||
/**
|
||
* The number of tags associated with the blob
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.tagCount;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "errorCode", {
|
||
/**
|
||
* The error code.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.errorCode;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "isServerEncrypted", {
|
||
/**
|
||
* The value of this header is set to
|
||
* true if the file data and application metadata are completely encrypted
|
||
* using the specified algorithm. Otherwise, the value is set to false (when
|
||
* the file is unencrypted, or if only parts of the file/application metadata
|
||
* are encrypted).
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.isServerEncrypted;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "blobContentMD5", {
|
||
/**
|
||
* If the blob has a MD5 hash, and if
|
||
* request contains range header (Range or x-ms-range), this response header
|
||
* is returned with the value of the whole blob's MD5 value. This value may
|
||
* or may not be equal to the value returned in Content-MD5 header, with the
|
||
* latter calculated from the requested range.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.blobContentMD5;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "lastModified", {
|
||
/**
|
||
* Returns the date and time the file was last
|
||
* modified. Any operation that modifies the file or its properties updates
|
||
* the last modified time.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.lastModified;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "lastAccessed", {
|
||
/**
|
||
* Returns the UTC date and time generated by the service that indicates the time at which the blob was
|
||
* last read or written to.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.lastAccessed;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "metadata", {
|
||
/**
|
||
* A name-value pair
|
||
* to associate with a file storage object.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.metadata;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "requestId", {
|
||
/**
|
||
* This header uniquely identifies the request
|
||
* that was made and can be used for troubleshooting the request.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.requestId;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "clientRequestId", {
|
||
/**
|
||
* If a client request id header is sent in the request, this header will be present in the
|
||
* response with the same value.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.clientRequestId;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "version", {
|
||
/**
|
||
* Indicates the version of the Blob service used
|
||
* to execute the request.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.version;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "versionId", {
|
||
/**
|
||
* Indicates the versionId of the downloaded blob version.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.versionId;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "isCurrentVersion", {
|
||
/**
|
||
* Indicates whether version of this blob is a current version.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.isCurrentVersion;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "encryptionKeySha256", {
|
||
/**
|
||
* The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
|
||
* when the blob was encrypted with a customer-provided key.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.encryptionKeySha256;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "contentCrc64", {
|
||
/**
|
||
* If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
|
||
* true, then the request returns a crc64 for the range, as long as the range size is less than
|
||
* or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
|
||
* specified in the same request, it will fail with 400(Bad Request)
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentCrc64;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "objectReplicationDestinationPolicyId", {
|
||
/**
|
||
* Object Replication Policy Id of the destination blob.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.objectReplicationDestinationPolicyId;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "objectReplicationSourceProperties", {
|
||
/**
|
||
* Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.objectReplicationSourceProperties;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "isSealed", {
|
||
/**
|
||
* If this blob has been sealed.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.isSealed;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "contentAsBlob", {
|
||
/**
|
||
* The response body as a browser Blob.
|
||
* Always undefined in node.js.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.blobBody;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "readableStreamBody", {
|
||
/**
|
||
* The response body as a node.js Readable stream.
|
||
* Always undefined in the browser.
|
||
*
|
||
* It will automatically retry when internal read stream unexpected ends.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return coreHttp.isNode ? this.blobDownloadStream : undefined;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobDownloadResponse.prototype, "_response", {
|
||
/**
|
||
* The HTTP response.
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse._response;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
return BlobDownloadResponse;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
var AVRO_SYNC_MARKER_SIZE = 16;
|
||
var AVRO_INIT_BYTES = new Uint8Array([79, 98, 106, 1]);
|
||
var AVRO_CODEC_KEY = "avro.codec";
|
||
var AVRO_SCHEMA_KEY = "avro.schema";
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
function arraysEqual(a, b) {
|
||
if (a === b)
|
||
return true;
|
||
if (a == null || b == null)
|
||
return false;
|
||
if (a.length != b.length)
|
||
return false;
|
||
for (var i = 0; i < a.length; ++i) {
|
||
if (a[i] !== b[i])
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var AvroParser = /** @class */ (function () {
|
||
function AvroParser() {
|
||
}
|
||
/**
|
||
* Reads a fixed number of bytes from the stream.
|
||
*
|
||
* @param stream -
|
||
* @param length -
|
||
* @param options -
|
||
*/
|
||
AvroParser.readFixedBytes = function (stream, length, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var bytes;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, stream.read(length, { abortSignal: options.abortSignal })];
|
||
case 1:
|
||
bytes = _a.sent();
|
||
if (bytes.length != length) {
|
||
throw new Error("Hit stream end.");
|
||
}
|
||
return [2 /*return*/, bytes];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Reads a single byte from the stream.
|
||
*
|
||
* @param stream -
|
||
* @param options -
|
||
*/
|
||
AvroParser.readByte = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var buf;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 1, options)];
|
||
case 1:
|
||
buf = _a.sent();
|
||
return [2 /*return*/, buf[0]];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
// int and long are stored in variable-length zig-zag coding.
|
||
// variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt
|
||
// zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types
|
||
AvroParser.readZigZagLong = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var zigZagEncoded, significanceInBit, byte, haveMoreByte, significanceInFloat, res;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
zigZagEncoded = 0;
|
||
significanceInBit = 0;
|
||
_a.label = 1;
|
||
case 1: return [4 /*yield*/, AvroParser.readByte(stream, options)];
|
||
case 2:
|
||
byte = _a.sent();
|
||
haveMoreByte = byte & 0x80;
|
||
zigZagEncoded |= (byte & 0x7f) << significanceInBit;
|
||
significanceInBit += 7;
|
||
_a.label = 3;
|
||
case 3:
|
||
if (haveMoreByte && significanceInBit < 28) return [3 /*break*/, 1];
|
||
_a.label = 4;
|
||
case 4:
|
||
if (!haveMoreByte) return [3 /*break*/, 9];
|
||
// Switch to float arithmetic
|
||
zigZagEncoded = zigZagEncoded;
|
||
significanceInFloat = 268435456; // 2 ** 28.
|
||
_a.label = 5;
|
||
case 5: return [4 /*yield*/, AvroParser.readByte(stream, options)];
|
||
case 6:
|
||
byte = _a.sent();
|
||
zigZagEncoded += (byte & 0x7f) * significanceInFloat;
|
||
significanceInFloat *= 128; // 2 ** 7
|
||
_a.label = 7;
|
||
case 7:
|
||
if (byte & 0x80) return [3 /*break*/, 5];
|
||
_a.label = 8;
|
||
case 8:
|
||
res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
|
||
if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
|
||
throw new Error("Integer overflow.");
|
||
}
|
||
return [2 /*return*/, res];
|
||
case 9: return [2 /*return*/, (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1)];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readLong = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, AvroParser.readZigZagLong(stream, options)];
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readInt = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, AvroParser.readZigZagLong(stream, options)];
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readNull = function () {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, null];
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readBoolean = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var b;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readByte(stream, options)];
|
||
case 1:
|
||
b = _a.sent();
|
||
if (b == 1) {
|
||
return [2 /*return*/, true];
|
||
}
|
||
else if (b == 0) {
|
||
return [2 /*return*/, false];
|
||
}
|
||
else {
|
||
throw new Error("Byte was not a boolean.");
|
||
}
|
||
}
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readFloat = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var u8arr, view;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 4, options)];
|
||
case 1:
|
||
u8arr = _a.sent();
|
||
view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
|
||
return [2 /*return*/, view.getFloat32(0, true)]; // littleEndian = true
|
||
}
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readDouble = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var u8arr, view;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 8, options)];
|
||
case 1:
|
||
u8arr = _a.sent();
|
||
view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
|
||
return [2 /*return*/, view.getFloat64(0, true)]; // littleEndian = true
|
||
}
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readBytes = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var size;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readLong(stream, options)];
|
||
case 1:
|
||
size = _a.sent();
|
||
if (size < 0) {
|
||
throw new Error("Bytes size was negative.");
|
||
}
|
||
return [4 /*yield*/, stream.read(size, { abortSignal: options.abortSignal })];
|
||
case 2: return [2 /*return*/, _a.sent()];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readString = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var u8arr, utf8decoder;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readBytes(stream, options)];
|
||
case 1:
|
||
u8arr = _a.sent();
|
||
// polyfill TextDecoder to be backward compatible with older
|
||
// nodejs that doesn't expose TextDecoder as a global variable
|
||
if (typeof TextDecoder === "undefined" && "function" !== "undefined") {
|
||
global.TextDecoder = __webpack_require__(669).TextDecoder;
|
||
}
|
||
utf8decoder = new TextDecoder();
|
||
return [2 /*return*/, utf8decoder.decode(u8arr)];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readMapPair = function (stream, readItemMethod, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var key, value;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readString(stream, options)];
|
||
case 1:
|
||
key = _a.sent();
|
||
return [4 /*yield*/, readItemMethod(stream, options)];
|
||
case 2:
|
||
value = _a.sent();
|
||
return [2 /*return*/, { key: key, value: value }];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readMap = function (stream, readItemMethod, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var readPairMethod, pairs, dict, _i, pairs_1, pair;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
readPairMethod = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(_this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readMapPair(stream, readItemMethod, options)];
|
||
case 1: return [2 /*return*/, _a.sent()];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return [4 /*yield*/, AvroParser.readArray(stream, readPairMethod, options)];
|
||
case 1:
|
||
pairs = _a.sent();
|
||
dict = {};
|
||
for (_i = 0, pairs_1 = pairs; _i < pairs_1.length; _i++) {
|
||
pair = pairs_1[_i];
|
||
dict[pair.key] = pair.value;
|
||
}
|
||
return [2 /*return*/, dict];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
AvroParser.readArray = function (stream, readItemMethod, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var items, count, item;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
items = [];
|
||
return [4 /*yield*/, AvroParser.readLong(stream, options)];
|
||
case 1:
|
||
count = _a.sent();
|
||
_a.label = 2;
|
||
case 2:
|
||
if (!(count != 0)) return [3 /*break*/, 8];
|
||
if (!(count < 0)) return [3 /*break*/, 4];
|
||
// Ignore block sizes
|
||
return [4 /*yield*/, AvroParser.readLong(stream, options)];
|
||
case 3:
|
||
// Ignore block sizes
|
||
_a.sent();
|
||
count = -count;
|
||
_a.label = 4;
|
||
case 4:
|
||
if (!count--) return [3 /*break*/, 6];
|
||
return [4 /*yield*/, readItemMethod(stream, options)];
|
||
case 5:
|
||
item = _a.sent();
|
||
items.push(item);
|
||
return [3 /*break*/, 4];
|
||
case 6: return [4 /*yield*/, AvroParser.readLong(stream, options)];
|
||
case 7:
|
||
count = _a.sent();
|
||
return [3 /*break*/, 2];
|
||
case 8: return [2 /*return*/, items];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return AvroParser;
|
||
}());
|
||
var AvroComplex;
|
||
(function (AvroComplex) {
|
||
AvroComplex["RECORD"] = "record";
|
||
AvroComplex["ENUM"] = "enum";
|
||
AvroComplex["ARRAY"] = "array";
|
||
AvroComplex["MAP"] = "map";
|
||
AvroComplex["UNION"] = "union";
|
||
AvroComplex["FIXED"] = "fixed";
|
||
})(AvroComplex || (AvroComplex = {}));
|
||
var AvroType = /** @class */ (function () {
|
||
function AvroType() {
|
||
}
|
||
/**
|
||
* Determines the AvroType from the Avro Schema.
|
||
*/
|
||
AvroType.fromSchema = function (schema) {
|
||
if (typeof schema === "string") {
|
||
return AvroType.fromStringSchema(schema);
|
||
}
|
||
else if (Array.isArray(schema)) {
|
||
return AvroType.fromArraySchema(schema);
|
||
}
|
||
else {
|
||
return AvroType.fromObjectSchema(schema);
|
||
}
|
||
};
|
||
AvroType.fromStringSchema = function (schema) {
|
||
switch (schema) {
|
||
case AvroPrimitive.NULL:
|
||
case AvroPrimitive.BOOLEAN:
|
||
case AvroPrimitive.INT:
|
||
case AvroPrimitive.LONG:
|
||
case AvroPrimitive.FLOAT:
|
||
case AvroPrimitive.DOUBLE:
|
||
case AvroPrimitive.BYTES:
|
||
case AvroPrimitive.STRING:
|
||
return new AvroPrimitiveType(schema);
|
||
default:
|
||
throw new Error("Unexpected Avro type " + schema);
|
||
}
|
||
};
|
||
AvroType.fromArraySchema = function (schema) {
|
||
return new AvroUnionType(schema.map(AvroType.fromSchema));
|
||
};
|
||
AvroType.fromObjectSchema = function (schema) {
|
||
var type = schema.type;
|
||
// Primitives can be defined as strings or objects
|
||
try {
|
||
return AvroType.fromStringSchema(type);
|
||
}
|
||
catch (err) { }
|
||
switch (type) {
|
||
case AvroComplex.RECORD:
|
||
if (schema.aliases) {
|
||
throw new Error("aliases currently is not supported, schema: " + schema);
|
||
}
|
||
if (!schema.name) {
|
||
throw new Error("Required attribute 'name' doesn't exist on schema: " + schema);
|
||
}
|
||
var fields = {};
|
||
if (!schema.fields) {
|
||
throw new Error("Required attribute 'fields' doesn't exist on schema: " + schema);
|
||
}
|
||
for (var _i = 0, _a = schema.fields; _i < _a.length; _i++) {
|
||
var field = _a[_i];
|
||
fields[field.name] = AvroType.fromSchema(field.type);
|
||
}
|
||
return new AvroRecordType(fields, schema.name);
|
||
case AvroComplex.ENUM:
|
||
if (schema.aliases) {
|
||
throw new Error("aliases currently is not supported, schema: " + schema);
|
||
}
|
||
if (!schema.symbols) {
|
||
throw new Error("Required attribute 'symbols' doesn't exist on schema: " + schema);
|
||
}
|
||
return new AvroEnumType(schema.symbols);
|
||
case AvroComplex.MAP:
|
||
if (!schema.values) {
|
||
throw new Error("Required attribute 'values' doesn't exist on schema: " + schema);
|
||
}
|
||
return new AvroMapType(AvroType.fromSchema(schema.values));
|
||
case AvroComplex.ARRAY: // Unused today
|
||
case AvroComplex.FIXED: // Unused today
|
||
default:
|
||
throw new Error("Unexpected Avro type " + type + " in " + schema);
|
||
}
|
||
};
|
||
return AvroType;
|
||
}());
|
||
var AvroPrimitive;
|
||
(function (AvroPrimitive) {
|
||
AvroPrimitive["NULL"] = "null";
|
||
AvroPrimitive["BOOLEAN"] = "boolean";
|
||
AvroPrimitive["INT"] = "int";
|
||
AvroPrimitive["LONG"] = "long";
|
||
AvroPrimitive["FLOAT"] = "float";
|
||
AvroPrimitive["DOUBLE"] = "double";
|
||
AvroPrimitive["BYTES"] = "bytes";
|
||
AvroPrimitive["STRING"] = "string";
|
||
})(AvroPrimitive || (AvroPrimitive = {}));
|
||
var AvroPrimitiveType = /** @class */ (function (_super) {
|
||
tslib.__extends(AvroPrimitiveType, _super);
|
||
function AvroPrimitiveType(primitive) {
|
||
var _this = _super.call(this) || this;
|
||
_this._primitive = primitive;
|
||
return _this;
|
||
}
|
||
AvroPrimitiveType.prototype.read = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = this._primitive;
|
||
switch (_a) {
|
||
case AvroPrimitive.NULL: return [3 /*break*/, 1];
|
||
case AvroPrimitive.BOOLEAN: return [3 /*break*/, 3];
|
||
case AvroPrimitive.INT: return [3 /*break*/, 5];
|
||
case AvroPrimitive.LONG: return [3 /*break*/, 7];
|
||
case AvroPrimitive.FLOAT: return [3 /*break*/, 9];
|
||
case AvroPrimitive.DOUBLE: return [3 /*break*/, 11];
|
||
case AvroPrimitive.BYTES: return [3 /*break*/, 13];
|
||
case AvroPrimitive.STRING: return [3 /*break*/, 15];
|
||
}
|
||
return [3 /*break*/, 17];
|
||
case 1: return [4 /*yield*/, AvroParser.readNull()];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3: return [4 /*yield*/, AvroParser.readBoolean(stream, options)];
|
||
case 4: return [2 /*return*/, _b.sent()];
|
||
case 5: return [4 /*yield*/, AvroParser.readInt(stream, options)];
|
||
case 6: return [2 /*return*/, _b.sent()];
|
||
case 7: return [4 /*yield*/, AvroParser.readLong(stream, options)];
|
||
case 8: return [2 /*return*/, _b.sent()];
|
||
case 9: return [4 /*yield*/, AvroParser.readFloat(stream, options)];
|
||
case 10: return [2 /*return*/, _b.sent()];
|
||
case 11: return [4 /*yield*/, AvroParser.readDouble(stream, options)];
|
||
case 12: return [2 /*return*/, _b.sent()];
|
||
case 13: return [4 /*yield*/, AvroParser.readBytes(stream, options)];
|
||
case 14: return [2 /*return*/, _b.sent()];
|
||
case 15: return [4 /*yield*/, AvroParser.readString(stream, options)];
|
||
case 16: return [2 /*return*/, _b.sent()];
|
||
case 17: throw new Error("Unknown Avro Primitive");
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return AvroPrimitiveType;
|
||
}(AvroType));
|
||
var AvroEnumType = /** @class */ (function (_super) {
|
||
tslib.__extends(AvroEnumType, _super);
|
||
function AvroEnumType(symbols) {
|
||
var _this = _super.call(this) || this;
|
||
_this._symbols = symbols;
|
||
return _this;
|
||
}
|
||
AvroEnumType.prototype.read = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var value;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readInt(stream, options)];
|
||
case 1:
|
||
value = _a.sent();
|
||
return [2 /*return*/, this._symbols[value]];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return AvroEnumType;
|
||
}(AvroType));
|
||
var AvroUnionType = /** @class */ (function (_super) {
|
||
tslib.__extends(AvroUnionType, _super);
|
||
function AvroUnionType(types) {
|
||
var _this = _super.call(this) || this;
|
||
_this._types = types;
|
||
return _this;
|
||
}
|
||
AvroUnionType.prototype.read = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var typeIndex;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readInt(stream, options)];
|
||
case 1:
|
||
typeIndex = _a.sent();
|
||
return [4 /*yield*/, this._types[typeIndex].read(stream, options)];
|
||
case 2: return [2 /*return*/, _a.sent()];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return AvroUnionType;
|
||
}(AvroType));
|
||
var AvroMapType = /** @class */ (function (_super) {
|
||
tslib.__extends(AvroMapType, _super);
|
||
function AvroMapType(itemType) {
|
||
var _this = _super.call(this) || this;
|
||
_this._itemType = itemType;
|
||
return _this;
|
||
}
|
||
AvroMapType.prototype.read = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var readItemMethod;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
readItemMethod = function (s, options) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, this._itemType.read(s, options)];
|
||
case 1: return [2 /*return*/, _a.sent()];
|
||
}
|
||
});
|
||
}); };
|
||
return [4 /*yield*/, AvroParser.readMap(stream, readItemMethod, options)];
|
||
case 1: return [2 /*return*/, _a.sent()];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return AvroMapType;
|
||
}(AvroType));
|
||
var AvroRecordType = /** @class */ (function (_super) {
|
||
tslib.__extends(AvroRecordType, _super);
|
||
function AvroRecordType(fields, name) {
|
||
var _this = _super.call(this) || this;
|
||
_this._fields = fields;
|
||
_this._name = name;
|
||
return _this;
|
||
}
|
||
AvroRecordType.prototype.read = function (stream, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var record, _a, _b, _i, key, _c, _d;
|
||
return tslib.__generator(this, function (_e) {
|
||
switch (_e.label) {
|
||
case 0:
|
||
record = {};
|
||
record["$schema"] = this._name;
|
||
_a = [];
|
||
for (_b in this._fields)
|
||
_a.push(_b);
|
||
_i = 0;
|
||
_e.label = 1;
|
||
case 1:
|
||
if (!(_i < _a.length)) return [3 /*break*/, 4];
|
||
key = _a[_i];
|
||
if (!this._fields.hasOwnProperty(key)) return [3 /*break*/, 3];
|
||
_c = record;
|
||
_d = key;
|
||
return [4 /*yield*/, this._fields[key].read(stream, options)];
|
||
case 2:
|
||
_c[_d] = _e.sent();
|
||
_e.label = 3;
|
||
case 3:
|
||
_i++;
|
||
return [3 /*break*/, 1];
|
||
case 4: return [2 /*return*/, record];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return AvroRecordType;
|
||
}(AvroType));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var AvroReader = /** @class */ (function () {
|
||
function AvroReader(dataStream, headerStream, currentBlockOffset, indexWithinCurrentBlock) {
|
||
this._dataStream = dataStream;
|
||
this._headerStream = headerStream || dataStream;
|
||
this._initialized = false;
|
||
this._blockOffset = currentBlockOffset || 0;
|
||
this._objectIndex = indexWithinCurrentBlock || 0;
|
||
this._initialBlockOffset = currentBlockOffset || 0;
|
||
}
|
||
Object.defineProperty(AvroReader.prototype, "blockOffset", {
|
||
get: function () {
|
||
return this._blockOffset;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(AvroReader.prototype, "objectIndex", {
|
||
get: function () {
|
||
return this._objectIndex;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
AvroReader.prototype.initialize = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var header, _a, codec, _b, schema, _c, i;
|
||
return tslib.__generator(this, function (_d) {
|
||
switch (_d.label) {
|
||
case 0: return [4 /*yield*/, AvroParser.readFixedBytes(this._headerStream, AVRO_INIT_BYTES.length, {
|
||
abortSignal: options.abortSignal
|
||
})];
|
||
case 1:
|
||
header = _d.sent();
|
||
if (!arraysEqual(header, AVRO_INIT_BYTES)) {
|
||
throw new Error("Stream is not an Avro file.");
|
||
}
|
||
// File metadata is written as if defined by the following map schema:
|
||
// { "type": "map", "values": "bytes"}
|
||
_a = this;
|
||
return [4 /*yield*/, AvroParser.readMap(this._headerStream, AvroParser.readString, {
|
||
abortSignal: options.abortSignal
|
||
})];
|
||
case 2:
|
||
// File metadata is written as if defined by the following map schema:
|
||
// { "type": "map", "values": "bytes"}
|
||
_a._metadata = _d.sent();
|
||
codec = this._metadata[AVRO_CODEC_KEY];
|
||
if (!(codec == undefined || codec == "null")) {
|
||
throw new Error("Codecs are not supported");
|
||
}
|
||
// The 16-byte, randomly-generated sync marker for this file.
|
||
_b = this;
|
||
return [4 /*yield*/, AvroParser.readFixedBytes(this._headerStream, AVRO_SYNC_MARKER_SIZE, {
|
||
abortSignal: options.abortSignal
|
||
})];
|
||
case 3:
|
||
// The 16-byte, randomly-generated sync marker for this file.
|
||
_b._syncMarker = _d.sent();
|
||
schema = JSON.parse(this._metadata[AVRO_SCHEMA_KEY]);
|
||
this._itemType = AvroType.fromSchema(schema);
|
||
if (this._blockOffset == 0) {
|
||
this._blockOffset = this._initialBlockOffset + this._dataStream.position;
|
||
}
|
||
_c = this;
|
||
return [4 /*yield*/, AvroParser.readLong(this._dataStream, {
|
||
abortSignal: options.abortSignal
|
||
})];
|
||
case 4:
|
||
_c._itemsRemainingInBlock = _d.sent();
|
||
// skip block length
|
||
return [4 /*yield*/, AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal })];
|
||
case 5:
|
||
// skip block length
|
||
_d.sent();
|
||
this._initialized = true;
|
||
if (!(this._objectIndex && this._objectIndex > 0)) return [3 /*break*/, 9];
|
||
i = 0;
|
||
_d.label = 6;
|
||
case 6:
|
||
if (!(i < this._objectIndex)) return [3 /*break*/, 9];
|
||
return [4 /*yield*/, this._itemType.read(this._dataStream, { abortSignal: options.abortSignal })];
|
||
case 7:
|
||
_d.sent();
|
||
this._itemsRemainingInBlock--;
|
||
_d.label = 8;
|
||
case 8:
|
||
i++;
|
||
return [3 /*break*/, 6];
|
||
case 9: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
AvroReader.prototype.hasNext = function () {
|
||
return !this._initialized || this._itemsRemainingInBlock > 0;
|
||
};
|
||
AvroReader.prototype.parseObjects = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__asyncGenerator(this, arguments, function parseObjects_1() {
|
||
var result, marker, _a, err_1;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (!!this._initialized) return [3 /*break*/, 2];
|
||
return [4 /*yield*/, tslib.__await(this.initialize(options))];
|
||
case 1:
|
||
_b.sent();
|
||
_b.label = 2;
|
||
case 2:
|
||
if (!this.hasNext()) return [3 /*break*/, 13];
|
||
return [4 /*yield*/, tslib.__await(this._itemType.read(this._dataStream, {
|
||
abortSignal: options.abortSignal
|
||
}))];
|
||
case 3:
|
||
result = _b.sent();
|
||
this._itemsRemainingInBlock--;
|
||
this._objectIndex++;
|
||
if (!(this._itemsRemainingInBlock == 0)) return [3 /*break*/, 10];
|
||
return [4 /*yield*/, tslib.__await(AvroParser.readFixedBytes(this._dataStream, AVRO_SYNC_MARKER_SIZE, {
|
||
abortSignal: options.abortSignal
|
||
}))];
|
||
case 4:
|
||
marker = _b.sent();
|
||
this._blockOffset = this._initialBlockOffset + this._dataStream.position;
|
||
this._objectIndex = 0;
|
||
if (!arraysEqual(this._syncMarker, marker)) {
|
||
throw new Error("Stream is not a valid Avro file.");
|
||
}
|
||
_b.label = 5;
|
||
case 5:
|
||
_b.trys.push([5, 7, , 8]);
|
||
_a = this;
|
||
return [4 /*yield*/, tslib.__await(AvroParser.readLong(this._dataStream, {
|
||
abortSignal: options.abortSignal
|
||
}))];
|
||
case 6:
|
||
_a._itemsRemainingInBlock = _b.sent();
|
||
return [3 /*break*/, 8];
|
||
case 7:
|
||
err_1 = _b.sent();
|
||
// We hit the end of the stream.
|
||
this._itemsRemainingInBlock = 0;
|
||
return [3 /*break*/, 8];
|
||
case 8:
|
||
if (!(this._itemsRemainingInBlock > 0)) return [3 /*break*/, 10];
|
||
// Ignore block size
|
||
return [4 /*yield*/, tslib.__await(AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal }))];
|
||
case 9:
|
||
// Ignore block size
|
||
_b.sent();
|
||
_b.label = 10;
|
||
case 10: return [4 /*yield*/, tslib.__await(result)];
|
||
case 11: return [4 /*yield*/, _b.sent()];
|
||
case 12:
|
||
_b.sent();
|
||
return [3 /*break*/, 2];
|
||
case 13: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return AvroReader;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
var AvroReadable = /** @class */ (function () {
|
||
function AvroReadable() {
|
||
}
|
||
return AvroReadable;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var ABORT_ERROR = new abortController.AbortError("Reading from the avro stream was aborted.");
|
||
var AvroReadableFromStream = /** @class */ (function (_super) {
|
||
tslib.__extends(AvroReadableFromStream, _super);
|
||
function AvroReadableFromStream(readable) {
|
||
var _this = _super.call(this) || this;
|
||
_this._readable = readable;
|
||
_this._position = 0;
|
||
return _this;
|
||
}
|
||
AvroReadableFromStream.prototype.toUint8Array = function (data) {
|
||
if (typeof data === "string") {
|
||
return Buffer.from(data);
|
||
}
|
||
return data;
|
||
};
|
||
Object.defineProperty(AvroReadableFromStream.prototype, "position", {
|
||
get: function () {
|
||
return this._position;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
AvroReadableFromStream.prototype.read = function (size, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var chunk;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_b) {
|
||
if ((_a = options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
|
||
throw ABORT_ERROR;
|
||
}
|
||
if (size < 0) {
|
||
throw new Error("size parameter should be positive: " + size);
|
||
}
|
||
if (size === 0) {
|
||
return [2 /*return*/, new Uint8Array()];
|
||
}
|
||
if (!this._readable.readable) {
|
||
throw new Error("Stream no longer readable.");
|
||
}
|
||
chunk = this._readable.read(size);
|
||
if (chunk) {
|
||
this._position += chunk.length;
|
||
// chunk.length maybe less than desired size if the stream ends.
|
||
return [2 /*return*/, this.toUint8Array(chunk)];
|
||
}
|
||
else {
|
||
// register callback to wait for enough data to read
|
||
return [2 /*return*/, new Promise(function (resolve, reject) {
|
||
var cleanUp = function () {
|
||
_this._readable.removeListener("readable", readableCallback);
|
||
_this._readable.removeListener("error", rejectCallback);
|
||
_this._readable.removeListener("end", rejectCallback);
|
||
_this._readable.removeListener("close", rejectCallback);
|
||
if (options.abortSignal) {
|
||
options.abortSignal.removeEventListener("abort", abortHandler);
|
||
}
|
||
};
|
||
var readableCallback = function () {
|
||
var chunk = _this._readable.read(size);
|
||
if (chunk) {
|
||
_this._position += chunk.length;
|
||
cleanUp();
|
||
// chunk.length maybe less than desired size if the stream ends.
|
||
resolve(_this.toUint8Array(chunk));
|
||
}
|
||
};
|
||
var rejectCallback = function () {
|
||
cleanUp();
|
||
reject();
|
||
};
|
||
var abortHandler = function () {
|
||
cleanUp();
|
||
reject(ABORT_ERROR);
|
||
};
|
||
_this._readable.on("readable", readableCallback);
|
||
_this._readable.once("error", rejectCallback);
|
||
_this._readable.once("end", rejectCallback);
|
||
_this._readable.once("close", rejectCallback);
|
||
if (options.abortSignal) {
|
||
options.abortSignal.addEventListener("abort", abortHandler);
|
||
}
|
||
})];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return AvroReadableFromStream;
|
||
}(AvroReadable));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* A Node.js BlobQuickQueryStream will internally parse avro data stream for blob query.
|
||
*/
|
||
var BlobQuickQueryStream = /** @class */ (function (_super) {
|
||
tslib.__extends(BlobQuickQueryStream, _super);
|
||
/**
|
||
* Creates an instance of BlobQuickQueryStream.
|
||
*
|
||
* @param source - The current ReadableStream returned from getter
|
||
* @param options -
|
||
*/
|
||
function BlobQuickQueryStream(source, options) {
|
||
if (options === void 0) { options = {}; }
|
||
var _this = _super.call(this) || this;
|
||
_this.avroPaused = true;
|
||
_this.source = source;
|
||
_this.onProgress = options.onProgress;
|
||
_this.onError = options.onError;
|
||
_this.avroReader = new AvroReader(new AvroReadableFromStream(_this.source));
|
||
_this.avroIter = _this.avroReader.parseObjects({ abortSignal: options.abortSignal });
|
||
return _this;
|
||
}
|
||
BlobQuickQueryStream.prototype._read = function () {
|
||
var _this = this;
|
||
if (this.avroPaused) {
|
||
this.readInternal().catch(function (err) {
|
||
_this.emit("error", err);
|
||
});
|
||
}
|
||
};
|
||
BlobQuickQueryStream.prototype.readInternal = function () {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var avroNext, obj, schema, data, bytesScanned, totalBytes, fatal, name_1, description, position;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
this.avroPaused = false;
|
||
_a.label = 1;
|
||
case 1: return [4 /*yield*/, this.avroIter.next()];
|
||
case 2:
|
||
avroNext = _a.sent();
|
||
if (avroNext.done) {
|
||
return [3 /*break*/, 4];
|
||
}
|
||
obj = avroNext.value;
|
||
schema = obj.$schema;
|
||
if (typeof schema !== "string") {
|
||
throw Error("Missing schema in avro record.");
|
||
}
|
||
switch (schema) {
|
||
case "com.microsoft.azure.storage.queryBlobContents.resultData":
|
||
data = obj.data;
|
||
if (data instanceof Uint8Array === false) {
|
||
throw Error("Invalid data in avro result record.");
|
||
}
|
||
if (!this.push(Buffer.from(data))) {
|
||
this.avroPaused = true;
|
||
}
|
||
break;
|
||
case "com.microsoft.azure.storage.queryBlobContents.progress":
|
||
bytesScanned = obj.bytesScanned;
|
||
if (typeof bytesScanned !== "number") {
|
||
throw Error("Invalid bytesScanned in avro progress record.");
|
||
}
|
||
if (this.onProgress) {
|
||
this.onProgress({ loadedBytes: bytesScanned });
|
||
}
|
||
break;
|
||
case "com.microsoft.azure.storage.queryBlobContents.end":
|
||
if (this.onProgress) {
|
||
totalBytes = obj.totalBytes;
|
||
if (typeof totalBytes !== "number") {
|
||
throw Error("Invalid totalBytes in avro end record.");
|
||
}
|
||
this.onProgress({ loadedBytes: totalBytes });
|
||
}
|
||
this.push(null);
|
||
break;
|
||
case "com.microsoft.azure.storage.queryBlobContents.error":
|
||
if (this.onError) {
|
||
fatal = obj.fatal;
|
||
if (typeof fatal !== "boolean") {
|
||
throw Error("Invalid fatal in avro error record.");
|
||
}
|
||
name_1 = obj.name;
|
||
if (typeof name_1 !== "string") {
|
||
throw Error("Invalid name in avro error record.");
|
||
}
|
||
description = obj.description;
|
||
if (typeof description !== "string") {
|
||
throw Error("Invalid description in avro error record.");
|
||
}
|
||
position = obj.position;
|
||
if (typeof position !== "number") {
|
||
throw Error("Invalid position in avro error record.");
|
||
}
|
||
this.onError({
|
||
position: position,
|
||
name: name_1,
|
||
isFatal: fatal,
|
||
description: description
|
||
});
|
||
}
|
||
break;
|
||
default:
|
||
throw Error("Unknown schema " + schema + " in avro progress record.");
|
||
}
|
||
_a.label = 3;
|
||
case 3:
|
||
if (!avroNext.done && !this.avroPaused) return [3 /*break*/, 1];
|
||
_a.label = 4;
|
||
case 4: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return BlobQuickQueryStream;
|
||
}(stream.Readable));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* BlobQueryResponse implements BlobDownloadResponseModel interface, and in Node.js runtime it will
|
||
* parse avor data returned by blob query.
|
||
*/
|
||
var BlobQueryResponse = /** @class */ (function () {
|
||
/**
|
||
* Creates an instance of BlobQueryResponse.
|
||
*
|
||
* @param originalResponse -
|
||
* @param options -
|
||
*/
|
||
function BlobQueryResponse(originalResponse, options) {
|
||
if (options === void 0) { options = {}; }
|
||
this.originalResponse = originalResponse;
|
||
this.blobDownloadStream = new BlobQuickQueryStream(this.originalResponse.readableStreamBody, options);
|
||
}
|
||
Object.defineProperty(BlobQueryResponse.prototype, "acceptRanges", {
|
||
/**
|
||
* Indicates that the service supports
|
||
* requests for partial file content.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.acceptRanges;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "cacheControl", {
|
||
/**
|
||
* Returns if it was previously specified
|
||
* for the file.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.cacheControl;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "contentDisposition", {
|
||
/**
|
||
* Returns the value that was specified
|
||
* for the 'x-ms-content-disposition' header and specifies how to process the
|
||
* response.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentDisposition;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "contentEncoding", {
|
||
/**
|
||
* Returns the value that was specified
|
||
* for the Content-Encoding request header.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentEncoding;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "contentLanguage", {
|
||
/**
|
||
* Returns the value that was specified
|
||
* for the Content-Language request header.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentLanguage;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "blobSequenceNumber", {
|
||
/**
|
||
* The current sequence number for a
|
||
* page blob. This header is not returned for block blobs or append blobs.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.blobSequenceNumber;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "blobType", {
|
||
/**
|
||
* The blob's type. Possible values include:
|
||
* 'BlockBlob', 'PageBlob', 'AppendBlob'.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.blobType;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "contentLength", {
|
||
/**
|
||
* The number of bytes present in the
|
||
* response body.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentLength;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "contentMD5", {
|
||
/**
|
||
* If the file has an MD5 hash and the
|
||
* request is to read the full file, this response header is returned so that
|
||
* the client can check for message content integrity. If the request is to
|
||
* read a specified range and the 'x-ms-range-get-content-md5' is set to
|
||
* true, then the request returns an MD5 hash for the range, as long as the
|
||
* range size is less than or equal to 4 MB. If neither of these sets of
|
||
* conditions is true, then no value is returned for the 'Content-MD5'
|
||
* header.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentMD5;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "contentRange", {
|
||
/**
|
||
* Indicates the range of bytes returned if
|
||
* the client requested a subset of the file by setting the Range request
|
||
* header.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentRange;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "contentType", {
|
||
/**
|
||
* The content type specified for the file.
|
||
* The default content type is 'application/octet-stream'
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentType;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "copyCompletedOn", {
|
||
/**
|
||
* Conclusion time of the last attempted
|
||
* Copy File operation where this file was the destination file. This value
|
||
* can specify the time of a completed, aborted, or failed copy attempt.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return undefined;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "copyId", {
|
||
/**
|
||
* String identifier for the last attempted Copy
|
||
* File operation where this file was the destination file.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copyId;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "copyProgress", {
|
||
/**
|
||
* Contains the number of bytes copied and
|
||
* the total bytes in the source in the last attempted Copy File operation
|
||
* where this file was the destination file. Can show between 0 and
|
||
* Content-Length bytes copied.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copyProgress;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "copySource", {
|
||
/**
|
||
* URL up to 2KB in length that specifies the
|
||
* source file used in the last attempted Copy File operation where this file
|
||
* was the destination file.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copySource;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "copyStatus", {
|
||
/**
|
||
* State of the copy operation
|
||
* identified by 'x-ms-copy-id'. Possible values include: 'pending',
|
||
* 'success', 'aborted', 'failed'
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copyStatus;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "copyStatusDescription", {
|
||
/**
|
||
* Only appears when
|
||
* x-ms-copy-status is failed or pending. Describes cause of fatal or
|
||
* non-fatal copy operation failure.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.copyStatusDescription;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "leaseDuration", {
|
||
/**
|
||
* When a blob is leased,
|
||
* specifies whether the lease is of infinite or fixed duration. Possible
|
||
* values include: 'infinite', 'fixed'.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.leaseDuration;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "leaseState", {
|
||
/**
|
||
* Lease state of the blob. Possible
|
||
* values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.leaseState;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "leaseStatus", {
|
||
/**
|
||
* The current lease status of the
|
||
* blob. Possible values include: 'locked', 'unlocked'.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.leaseStatus;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "date", {
|
||
/**
|
||
* A UTC date/time value generated by the service that
|
||
* indicates the time at which the response was initiated.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.date;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "blobCommittedBlockCount", {
|
||
/**
|
||
* The number of committed blocks
|
||
* present in the blob. This header is returned only for append blobs.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.blobCommittedBlockCount;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "etag", {
|
||
/**
|
||
* The ETag contains a value that you can use to
|
||
* perform operations conditionally, in quotes.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.etag;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "errorCode", {
|
||
/**
|
||
* The error code.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.errorCode;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "isServerEncrypted", {
|
||
/**
|
||
* The value of this header is set to
|
||
* true if the file data and application metadata are completely encrypted
|
||
* using the specified algorithm. Otherwise, the value is set to false (when
|
||
* the file is unencrypted, or if only parts of the file/application metadata
|
||
* are encrypted).
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.isServerEncrypted;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "blobContentMD5", {
|
||
/**
|
||
* If the blob has a MD5 hash, and if
|
||
* request contains range header (Range or x-ms-range), this response header
|
||
* is returned with the value of the whole blob's MD5 value. This value may
|
||
* or may not be equal to the value returned in Content-MD5 header, with the
|
||
* latter calculated from the requested range.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.blobContentMD5;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "lastModified", {
|
||
/**
|
||
* Returns the date and time the file was last
|
||
* modified. Any operation that modifies the file or its properties updates
|
||
* the last modified time.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.lastModified;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "metadata", {
|
||
/**
|
||
* A name-value pair
|
||
* to associate with a file storage object.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.metadata;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "requestId", {
|
||
/**
|
||
* This header uniquely identifies the request
|
||
* that was made and can be used for troubleshooting the request.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.requestId;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "clientRequestId", {
|
||
/**
|
||
* If a client request id header is sent in the request, this header will be present in the
|
||
* response with the same value.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.clientRequestId;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "version", {
|
||
/**
|
||
* Indicates the version of the File service used
|
||
* to execute the request.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.version;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "encryptionKeySha256", {
|
||
/**
|
||
* The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
|
||
* when the blob was encrypted with a customer-provided key.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.encryptionKeySha256;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "contentCrc64", {
|
||
/**
|
||
* If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
|
||
* true, then the request returns a crc64 for the range, as long as the range size is less than
|
||
* or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
|
||
* specified in the same request, it will fail with 400(Bad Request)
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse.contentCrc64;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "blobBody", {
|
||
/**
|
||
* The response body as a browser Blob.
|
||
* Always undefined in node.js.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return undefined;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "readableStreamBody", {
|
||
/**
|
||
* The response body as a node.js Readable stream.
|
||
* Always undefined in the browser.
|
||
*
|
||
* It will parse avor data returned by blob query.
|
||
*
|
||
* @readonly
|
||
*/
|
||
get: function () {
|
||
return coreHttp.isNode ? this.blobDownloadStream : undefined;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobQueryResponse.prototype, "_response", {
|
||
/**
|
||
* The HTTP response.
|
||
*/
|
||
get: function () {
|
||
return this.originalResponse._response;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
return BlobQueryResponse;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
(function (BlockBlobTier) {
|
||
/**
|
||
* Optimized for storing data that is accessed frequently.
|
||
*/
|
||
BlockBlobTier["Hot"] = "Hot";
|
||
/**
|
||
* Optimized for storing data that is infrequently accessed and stored for at least 30 days.
|
||
*/
|
||
BlockBlobTier["Cool"] = "Cool";
|
||
/**
|
||
* Optimized for storing data that is rarely accessed and stored for at least 180 days
|
||
* with flexible latency requirements (on the order of hours).
|
||
*/
|
||
BlockBlobTier["Archive"] = "Archive";
|
||
})(exports.BlockBlobTier || (exports.BlockBlobTier = {}));
|
||
(function (PremiumPageBlobTier) {
|
||
/**
|
||
* P4 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P4"] = "P4";
|
||
/**
|
||
* P6 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P6"] = "P6";
|
||
/**
|
||
* P10 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P10"] = "P10";
|
||
/**
|
||
* P15 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P15"] = "P15";
|
||
/**
|
||
* P20 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P20"] = "P20";
|
||
/**
|
||
* P30 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P30"] = "P30";
|
||
/**
|
||
* P40 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P40"] = "P40";
|
||
/**
|
||
* P50 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P50"] = "P50";
|
||
/**
|
||
* P60 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P60"] = "P60";
|
||
/**
|
||
* P70 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P70"] = "P70";
|
||
/**
|
||
* P80 Tier.
|
||
*/
|
||
PremiumPageBlobTier["P80"] = "P80";
|
||
})(exports.PremiumPageBlobTier || (exports.PremiumPageBlobTier = {}));
|
||
function toAccessTier(tier) {
|
||
if (tier == undefined) {
|
||
return undefined;
|
||
}
|
||
return tier; // No more check if string is a valid AccessTier, and left this to underlay logic to decide(service).
|
||
}
|
||
function ensureCpkIfSpecified(cpk, isHttps) {
|
||
if (cpk && !isHttps) {
|
||
throw new RangeError("Customer-provided encryption key must be used over HTTPS.");
|
||
}
|
||
if (cpk && !cpk.encryptionAlgorithm) {
|
||
cpk.encryptionAlgorithm = EncryptionAlgorithmAES25;
|
||
}
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Function that converts PageRange and ClearRange to a common Range object.
|
||
* PageRange and ClearRange have start and end while Range offset and count
|
||
* this function normalizes to Range.
|
||
* @param response - Model PageBlob Range response
|
||
*/
|
||
function rangeResponseFromModel(response) {
|
||
var pageRange = (response._response.parsedBody.pageRange || []).map(function (x) { return ({
|
||
offset: x.start,
|
||
count: x.end - x.start
|
||
}); });
|
||
var clearRange = (response._response.parsedBody.clearRange || []).map(function (x) { return ({
|
||
offset: x.start,
|
||
count: x.end - x.start
|
||
}); });
|
||
return tslib.__assign(tslib.__assign({}, response), { pageRange: pageRange,
|
||
clearRange: clearRange, _response: tslib.__assign(tslib.__assign({}, response._response), { parsedBody: {
|
||
pageRange: pageRange,
|
||
clearRange: clearRange
|
||
} }) });
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* This is the poller returned by {@link BlobClient.beginCopyFromURL}.
|
||
* This can not be instantiated directly outside of this package.
|
||
*
|
||
* @hidden
|
||
*/
|
||
var BlobBeginCopyFromUrlPoller = /** @class */ (function (_super) {
|
||
tslib.__extends(BlobBeginCopyFromUrlPoller, _super);
|
||
function BlobBeginCopyFromUrlPoller(options) {
|
||
var _this = this;
|
||
var blobClient = options.blobClient, copySource = options.copySource, _a = options.intervalInMs, intervalInMs = _a === void 0 ? 15000 : _a, onProgress = options.onProgress, resumeFrom = options.resumeFrom, startCopyFromURLOptions = options.startCopyFromURLOptions;
|
||
var state;
|
||
if (resumeFrom) {
|
||
state = JSON.parse(resumeFrom).state;
|
||
}
|
||
var operation = makeBlobBeginCopyFromURLPollOperation(tslib.__assign(tslib.__assign({}, state), { blobClient: blobClient,
|
||
copySource: copySource,
|
||
startCopyFromURLOptions: startCopyFromURLOptions }));
|
||
_this = _super.call(this, operation) || this;
|
||
if (typeof onProgress === "function") {
|
||
_this.onProgress(onProgress);
|
||
}
|
||
_this.intervalInMs = intervalInMs;
|
||
return _this;
|
||
}
|
||
BlobBeginCopyFromUrlPoller.prototype.delay = function () {
|
||
return coreHttp.delay(this.intervalInMs);
|
||
};
|
||
return BlobBeginCopyFromUrlPoller;
|
||
}(coreLro.Poller));
|
||
/**
|
||
* Note: Intentionally using function expression over arrow function expression
|
||
* so that the function can be invoked with a different context.
|
||
* This affects what `this` refers to.
|
||
* @hidden
|
||
*/
|
||
var cancel = function cancel(options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var state, copyId;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
state = this.state;
|
||
copyId = state.copyId;
|
||
if (state.isCompleted) {
|
||
return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
|
||
}
|
||
if (!copyId) {
|
||
state.isCancelled = true;
|
||
return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
|
||
}
|
||
// if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
|
||
return [4 /*yield*/, state.blobClient.abortCopyFromURL(copyId, {
|
||
abortSignal: options.abortSignal
|
||
})];
|
||
case 1:
|
||
// if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
|
||
_a.sent();
|
||
state.isCancelled = true;
|
||
return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Note: Intentionally using function expression over arrow function expression
|
||
* so that the function can be invoked with a different context.
|
||
* This affects what `this` refers to.
|
||
* @hidden
|
||
*/
|
||
var update = function update(options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var state, blobClient, copySource, startCopyFromURLOptions, result, result, copyStatus, copyProgress, prevCopyProgress, err_1;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
state = this.state;
|
||
blobClient = state.blobClient, copySource = state.copySource, startCopyFromURLOptions = state.startCopyFromURLOptions;
|
||
if (!!state.isStarted) return [3 /*break*/, 2];
|
||
state.isStarted = true;
|
||
return [4 /*yield*/, blobClient.startCopyFromURL(copySource, startCopyFromURLOptions)];
|
||
case 1:
|
||
result = _a.sent();
|
||
// copyId is needed to abort
|
||
state.copyId = result.copyId;
|
||
if (result.copyStatus === "success") {
|
||
state.result = result;
|
||
state.isCompleted = true;
|
||
}
|
||
return [3 /*break*/, 6];
|
||
case 2:
|
||
if (!!state.isCompleted) return [3 /*break*/, 6];
|
||
_a.label = 3;
|
||
case 3:
|
||
_a.trys.push([3, 5, , 6]);
|
||
return [4 /*yield*/, state.blobClient.getProperties({ abortSignal: options.abortSignal })];
|
||
case 4:
|
||
result = _a.sent();
|
||
copyStatus = result.copyStatus, copyProgress = result.copyProgress;
|
||
prevCopyProgress = state.copyProgress;
|
||
if (copyProgress) {
|
||
state.copyProgress = copyProgress;
|
||
}
|
||
if (copyStatus === "pending" &&
|
||
copyProgress !== prevCopyProgress &&
|
||
typeof options.fireProgress === "function") {
|
||
// trigger in setTimeout, or swallow error?
|
||
options.fireProgress(state);
|
||
}
|
||
else if (copyStatus === "success") {
|
||
state.result = result;
|
||
state.isCompleted = true;
|
||
}
|
||
else if (copyStatus === "failed") {
|
||
state.error = new Error("Blob copy failed with reason: \"" + (result.copyStatusDescription || "unknown") + "\"");
|
||
state.isCompleted = true;
|
||
}
|
||
return [3 /*break*/, 6];
|
||
case 5:
|
||
err_1 = _a.sent();
|
||
state.error = err_1;
|
||
state.isCompleted = true;
|
||
return [3 /*break*/, 6];
|
||
case 6: return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Note: Intentionally using function expression over arrow function expression
|
||
* so that the function can be invoked with a different context.
|
||
* This affects what `this` refers to.
|
||
* @hidden
|
||
*/
|
||
var toString = function toString() {
|
||
return JSON.stringify({ state: this.state }, function (key, value) {
|
||
// remove blobClient from serialized state since a client can't be hydrated from this info.
|
||
if (key === "blobClient") {
|
||
return undefined;
|
||
}
|
||
return value;
|
||
});
|
||
};
|
||
/**
|
||
* Creates a poll operation given the provided state.
|
||
* @hidden
|
||
*/
|
||
function makeBlobBeginCopyFromURLPollOperation(state) {
|
||
return {
|
||
state: tslib.__assign({}, state),
|
||
cancel: cancel,
|
||
toString: toString,
|
||
update: update
|
||
};
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* Generate a range string. For example:
|
||
*
|
||
* "bytes=255-" or "bytes=0-511"
|
||
*
|
||
* @param iRange -
|
||
*/
|
||
function rangeToString(iRange) {
|
||
if (iRange.offset < 0) {
|
||
throw new RangeError("Range.offset cannot be smaller than 0.");
|
||
}
|
||
if (iRange.count && iRange.count <= 0) {
|
||
throw new RangeError("Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.");
|
||
}
|
||
return iRange.count
|
||
? "bytes=" + iRange.offset + "-" + (iRange.offset + iRange.count - 1)
|
||
: "bytes=" + iRange.offset + "-";
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* States for Batch.
|
||
*/
|
||
var BatchStates;
|
||
(function (BatchStates) {
|
||
BatchStates[BatchStates["Good"] = 0] = "Good";
|
||
BatchStates[BatchStates["Error"] = 1] = "Error";
|
||
})(BatchStates || (BatchStates = {}));
|
||
/**
|
||
* Batch provides basic parallel execution with concurrency limits.
|
||
* Will stop execute left operations when one of the executed operation throws an error.
|
||
* But Batch cannot cancel ongoing operations, you need to cancel them by yourself.
|
||
*/
|
||
var Batch = /** @class */ (function () {
|
||
/**
|
||
* Creates an instance of Batch.
|
||
* @param concurrency -
|
||
*/
|
||
function Batch(concurrency) {
|
||
if (concurrency === void 0) { concurrency = 5; }
|
||
/**
|
||
* Number of active operations under execution.
|
||
*/
|
||
this.actives = 0;
|
||
/**
|
||
* Number of completed operations under execution.
|
||
*/
|
||
this.completed = 0;
|
||
/**
|
||
* Offset of next operation to be executed.
|
||
*/
|
||
this.offset = 0;
|
||
/**
|
||
* Operation array to be executed.
|
||
*/
|
||
this.operations = [];
|
||
/**
|
||
* States of Batch. When an error happens, state will turn into error.
|
||
* Batch will stop execute left operations.
|
||
*/
|
||
this.state = BatchStates.Good;
|
||
if (concurrency < 1) {
|
||
throw new RangeError("concurrency must be larger than 0");
|
||
}
|
||
this.concurrency = concurrency;
|
||
this.emitter = new events.EventEmitter();
|
||
}
|
||
/**
|
||
* Add a operation into queue.
|
||
*
|
||
* @param operation -
|
||
*/
|
||
Batch.prototype.addOperation = function (operation) {
|
||
var _this = this;
|
||
this.operations.push(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
|
||
var error_1;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
_a.trys.push([0, 2, , 3]);
|
||
this.actives++;
|
||
return [4 /*yield*/, operation()];
|
||
case 1:
|
||
_a.sent();
|
||
this.actives--;
|
||
this.completed++;
|
||
this.parallelExecute();
|
||
return [3 /*break*/, 3];
|
||
case 2:
|
||
error_1 = _a.sent();
|
||
this.emitter.emit("error", error_1);
|
||
return [3 /*break*/, 3];
|
||
case 3: return [2 /*return*/];
|
||
}
|
||
});
|
||
}); });
|
||
};
|
||
/**
|
||
* Start execute operations in the queue.
|
||
*
|
||
*/
|
||
Batch.prototype.do = function () {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
if (this.operations.length === 0) {
|
||
return [2 /*return*/, Promise.resolve()];
|
||
}
|
||
this.parallelExecute();
|
||
return [2 /*return*/, new Promise(function (resolve, reject) {
|
||
_this.emitter.on("finish", resolve);
|
||
_this.emitter.on("error", function (error) {
|
||
_this.state = BatchStates.Error;
|
||
reject(error);
|
||
});
|
||
})];
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Get next operation to be executed. Return null when reaching ends.
|
||
*
|
||
*/
|
||
Batch.prototype.nextOperation = function () {
|
||
if (this.offset < this.operations.length) {
|
||
return this.operations[this.offset++];
|
||
}
|
||
return null;
|
||
};
|
||
/**
|
||
* Start execute operations. One one the most important difference between
|
||
* this method with do() is that do() wraps as an sync method.
|
||
*
|
||
*/
|
||
Batch.prototype.parallelExecute = function () {
|
||
if (this.state === BatchStates.Error) {
|
||
return;
|
||
}
|
||
if (this.completed >= this.operations.length) {
|
||
this.emitter.emit("finish");
|
||
return;
|
||
}
|
||
while (this.actives < this.concurrency) {
|
||
var operation = this.nextOperation();
|
||
if (operation) {
|
||
operation();
|
||
}
|
||
else {
|
||
return;
|
||
}
|
||
}
|
||
};
|
||
return Batch;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* This class generates a readable stream from the data in an array of buffers.
|
||
*/
|
||
var BuffersStream = /** @class */ (function (_super) {
|
||
tslib.__extends(BuffersStream, _super);
|
||
/**
|
||
* Creates an instance of BuffersStream that will emit the data
|
||
* contained in the array of buffers.
|
||
*
|
||
* @param buffers - Array of buffers containing the data
|
||
* @param byteLength - The total length of data contained in the buffers
|
||
*/
|
||
function BuffersStream(buffers, byteLength, options) {
|
||
var _this = _super.call(this, options) || this;
|
||
_this.buffers = buffers;
|
||
_this.byteLength = byteLength;
|
||
_this.byteOffsetInCurrentBuffer = 0;
|
||
_this.bufferIndex = 0;
|
||
_this.pushedBytesLength = 0;
|
||
// check byteLength is no larger than buffers[] total length
|
||
var buffersLength = 0;
|
||
for (var _i = 0, _a = _this.buffers; _i < _a.length; _i++) {
|
||
var buf = _a[_i];
|
||
buffersLength += buf.byteLength;
|
||
}
|
||
if (buffersLength < _this.byteLength) {
|
||
throw new Error("Data size shouldn't be larger than the total length of buffers.");
|
||
}
|
||
return _this;
|
||
}
|
||
/**
|
||
* Internal _read() that will be called when the stream wants to pull more data in.
|
||
*
|
||
* @param size - Optional. The size of data to be read
|
||
*/
|
||
BuffersStream.prototype._read = function (size) {
|
||
if (this.pushedBytesLength >= this.byteLength) {
|
||
this.push(null);
|
||
}
|
||
if (!size) {
|
||
size = this.readableHighWaterMark;
|
||
}
|
||
var outBuffers = [];
|
||
var i = 0;
|
||
while (i < size && this.pushedBytesLength < this.byteLength) {
|
||
// The last buffer may be longer than the data it contains.
|
||
var remainingDataInAllBuffers = this.byteLength - this.pushedBytesLength;
|
||
var remainingCapacityInThisBuffer = this.buffers[this.bufferIndex].byteLength - this.byteOffsetInCurrentBuffer;
|
||
var remaining = Math.min(remainingCapacityInThisBuffer, remainingDataInAllBuffers);
|
||
if (remaining > size - i) {
|
||
// chunkSize = size - i
|
||
var end = this.byteOffsetInCurrentBuffer + size - i;
|
||
outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer, end));
|
||
this.pushedBytesLength += size - i;
|
||
this.byteOffsetInCurrentBuffer = end;
|
||
i = size;
|
||
break;
|
||
}
|
||
else {
|
||
// chunkSize = remaining
|
||
var end = this.byteOffsetInCurrentBuffer + remaining;
|
||
outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer, end));
|
||
if (remaining === remainingCapacityInThisBuffer) {
|
||
// this.buffers[this.bufferIndex] used up, shift to next one
|
||
this.byteOffsetInCurrentBuffer = 0;
|
||
this.bufferIndex++;
|
||
}
|
||
else {
|
||
this.byteOffsetInCurrentBuffer = end;
|
||
}
|
||
this.pushedBytesLength += remaining;
|
||
i += remaining;
|
||
}
|
||
}
|
||
if (outBuffers.length > 1) {
|
||
this.push(Buffer.concat(outBuffers));
|
||
}
|
||
else if (outBuffers.length === 1) {
|
||
this.push(outBuffers[0]);
|
||
}
|
||
};
|
||
return BuffersStream;
|
||
}(stream.Readable));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* maxBufferLength is max size of each buffer in the pooled buffers.
|
||
*/
|
||
// Can't use import as Typescript doesn't recognize "buffer".
|
||
var maxBufferLength = __webpack_require__(407).constants.MAX_LENGTH;
|
||
/**
|
||
* This class provides a buffer container which conceptually has no hard size limit.
|
||
* It accepts a capacity, an array of input buffers and the total length of input data.
|
||
* It will allocate an internal "buffer" of the capacity and fill the data in the input buffers
|
||
* into the internal "buffer" serially with respect to the total length.
|
||
* Then by calling PooledBuffer.getReadableStream(), you can get a readable stream
|
||
* assembled from all the data in the internal "buffer".
|
||
*/
|
||
var PooledBuffer = /** @class */ (function () {
|
||
function PooledBuffer(capacity, buffers, totalLength) {
|
||
/**
|
||
* Internal buffers used to keep the data.
|
||
* Each buffer has a length of the maxBufferLength except last one.
|
||
*/
|
||
this.buffers = [];
|
||
this.capacity = capacity;
|
||
this._size = 0;
|
||
// allocate
|
||
var bufferNum = Math.ceil(capacity / maxBufferLength);
|
||
for (var i = 0; i < bufferNum; i++) {
|
||
var len = i === bufferNum - 1 ? capacity % maxBufferLength : maxBufferLength;
|
||
if (len === 0) {
|
||
len = maxBufferLength;
|
||
}
|
||
this.buffers.push(Buffer.allocUnsafe(len));
|
||
}
|
||
if (buffers) {
|
||
this.fill(buffers, totalLength);
|
||
}
|
||
}
|
||
Object.defineProperty(PooledBuffer.prototype, "size", {
|
||
/**
|
||
* The size of the data contained in the pooled buffers.
|
||
*/
|
||
get: function () {
|
||
return this._size;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
/**
|
||
* Fill the internal buffers with data in the input buffers serially
|
||
* with respect to the total length and the total capacity of the internal buffers.
|
||
* Data copied will be shift out of the input buffers.
|
||
*
|
||
* @param buffers - Input buffers containing the data to be filled in the pooled buffer
|
||
* @param totalLength - Total length of the data to be filled in.
|
||
*
|
||
*/
|
||
PooledBuffer.prototype.fill = function (buffers, totalLength) {
|
||
this._size = Math.min(this.capacity, totalLength);
|
||
var i = 0, j = 0, targetOffset = 0, sourceOffset = 0, totalCopiedNum = 0;
|
||
while (totalCopiedNum < this._size) {
|
||
var source = buffers[i];
|
||
var target = this.buffers[j];
|
||
var copiedNum = source.copy(target, targetOffset, sourceOffset);
|
||
totalCopiedNum += copiedNum;
|
||
sourceOffset += copiedNum;
|
||
targetOffset += copiedNum;
|
||
if (sourceOffset === source.length) {
|
||
i++;
|
||
sourceOffset = 0;
|
||
}
|
||
if (targetOffset === target.length) {
|
||
j++;
|
||
targetOffset = 0;
|
||
}
|
||
}
|
||
// clear copied from source buffers
|
||
buffers.splice(0, i);
|
||
if (buffers.length > 0) {
|
||
buffers[0] = buffers[0].slice(sourceOffset);
|
||
}
|
||
};
|
||
/**
|
||
* Get the readable stream assembled from all the data in the internal buffers.
|
||
*
|
||
*/
|
||
PooledBuffer.prototype.getReadableStream = function () {
|
||
return new BuffersStream(this.buffers, this.size);
|
||
};
|
||
return PooledBuffer;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* This class accepts a Node.js Readable stream as input, and keeps reading data
|
||
* from the stream into the internal buffer structure, until it reaches maxBuffers.
|
||
* Every available buffer will try to trigger outgoingHandler.
|
||
*
|
||
* The internal buffer structure includes an incoming buffer array, and a outgoing
|
||
* buffer array. The incoming buffer array includes the "empty" buffers can be filled
|
||
* with new incoming data. The outgoing array includes the filled buffers to be
|
||
* handled by outgoingHandler. Every above buffer size is defined by parameter bufferSize.
|
||
*
|
||
* NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING
|
||
*
|
||
* NUM_OF_ALL_BUFFERS lesser than or equal to maxBuffers
|
||
*
|
||
* PERFORMANCE IMPROVEMENT TIPS:
|
||
* 1. Input stream highWaterMark is better to set a same value with bufferSize
|
||
* parameter, which will avoid Buffer.concat() operations.
|
||
* 2. concurrency should set a smaller value than maxBuffers, which is helpful to
|
||
* reduce the possibility when a outgoing handler waits for the stream data.
|
||
* in this situation, outgoing handlers are blocked.
|
||
* Outgoing queue shouldn't be empty.
|
||
*/
|
||
var BufferScheduler = /** @class */ (function () {
|
||
/**
|
||
* Creates an instance of BufferScheduler.
|
||
*
|
||
* @param readable - A Node.js Readable stream
|
||
* @param bufferSize - Buffer size of every maintained buffer
|
||
* @param maxBuffers - How many buffers can be allocated
|
||
* @param outgoingHandler - An async function scheduled to be
|
||
* triggered when a buffer fully filled
|
||
* with stream data
|
||
* @param concurrency - Concurrency of executing outgoingHandlers (>0)
|
||
* @param encoding - [Optional] Encoding of Readable stream when it's a string stream
|
||
*/
|
||
function BufferScheduler(readable, bufferSize, maxBuffers, outgoingHandler, concurrency, encoding) {
|
||
/**
|
||
* An internal event emitter.
|
||
*/
|
||
this.emitter = new events.EventEmitter();
|
||
/**
|
||
* An internal offset marker to track data offset in bytes of next outgoingHandler.
|
||
*/
|
||
this.offset = 0;
|
||
/**
|
||
* An internal marker to track whether stream is end.
|
||
*/
|
||
this.isStreamEnd = false;
|
||
/**
|
||
* An internal marker to track whether stream or outgoingHandler returns error.
|
||
*/
|
||
this.isError = false;
|
||
/**
|
||
* How many handlers are executing.
|
||
*/
|
||
this.executingOutgoingHandlers = 0;
|
||
/**
|
||
* How many buffers have been allocated.
|
||
*/
|
||
this.numBuffers = 0;
|
||
/**
|
||
* Because this class doesn't know how much data every time stream pops, which
|
||
* is defined by highWaterMarker of the stream. So BufferScheduler will cache
|
||
* data received from the stream, when data in unresolvedDataArray exceeds the
|
||
* blockSize defined, it will try to concat a blockSize of buffer, fill into available
|
||
* buffers from incoming and push to outgoing array.
|
||
*/
|
||
this.unresolvedDataArray = [];
|
||
/**
|
||
* How much data consisted in unresolvedDataArray.
|
||
*/
|
||
this.unresolvedLength = 0;
|
||
/**
|
||
* The array includes all the available buffers can be used to fill data from stream.
|
||
*/
|
||
this.incoming = [];
|
||
/**
|
||
* The array (queue) includes all the buffers filled from stream data.
|
||
*/
|
||
this.outgoing = [];
|
||
if (bufferSize <= 0) {
|
||
throw new RangeError("bufferSize must be larger than 0, current is " + bufferSize);
|
||
}
|
||
if (maxBuffers <= 0) {
|
||
throw new RangeError("maxBuffers must be larger than 0, current is " + maxBuffers);
|
||
}
|
||
if (concurrency <= 0) {
|
||
throw new RangeError("concurrency must be larger than 0, current is " + concurrency);
|
||
}
|
||
this.bufferSize = bufferSize;
|
||
this.maxBuffers = maxBuffers;
|
||
this.readable = readable;
|
||
this.outgoingHandler = outgoingHandler;
|
||
this.concurrency = concurrency;
|
||
this.encoding = encoding;
|
||
}
|
||
/**
|
||
* Start the scheduler, will return error when stream of any of the outgoingHandlers
|
||
* returns error.
|
||
*
|
||
*/
|
||
BufferScheduler.prototype.do = function () {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, new Promise(function (resolve, reject) {
|
||
_this.readable.on("data", function (data) {
|
||
data = typeof data === "string" ? Buffer.from(data, _this.encoding) : data;
|
||
_this.appendUnresolvedData(data);
|
||
if (!_this.resolveData()) {
|
||
_this.readable.pause();
|
||
}
|
||
});
|
||
_this.readable.on("error", function (err) {
|
||
_this.emitter.emit("error", err);
|
||
});
|
||
_this.readable.on("end", function () {
|
||
_this.isStreamEnd = true;
|
||
_this.emitter.emit("checkEnd");
|
||
});
|
||
_this.emitter.on("error", function (err) {
|
||
_this.isError = true;
|
||
_this.readable.pause();
|
||
reject(err);
|
||
});
|
||
_this.emitter.on("checkEnd", function () {
|
||
if (_this.outgoing.length > 0) {
|
||
_this.triggerOutgoingHandlers();
|
||
return;
|
||
}
|
||
if (_this.isStreamEnd && _this.executingOutgoingHandlers === 0) {
|
||
if (_this.unresolvedLength > 0 && _this.unresolvedLength < _this.bufferSize) {
|
||
var buffer_1 = _this.shiftBufferFromUnresolvedDataArray();
|
||
_this.outgoingHandler(function () { return buffer_1.getReadableStream(); }, buffer_1.size, _this.offset)
|
||
.then(resolve)
|
||
.catch(reject);
|
||
}
|
||
else if (_this.unresolvedLength >= _this.bufferSize) {
|
||
return;
|
||
}
|
||
else {
|
||
resolve();
|
||
}
|
||
}
|
||
});
|
||
})];
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Insert a new data into unresolved array.
|
||
*
|
||
* @param data -
|
||
*/
|
||
BufferScheduler.prototype.appendUnresolvedData = function (data) {
|
||
this.unresolvedDataArray.push(data);
|
||
this.unresolvedLength += data.length;
|
||
};
|
||
/**
|
||
* Try to shift a buffer with size in blockSize. The buffer returned may be less
|
||
* than blockSize when data in unresolvedDataArray is less than bufferSize.
|
||
*
|
||
*/
|
||
BufferScheduler.prototype.shiftBufferFromUnresolvedDataArray = function (buffer) {
|
||
if (!buffer) {
|
||
buffer = new PooledBuffer(this.bufferSize, this.unresolvedDataArray, this.unresolvedLength);
|
||
}
|
||
else {
|
||
buffer.fill(this.unresolvedDataArray, this.unresolvedLength);
|
||
}
|
||
this.unresolvedLength -= buffer.size;
|
||
return buffer;
|
||
};
|
||
/**
|
||
* Resolve data in unresolvedDataArray. For every buffer with size in blockSize
|
||
* shifted, it will try to get (or allocate a buffer) from incoming, and fill it,
|
||
* then push it into outgoing to be handled by outgoing handler.
|
||
*
|
||
* Return false when available buffers in incoming are not enough, else true.
|
||
*
|
||
* @returns Return false when buffers in incoming are not enough, else true.
|
||
*/
|
||
BufferScheduler.prototype.resolveData = function () {
|
||
while (this.unresolvedLength >= this.bufferSize) {
|
||
var buffer = void 0;
|
||
if (this.incoming.length > 0) {
|
||
buffer = this.incoming.shift();
|
||
this.shiftBufferFromUnresolvedDataArray(buffer);
|
||
}
|
||
else {
|
||
if (this.numBuffers < this.maxBuffers) {
|
||
buffer = this.shiftBufferFromUnresolvedDataArray();
|
||
this.numBuffers++;
|
||
}
|
||
else {
|
||
// No available buffer, wait for buffer returned
|
||
return false;
|
||
}
|
||
}
|
||
this.outgoing.push(buffer);
|
||
this.triggerOutgoingHandlers();
|
||
}
|
||
return true;
|
||
};
|
||
/**
|
||
* Try to trigger a outgoing handler for every buffer in outgoing. Stop when
|
||
* concurrency reaches.
|
||
*/
|
||
BufferScheduler.prototype.triggerOutgoingHandlers = function () {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var buffer;
|
||
return tslib.__generator(this, function (_a) {
|
||
do {
|
||
if (this.executingOutgoingHandlers >= this.concurrency) {
|
||
return [2 /*return*/];
|
||
}
|
||
buffer = this.outgoing.shift();
|
||
if (buffer) {
|
||
this.triggerOutgoingHandler(buffer);
|
||
}
|
||
} while (buffer);
|
||
return [2 /*return*/];
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Trigger a outgoing handler for a buffer shifted from outgoing.
|
||
*
|
||
* @param buffer -
|
||
*/
|
||
BufferScheduler.prototype.triggerOutgoingHandler = function (buffer) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var bufferLength, err_1;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
bufferLength = buffer.size;
|
||
this.executingOutgoingHandlers++;
|
||
this.offset += bufferLength;
|
||
_a.label = 1;
|
||
case 1:
|
||
_a.trys.push([1, 3, , 4]);
|
||
return [4 /*yield*/, this.outgoingHandler(function () { return buffer.getReadableStream(); }, bufferLength, this.offset - bufferLength)];
|
||
case 2:
|
||
_a.sent();
|
||
return [3 /*break*/, 4];
|
||
case 3:
|
||
err_1 = _a.sent();
|
||
this.emitter.emit("error", err_1);
|
||
return [2 /*return*/];
|
||
case 4:
|
||
this.executingOutgoingHandlers--;
|
||
this.reuseBuffer(buffer);
|
||
this.emitter.emit("checkEnd");
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Return buffer used by outgoing handler into incoming.
|
||
*
|
||
* @param buffer -
|
||
*/
|
||
BufferScheduler.prototype.reuseBuffer = function (buffer) {
|
||
this.incoming.push(buffer);
|
||
if (!this.isError && this.resolveData() && !this.isStreamEnd) {
|
||
this.readable.resume();
|
||
}
|
||
};
|
||
return BufferScheduler;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Reads a readable stream into buffer. Fill the buffer from offset to end.
|
||
*
|
||
* @param stream - A Node.js Readable stream
|
||
* @param buffer - Buffer to be filled, length must greater than or equal to offset
|
||
* @param offset - From which position in the buffer to be filled, inclusive
|
||
* @param end - To which position in the buffer to be filled, exclusive
|
||
* @param encoding - Encoding of the Readable stream
|
||
*/
|
||
function streamToBuffer(stream, buffer, offset, end, encoding) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var pos, count;
|
||
return tslib.__generator(this, function (_a) {
|
||
pos = 0;
|
||
count = end - offset;
|
||
return [2 /*return*/, new Promise(function (resolve, reject) {
|
||
stream.on("readable", function () {
|
||
if (pos >= count) {
|
||
resolve();
|
||
return;
|
||
}
|
||
var chunk = stream.read();
|
||
if (!chunk) {
|
||
return;
|
||
}
|
||
if (typeof chunk === "string") {
|
||
chunk = Buffer.from(chunk, encoding);
|
||
}
|
||
// How much data needed in this chunk
|
||
var chunkLength = pos + chunk.length > count ? count - pos : chunk.length;
|
||
buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);
|
||
pos += chunkLength;
|
||
});
|
||
stream.on("end", function () {
|
||
if (pos < count) {
|
||
reject(new Error("Stream drains before getting enough data needed. Data read: " + pos + ", data need: " + count));
|
||
}
|
||
resolve();
|
||
});
|
||
stream.on("error", reject);
|
||
})];
|
||
});
|
||
});
|
||
}
|
||
/**
|
||
* Reads a readable stream into buffer entirely.
|
||
*
|
||
* @param stream - A Node.js Readable stream
|
||
* @param buffer - Buffer to be filled, length must greater than or equal to offset
|
||
* @param encoding - Encoding of the Readable stream
|
||
* @returns with the count of bytes read.
|
||
* @throws `RangeError` If buffer size is not big enough.
|
||
*/
|
||
function streamToBuffer2(stream, buffer, encoding) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var pos, bufferSize;
|
||
return tslib.__generator(this, function (_a) {
|
||
pos = 0;
|
||
bufferSize = buffer.length;
|
||
return [2 /*return*/, new Promise(function (resolve, reject) {
|
||
stream.on("readable", function () {
|
||
var chunk = stream.read();
|
||
if (!chunk) {
|
||
return;
|
||
}
|
||
if (typeof chunk === "string") {
|
||
chunk = Buffer.from(chunk, encoding);
|
||
}
|
||
if (pos + chunk.length > bufferSize) {
|
||
reject(new Error("Stream exceeds buffer size. Buffer size: " + bufferSize));
|
||
return;
|
||
}
|
||
buffer.fill(chunk, pos, pos + chunk.length);
|
||
pos += chunk.length;
|
||
});
|
||
stream.on("end", function () {
|
||
resolve(pos);
|
||
});
|
||
stream.on("error", reject);
|
||
})];
|
||
});
|
||
});
|
||
}
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* Writes the content of a readstream to a local file. Returns a Promise which is completed after the file handle is closed.
|
||
*
|
||
* @param rs - The read stream.
|
||
* @param file - Destination file path.
|
||
*/
|
||
function readStreamToLocalFile(rs, file) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, new Promise(function (resolve, reject) {
|
||
var ws = fs.createWriteStream(file);
|
||
rs.on("error", function (err) {
|
||
reject(err);
|
||
});
|
||
ws.on("error", function (err) {
|
||
reject(err);
|
||
});
|
||
ws.on("close", resolve);
|
||
rs.pipe(ws);
|
||
})];
|
||
});
|
||
});
|
||
}
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* Promisified version of fs.stat().
|
||
*/
|
||
var fsStat = util.promisify(fs.stat);
|
||
var fsCreateReadStream = fs.createReadStream;
|
||
|
||
/**
|
||
* A BlobClient represents a URL to an Azure Storage blob; the blob may be a block blob,
|
||
* append blob, or page blob.
|
||
*/
|
||
var BlobClient = /** @class */ (function (_super) {
|
||
tslib.__extends(BlobClient, _super);
|
||
function BlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
|
||
var _a;
|
||
var _this = this;
|
||
options = options || {};
|
||
var pipeline;
|
||
var url;
|
||
if (credentialOrPipelineOrContainerName instanceof Pipeline) {
|
||
// (url: string, pipeline: Pipeline)
|
||
url = urlOrConnectionString;
|
||
pipeline = credentialOrPipelineOrContainerName;
|
||
}
|
||
else if ((coreHttp.isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||
|
||
credentialOrPipelineOrContainerName instanceof AnonymousCredential ||
|
||
coreHttp.isTokenCredential(credentialOrPipelineOrContainerName)) {
|
||
// (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)
|
||
url = urlOrConnectionString;
|
||
options = blobNameOrOptions;
|
||
pipeline = newPipeline(credentialOrPipelineOrContainerName, options);
|
||
}
|
||
else if (!credentialOrPipelineOrContainerName &&
|
||
typeof credentialOrPipelineOrContainerName !== "string") {
|
||
// (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)
|
||
// The second parameter is undefined. Use anonymous credential.
|
||
url = urlOrConnectionString;
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else if (credentialOrPipelineOrContainerName &&
|
||
typeof credentialOrPipelineOrContainerName === "string" &&
|
||
blobNameOrOptions &&
|
||
typeof blobNameOrOptions === "string") {
|
||
// (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
|
||
var containerName = credentialOrPipelineOrContainerName;
|
||
var blobName = blobNameOrOptions;
|
||
var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
|
||
if (extractedCreds.kind === "AccountConnString") {
|
||
{
|
||
var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
|
||
url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
|
||
options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
|
||
pipeline = newPipeline(sharedKeyCredential, options);
|
||
}
|
||
}
|
||
else if (extractedCreds.kind === "SASConnString") {
|
||
url =
|
||
appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +
|
||
"?" +
|
||
extractedCreds.accountSas;
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else {
|
||
throw new Error("Connection string must be either an Account connection string or a SAS connection string");
|
||
}
|
||
}
|
||
else {
|
||
throw new Error("Expecting non-empty strings for containerName and blobName parameters");
|
||
}
|
||
_this = _super.call(this, url, pipeline) || this;
|
||
(_a = _this.getBlobAndContainerNamesFromUrl(), _this._name = _a.blobName, _this._containerName = _a.containerName);
|
||
_this.blobContext = new Blob$1(_this.storageClientContext);
|
||
_this._snapshot = getURLParameter(_this.url, URLConstants.Parameters.SNAPSHOT);
|
||
_this._versionId = getURLParameter(_this.url, URLConstants.Parameters.VERSIONID);
|
||
return _this;
|
||
}
|
||
Object.defineProperty(BlobClient.prototype, "name", {
|
||
/**
|
||
* The name of the blob.
|
||
*/
|
||
get: function () {
|
||
return this._name;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(BlobClient.prototype, "containerName", {
|
||
/**
|
||
* The name of the storage container the blob is associated with.
|
||
*/
|
||
get: function () {
|
||
return this._containerName;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
/**
|
||
* Creates a new BlobClient object identical to the source but with the specified snapshot timestamp.
|
||
* Provide "" will remove the snapshot and return a Client to the base blob.
|
||
*
|
||
* @param snapshot - The snapshot timestamp.
|
||
* @returns A new BlobClient object identical to the source but with the specified snapshot timestamp
|
||
*/
|
||
BlobClient.prototype.withSnapshot = function (snapshot) {
|
||
return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
|
||
};
|
||
/**
|
||
* Creates a new BlobClient object pointing to a version of this blob.
|
||
* Provide "" will remove the versionId and return a Client to the base blob.
|
||
*
|
||
* @param versionId - The versionId.
|
||
* @returns A new BlobClient object pointing to the version of this blob.
|
||
*/
|
||
BlobClient.prototype.withVersion = function (versionId) {
|
||
return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.VERSIONID, versionId.length === 0 ? undefined : versionId), this.pipeline);
|
||
};
|
||
/**
|
||
* Creates a AppendBlobClient object.
|
||
*
|
||
*/
|
||
BlobClient.prototype.getAppendBlobClient = function () {
|
||
return new AppendBlobClient(this.url, this.pipeline);
|
||
};
|
||
/**
|
||
* Creates a BlockBlobClient object.
|
||
*
|
||
*/
|
||
BlobClient.prototype.getBlockBlobClient = function () {
|
||
return new BlockBlobClient(this.url, this.pipeline);
|
||
};
|
||
/**
|
||
* Creates a PageBlobClient object.
|
||
*
|
||
*/
|
||
BlobClient.prototype.getPageBlobClient = function () {
|
||
return new PageBlobClient(this.url, this.pipeline);
|
||
};
|
||
/**
|
||
* Reads or downloads a blob from the system, including its metadata and properties.
|
||
* You can also call Get Blob to read a snapshot.
|
||
*
|
||
* * In Node.js, data returns in a Readable stream readableStreamBody
|
||
* * In browsers, data returns in a promise blobBody
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob
|
||
*
|
||
* @param offset - From which position of the blob to download, greater than or equal to 0
|
||
* @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined
|
||
* @param options - Optional options to Blob Download operation.
|
||
*
|
||
*
|
||
* Example usage (Node.js):
|
||
*
|
||
* ```js
|
||
* // Download and convert a blob to a string
|
||
* const downloadBlockBlobResponse = await blobClient.download();
|
||
* const downloaded = await streamToBuffer(downloadBlockBlobResponse.readableStreamBody);
|
||
* console.log("Downloaded blob content:", downloaded.toString());
|
||
*
|
||
* async function streamToBuffer(readableStream) {
|
||
* return new Promise((resolve, reject) => {
|
||
* const chunks = [];
|
||
* readableStream.on("data", (data) => {
|
||
* chunks.push(data instanceof Buffer ? data : Buffer.from(data));
|
||
* });
|
||
* readableStream.on("end", () => {
|
||
* resolve(Buffer.concat(chunks));
|
||
* });
|
||
* readableStream.on("error", reject);
|
||
* });
|
||
* }
|
||
* ```
|
||
*
|
||
* Example usage (browser):
|
||
*
|
||
* ```js
|
||
* // Download and convert a blob to a string
|
||
* const downloadBlockBlobResponse = await blobClient.download();
|
||
* const downloaded = await blobToString(await downloadBlockBlobResponse.blobBody);
|
||
* console.log(
|
||
* "Downloaded blob content",
|
||
* downloaded
|
||
* );
|
||
*
|
||
* async function blobToString(blob: Blob): Promise<string> {
|
||
* const fileReader = new FileReader();
|
||
* return new Promise<string>((resolve, reject) => {
|
||
* fileReader.onloadend = (ev: any) => {
|
||
* resolve(ev.target!.result);
|
||
* };
|
||
* fileReader.onerror = reject;
|
||
* fileReader.readAsText(blob);
|
||
* });
|
||
* }
|
||
* ```
|
||
*/
|
||
BlobClient.prototype.download = function (offset, count, options) {
|
||
var _a;
|
||
if (offset === void 0) { offset = 0; }
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, res_1, wrappedRes, e_1;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
options.conditions = options.conditions || {};
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
_b = createSpan("BlobClient-download", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.blobContext.download(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
|
||
onDownloadProgress: coreHttp.isNode ? undefined : options.onProgress // for Node.js, progress is reported by RetriableReadableStream
|
||
}, range: offset === 0 && !count ? undefined : rangeToString({ offset: offset, count: count }), rangeGetContentMD5: options.rangeGetContentMD5, rangeGetContentCRC64: options.rangeGetContentCrc64, snapshot: options.snapshot, cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
res_1 = _c.sent();
|
||
wrappedRes = tslib.__assign(tslib.__assign({}, res_1), { _response: res_1._response, objectReplicationDestinationPolicyId: res_1.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res_1.objectReplicationRules) });
|
||
// We support retrying when download stream unexpected ends in Node.js runtime
|
||
// Following code shouldn't be bundled into browser build, however some
|
||
// bundlers may try to bundle following code and "FileReadResponse.ts".
|
||
// In this case, "FileDownloadResponse.browser.ts" will be used as a shim of "FileDownloadResponse.ts"
|
||
// The config is in package.json "browser" field
|
||
if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {
|
||
// TODO: Default value or make it a required parameter?
|
||
options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;
|
||
}
|
||
if (res_1.contentLength === undefined) {
|
||
throw new RangeError("File download response doesn't contain valid content length header");
|
||
}
|
||
if (!res_1.etag) {
|
||
throw new RangeError("File download response doesn't contain valid etag header");
|
||
}
|
||
return [2 /*return*/, new BlobDownloadResponse(wrappedRes, function (start) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
||
var updatedOptions;
|
||
var _a;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
updatedOptions = {
|
||
leaseAccessConditions: options.conditions,
|
||
modifiedAccessConditions: {
|
||
ifMatch: options.conditions.ifMatch || res_1.etag,
|
||
ifModifiedSince: options.conditions.ifModifiedSince,
|
||
ifNoneMatch: options.conditions.ifNoneMatch,
|
||
ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,
|
||
ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions
|
||
},
|
||
range: rangeToString({
|
||
count: offset + res_1.contentLength - start,
|
||
offset: start
|
||
}),
|
||
rangeGetContentMD5: options.rangeGetContentMD5,
|
||
rangeGetContentCRC64: options.rangeGetContentCrc64,
|
||
snapshot: options.snapshot,
|
||
cpkInfo: options.customerProvidedKey
|
||
};
|
||
return [4 /*yield*/, this.blobContext.download(tslib.__assign({ abortSignal: options.abortSignal }, updatedOptions))];
|
||
case 1:
|
||
// Debug purpose only
|
||
// console.log(
|
||
// `Read from internal stream, range: ${
|
||
// updatedOptions.range
|
||
// }, options: ${JSON.stringify(updatedOptions)}`
|
||
// );
|
||
return [2 /*return*/, (_b.sent()).readableStreamBody];
|
||
}
|
||
});
|
||
}); }, offset, res_1.contentLength, {
|
||
maxRetryRequests: options.maxRetryRequests,
|
||
onProgress: options.onProgress
|
||
})];
|
||
case 3:
|
||
e_1 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_1.message
|
||
});
|
||
throw e_1;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns true if the Azure blob resource represented by this client exists; false otherwise.
|
||
*
|
||
* NOTE: use this function with care since an existing blob might be deleted by other clients or
|
||
* applications. Vice versa new blobs might be added by other clients or applications after this
|
||
* function completes.
|
||
*
|
||
* @param options - options to Exists operation.
|
||
*/
|
||
BlobClient.prototype.exists = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_2;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobClient-exists", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.getProperties({
|
||
abortSignal: options.abortSignal,
|
||
customerProvidedKey: options.customerProvidedKey,
|
||
conditions: options.conditions,
|
||
tracingOptions: updatedOptions.tracingOptions
|
||
})];
|
||
case 2:
|
||
_b.sent();
|
||
return [2 /*return*/, true];
|
||
case 3:
|
||
e_2 = _b.sent();
|
||
if (e_2.statusCode === 404) {
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: "Expected exception when checking blob existence"
|
||
});
|
||
return [2 /*return*/, false];
|
||
}
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_2.message
|
||
});
|
||
throw e_2;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns all user-defined metadata, standard HTTP properties, and system properties
|
||
* for the blob. It does not return the content of the blob.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-properties
|
||
*
|
||
* WARNING: The `metadata` object returned in the response will have its keys in lowercase, even if
|
||
* they originally contained uppercase characters. This differs from the metadata keys returned by
|
||
* the methods of {@link ContainerClient} that list blobs using the `includeMetadata` option, which
|
||
* will retain their original casing.
|
||
*
|
||
* @param options - Optional options to Get Properties operation.
|
||
*/
|
||
BlobClient.prototype.getProperties = function (options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, res, e_3;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobClient-getProperties", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
options.conditions = options.conditions || {};
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.blobContext.getProperties(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
res = _c.sent();
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) })];
|
||
case 3:
|
||
e_3 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_3.message
|
||
});
|
||
throw e_3;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Marks the specified blob or snapshot for deletion. The blob is later deleted
|
||
* during garbage collection. Note that in order to delete a blob, you must delete
|
||
* all of its snapshots. You can delete both at the same time with the Delete
|
||
* Blob operation.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob
|
||
*
|
||
* @param options - Optional options to Blob Delete operation.
|
||
*/
|
||
BlobClient.prototype.delete = function (options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_4;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobClient-delete", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
options.conditions = options.conditions || {};
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.blobContext.delete(tslib.__assign({ abortSignal: options.abortSignal, deleteSnapshots: options.deleteSnapshots, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_4 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_4.message
|
||
});
|
||
throw e_4;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Marks the specified blob or snapshot for deletion if it exists. The blob is later deleted
|
||
* during garbage collection. Note that in order to delete a blob, you must delete
|
||
* all of its snapshots. You can delete both at the same time with the Delete
|
||
* Blob operation.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob
|
||
*
|
||
* @param options - Optional options to Blob Delete operation.
|
||
*/
|
||
BlobClient.prototype.deleteIfExists = function (options) {
|
||
var _a, _b;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _c, span, updatedOptions, res, e_5;
|
||
return tslib.__generator(this, function (_d) {
|
||
switch (_d.label) {
|
||
case 0:
|
||
_c = createSpan("BlobClient-deleteIfExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
|
||
_d.label = 1;
|
||
case 1:
|
||
_d.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.delete(updatedOptions)];
|
||
case 2:
|
||
res = _d.sent();
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
|
||
})];
|
||
case 3:
|
||
e_5 = _d.sent();
|
||
if (((_a = e_5.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobNotFound") {
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: "Expected exception when deleting a blob or snapshot only if it exists."
|
||
});
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_5.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_5.response })];
|
||
}
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_5.message
|
||
});
|
||
throw e_5;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Restores the contents and metadata of soft deleted blob and any associated
|
||
* soft deleted snapshots. Undelete Blob is supported only on version 2017-07-29
|
||
* or later.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/undelete-blob
|
||
*
|
||
* @param options - Optional options to Blob Undelete operation.
|
||
*/
|
||
BlobClient.prototype.undelete = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_6;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobClient-undelete", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.blobContext.undelete(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_6 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_6.message
|
||
});
|
||
throw e_6;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Sets system properties on the blob.
|
||
*
|
||
* If no value provided, or no value provided for the specified blob HTTP headers,
|
||
* these blob HTTP headers without a value will be cleared.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties
|
||
*
|
||
* @param blobHTTPHeaders - If no value provided, or no value provided for
|
||
* the specified blob HTTP headers, these blob HTTP
|
||
* headers without a value will be cleared.
|
||
* @param options - Optional options to Blob Set HTTP Headers operation.
|
||
*/
|
||
BlobClient.prototype.setHTTPHeaders = function (blobHTTPHeaders, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_7;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobClient-setHTTPHeaders", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
options.conditions = options.conditions || {};
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.blobContext.setHttpHeaders(tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_7 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_7.message
|
||
});
|
||
throw e_7;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Sets user-defined metadata for the specified blob as one or more name-value pairs.
|
||
*
|
||
* If no option provided, or no metadata defined in the parameter, the blob
|
||
* metadata will be removed.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-metadata
|
||
*
|
||
* @param metadata - Replace existing metadata with this value.
|
||
* If no value provided the existing metadata will be removed.
|
||
* @param options - Optional options to Set Metadata operation.
|
||
*/
|
||
BlobClient.prototype.setMetadata = function (metadata, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_8;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobClient-setMetadata", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
options.conditions = options.conditions || {};
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.blobContext.setMetadata(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_8 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_8.message
|
||
});
|
||
throw e_8;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Sets tags on the underlying blob.
|
||
* A blob can have up to 10 tags. Tag keys must be between 1 and 128 characters. Tag values must be between 0 and 256 characters.
|
||
* Valid tag key and value characters include lower and upper case letters, digits (0-9),
|
||
* space (' '), plus ('+'), minus ('-'), period ('.'), foward slash ('/'), colon (':'), equals ('='), and underscore ('_').
|
||
*
|
||
* @param tags -
|
||
* @param options -
|
||
*/
|
||
BlobClient.prototype.setTags = function (tags, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_9;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobClient-setTags", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.blobContext.setTags(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)), { tags: toBlobTags(tags) }))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_9 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_9.message
|
||
});
|
||
throw e_9;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Gets the tags associated with the underlying blob.
|
||
*
|
||
* @param options -
|
||
*/
|
||
BlobClient.prototype.getTags = function (options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, response, wrappedResponse, e_10;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobClient-getTags", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.blobContext.getTags(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
response = _c.sent();
|
||
wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });
|
||
return [2 /*return*/, wrappedResponse];
|
||
case 3:
|
||
e_10 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_10.message
|
||
});
|
||
throw e_10;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Get a {@link BlobLeaseClient} that manages leases on the blob.
|
||
*
|
||
* @param proposeLeaseId - Initial proposed lease Id.
|
||
* @returns A new BlobLeaseClient object for managing leases on the blob.
|
||
*/
|
||
BlobClient.prototype.getBlobLeaseClient = function (proposeLeaseId) {
|
||
return new BlobLeaseClient(this, proposeLeaseId);
|
||
};
|
||
/**
|
||
* Creates a read-only snapshot of a blob.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/snapshot-blob
|
||
*
|
||
* @param options - Optional options to the Blob Create Snapshot operation.
|
||
*/
|
||
BlobClient.prototype.createSnapshot = function (options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_11;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobClient-createSnapshot", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
options.conditions = options.conditions || {};
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.blobContext.createSnapshot(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_11 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_11.message
|
||
});
|
||
throw e_11;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Asynchronously copies a blob to a destination within the storage account.
|
||
* This method returns a long running operation poller that allows you to wait
|
||
* indefinitely until the copy is completed.
|
||
* You can also cancel a copy before it is completed by calling `cancelOperation` on the poller.
|
||
* Note that the onProgress callback will not be invoked if the operation completes in the first
|
||
* request, and attempting to cancel a completed copy will result in an error being thrown.
|
||
*
|
||
* In version 2012-02-12 and later, the source for a Copy Blob operation can be
|
||
* a committed blob in any Azure storage account.
|
||
* Beginning with version 2015-02-21, the source for a Copy Blob operation can be
|
||
* an Azure file in any Azure storage account.
|
||
* Only storage accounts created on or after June 7th, 2012 allow the Copy Blob
|
||
* operation to copy from another storage account.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob
|
||
*
|
||
* Example using automatic polling:
|
||
*
|
||
* ```js
|
||
* const copyPoller = await blobClient.beginCopyFromURL('url');
|
||
* const result = await copyPoller.pollUntilDone();
|
||
* ```
|
||
*
|
||
* Example using manual polling:
|
||
*
|
||
* ```js
|
||
* const copyPoller = await blobClient.beginCopyFromURL('url');
|
||
* while (!poller.isDone()) {
|
||
* await poller.poll();
|
||
* }
|
||
* const result = copyPoller.getResult();
|
||
* ```
|
||
*
|
||
* Example using progress updates:
|
||
*
|
||
* ```js
|
||
* const copyPoller = await blobClient.beginCopyFromURL('url', {
|
||
* onProgress(state) {
|
||
* console.log(`Progress: ${state.copyProgress}`);
|
||
* }
|
||
* });
|
||
* const result = await copyPoller.pollUntilDone();
|
||
* ```
|
||
*
|
||
* Example using a changing polling interval (default 15 seconds):
|
||
*
|
||
* ```js
|
||
* const copyPoller = await blobClient.beginCopyFromURL('url', {
|
||
* intervalInMs: 1000 // poll blob every 1 second for copy progress
|
||
* });
|
||
* const result = await copyPoller.pollUntilDone();
|
||
* ```
|
||
*
|
||
* Example using copy cancellation:
|
||
*
|
||
* ```js
|
||
* const copyPoller = await blobClient.beginCopyFromURL('url');
|
||
* // cancel operation after starting it.
|
||
* try {
|
||
* await copyPoller.cancelOperation();
|
||
* // calls to get the result now throw PollerCancelledError
|
||
* await copyPoller.getResult();
|
||
* } catch (err) {
|
||
* if (err.name === 'PollerCancelledError') {
|
||
* console.log('The copy was cancelled.');
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* @param copySource - url to the source Azure Blob/File.
|
||
* @param options - Optional options to the Blob Start Copy From URL operation.
|
||
*/
|
||
BlobClient.prototype.beginCopyFromURL = function (copySource, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var client, poller;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
client = {
|
||
abortCopyFromURL: function () {
|
||
var args = [];
|
||
for (var _i = 0; _i < arguments.length; _i++) {
|
||
args[_i] = arguments[_i];
|
||
}
|
||
return _this.abortCopyFromURL.apply(_this, args);
|
||
},
|
||
getProperties: function () {
|
||
var args = [];
|
||
for (var _i = 0; _i < arguments.length; _i++) {
|
||
args[_i] = arguments[_i];
|
||
}
|
||
return _this.getProperties.apply(_this, args);
|
||
},
|
||
startCopyFromURL: function () {
|
||
var args = [];
|
||
for (var _i = 0; _i < arguments.length; _i++) {
|
||
args[_i] = arguments[_i];
|
||
}
|
||
return _this.startCopyFromURL.apply(_this, args);
|
||
}
|
||
};
|
||
poller = new BlobBeginCopyFromUrlPoller({
|
||
blobClient: client,
|
||
copySource: copySource,
|
||
intervalInMs: options.intervalInMs,
|
||
onProgress: options.onProgress,
|
||
resumeFrom: options.resumeFrom,
|
||
startCopyFromURLOptions: options
|
||
});
|
||
// Trigger the startCopyFromURL call by calling poll.
|
||
// Any errors from this method should be surfaced to the user.
|
||
return [4 /*yield*/, poller.poll()];
|
||
case 1:
|
||
// Trigger the startCopyFromURL call by calling poll.
|
||
// Any errors from this method should be surfaced to the user.
|
||
_a.sent();
|
||
return [2 /*return*/, poller];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Aborts a pending asynchronous Copy Blob operation, and leaves a destination blob with zero
|
||
* length and full metadata. Version 2012-02-12 and newer.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/abort-copy-blob
|
||
*
|
||
* @param copyId - Id of the Copy From URL operation.
|
||
* @param options - Optional options to the Blob Abort Copy From URL operation.
|
||
*/
|
||
BlobClient.prototype.abortCopyFromURL = function (copyId, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_12;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobClient-abortCopyFromURL", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.blobContext.abortCopyFromURL(copyId, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_12 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_12.message
|
||
});
|
||
throw e_12;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* The synchronous Copy From URL operation copies a blob or an internet resource to a new blob. It will not
|
||
* return a response until the copy is complete.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob-from-url
|
||
*
|
||
* @param copySource - The source URL to copy from, Shared Access Signature(SAS) maybe needed for authentication
|
||
* @param options -
|
||
*/
|
||
BlobClient.prototype.syncCopyFromURL = function (copySource, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_13;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobClient-syncCopyFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
options.conditions = options.conditions || {};
|
||
options.sourceConditions = options.sourceConditions || {};
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.blobContext.copyFromURL(copySource, tslib.__assign({ abortSignal: options.abortSignal, metadata: options.metadata, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
|
||
sourceIfMatch: options.sourceConditions.ifMatch,
|
||
sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
|
||
sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
|
||
sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
|
||
}, sourceContentMD5: options.sourceContentMD5, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_13 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_13.message
|
||
});
|
||
throw e_13;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Sets the tier on a blob. The operation is allowed on a page blob in a premium
|
||
* storage account and on a block blob in a blob storage account (locally redundant
|
||
* storage only). A premium page blob's tier determines the allowed size, IOPS,
|
||
* and bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive
|
||
* storage type. This operation does not update the blob's ETag.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-tier
|
||
*
|
||
* @param tier - The tier to be set on the blob. Valid values are Hot, Cool, or Archive.
|
||
* @param options - Optional options to the Blob Set Tier operation.
|
||
*/
|
||
BlobClient.prototype.setAccessTier = function (tier, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_14;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobClient-setAccessTier", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.blobContext.setTier(toAccessTier(tier), tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), rehydratePriority: options.rehydratePriority }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_14 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_14.message
|
||
});
|
||
throw e_14;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
BlobClient.prototype.downloadToBuffer = function (param1, param2, param3, param4) {
|
||
if (param4 === void 0) { param4 = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var buffer, offset, count, options, _a, span, updatedOptions, response, transferProgress_1, batch, _loop_1, off, e_15;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
offset = 0;
|
||
count = 0;
|
||
options = param4;
|
||
if (param1 instanceof Buffer) {
|
||
buffer = param1;
|
||
offset = param2 || 0;
|
||
count = typeof param3 === "number" ? param3 : 0;
|
||
}
|
||
else {
|
||
offset = typeof param1 === "number" ? param1 : 0;
|
||
count = typeof param2 === "number" ? param2 : 0;
|
||
options = param3 || {};
|
||
}
|
||
_a = createSpan("BlobClient-downloadToBuffer", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 5, 6, 7]);
|
||
if (!options.blockSize) {
|
||
options.blockSize = 0;
|
||
}
|
||
if (options.blockSize < 0) {
|
||
throw new RangeError("blockSize option must be >= 0");
|
||
}
|
||
if (options.blockSize === 0) {
|
||
options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
|
||
}
|
||
if (offset < 0) {
|
||
throw new RangeError("offset option must be >= 0");
|
||
}
|
||
if (count && count <= 0) {
|
||
throw new RangeError("count option must be greater than 0");
|
||
}
|
||
if (!options.conditions) {
|
||
options.conditions = {};
|
||
}
|
||
if (!!count) return [3 /*break*/, 3];
|
||
return [4 /*yield*/, this.getProperties(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
|
||
case 2:
|
||
response = _b.sent();
|
||
count = response.contentLength - offset;
|
||
if (count < 0) {
|
||
throw new RangeError("offset " + offset + " shouldn't be larger than blob size " + response.contentLength);
|
||
}
|
||
_b.label = 3;
|
||
case 3:
|
||
// Allocate the buffer of size = count if the buffer is not provided
|
||
if (!buffer) {
|
||
try {
|
||
buffer = Buffer.alloc(count);
|
||
}
|
||
catch (error) {
|
||
throw new Error("Unable to allocate the buffer of size: " + count + "(in bytes). Please try passing your own buffer to the \"downloadToBuffer\" method or try using other methods like \"download\" or \"downloadToFile\".\t " + error.message);
|
||
}
|
||
}
|
||
if (buffer.length < count) {
|
||
throw new RangeError("The buffer's size should be equal to or larger than the request count of bytes: " + count);
|
||
}
|
||
transferProgress_1 = 0;
|
||
batch = new Batch(options.concurrency);
|
||
_loop_1 = function (off) {
|
||
batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
|
||
var chunkEnd, response, stream;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
chunkEnd = offset + count;
|
||
if (off + options.blockSize < chunkEnd) {
|
||
chunkEnd = off + options.blockSize;
|
||
}
|
||
return [4 /*yield*/, this.download(off, chunkEnd - off, {
|
||
abortSignal: options.abortSignal,
|
||
conditions: options.conditions,
|
||
maxRetryRequests: options.maxRetryRequestsPerBlock,
|
||
customerProvidedKey: options.customerProvidedKey,
|
||
tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions))
|
||
})];
|
||
case 1:
|
||
response = _a.sent();
|
||
stream = response.readableStreamBody;
|
||
return [4 /*yield*/, streamToBuffer(stream, buffer, off - offset, chunkEnd - offset)];
|
||
case 2:
|
||
_a.sent();
|
||
// Update progress after block is downloaded, in case of block trying
|
||
// Could provide finer grained progress updating inside HTTP requests,
|
||
// only if convenience layer download try is enabled
|
||
transferProgress_1 += chunkEnd - off;
|
||
if (options.onProgress) {
|
||
options.onProgress({ loadedBytes: transferProgress_1 });
|
||
}
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
}); });
|
||
};
|
||
for (off = offset; off < offset + count; off = off + options.blockSize) {
|
||
_loop_1(off);
|
||
}
|
||
return [4 /*yield*/, batch.do()];
|
||
case 4:
|
||
_b.sent();
|
||
return [2 /*return*/, buffer];
|
||
case 5:
|
||
e_15 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_15.message
|
||
});
|
||
throw e_15;
|
||
case 6:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 7: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* Downloads an Azure Blob to a local file.
|
||
* Fails if the the given file path already exits.
|
||
* Offset and count are optional, pass 0 and undefined respectively to download the entire blob.
|
||
*
|
||
* @param filePath -
|
||
* @param offset - From which position of the block blob to download.
|
||
* @param count - How much data to be downloaded. Will download to the end when passing undefined.
|
||
* @param options - Options to Blob download options.
|
||
* @returns The response data for blob download operation,
|
||
* but with readableStreamBody set to undefined since its
|
||
* content is already read and written into a local file
|
||
* at the specified path.
|
||
*/
|
||
BlobClient.prototype.downloadToFile = function (filePath, offset, count, options) {
|
||
if (offset === void 0) { offset = 0; }
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, response, e_16;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobClient-downloadToFile", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 5, 6, 7]);
|
||
return [4 /*yield*/, this.download(offset, count, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
|
||
case 2:
|
||
response = _b.sent();
|
||
if (!response.readableStreamBody) return [3 /*break*/, 4];
|
||
return [4 /*yield*/, readStreamToLocalFile(response.readableStreamBody, filePath)];
|
||
case 3:
|
||
_b.sent();
|
||
_b.label = 4;
|
||
case 4:
|
||
// The stream is no longer accessible so setting it to undefined.
|
||
response.blobDownloadStream = undefined;
|
||
return [2 /*return*/, response];
|
||
case 5:
|
||
e_16 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_16.message
|
||
});
|
||
throw e_16;
|
||
case 6:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 7: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
BlobClient.prototype.getBlobAndContainerNamesFromUrl = function () {
|
||
var containerName;
|
||
var blobName;
|
||
try {
|
||
// URL may look like the following
|
||
// "https://myaccount.blob.core.windows.net/mycontainer/blob?sasString";
|
||
// "https://myaccount.blob.core.windows.net/mycontainer/blob";
|
||
// "https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt?sasString";
|
||
// "https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt";
|
||
// IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername/blob`
|
||
// http://localhost:10001/devstoreaccount1/containername/blob
|
||
var parsedUrl = coreHttp.URLBuilder.parse(this.url);
|
||
if (parsedUrl.getHost().split(".")[1] === "blob") {
|
||
// "https://myaccount.blob.core.windows.net/containername/blob".
|
||
// .getPath() -> /containername/blob
|
||
var pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
|
||
containerName = pathComponents[1];
|
||
blobName = pathComponents[3];
|
||
}
|
||
else if (isIpEndpointStyle(parsedUrl)) {
|
||
// IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername/blob
|
||
// Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername/blob
|
||
// .getPath() -> /devstoreaccount1/containername/blob
|
||
var pathComponents = parsedUrl.getPath().match("/([^/]*)/([^/]*)(/(.*))?");
|
||
containerName = pathComponents[2];
|
||
blobName = pathComponents[4];
|
||
}
|
||
else {
|
||
// "https://customdomain.com/containername/blob".
|
||
// .getPath() -> /containername/blob
|
||
var pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
|
||
containerName = pathComponents[1];
|
||
blobName = pathComponents[3];
|
||
}
|
||
// decode the encoded blobName, containerName - to get all the special characters that might be present in them
|
||
containerName = decodeURIComponent(containerName);
|
||
blobName = decodeURIComponent(blobName);
|
||
// Azure Storage Server will replace "\" with "/" in the blob names
|
||
// doing the same in the SDK side so that the user doesn't have to replace "\" instances in the blobName
|
||
blobName = blobName.replace(/\\/g, "/");
|
||
if (!containerName) {
|
||
throw new Error("Provided containerName is invalid.");
|
||
}
|
||
return { blobName: blobName, containerName: containerName };
|
||
}
|
||
catch (error) {
|
||
throw new Error("Unable to extract blobName and containerName with provided information.");
|
||
}
|
||
};
|
||
/**
|
||
* Asynchronously copies a blob to a destination within the storage account.
|
||
* In version 2012-02-12 and later, the source for a Copy Blob operation can be
|
||
* a committed blob in any Azure storage account.
|
||
* Beginning with version 2015-02-21, the source for a Copy Blob operation can be
|
||
* an Azure file in any Azure storage account.
|
||
* Only storage accounts created on or after June 7th, 2012 allow the Copy Blob
|
||
* operation to copy from another storage account.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob
|
||
*
|
||
* @param copySource - url to the source Azure Blob/File.
|
||
* @param options - Optional options to the Blob Start Copy From URL operation.
|
||
*/
|
||
BlobClient.prototype.startCopyFromURL = function (copySource, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_17;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobClient-startCopyFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
options.conditions = options.conditions || {};
|
||
options.sourceConditions = options.sourceConditions || {};
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.blobContext.startCopyFromURL(copySource, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
|
||
sourceIfMatch: options.sourceConditions.ifMatch,
|
||
sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
|
||
sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
|
||
sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,
|
||
sourceIfTags: options.sourceConditions.tagConditions
|
||
}, rehydratePriority: options.rehydratePriority, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), sealBlob: options.sealBlob }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_17 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_17.message
|
||
});
|
||
throw e_17;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Only available for BlobClient constructed with a shared key credential.
|
||
*
|
||
* Generates a Blob Service Shared Access Signature (SAS) URI based on the client properties
|
||
* and parameters passed in. The SAS is signed by the shared key credential of the client.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
|
||
*
|
||
* @param options - Optional parameters.
|
||
* @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
|
||
*/
|
||
BlobClient.prototype.generateSasUrl = function (options) {
|
||
var _this = this;
|
||
return new Promise(function (resolve) {
|
||
if (!(_this.credential instanceof StorageSharedKeyCredential)) {
|
||
throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential");
|
||
}
|
||
var sas = generateBlobSASQueryParameters(tslib.__assign({ containerName: _this._containerName, blobName: _this._name, snapshotTime: _this._snapshot, versionId: _this._versionId }, options), _this.credential).toString();
|
||
resolve(appendToURLQuery(_this.url, sas));
|
||
});
|
||
};
|
||
return BlobClient;
|
||
}(StorageClient));
|
||
/**
|
||
* AppendBlobClient defines a set of operations applicable to append blobs.
|
||
*/
|
||
var AppendBlobClient = /** @class */ (function (_super) {
|
||
tslib.__extends(AppendBlobClient, _super);
|
||
function AppendBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
|
||
var _this = this;
|
||
// In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
|
||
// super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
|
||
var pipeline;
|
||
var url;
|
||
options = options || {};
|
||
if (credentialOrPipelineOrContainerName instanceof Pipeline) {
|
||
// (url: string, pipeline: Pipeline)
|
||
url = urlOrConnectionString;
|
||
pipeline = credentialOrPipelineOrContainerName;
|
||
}
|
||
else if ((coreHttp.isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||
|
||
credentialOrPipelineOrContainerName instanceof AnonymousCredential ||
|
||
coreHttp.isTokenCredential(credentialOrPipelineOrContainerName)) {
|
||
// (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions) url = urlOrConnectionString;
|
||
url = urlOrConnectionString;
|
||
options = blobNameOrOptions;
|
||
pipeline = newPipeline(credentialOrPipelineOrContainerName, options);
|
||
}
|
||
else if (!credentialOrPipelineOrContainerName &&
|
||
typeof credentialOrPipelineOrContainerName !== "string") {
|
||
// (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)
|
||
url = urlOrConnectionString;
|
||
// The second parameter is undefined. Use anonymous credential.
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else if (credentialOrPipelineOrContainerName &&
|
||
typeof credentialOrPipelineOrContainerName === "string" &&
|
||
blobNameOrOptions &&
|
||
typeof blobNameOrOptions === "string") {
|
||
// (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
|
||
var containerName = credentialOrPipelineOrContainerName;
|
||
var blobName = blobNameOrOptions;
|
||
var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
|
||
if (extractedCreds.kind === "AccountConnString") {
|
||
{
|
||
var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
|
||
url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
|
||
options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
|
||
pipeline = newPipeline(sharedKeyCredential, options);
|
||
}
|
||
}
|
||
else if (extractedCreds.kind === "SASConnString") {
|
||
url =
|
||
appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +
|
||
"?" +
|
||
extractedCreds.accountSas;
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else {
|
||
throw new Error("Connection string must be either an Account connection string or a SAS connection string");
|
||
}
|
||
}
|
||
else {
|
||
throw new Error("Expecting non-empty strings for containerName and blobName parameters");
|
||
}
|
||
_this = _super.call(this, url, pipeline) || this;
|
||
_this.appendBlobContext = new AppendBlob(_this.storageClientContext);
|
||
return _this;
|
||
}
|
||
/**
|
||
* Creates a new AppendBlobClient object identical to the source but with the
|
||
* specified snapshot timestamp.
|
||
* Provide "" will remove the snapshot and return a Client to the base blob.
|
||
*
|
||
* @param snapshot - The snapshot timestamp.
|
||
* @returns A new AppendBlobClient object identical to the source but with the specified snapshot timestamp.
|
||
*/
|
||
AppendBlobClient.prototype.withSnapshot = function (snapshot) {
|
||
return new AppendBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
|
||
};
|
||
/**
|
||
* Creates a 0-length append blob. Call AppendBlock to append data to an append blob.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/put-blob
|
||
*
|
||
* @param options - Options to the Append Block Create operation.
|
||
*
|
||
*
|
||
* Example usage:
|
||
*
|
||
* ```js
|
||
* const appendBlobClient = containerClient.getAppendBlobClient("<blob name>");
|
||
* await appendBlobClient.create();
|
||
* ```
|
||
*/
|
||
AppendBlobClient.prototype.create = function (options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_18;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("AppendBlobClient-create", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
options.conditions = options.conditions || {};
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.appendBlobContext.create(0, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_18 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_18.message
|
||
});
|
||
throw e_18;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Creates a 0-length append blob. Call AppendBlock to append data to an append blob.
|
||
* If the blob with the same name already exists, the content of the existing blob will remain unchanged.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/put-blob
|
||
*
|
||
* @param options -
|
||
*/
|
||
AppendBlobClient.prototype.createIfNotExists = function (options) {
|
||
var _a, _b;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _c, span, updatedOptions, conditions, res, e_19;
|
||
return tslib.__generator(this, function (_d) {
|
||
switch (_d.label) {
|
||
case 0:
|
||
_c = createSpan("AppendBlobClient-createIfNotExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
|
||
conditions = { ifNoneMatch: ETagAny };
|
||
_d.label = 1;
|
||
case 1:
|
||
_d.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.create(tslib.__assign(tslib.__assign({}, updatedOptions), { conditions: conditions }))];
|
||
case 2:
|
||
res = _d.sent();
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
|
||
})];
|
||
case 3:
|
||
e_19 = _d.sent();
|
||
if (((_a = e_19.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: "Expected exception when creating a blob only if it does not already exist."
|
||
});
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_19.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_19.response })];
|
||
}
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_19.message
|
||
});
|
||
throw e_19;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Seals the append blob, making it read only.
|
||
*
|
||
* @param options -
|
||
*/
|
||
AppendBlobClient.prototype.seal = function (options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_20;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("AppendBlobClient-seal", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
options.conditions = options.conditions || {};
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.appendBlobContext.seal(tslib.__assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_20 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_20.message
|
||
});
|
||
throw e_20;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Commits a new block of data to the end of the existing append blob.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/append-block
|
||
*
|
||
* @param body - Data to be appended.
|
||
* @param contentLength - Length of the body in bytes.
|
||
* @param options - Options to the Append Block operation.
|
||
*
|
||
*
|
||
* Example usage:
|
||
*
|
||
* ```js
|
||
* const content = "Hello World!";
|
||
*
|
||
* // Create a new append blob and append data to the blob.
|
||
* const newAppendBlobClient = containerClient.getAppendBlobClient("<blob name>");
|
||
* await newAppendBlobClient.create();
|
||
* await newAppendBlobClient.appendBlock(content, content.length);
|
||
*
|
||
* // Append data to an existing append blob.
|
||
* const existingAppendBlobClient = containerClient.getAppendBlobClient("<blob name>");
|
||
* await existingAppendBlobClient.appendBlock(content, content.length);
|
||
* ```
|
||
*/
|
||
AppendBlobClient.prototype.appendBlock = function (body, contentLength, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_21;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("AppendBlobClient-appendBlock", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
options.conditions = options.conditions || {};
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.appendBlobContext.appendBlock(contentLength, body, tslib.__assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
|
||
onUploadProgress: options.onProgress
|
||
}, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_21 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_21.message
|
||
});
|
||
throw e_21;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* The Append Block operation commits a new block of data to the end of an existing append blob
|
||
* where the contents are read from a source url.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/append-block-from-url
|
||
*
|
||
* @param sourceURL -
|
||
* The url to the blob that will be the source of the copy. A source blob in the same storage account can
|
||
* be authenticated via Shared Key. However, if the source is a blob in another account, the source blob
|
||
* must either be public or must be authenticated via a shared access signature. If the source blob is
|
||
* public, no authentication is required to perform the operation.
|
||
* @param sourceOffset - Offset in source to be appended
|
||
* @param count - Number of bytes to be appended as a block
|
||
* @param options -
|
||
*/
|
||
AppendBlobClient.prototype.appendBlockFromURL = function (sourceURL, sourceOffset, count, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_22;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("AppendBlobClient-appendBlockFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
options.conditions = options.conditions || {};
|
||
options.sourceConditions = options.sourceConditions || {};
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, tslib.__assign({ abortSignal: options.abortSignal, sourceRange: rangeToString({ offset: sourceOffset, count: count }), sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, appendPositionAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
|
||
sourceIfMatch: options.sourceConditions.ifMatch,
|
||
sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
|
||
sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
|
||
sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
|
||
}, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_22 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_22.message
|
||
});
|
||
throw e_22;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return AppendBlobClient;
|
||
}(BlobClient));
|
||
/**
|
||
* BlockBlobClient defines a set of operations applicable to block blobs.
|
||
*/
|
||
var BlockBlobClient = /** @class */ (function (_super) {
|
||
tslib.__extends(BlockBlobClient, _super);
|
||
function BlockBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
|
||
var _this = this;
|
||
// In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
|
||
// super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
|
||
var pipeline;
|
||
var url;
|
||
options = options || {};
|
||
if (credentialOrPipelineOrContainerName instanceof Pipeline) {
|
||
// (url: string, pipeline: Pipeline)
|
||
url = urlOrConnectionString;
|
||
pipeline = credentialOrPipelineOrContainerName;
|
||
}
|
||
else if ((coreHttp.isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||
|
||
credentialOrPipelineOrContainerName instanceof AnonymousCredential ||
|
||
coreHttp.isTokenCredential(credentialOrPipelineOrContainerName)) {
|
||
// (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)
|
||
url = urlOrConnectionString;
|
||
options = blobNameOrOptions;
|
||
pipeline = newPipeline(credentialOrPipelineOrContainerName, options);
|
||
}
|
||
else if (!credentialOrPipelineOrContainerName &&
|
||
typeof credentialOrPipelineOrContainerName !== "string") {
|
||
// (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)
|
||
// The second parameter is undefined. Use anonymous credential.
|
||
url = urlOrConnectionString;
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else if (credentialOrPipelineOrContainerName &&
|
||
typeof credentialOrPipelineOrContainerName === "string" &&
|
||
blobNameOrOptions &&
|
||
typeof blobNameOrOptions === "string") {
|
||
// (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
|
||
var containerName = credentialOrPipelineOrContainerName;
|
||
var blobName = blobNameOrOptions;
|
||
var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
|
||
if (extractedCreds.kind === "AccountConnString") {
|
||
{
|
||
var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
|
||
url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
|
||
options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
|
||
pipeline = newPipeline(sharedKeyCredential, options);
|
||
}
|
||
}
|
||
else if (extractedCreds.kind === "SASConnString") {
|
||
url =
|
||
appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +
|
||
"?" +
|
||
extractedCreds.accountSas;
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else {
|
||
throw new Error("Connection string must be either an Account connection string or a SAS connection string");
|
||
}
|
||
}
|
||
else {
|
||
throw new Error("Expecting non-empty strings for containerName and blobName parameters");
|
||
}
|
||
_this = _super.call(this, url, pipeline) || this;
|
||
_this.blockBlobContext = new BlockBlob(_this.storageClientContext);
|
||
_this._blobContext = new Blob$1(_this.storageClientContext);
|
||
return _this;
|
||
}
|
||
/**
|
||
* Creates a new BlockBlobClient object identical to the source but with the
|
||
* specified snapshot timestamp.
|
||
* Provide "" will remove the snapshot and return a URL to the base blob.
|
||
*
|
||
* @param snapshot - The snapshot timestamp.
|
||
* @returns A new BlockBlobClient object identical to the source but with the specified snapshot timestamp.
|
||
*/
|
||
BlockBlobClient.prototype.withSnapshot = function (snapshot) {
|
||
return new BlockBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
|
||
};
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* Quick query for a JSON or CSV formatted blob.
|
||
*
|
||
* Example usage (Node.js):
|
||
*
|
||
* ```js
|
||
* // Query and convert a blob to a string
|
||
* const queryBlockBlobResponse = await blockBlobClient.query("select * from BlobStorage");
|
||
* const downloaded = (await streamToBuffer(queryBlockBlobResponse.readableStreamBody)).toString();
|
||
* console.log("Query blob content:", downloaded);
|
||
*
|
||
* async function streamToBuffer(readableStream) {
|
||
* return new Promise((resolve, reject) => {
|
||
* const chunks = [];
|
||
* readableStream.on("data", (data) => {
|
||
* chunks.push(data instanceof Buffer ? data : Buffer.from(data));
|
||
* });
|
||
* readableStream.on("end", () => {
|
||
* resolve(Buffer.concat(chunks));
|
||
* });
|
||
* readableStream.on("error", reject);
|
||
* });
|
||
* }
|
||
* ```
|
||
*
|
||
* @param query -
|
||
* @param options -
|
||
*/
|
||
BlockBlobClient.prototype.query = function (query, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, response, e_23;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
_b = createSpan("BlockBlobClient-query", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this._blobContext.query(tslib.__assign({ abortSignal: options.abortSignal, queryRequest: {
|
||
queryType: "SQL",
|
||
expression: query,
|
||
inputSerialization: toQuerySerialization(options.inputTextConfiguration),
|
||
outputSerialization: toQuerySerialization(options.outputTextConfiguration)
|
||
}, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
response = _c.sent();
|
||
return [2 /*return*/, new BlobQueryResponse(response, {
|
||
abortSignal: options.abortSignal,
|
||
onProgress: options.onProgress,
|
||
onError: options.onError
|
||
})];
|
||
case 3:
|
||
e_23 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_23.message
|
||
});
|
||
throw e_23;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Creates a new block blob, or updates the content of an existing block blob.
|
||
* Updating an existing block blob overwrites any existing metadata on the blob.
|
||
* Partial updates are not supported; the content of the existing blob is
|
||
* overwritten with the new content. To perform a partial update of a block blob's,
|
||
* use {@link stageBlock} and {@link commitBlockList}.
|
||
*
|
||
* This is a non-parallel uploading method, please use {@link uploadFile},
|
||
* {@link uploadStream} or {@link uploadBrowserData} for better performance
|
||
* with concurrency uploading.
|
||
*
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/put-blob
|
||
*
|
||
* @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function
|
||
* which returns a new Readable stream whose offset is from data source beginning.
|
||
* @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
|
||
* string including non non-Base64/Hex-encoded characters.
|
||
* @param options - Options to the Block Blob Upload operation.
|
||
* @returns Response data for the Block Blob Upload operation.
|
||
*
|
||
* Example usage:
|
||
*
|
||
* ```js
|
||
* const content = "Hello world!";
|
||
* const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
|
||
* ```
|
||
*/
|
||
BlockBlobClient.prototype.upload = function (body, contentLength, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_24;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_b = createSpan("BlockBlobClient-upload", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.blockBlobContext.upload(contentLength, body, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
|
||
onUploadProgress: options.onProgress
|
||
}, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_24 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_24.message
|
||
});
|
||
throw e_24;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Creates a new Block Blob where the contents of the blob are read from a given URL.
|
||
* This API is supported beginning with the 2020-04-08 version. Partial updates
|
||
* are not supported with Put Blob from URL; the content of an existing blob is overwritten with
|
||
* the content of the new blob. To perform partial updates to a block blob’s contents using a
|
||
* source URL, use {@link stageBlockFromURL} and {@link commitBlockList}.
|
||
*
|
||
* @param sourceURL - Specifies the URL of the blob. The value
|
||
* may be a URL of up to 2 KB in length that specifies a blob.
|
||
* The value should be URL-encoded as it would appear
|
||
* in a request URI. The source blob must either be public
|
||
* or must be authenticated via a shared access signature.
|
||
* If the source blob is public, no authentication is required
|
||
* to perform the operation. Here are some examples of source object URLs:
|
||
* - https://myaccount.blob.core.windows.net/mycontainer/myblob
|
||
* - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
|
||
* @param options - Optional parameters.
|
||
*/
|
||
BlockBlobClient.prototype.syncUploadFromURL = function (sourceURL, options) {
|
||
var _a, _b, _c, _d, _e;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _f, span, updatedOptions, e_25;
|
||
return tslib.__generator(this, function (_g) {
|
||
switch (_g.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_f = createSpan("BlockBlobClient-syncUploadFromURL", options), span = _f.span, updatedOptions = _f.updatedOptions;
|
||
_g.label = 1;
|
||
case 1:
|
||
_g.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.blockBlobContext.putBlobFromUrl(0, sourceURL, tslib.__assign(tslib.__assign(tslib.__assign({}, options), { blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: options.conditions.tagConditions }), sourceModifiedAccessConditions: {
|
||
sourceIfMatch: (_a = options.sourceConditions) === null || _a === void 0 ? void 0 : _a.ifMatch,
|
||
sourceIfModifiedSince: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifModifiedSince,
|
||
sourceIfNoneMatch: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch,
|
||
sourceIfUnmodifiedSince: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifUnmodifiedSince,
|
||
sourceIfTags: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.tagConditions
|
||
}, cpkInfo: options.customerProvidedKey, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }), convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _g.sent()];
|
||
case 3:
|
||
e_25 = _g.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_25.message
|
||
});
|
||
throw e_25;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Uploads the specified block to the block blob's "staging area" to be later
|
||
* committed by a call to commitBlockList.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/put-block
|
||
*
|
||
* @param blockId - A 64-byte value that is base64-encoded
|
||
* @param body - Data to upload to the staging area.
|
||
* @param contentLength - Number of bytes to upload.
|
||
* @param options - Options to the Block Blob Stage Block operation.
|
||
* @returns Response data for the Block Blob Stage Block operation.
|
||
*/
|
||
BlockBlobClient.prototype.stageBlock = function (blockId, body, contentLength, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_26;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlockBlobClient-stageBlock", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.blockBlobContext.stageBlock(blockId, contentLength, body, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, requestOptions: {
|
||
onUploadProgress: options.onProgress
|
||
}, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_26 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_26.message
|
||
});
|
||
throw e_26;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* The Stage Block From URL operation creates a new block to be committed as part
|
||
* of a blob where the contents are read from a URL.
|
||
* This API is available starting in version 2018-03-28.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url
|
||
*
|
||
* @param blockId - A 64-byte value that is base64-encoded
|
||
* @param sourceURL - Specifies the URL of the blob. The value
|
||
* may be a URL of up to 2 KB in length that specifies a blob.
|
||
* The value should be URL-encoded as it would appear
|
||
* in a request URI. The source blob must either be public
|
||
* or must be authenticated via a shared access signature.
|
||
* If the source blob is public, no authentication is required
|
||
* to perform the operation. Here are some examples of source object URLs:
|
||
* - https://myaccount.blob.core.windows.net/mycontainer/myblob
|
||
* - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
|
||
* @param offset - From which position of the blob to download, greater than or equal to 0
|
||
* @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined
|
||
* @param options - Options to the Block Blob Stage Block From URL operation.
|
||
* @returns Response data for the Block Blob Stage Block From URL operation.
|
||
*/
|
||
BlockBlobClient.prototype.stageBlockFromURL = function (blockId, sourceURL, offset, count, options) {
|
||
if (offset === void 0) { offset = 0; }
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_27;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlockBlobClient-stageBlockFromURL", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset: offset, count: count }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_27 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_27.message
|
||
});
|
||
throw e_27;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Writes a blob by specifying the list of block IDs that make up the blob.
|
||
* In order to be written as part of a blob, a block must have been successfully written
|
||
* to the server in a prior {@link stageBlock} operation. You can call {@link commitBlockList} to
|
||
* update a blob by uploading only those blocks that have changed, then committing the new and existing
|
||
* blocks together. Any blocks not specified in the block list and permanently deleted.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/put-block-list
|
||
*
|
||
* @param blocks - Array of 64-byte value that is base64-encoded
|
||
* @param options - Options to the Block Blob Commit Block List operation.
|
||
* @returns Response data for the Block Blob Commit Block List operation.
|
||
*/
|
||
BlockBlobClient.prototype.commitBlockList = function (blocks, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_28;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_b = createSpan("BlockBlobClient-commitBlockList", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.blockBlobContext.commitBlockList({ latest: blocks }, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_28 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_28.message
|
||
});
|
||
throw e_28;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns the list of blocks that have been uploaded as part of a block blob
|
||
* using the specified block list filter.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/get-block-list
|
||
*
|
||
* @param listType - Specifies whether to return the list of committed blocks,
|
||
* the list of uncommitted blocks, or both lists together.
|
||
* @param options - Options to the Block Blob Get Block List operation.
|
||
* @returns Response data for the Block Blob Get Block List operation.
|
||
*/
|
||
BlockBlobClient.prototype.getBlockList = function (listType, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, res, e_29;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlockBlobClient-getBlockList", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.blockBlobContext.getBlockList(listType, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
res = _c.sent();
|
||
if (!res.committedBlocks) {
|
||
res.committedBlocks = [];
|
||
}
|
||
if (!res.uncommittedBlocks) {
|
||
res.uncommittedBlocks = [];
|
||
}
|
||
return [2 /*return*/, res];
|
||
case 3:
|
||
e_29 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_29.message
|
||
});
|
||
throw e_29;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
// High level functions
|
||
/**
|
||
* Uploads a Buffer(Node.js)/Blob(browsers)/ArrayBuffer/ArrayBufferView object to a BlockBlob.
|
||
*
|
||
* When data length is no more than the specifiled {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is
|
||
* {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.
|
||
* Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}
|
||
* to commit the block list.
|
||
*
|
||
* @param data - Buffer(Node.js), Blob, ArrayBuffer or ArrayBufferView
|
||
* @param options -
|
||
*/
|
||
BlockBlobClient.prototype.uploadData = function (data, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, buffer_1, browserBlob_1;
|
||
return tslib.__generator(this, function (_b) {
|
||
_a = createSpan("BlockBlobClient-uploadData", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
try {
|
||
if (true) {
|
||
if (data instanceof Buffer) {
|
||
buffer_1 = data;
|
||
}
|
||
else if (data instanceof ArrayBuffer) {
|
||
buffer_1 = Buffer.from(data);
|
||
}
|
||
else {
|
||
data = data;
|
||
buffer_1 = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
|
||
}
|
||
return [2 /*return*/, this.uploadSeekableInternal(function (offset, size) { return buffer_1.slice(offset, offset + size); }, buffer_1.byteLength, updatedOptions)];
|
||
}
|
||
else {}
|
||
}
|
||
catch (e) {
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e.message
|
||
});
|
||
throw e;
|
||
}
|
||
finally {
|
||
span.end();
|
||
}
|
||
return [2 /*return*/];
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* ONLY AVAILABLE IN BROWSERS.
|
||
*
|
||
* Uploads a browser Blob/File/ArrayBuffer/ArrayBufferView object to block blob.
|
||
*
|
||
* When buffer length lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.
|
||
* Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call
|
||
* {@link commitBlockList} to commit the block list.
|
||
*
|
||
* @deprecated Use {@link uploadData} instead.
|
||
*
|
||
* @param browserData - Blob, File, ArrayBuffer or ArrayBufferView
|
||
* @param options - Options to upload browser data.
|
||
* @returns Response data for the Blob Upload operation.
|
||
*/
|
||
BlockBlobClient.prototype.uploadBrowserData = function (browserData, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, browserBlob_2, e_30;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlockBlobClient-uploadBrowserData", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
browserBlob_2 = new Blob([browserData]);
|
||
return [4 /*yield*/, this.uploadSeekableInternal(function (offset, size) { return browserBlob_2.slice(offset, offset + size); }, browserBlob_2.size, updatedOptions)];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_30 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_30.message
|
||
});
|
||
throw e_30;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
*
|
||
* Uploads data to block blob. Requires a bodyFactory as the data source,
|
||
* which need to return a {@link HttpRequestBody} object with the offset and size provided.
|
||
*
|
||
* When data length is no more than the specifiled {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is
|
||
* {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.
|
||
* Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}
|
||
* to commit the block list.
|
||
*
|
||
* @param bodyFactory -
|
||
* @param size - size of the data to upload.
|
||
* @param options - Options to Upload to Block Blob operation.
|
||
* @returns Response data for the Blob Upload operation.
|
||
*/
|
||
BlockBlobClient.prototype.uploadSeekableInternal = function (bodyFactory, size, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, numBlocks_1, blockList_1, blockIDPrefix_1, transferProgress_2, batch, _loop_2, i, e_31;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (!options.blockSize) {
|
||
options.blockSize = 0;
|
||
}
|
||
if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
|
||
throw new RangeError("blockSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES);
|
||
}
|
||
if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
|
||
options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
|
||
}
|
||
if (options.maxSingleShotSize < 0 ||
|
||
options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
|
||
throw new RangeError("maxSingleShotSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES);
|
||
}
|
||
if (options.blockSize === 0) {
|
||
if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {
|
||
throw new RangeError(size + " is too larger to upload to a block blob.");
|
||
}
|
||
if (size > options.maxSingleShotSize) {
|
||
options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
|
||
if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
|
||
options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
|
||
}
|
||
}
|
||
}
|
||
if (!options.blobHTTPHeaders) {
|
||
options.blobHTTPHeaders = {};
|
||
}
|
||
if (!options.conditions) {
|
||
options.conditions = {};
|
||
}
|
||
_a = createSpan("BlockBlobClient-uploadSeekableInternal", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 5, 6, 7]);
|
||
if (!(size <= options.maxSingleShotSize)) return [3 /*break*/, 3];
|
||
return [4 /*yield*/, this.upload(bodyFactory(0, size), size, updatedOptions)];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
numBlocks_1 = Math.floor((size - 1) / options.blockSize) + 1;
|
||
if (numBlocks_1 > BLOCK_BLOB_MAX_BLOCKS) {
|
||
throw new RangeError("The buffer's size is too big or the BlockSize is too small;" +
|
||
("the number of blocks must be <= " + BLOCK_BLOB_MAX_BLOCKS));
|
||
}
|
||
blockList_1 = [];
|
||
blockIDPrefix_1 = coreHttp.generateUuid();
|
||
transferProgress_2 = 0;
|
||
batch = new Batch(options.concurrency);
|
||
_loop_2 = function (i) {
|
||
batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
|
||
var blockID, start, end, contentLength;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
blockID = generateBlockID(blockIDPrefix_1, i);
|
||
start = options.blockSize * i;
|
||
end = i === numBlocks_1 - 1 ? size : start + options.blockSize;
|
||
contentLength = end - start;
|
||
blockList_1.push(blockID);
|
||
return [4 /*yield*/, this.stageBlock(blockID, bodyFactory(start, contentLength), contentLength, {
|
||
abortSignal: options.abortSignal,
|
||
conditions: options.conditions,
|
||
encryptionScope: options.encryptionScope,
|
||
tracingOptions: updatedOptions.tracingOptions
|
||
})];
|
||
case 1:
|
||
_a.sent();
|
||
// Update progress after block is successfully uploaded to server, in case of block trying
|
||
// TODO: Hook with convenience layer progress event in finer level
|
||
transferProgress_2 += contentLength;
|
||
if (options.onProgress) {
|
||
options.onProgress({
|
||
loadedBytes: transferProgress_2
|
||
});
|
||
}
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
}); });
|
||
};
|
||
for (i = 0; i < numBlocks_1; i++) {
|
||
_loop_2(i);
|
||
}
|
||
return [4 /*yield*/, batch.do()];
|
||
case 4:
|
||
_b.sent();
|
||
return [2 /*return*/, this.commitBlockList(blockList_1, updatedOptions)];
|
||
case 5:
|
||
e_31 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_31.message
|
||
});
|
||
throw e_31;
|
||
case 6:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 7: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* Uploads a local file in blocks to a block blob.
|
||
*
|
||
* When file size lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.
|
||
* Otherwise, this method will call stageBlock to upload blocks, and finally call commitBlockList
|
||
* to commit the block list.
|
||
*
|
||
* @param filePath - Full path of local file
|
||
* @param options - Options to Upload to Block Blob operation.
|
||
* @returns Response data for the Blob Upload operation.
|
||
*/
|
||
BlockBlobClient.prototype.uploadFile = function (filePath, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, size, e_32;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlockBlobClient-uploadFile", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 4, 5, 6]);
|
||
return [4 /*yield*/, fsStat(filePath)];
|
||
case 2:
|
||
size = (_b.sent()).size;
|
||
return [4 /*yield*/, this.uploadSeekableInternal(function (offset, count) {
|
||
return function () {
|
||
return fsCreateReadStream(filePath, {
|
||
autoClose: true,
|
||
end: count ? offset + count - 1 : Infinity,
|
||
start: offset
|
||
});
|
||
};
|
||
}, size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
|
||
case 3: return [2 /*return*/, _b.sent()];
|
||
case 4:
|
||
e_32 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_32.message
|
||
});
|
||
throw e_32;
|
||
case 5:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 6: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* Uploads a Node.js Readable stream into block blob.
|
||
*
|
||
* PERFORMANCE IMPROVEMENT TIPS:
|
||
* * Input stream highWaterMark is better to set a same value with bufferSize
|
||
* parameter, which will avoid Buffer.concat() operations.
|
||
*
|
||
* @param stream - Node.js Readable stream
|
||
* @param bufferSize - Size of every buffer allocated, also the block size in the uploaded block blob. Default value is 8MB
|
||
* @param maxConcurrency - Max concurrency indicates the max number of buffers that can be allocated,
|
||
* positive correlation with max uploading concurrency. Default value is 5
|
||
* @param options - Options to Upload Stream to Block Blob operation.
|
||
* @returns Response data for the Blob Upload operation.
|
||
*/
|
||
BlockBlobClient.prototype.uploadStream = function (stream, bufferSize, maxConcurrency, options) {
|
||
if (bufferSize === void 0) { bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES; }
|
||
if (maxConcurrency === void 0) { maxConcurrency = 5; }
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, blockNum_1, blockIDPrefix_2, transferProgress_3, blockList_2, scheduler, e_33;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (!options.blobHTTPHeaders) {
|
||
options.blobHTTPHeaders = {};
|
||
}
|
||
if (!options.conditions) {
|
||
options.conditions = {};
|
||
}
|
||
_a = createSpan("BlockBlobClient-uploadStream", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 4, 5, 6]);
|
||
blockNum_1 = 0;
|
||
blockIDPrefix_2 = coreHttp.generateUuid();
|
||
transferProgress_3 = 0;
|
||
blockList_2 = [];
|
||
scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, function (body, length) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
||
var blockID;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
blockID = generateBlockID(blockIDPrefix_2, blockNum_1);
|
||
blockList_2.push(blockID);
|
||
blockNum_1++;
|
||
return [4 /*yield*/, this.stageBlock(blockID, body, length, {
|
||
conditions: options.conditions,
|
||
encryptionScope: options.encryptionScope,
|
||
tracingOptions: updatedOptions.tracingOptions
|
||
})];
|
||
case 1:
|
||
_a.sent();
|
||
// Update progress after block is successfully uploaded to server, in case of block trying
|
||
transferProgress_3 += length;
|
||
if (options.onProgress) {
|
||
options.onProgress({ loadedBytes: transferProgress_3 });
|
||
}
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
}); },
|
||
// concurrency should set a smaller value than maxConcurrency, which is helpful to
|
||
// reduce the possibility when a outgoing handler waits for stream data, in
|
||
// this situation, outgoing handlers are blocked.
|
||
// Outgoing queue shouldn't be empty.
|
||
Math.ceil((maxConcurrency / 4) * 3));
|
||
return [4 /*yield*/, scheduler.do()];
|
||
case 2:
|
||
_b.sent();
|
||
return [4 /*yield*/, this.commitBlockList(blockList_2, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
|
||
case 3: return [2 /*return*/, _b.sent()];
|
||
case 4:
|
||
e_33 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_33.message
|
||
});
|
||
throw e_33;
|
||
case 5:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 6: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return BlockBlobClient;
|
||
}(BlobClient));
|
||
/**
|
||
* PageBlobClient defines a set of operations applicable to page blobs.
|
||
*/
|
||
var PageBlobClient = /** @class */ (function (_super) {
|
||
tslib.__extends(PageBlobClient, _super);
|
||
function PageBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
|
||
var _this = this;
|
||
// In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
|
||
// super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
|
||
var pipeline;
|
||
var url;
|
||
options = options || {};
|
||
if (credentialOrPipelineOrContainerName instanceof Pipeline) {
|
||
// (url: string, pipeline: Pipeline)
|
||
url = urlOrConnectionString;
|
||
pipeline = credentialOrPipelineOrContainerName;
|
||
}
|
||
else if ((coreHttp.isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||
|
||
credentialOrPipelineOrContainerName instanceof AnonymousCredential ||
|
||
coreHttp.isTokenCredential(credentialOrPipelineOrContainerName)) {
|
||
// (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)
|
||
url = urlOrConnectionString;
|
||
options = blobNameOrOptions;
|
||
pipeline = newPipeline(credentialOrPipelineOrContainerName, options);
|
||
}
|
||
else if (!credentialOrPipelineOrContainerName &&
|
||
typeof credentialOrPipelineOrContainerName !== "string") {
|
||
// (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)
|
||
// The second parameter is undefined. Use anonymous credential.
|
||
url = urlOrConnectionString;
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else if (credentialOrPipelineOrContainerName &&
|
||
typeof credentialOrPipelineOrContainerName === "string" &&
|
||
blobNameOrOptions &&
|
||
typeof blobNameOrOptions === "string") {
|
||
// (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
|
||
var containerName = credentialOrPipelineOrContainerName;
|
||
var blobName = blobNameOrOptions;
|
||
var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
|
||
if (extractedCreds.kind === "AccountConnString") {
|
||
{
|
||
var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
|
||
url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
|
||
options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
|
||
pipeline = newPipeline(sharedKeyCredential, options);
|
||
}
|
||
}
|
||
else if (extractedCreds.kind === "SASConnString") {
|
||
url =
|
||
appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +
|
||
"?" +
|
||
extractedCreds.accountSas;
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else {
|
||
throw new Error("Connection string must be either an Account connection string or a SAS connection string");
|
||
}
|
||
}
|
||
else {
|
||
throw new Error("Expecting non-empty strings for containerName and blobName parameters");
|
||
}
|
||
_this = _super.call(this, url, pipeline) || this;
|
||
_this.pageBlobContext = new PageBlob(_this.storageClientContext);
|
||
return _this;
|
||
}
|
||
/**
|
||
* Creates a new PageBlobClient object identical to the source but with the
|
||
* specified snapshot timestamp.
|
||
* Provide "" will remove the snapshot and return a Client to the base blob.
|
||
*
|
||
* @param snapshot - The snapshot timestamp.
|
||
* @returns A new PageBlobClient object identical to the source but with the specified snapshot timestamp.
|
||
*/
|
||
PageBlobClient.prototype.withSnapshot = function (snapshot) {
|
||
return new PageBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
|
||
};
|
||
/**
|
||
* Creates a page blob of the specified length. Call uploadPages to upload data
|
||
* data to a page blob.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/put-blob
|
||
*
|
||
* @param size - size of the page blob.
|
||
* @param options - Options to the Page Blob Create operation.
|
||
* @returns Response data for the Page Blob Create operation.
|
||
*/
|
||
PageBlobClient.prototype.create = function (size, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_34;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_b = createSpan("PageBlobClient-create", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.pageBlobContext.create(0, size, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, blobSequenceNumber: options.blobSequenceNumber, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_34 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_34.message
|
||
});
|
||
throw e_34;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Creates a page blob of the specified length. Call uploadPages to upload data
|
||
* data to a page blob. If the blob with the same name already exists, the content
|
||
* of the existing blob will remain unchanged.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/put-blob
|
||
*
|
||
* @param size - size of the page blob.
|
||
* @param options -
|
||
*/
|
||
PageBlobClient.prototype.createIfNotExists = function (size, options) {
|
||
var _a, _b;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _c, span, updatedOptions, conditions, res, e_35;
|
||
return tslib.__generator(this, function (_d) {
|
||
switch (_d.label) {
|
||
case 0:
|
||
_c = createSpan("PageBlobClient-createIfNotExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
|
||
_d.label = 1;
|
||
case 1:
|
||
_d.trys.push([1, 3, 4, 5]);
|
||
conditions = { ifNoneMatch: ETagAny };
|
||
return [4 /*yield*/, this.create(size, tslib.__assign(tslib.__assign({}, options), { conditions: conditions, tracingOptions: updatedOptions.tracingOptions }))];
|
||
case 2:
|
||
res = _d.sent();
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
|
||
})];
|
||
case 3:
|
||
e_35 = _d.sent();
|
||
if (((_a = e_35.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: "Expected exception when creating a blob only if it does not already exist."
|
||
});
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_35.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_35.response })];
|
||
}
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_35.message
|
||
});
|
||
throw e_35;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Writes 1 or more pages to the page blob. The start and end offsets must be a multiple of 512.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/put-page
|
||
*
|
||
* @param body - Data to upload
|
||
* @param offset - Offset of destination page blob
|
||
* @param count - Content length of the body, also number of bytes to be uploaded
|
||
* @param options - Options to the Page Blob Upload Pages operation.
|
||
* @returns Response data for the Page Blob Upload Pages operation.
|
||
*/
|
||
PageBlobClient.prototype.uploadPages = function (body, offset, count, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_36;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_b = createSpan("PageBlobClient-uploadPages", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.pageBlobContext.uploadPages(count, body, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
|
||
onUploadProgress: options.onProgress
|
||
}, range: rangeToString({ offset: offset, count: count }), sequenceNumberAccessConditions: options.conditions, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_36 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_36.message
|
||
});
|
||
throw e_36;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* The Upload Pages operation writes a range of pages to a page blob where the
|
||
* contents are read from a URL.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-page-from-url
|
||
*
|
||
* @param sourceURL - Specify a URL to the copy source, Shared Access Signature(SAS) maybe needed for authentication
|
||
* @param sourceOffset - The source offset to copy from. Pass 0 to copy from the beginning of source page blob
|
||
* @param destOffset - Offset of destination page blob
|
||
* @param count - Number of bytes to be uploaded from source page blob
|
||
* @param options -
|
||
*/
|
||
PageBlobClient.prototype.uploadPagesFromURL = function (sourceURL, sourceOffset, destOffset, count, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_37;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
options.sourceConditions = options.sourceConditions || {};
|
||
_b = createSpan("PageBlobClient-uploadPagesFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
|
||
return [4 /*yield*/, this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count: count }), 0, rangeToString({ offset: destOffset, count: count }), tslib.__assign({ abortSignal: options.abortSignal, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, sequenceNumberAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
|
||
sourceIfMatch: options.sourceConditions.ifMatch,
|
||
sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
|
||
sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
|
||
sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
|
||
}, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_37 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_37.message
|
||
});
|
||
throw e_37;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Frees the specified pages from the page blob.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/put-page
|
||
*
|
||
* @param offset - Starting byte position of the pages to clear.
|
||
* @param count - Number of bytes to clear.
|
||
* @param options - Options to the Page Blob Clear Pages operation.
|
||
* @returns Response data for the Page Blob Clear Pages operation.
|
||
*/
|
||
PageBlobClient.prototype.clearPages = function (offset, count, options) {
|
||
var _a;
|
||
if (offset === void 0) { offset = 0; }
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_38;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_b = createSpan("PageBlobClient-clearPages", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.pageBlobContext.clearPages(0, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset: offset, count: count }), sequenceNumberAccessConditions: options.conditions, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_38 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_38.message
|
||
});
|
||
throw e_38;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns the list of valid page ranges for a page blob or snapshot of a page blob.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
|
||
*
|
||
* @param offset - Starting byte position of the page ranges.
|
||
* @param count - Number of bytes to get.
|
||
* @param options - Options to the Page Blob Get Ranges operation.
|
||
* @returns Response data for the Page Blob Get Ranges operation.
|
||
*/
|
||
PageBlobClient.prototype.getPageRanges = function (offset, count, options) {
|
||
var _a;
|
||
if (offset === void 0) { offset = 0; }
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_39;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_b = createSpan("PageBlobClient-getPageRanges", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.pageBlobContext
|
||
.getPageRanges(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset: offset, count: count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
|
||
.then(rangeResponseFromModel)];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_39 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_39.message
|
||
});
|
||
throw e_39;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Gets the collection of page ranges that differ between a specified snapshot and this page blob.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
|
||
*
|
||
* @param offset - Starting byte position of the page blob
|
||
* @param count - Number of bytes to get ranges diff.
|
||
* @param prevSnapshot - Timestamp of snapshot to retrieve the difference.
|
||
* @param options - Options to the Page Blob Get Page Ranges Diff operation.
|
||
* @returns Response data for the Page Blob Get Page Range Diff operation.
|
||
*/
|
||
PageBlobClient.prototype.getPageRangesDiff = function (offset, count, prevSnapshot, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_40;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_b = createSpan("PageBlobClient-getPageRangesDiff", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.pageBlobContext
|
||
.getPageRangesDiff(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevsnapshot: prevSnapshot, range: rangeToString({ offset: offset, count: count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
|
||
.then(rangeResponseFromModel)];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_40 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_40.message
|
||
});
|
||
throw e_40;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Gets the collection of page ranges that differ between a specified snapshot and this page blob for managed disks.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
|
||
*
|
||
* @param offset - Starting byte position of the page blob
|
||
* @param count - Number of bytes to get ranges diff.
|
||
* @param prevSnapshotUrl - URL of snapshot to retrieve the difference.
|
||
* @param options - Options to the Page Blob Get Page Ranges Diff operation.
|
||
* @returns Response data for the Page Blob Get Page Range Diff operation.
|
||
*/
|
||
PageBlobClient.prototype.getPageRangesDiffForManagedDisks = function (offset, count, prevSnapshotUrl, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_41;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_b = createSpan("PageBlobClient-GetPageRangesDiffForManagedDisks", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.pageBlobContext
|
||
.getPageRangesDiff(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevSnapshotUrl: prevSnapshotUrl, range: rangeToString({ offset: offset, count: count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
|
||
.then(rangeResponseFromModel)];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_41 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_41.message
|
||
});
|
||
throw e_41;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Resizes the page blob to the specified size (which must be a multiple of 512).
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties
|
||
*
|
||
* @param size - Target size
|
||
* @param options - Options to the Page Blob Resize operation.
|
||
* @returns Response data for the Page Blob Resize operation.
|
||
*/
|
||
PageBlobClient.prototype.resize = function (size, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_42;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_b = createSpan("PageBlobClient-resize", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.pageBlobContext.resize(size, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_42 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_42.message
|
||
});
|
||
throw e_42;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Sets a page blob's sequence number.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties
|
||
*
|
||
* @param sequenceNumberAction - Indicates how the service should modify the blob's sequence number.
|
||
* @param sequenceNumber - Required if sequenceNumberAction is max or update
|
||
* @param options - Options to the Page Blob Update Sequence Number operation.
|
||
* @returns Response data for the Page Blob Update Sequence Number operation.
|
||
*/
|
||
PageBlobClient.prototype.updateSequenceNumber = function (sequenceNumberAction, sequenceNumber, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_43;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_b = createSpan("PageBlobClient-updateSequenceNumber", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, tslib.__assign({ abortSignal: options.abortSignal, blobSequenceNumber: sequenceNumber, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_43 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_43.message
|
||
});
|
||
throw e_43;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Begins an operation to start an incremental copy from one page blob's snapshot to this page blob.
|
||
* The snapshot is copied such that only the differential changes between the previously
|
||
* copied snapshot are transferred to the destination.
|
||
* The copied snapshots are complete copies of the original snapshot and can be read or copied from as usual.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/incremental-copy-blob
|
||
* @see https://docs.microsoft.com/en-us/azure/virtual-machines/windows/incremental-snapshots
|
||
*
|
||
* @param copySource - Specifies the name of the source page blob snapshot. For example,
|
||
* https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
|
||
* @param options - Options to the Page Blob Copy Incremental operation.
|
||
* @returns Response data for the Page Blob Copy Incremental operation.
|
||
*/
|
||
PageBlobClient.prototype.startCopyIncremental = function (copySource, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, e_44;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("PageBlobClient-startCopyIncremental", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.pageBlobContext.copyIncremental(copySource, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_44 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_44.message
|
||
});
|
||
throw e_44;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return PageBlobClient;
|
||
}(BlobClient));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function getBodyAsText(batchResponse) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var buffer, responseLength;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
buffer = Buffer.alloc(BATCH_MAX_PAYLOAD_IN_BYTES);
|
||
return [4 /*yield*/, streamToBuffer2(batchResponse.readableStreamBody, buffer)];
|
||
case 1:
|
||
responseLength = _a.sent();
|
||
// Slice the buffer to trim the empty ending.
|
||
buffer = buffer.slice(0, responseLength);
|
||
return [2 /*return*/, buffer.toString()];
|
||
}
|
||
});
|
||
});
|
||
}
|
||
function utf8ByteLength(str) {
|
||
return Buffer.byteLength(str);
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var HTTP_HEADER_DELIMITER = ": ";
|
||
var SPACE_DELIMITER = " ";
|
||
var NOT_FOUND = -1;
|
||
/**
|
||
* Util class for parsing batch response.
|
||
*/
|
||
var BatchResponseParser = /** @class */ (function () {
|
||
function BatchResponseParser(batchResponse, subRequests) {
|
||
if (!batchResponse || !batchResponse.contentType) {
|
||
// In special case(reported), server may return invalid content-type which could not be parsed.
|
||
throw new RangeError("batchResponse is malformed or doesn't contain valid content-type.");
|
||
}
|
||
if (!subRequests || subRequests.size === 0) {
|
||
// This should be prevent during coding.
|
||
throw new RangeError("Invalid state: subRequests is not provided or size is 0.");
|
||
}
|
||
this.batchResponse = batchResponse;
|
||
this.subRequests = subRequests;
|
||
this.responseBatchBoundary = this.batchResponse.contentType.split("=")[1];
|
||
this.perResponsePrefix = "--" + this.responseBatchBoundary + HTTP_LINE_ENDING;
|
||
this.batchResponseEnding = "--" + this.responseBatchBoundary + "--";
|
||
}
|
||
// For example of response, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#response
|
||
BatchResponseParser.prototype.parseBatchResponse = function () {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var responseBodyAsText, subResponses, subResponseCount, deserializedSubResponses, subResponsesSucceededCount, subResponsesFailedCount, index, subResponse, deserializedSubResponse, responseLines, subRespHeaderStartFound, subRespHeaderEndFound, subRespFailed, contentId, _i, responseLines_1, responseLine, tokens, tokens;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
// When logic reach here, suppose batch request has already succeeded with 202, so we can further parse
|
||
// sub request's response.
|
||
if (this.batchResponse._response.status != HTTPURLConnection.HTTP_ACCEPTED) {
|
||
throw new Error("Invalid state: batch request failed with status: '" + this.batchResponse._response.status + "'.");
|
||
}
|
||
return [4 /*yield*/, getBodyAsText(this.batchResponse)];
|
||
case 1:
|
||
responseBodyAsText = _a.sent();
|
||
subResponses = responseBodyAsText
|
||
.split(this.batchResponseEnding)[0] // string after ending is useless
|
||
.split(this.perResponsePrefix)
|
||
.slice(1);
|
||
subResponseCount = subResponses.length;
|
||
// Defensive coding in case of potential error parsing.
|
||
// Note: subResponseCount == 1 is special case where sub request is invalid.
|
||
// We try to prevent such cases through early validation, e.g. validate sub request count >= 1.
|
||
// While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.
|
||
if (subResponseCount != this.subRequests.size && subResponseCount != 1) {
|
||
throw new Error("Invalid state: sub responses' count is not equal to sub requests' count.");
|
||
}
|
||
deserializedSubResponses = new Array(subResponseCount);
|
||
subResponsesSucceededCount = 0;
|
||
subResponsesFailedCount = 0;
|
||
// Parse sub subResponses.
|
||
for (index = 0; index < subResponseCount; index++) {
|
||
subResponse = subResponses[index];
|
||
deserializedSubResponse = {};
|
||
deserializedSubResponse.headers = new coreHttp.HttpHeaders();
|
||
responseLines = subResponse.split("" + HTTP_LINE_ENDING);
|
||
subRespHeaderStartFound = false;
|
||
subRespHeaderEndFound = false;
|
||
subRespFailed = false;
|
||
contentId = NOT_FOUND;
|
||
for (_i = 0, responseLines_1 = responseLines; _i < responseLines_1.length; _i++) {
|
||
responseLine = responseLines_1[_i];
|
||
if (!subRespHeaderStartFound) {
|
||
// Convention line to indicate content ID
|
||
if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {
|
||
contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);
|
||
}
|
||
// Http version line with status code indicates the start of sub request's response.
|
||
// Example: HTTP/1.1 202 Accepted
|
||
if (responseLine.startsWith(HTTP_VERSION_1_1)) {
|
||
subRespHeaderStartFound = true;
|
||
tokens = responseLine.split(SPACE_DELIMITER);
|
||
deserializedSubResponse.status = parseInt(tokens[1]);
|
||
deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);
|
||
}
|
||
continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *
|
||
}
|
||
if (responseLine.trim() === "") {
|
||
// Sub response's header start line already found, and the first empty line indicates header end line found.
|
||
if (!subRespHeaderEndFound) {
|
||
subRespHeaderEndFound = true;
|
||
}
|
||
continue; // Skip empty line
|
||
}
|
||
// Note: when code reach here, it indicates subRespHeaderStartFound == true
|
||
if (!subRespHeaderEndFound) {
|
||
if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {
|
||
// Defensive coding to prevent from missing valuable lines.
|
||
throw new Error("Invalid state: find non-empty line '" + responseLine + "' without HTTP header delimiter '" + HTTP_HEADER_DELIMITER + "'.");
|
||
}
|
||
tokens = responseLine.split(HTTP_HEADER_DELIMITER);
|
||
deserializedSubResponse.headers.set(tokens[0], tokens[1]);
|
||
if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {
|
||
deserializedSubResponse.errorCode = tokens[1];
|
||
subRespFailed = true;
|
||
}
|
||
}
|
||
else {
|
||
// Assemble body of sub response.
|
||
if (!deserializedSubResponse.bodyAsText) {
|
||
deserializedSubResponse.bodyAsText = "";
|
||
}
|
||
deserializedSubResponse.bodyAsText += responseLine;
|
||
}
|
||
} // Inner for end
|
||
// The response will contain the Content-ID header for each corresponding subrequest response to use for tracking.
|
||
// The Content-IDs are set to a valid index in the subrequests we sent. In the status code 202 path, we could expect it
|
||
// to be 1-1 mapping from the [0, subRequests.size) to the Content-IDs returned. If not, we simply don't return that
|
||
// unexpected subResponse in the parsed reponse and we can always look it up in the raw response for debugging purpose.
|
||
if (contentId != NOT_FOUND &&
|
||
Number.isInteger(contentId) &&
|
||
contentId >= 0 &&
|
||
contentId < this.subRequests.size &&
|
||
deserializedSubResponses[contentId] === undefined) {
|
||
deserializedSubResponse._request = this.subRequests.get(contentId);
|
||
deserializedSubResponses[contentId] = deserializedSubResponse;
|
||
}
|
||
else {
|
||
logger.error("subResponses[" + index + "] is dropped as the Content-ID is not found or invalid, Content-ID: " + contentId);
|
||
}
|
||
if (subRespFailed) {
|
||
subResponsesFailedCount++;
|
||
}
|
||
else {
|
||
subResponsesSucceededCount++;
|
||
}
|
||
}
|
||
return [2 /*return*/, {
|
||
subResponses: deserializedSubResponses,
|
||
subResponsesSucceededCount: subResponsesSucceededCount,
|
||
subResponsesFailedCount: subResponsesFailedCount
|
||
}];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return BatchResponseParser;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var MutexLockStatus;
|
||
(function (MutexLockStatus) {
|
||
MutexLockStatus[MutexLockStatus["LOCKED"] = 0] = "LOCKED";
|
||
MutexLockStatus[MutexLockStatus["UNLOCKED"] = 1] = "UNLOCKED";
|
||
})(MutexLockStatus || (MutexLockStatus = {}));
|
||
/**
|
||
* An async mutex lock.
|
||
*/
|
||
var Mutex = /** @class */ (function () {
|
||
function Mutex() {
|
||
}
|
||
/**
|
||
* Lock for a specific key. If the lock has been acquired by another customer, then
|
||
* will wait until getting the lock.
|
||
*
|
||
* @param key - lock key
|
||
*/
|
||
Mutex.lock = function (key) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, new Promise(function (resolve) {
|
||
if (_this.keys[key] === undefined || _this.keys[key] === MutexLockStatus.UNLOCKED) {
|
||
_this.keys[key] = MutexLockStatus.LOCKED;
|
||
resolve();
|
||
}
|
||
else {
|
||
_this.onUnlockEvent(key, function () {
|
||
_this.keys[key] = MutexLockStatus.LOCKED;
|
||
resolve();
|
||
});
|
||
}
|
||
})];
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Unlock a key.
|
||
*
|
||
* @param key -
|
||
*/
|
||
Mutex.unlock = function (key) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, new Promise(function (resolve) {
|
||
if (_this.keys[key] === MutexLockStatus.LOCKED) {
|
||
_this.emitUnlockEvent(key);
|
||
}
|
||
delete _this.keys[key];
|
||
resolve();
|
||
})];
|
||
});
|
||
});
|
||
};
|
||
Mutex.onUnlockEvent = function (key, handler) {
|
||
if (this.listeners[key] === undefined) {
|
||
this.listeners[key] = [handler];
|
||
}
|
||
else {
|
||
this.listeners[key].push(handler);
|
||
}
|
||
};
|
||
Mutex.emitUnlockEvent = function (key) {
|
||
var _this = this;
|
||
if (this.listeners[key] !== undefined && this.listeners[key].length > 0) {
|
||
var handler_1 = this.listeners[key].shift();
|
||
setImmediate(function () {
|
||
handler_1.call(_this);
|
||
});
|
||
}
|
||
};
|
||
Mutex.keys = {};
|
||
Mutex.listeners = {};
|
||
return Mutex;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* A BlobBatch represents an aggregated set of operations on blobs.
|
||
* Currently, only `delete` and `setAccessTier` are supported.
|
||
*/
|
||
var BlobBatch = /** @class */ (function () {
|
||
function BlobBatch() {
|
||
this.batch = "batch";
|
||
this.batchRequest = new InnerBatchRequest();
|
||
}
|
||
/**
|
||
* Get the value of Content-Type for a batch request.
|
||
* The value must be multipart/mixed with a batch boundary.
|
||
* Example: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252
|
||
*/
|
||
BlobBatch.prototype.getMultiPartContentType = function () {
|
||
return this.batchRequest.getMultipartContentType();
|
||
};
|
||
/**
|
||
* Get assembled HTTP request body for sub requests.
|
||
*/
|
||
BlobBatch.prototype.getHttpRequestBody = function () {
|
||
return this.batchRequest.getHttpRequestBody();
|
||
};
|
||
/**
|
||
* Get sub requests that are added into the batch request.
|
||
*/
|
||
BlobBatch.prototype.getSubRequests = function () {
|
||
return this.batchRequest.getSubRequests();
|
||
};
|
||
BlobBatch.prototype.addSubRequestInternal = function (subRequest, assembleSubRequestFunc) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, Mutex.lock(this.batch)];
|
||
case 1:
|
||
_a.sent();
|
||
_a.label = 2;
|
||
case 2:
|
||
_a.trys.push([2, , 4, 6]);
|
||
this.batchRequest.preAddSubRequest(subRequest);
|
||
return [4 /*yield*/, assembleSubRequestFunc()];
|
||
case 3:
|
||
_a.sent();
|
||
this.batchRequest.postAddSubRequest(subRequest);
|
||
return [3 /*break*/, 6];
|
||
case 4: return [4 /*yield*/, Mutex.unlock(this.batch)];
|
||
case 5:
|
||
_a.sent();
|
||
return [7 /*endfinally*/];
|
||
case 6: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
BlobBatch.prototype.setBatchType = function (batchType) {
|
||
if (!this.batchType) {
|
||
this.batchType = batchType;
|
||
}
|
||
if (this.batchType !== batchType) {
|
||
throw new RangeError("BlobBatch only supports one operation type per batch and it already is being used for " + this.batchType + " operations.");
|
||
}
|
||
};
|
||
BlobBatch.prototype.deleteBlob = function (urlOrBlobClient, credentialOrOptions, options) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var url, credential, _a, span, updatedOptions, e_1;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (typeof urlOrBlobClient === "string" &&
|
||
((coreHttp.isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||
|
||
credentialOrOptions instanceof AnonymousCredential ||
|
||
coreHttp.isTokenCredential(credentialOrOptions))) {
|
||
// First overload
|
||
url = urlOrBlobClient;
|
||
credential = credentialOrOptions;
|
||
}
|
||
else if (urlOrBlobClient instanceof BlobClient) {
|
||
// Second overload
|
||
url = urlOrBlobClient.url;
|
||
credential = urlOrBlobClient.credential;
|
||
options = credentialOrOptions;
|
||
}
|
||
else {
|
||
throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
|
||
}
|
||
if (!options) {
|
||
options = {};
|
||
}
|
||
_a = createSpan("BatchDeleteRequest-addSubRequest", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
this.setBatchType("delete");
|
||
return [4 /*yield*/, this.addSubRequestInternal({
|
||
url: url,
|
||
credential: credential
|
||
}, function () { return tslib.__awaiter(_this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(updatedOptions)];
|
||
case 1:
|
||
_a.sent();
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
}); })];
|
||
case 2:
|
||
_b.sent();
|
||
return [3 /*break*/, 5];
|
||
case 3:
|
||
e_1 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_1.message
|
||
});
|
||
throw e_1;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
BlobBatch.prototype.setBlobAccessTier = function (urlOrBlobClient, credentialOrTier, tierOrOptions, options) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var url, credential, tier, _a, span, updatedOptions, e_2;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (typeof urlOrBlobClient === "string" &&
|
||
((coreHttp.isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||
|
||
credentialOrTier instanceof AnonymousCredential ||
|
||
coreHttp.isTokenCredential(credentialOrTier))) {
|
||
// First overload
|
||
url = urlOrBlobClient;
|
||
credential = credentialOrTier;
|
||
tier = tierOrOptions;
|
||
}
|
||
else if (urlOrBlobClient instanceof BlobClient) {
|
||
// Second overload
|
||
url = urlOrBlobClient.url;
|
||
credential = urlOrBlobClient.credential;
|
||
tier = credentialOrTier;
|
||
options = tierOrOptions;
|
||
}
|
||
else {
|
||
throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
|
||
}
|
||
if (!options) {
|
||
options = {};
|
||
}
|
||
_a = createSpan("BatchSetTierRequest-addSubRequest", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
this.setBatchType("setAccessTier");
|
||
return [4 /*yield*/, this.addSubRequestInternal({
|
||
url: url,
|
||
credential: credential
|
||
}, function () { return tslib.__awaiter(_this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, updatedOptions)];
|
||
case 1:
|
||
_a.sent();
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
}); })];
|
||
case 2:
|
||
_b.sent();
|
||
return [3 /*break*/, 5];
|
||
case 3:
|
||
e_2 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_2.message
|
||
});
|
||
throw e_2;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return BlobBatch;
|
||
}());
|
||
/**
|
||
* Inner batch request class which is responsible for assembling and serializing sub requests.
|
||
* See https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#request-body for how requests are assembled.
|
||
*/
|
||
var InnerBatchRequest = /** @class */ (function () {
|
||
function InnerBatchRequest() {
|
||
this.operationCount = 0;
|
||
this.body = "";
|
||
var tempGuid = coreHttp.generateUuid();
|
||
// batch_{batchid}
|
||
this.boundary = "batch_" + tempGuid;
|
||
// --batch_{batchid}
|
||
// Content-Type: application/http
|
||
// Content-Transfer-Encoding: binary
|
||
this.subRequestPrefix = "--" + this.boundary + HTTP_LINE_ENDING + HeaderConstants.CONTENT_TYPE + ": application/http" + HTTP_LINE_ENDING + HeaderConstants.CONTENT_TRANSFER_ENCODING + ": binary";
|
||
// multipart/mixed; boundary=batch_{batchid}
|
||
this.multipartContentType = "multipart/mixed; boundary=" + this.boundary;
|
||
// --batch_{batchid}--
|
||
this.batchRequestEnding = "--" + this.boundary + "--";
|
||
this.subRequests = new Map();
|
||
}
|
||
/**
|
||
* Create pipeline to assemble sub requests. The idea here is to use existing
|
||
* credential and serialization/deserialization components, with additional policies to
|
||
* filter unnecessary headers, assemble sub requests into request's body
|
||
* and intercept request from going to wire.
|
||
* @param credential - Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
|
||
*/
|
||
InnerBatchRequest.prototype.createPipeline = function (credential) {
|
||
var isAnonymousCreds = credential instanceof AnonymousCredential;
|
||
var policyFactoryLength = 3 + (isAnonymousCreds ? 0 : 1); // [deserializationPolicy, BatchHeaderFilterPolicyFactory, (Optional)Credential, BatchRequestAssemblePolicyFactory]
|
||
var factories = new Array(policyFactoryLength);
|
||
factories[0] = coreHttp.deserializationPolicy(); // Default deserializationPolicy is provided by protocol layer
|
||
factories[1] = new BatchHeaderFilterPolicyFactory(); // Use batch header filter policy to exclude unnecessary headers
|
||
if (!isAnonymousCreds) {
|
||
factories[2] = coreHttp.isTokenCredential(credential)
|
||
? attachCredential(coreHttp.bearerTokenAuthenticationPolicy(credential, StorageOAuthScopes), credential)
|
||
: credential;
|
||
}
|
||
factories[policyFactoryLength - 1] = new BatchRequestAssemblePolicyFactory(this); // Use batch assemble policy to assemble request and intercept request from going to wire
|
||
return new Pipeline(factories, {});
|
||
};
|
||
InnerBatchRequest.prototype.appendSubRequestToBody = function (request) {
|
||
// Start to assemble sub request
|
||
this.body += [
|
||
this.subRequestPrefix,
|
||
HeaderConstants.CONTENT_ID + ": " + this.operationCount,
|
||
"",
|
||
request.method.toString() + " " + getURLPathAndQuery(request.url) + " " + HTTP_VERSION_1_1 + HTTP_LINE_ENDING // sub request start line with method
|
||
].join(HTTP_LINE_ENDING);
|
||
for (var _i = 0, _a = request.headers.headersArray(); _i < _a.length; _i++) {
|
||
var header = _a[_i];
|
||
this.body += header.name + ": " + header.value + HTTP_LINE_ENDING;
|
||
}
|
||
this.body += HTTP_LINE_ENDING; // sub request's headers need be ending with an empty line
|
||
// No body to assemble for current batch request support
|
||
// End to assemble sub request
|
||
};
|
||
InnerBatchRequest.prototype.preAddSubRequest = function (subRequest) {
|
||
if (this.operationCount >= BATCH_MAX_REQUEST) {
|
||
throw new RangeError("Cannot exceed " + BATCH_MAX_REQUEST + " sub requests in a single batch");
|
||
}
|
||
// Fast fail if url for sub request is invalid
|
||
var path = getURLPath(subRequest.url);
|
||
if (!path || path == "") {
|
||
throw new RangeError("Invalid url for sub request: '" + subRequest.url + "'");
|
||
}
|
||
};
|
||
InnerBatchRequest.prototype.postAddSubRequest = function (subRequest) {
|
||
this.subRequests.set(this.operationCount, subRequest);
|
||
this.operationCount++;
|
||
};
|
||
// Return the http request body with assembling the ending line to the sub request body.
|
||
InnerBatchRequest.prototype.getHttpRequestBody = function () {
|
||
return "" + this.body + this.batchRequestEnding + HTTP_LINE_ENDING;
|
||
};
|
||
InnerBatchRequest.prototype.getMultipartContentType = function () {
|
||
return this.multipartContentType;
|
||
};
|
||
InnerBatchRequest.prototype.getSubRequests = function () {
|
||
return this.subRequests;
|
||
};
|
||
return InnerBatchRequest;
|
||
}());
|
||
var BatchRequestAssemblePolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(BatchRequestAssemblePolicy, _super);
|
||
function BatchRequestAssemblePolicy(batchRequest, nextPolicy, options) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.dummyResponse = {
|
||
request: new coreHttp.WebResource(),
|
||
status: 200,
|
||
headers: new coreHttp.HttpHeaders()
|
||
};
|
||
_this.batchRequest = batchRequest;
|
||
return _this;
|
||
}
|
||
BatchRequestAssemblePolicy.prototype.sendRequest = function (request) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, this.batchRequest.appendSubRequestToBody(request)];
|
||
case 1:
|
||
_a.sent();
|
||
return [2 /*return*/, this.dummyResponse]; // Intercept request from going to wire
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return BatchRequestAssemblePolicy;
|
||
}(coreHttp.BaseRequestPolicy));
|
||
var BatchRequestAssemblePolicyFactory = /** @class */ (function () {
|
||
function BatchRequestAssemblePolicyFactory(batchRequest) {
|
||
this.batchRequest = batchRequest;
|
||
}
|
||
BatchRequestAssemblePolicyFactory.prototype.create = function (nextPolicy, options) {
|
||
return new BatchRequestAssemblePolicy(this.batchRequest, nextPolicy, options);
|
||
};
|
||
return BatchRequestAssemblePolicyFactory;
|
||
}());
|
||
var BatchHeaderFilterPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(BatchHeaderFilterPolicy, _super);
|
||
function BatchHeaderFilterPolicy(nextPolicy, options) {
|
||
return _super.call(this, nextPolicy, options) || this;
|
||
}
|
||
BatchHeaderFilterPolicy.prototype.sendRequest = function (request) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var xMsHeaderName, _i, _a, header;
|
||
return tslib.__generator(this, function (_b) {
|
||
xMsHeaderName = "";
|
||
for (_i = 0, _a = request.headers.headersArray(); _i < _a.length; _i++) {
|
||
header = _a[_i];
|
||
if (iEqual(header.name, HeaderConstants.X_MS_VERSION)) {
|
||
xMsHeaderName = header.name;
|
||
}
|
||
}
|
||
if (xMsHeaderName !== "") {
|
||
request.headers.remove(xMsHeaderName); // The subrequests should not have the x-ms-version header.
|
||
}
|
||
return [2 /*return*/, this._nextPolicy.sendRequest(request)];
|
||
});
|
||
});
|
||
};
|
||
return BatchHeaderFilterPolicy;
|
||
}(coreHttp.BaseRequestPolicy));
|
||
var BatchHeaderFilterPolicyFactory = /** @class */ (function () {
|
||
function BatchHeaderFilterPolicyFactory() {
|
||
}
|
||
BatchHeaderFilterPolicyFactory.prototype.create = function (nextPolicy, options) {
|
||
return new BatchHeaderFilterPolicy(nextPolicy, options);
|
||
};
|
||
return BatchHeaderFilterPolicyFactory;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* A BlobBatchClient allows you to make batched requests to the Azure Storage Blob service.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
|
||
*/
|
||
var BlobBatchClient = /** @class */ (function () {
|
||
function BlobBatchClient(url, credentialOrPipeline, options) {
|
||
var pipeline;
|
||
if (credentialOrPipeline instanceof Pipeline) {
|
||
pipeline = credentialOrPipeline;
|
||
}
|
||
else if (!credentialOrPipeline) {
|
||
// no credential provided
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else {
|
||
pipeline = newPipeline(credentialOrPipeline, options);
|
||
}
|
||
var storageClientContext = new StorageClientContext(url, pipeline.toServiceClientOptions());
|
||
var path = getURLPath(url);
|
||
if (path && path !== "/") {
|
||
// Container scoped.
|
||
this.serviceOrContainerContext = new Container(storageClientContext);
|
||
}
|
||
else {
|
||
this.serviceOrContainerContext = new Service(storageClientContext);
|
||
}
|
||
}
|
||
/**
|
||
* Creates a {@link BlobBatch}.
|
||
* A BlobBatch represents an aggregated set of operations on blobs.
|
||
*/
|
||
BlobBatchClient.prototype.createBatch = function () {
|
||
return new BlobBatch();
|
||
};
|
||
BlobBatchClient.prototype.deleteBlobs = function (urlsOrBlobClients, credentialOrOptions, options) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var batch, _i, urlsOrBlobClients_1, urlOrBlobClient;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
batch = new BlobBatch();
|
||
_i = 0, urlsOrBlobClients_1 = urlsOrBlobClients;
|
||
_a.label = 1;
|
||
case 1:
|
||
if (!(_i < urlsOrBlobClients_1.length)) return [3 /*break*/, 6];
|
||
urlOrBlobClient = urlsOrBlobClients_1[_i];
|
||
if (!(typeof urlOrBlobClient === "string")) return [3 /*break*/, 3];
|
||
return [4 /*yield*/, batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options)];
|
||
case 2:
|
||
_a.sent();
|
||
return [3 /*break*/, 5];
|
||
case 3: return [4 /*yield*/, batch.deleteBlob(urlOrBlobClient, credentialOrOptions)];
|
||
case 4:
|
||
_a.sent();
|
||
_a.label = 5;
|
||
case 5:
|
||
_i++;
|
||
return [3 /*break*/, 1];
|
||
case 6: return [2 /*return*/, this.submitBatch(batch)];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
BlobBatchClient.prototype.setBlobsAccessTier = function (urlsOrBlobClients, credentialOrTier, tierOrOptions, options) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var batch, _i, urlsOrBlobClients_2, urlOrBlobClient;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
batch = new BlobBatch();
|
||
_i = 0, urlsOrBlobClients_2 = urlsOrBlobClients;
|
||
_a.label = 1;
|
||
case 1:
|
||
if (!(_i < urlsOrBlobClients_2.length)) return [3 /*break*/, 6];
|
||
urlOrBlobClient = urlsOrBlobClients_2[_i];
|
||
if (!(typeof urlOrBlobClient === "string")) return [3 /*break*/, 3];
|
||
return [4 /*yield*/, batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options)];
|
||
case 2:
|
||
_a.sent();
|
||
return [3 /*break*/, 5];
|
||
case 3: return [4 /*yield*/, batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions)];
|
||
case 4:
|
||
_a.sent();
|
||
_a.label = 5;
|
||
case 5:
|
||
_i++;
|
||
return [3 /*break*/, 1];
|
||
case 6: return [2 /*return*/, this.submitBatch(batch)];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Submit batch request which consists of multiple subrequests.
|
||
*
|
||
* Get `blobBatchClient` and other details before running the snippets.
|
||
* `blobServiceClient.getBlobBatchClient()` gives the `blobBatchClient`
|
||
*
|
||
* Example usage:
|
||
*
|
||
* ```js
|
||
* let batchRequest = new BlobBatch();
|
||
* await batchRequest.deleteBlob(urlInString0, credential0);
|
||
* await batchRequest.deleteBlob(urlInString1, credential1, {
|
||
* deleteSnapshots: "include"
|
||
* });
|
||
* const batchResp = await blobBatchClient.submitBatch(batchRequest);
|
||
* console.log(batchResp.subResponsesSucceededCount);
|
||
* ```
|
||
*
|
||
* Example using a lease:
|
||
*
|
||
* ```js
|
||
* let batchRequest = new BlobBatch();
|
||
* await batchRequest.setBlobAccessTier(blockBlobClient0, "Cool");
|
||
* await batchRequest.setBlobAccessTier(blockBlobClient1, "Cool", {
|
||
* conditions: { leaseId: leaseId }
|
||
* });
|
||
* const batchResp = await blobBatchClient.submitBatch(batchRequest);
|
||
* console.log(batchResp.subResponsesSucceededCount);
|
||
* ```
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
|
||
*
|
||
* @param batchRequest - A set of Delete or SetTier operations.
|
||
* @param options -
|
||
*/
|
||
BlobBatchClient.prototype.submitBatch = function (batchRequest, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, batchRequestBody, rawBatchResponse, batchResponseParser, responseSummary, res, e_1;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (!batchRequest || batchRequest.getSubRequests().size == 0) {
|
||
throw new RangeError("Batch request should contain one or more sub requests.");
|
||
}
|
||
_a = createSpan("BlobBatchClient-submitBatch", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 4, 5, 6]);
|
||
batchRequestBody = batchRequest.getHttpRequestBody();
|
||
return [4 /*yield*/, this.serviceOrContainerContext.submitBatch(utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), batchRequestBody, tslib.__assign(tslib.__assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
rawBatchResponse = _b.sent();
|
||
batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());
|
||
return [4 /*yield*/, batchResponseParser.parseBatchResponse()];
|
||
case 3:
|
||
responseSummary = _b.sent();
|
||
res = {
|
||
_response: rawBatchResponse._response,
|
||
contentType: rawBatchResponse.contentType,
|
||
errorCode: rawBatchResponse.errorCode,
|
||
requestId: rawBatchResponse.requestId,
|
||
clientRequestId: rawBatchResponse.clientRequestId,
|
||
version: rawBatchResponse.version,
|
||
subResponses: responseSummary.subResponses,
|
||
subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,
|
||
subResponsesFailedCount: responseSummary.subResponsesFailedCount
|
||
};
|
||
return [2 /*return*/, res];
|
||
case 4:
|
||
e_1 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_1.message
|
||
});
|
||
throw e_1;
|
||
case 5:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 6: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return BlobBatchClient;
|
||
}());
|
||
|
||
/**
|
||
* A ContainerClient represents a URL to the Azure Storage container allowing you to manipulate its blobs.
|
||
*/
|
||
var ContainerClient = /** @class */ (function (_super) {
|
||
tslib.__extends(ContainerClient, _super);
|
||
function ContainerClient(urlOrConnectionString, credentialOrPipelineOrContainerName, options) {
|
||
var _this = this;
|
||
var pipeline;
|
||
var url;
|
||
options = options || {};
|
||
if (credentialOrPipelineOrContainerName instanceof Pipeline) {
|
||
// (url: string, pipeline: Pipeline)
|
||
url = urlOrConnectionString;
|
||
pipeline = credentialOrPipelineOrContainerName;
|
||
}
|
||
else if ((coreHttp.isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||
|
||
credentialOrPipelineOrContainerName instanceof AnonymousCredential ||
|
||
coreHttp.isTokenCredential(credentialOrPipelineOrContainerName)) {
|
||
// (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)
|
||
url = urlOrConnectionString;
|
||
pipeline = newPipeline(credentialOrPipelineOrContainerName, options);
|
||
}
|
||
else if (!credentialOrPipelineOrContainerName &&
|
||
typeof credentialOrPipelineOrContainerName !== "string") {
|
||
// (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)
|
||
// The second parameter is undefined. Use anonymous credential.
|
||
url = urlOrConnectionString;
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else if (credentialOrPipelineOrContainerName &&
|
||
typeof credentialOrPipelineOrContainerName === "string") {
|
||
// (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
|
||
var containerName = credentialOrPipelineOrContainerName;
|
||
var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
|
||
if (extractedCreds.kind === "AccountConnString") {
|
||
{
|
||
var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
|
||
url = appendToURLPath(extractedCreds.url, encodeURIComponent(containerName));
|
||
options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
|
||
pipeline = newPipeline(sharedKeyCredential, options);
|
||
}
|
||
}
|
||
else if (extractedCreds.kind === "SASConnString") {
|
||
url =
|
||
appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)) +
|
||
"?" +
|
||
extractedCreds.accountSas;
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
else {
|
||
throw new Error("Connection string must be either an Account connection string or a SAS connection string");
|
||
}
|
||
}
|
||
else {
|
||
throw new Error("Expecting non-empty strings for containerName parameter");
|
||
}
|
||
_this = _super.call(this, url, pipeline) || this;
|
||
_this._containerName = _this.getContainerNameFromUrl();
|
||
_this.containerContext = new Container(_this.storageClientContext);
|
||
return _this;
|
||
}
|
||
Object.defineProperty(ContainerClient.prototype, "containerName", {
|
||
/**
|
||
* The name of the container.
|
||
*/
|
||
get: function () {
|
||
return this._containerName;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
/**
|
||
* Creates a new container under the specified account. If the container with
|
||
* the same name already exists, the operation fails.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container
|
||
*
|
||
* @param options - Options to Container Create operation.
|
||
*
|
||
*
|
||
* Example usage:
|
||
*
|
||
* ```js
|
||
* const containerClient = blobServiceClient.getContainerClient("<container name>");
|
||
* const createContainerResponse = await containerClient.create();
|
||
* console.log("Container was created successfully", createContainerResponse.requestId);
|
||
* ```
|
||
*/
|
||
ContainerClient.prototype.create = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_1;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("ContainerClient-create", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.containerContext.create(tslib.__assign(tslib.__assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
// Spread operator in destructuring assignments,
|
||
// this will filter out unwanted properties from the response object into result object
|
||
return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_1 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_1.message
|
||
});
|
||
throw e_1;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Creates a new container under the specified account. If the container with
|
||
* the same name already exists, it is not changed.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container
|
||
*
|
||
* @param options -
|
||
*/
|
||
ContainerClient.prototype.createIfNotExists = function (options) {
|
||
var _a, _b;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _c, span, updatedOptions, res, e_2;
|
||
return tslib.__generator(this, function (_d) {
|
||
switch (_d.label) {
|
||
case 0:
|
||
_c = createSpan("ContainerClient-createIfNotExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
|
||
_d.label = 1;
|
||
case 1:
|
||
_d.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.create(updatedOptions)];
|
||
case 2:
|
||
res = _d.sent();
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
|
||
})];
|
||
case 3:
|
||
e_2 = _d.sent();
|
||
if (((_a = e_2.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerAlreadyExists") {
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: "Expected exception when creating a container only if it does not already exist."
|
||
});
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_2.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_2.response })];
|
||
}
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_2.message
|
||
});
|
||
throw e_2;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns true if the Azure container resource represented by this client exists; false otherwise.
|
||
*
|
||
* NOTE: use this function with care since an existing container might be deleted by other clients or
|
||
* applications. Vice versa new containers with the same name might be added by other clients or
|
||
* applications after this function completes.
|
||
*
|
||
* @param options -
|
||
*/
|
||
ContainerClient.prototype.exists = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_3;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("ContainerClient-exists", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.getProperties({
|
||
abortSignal: options.abortSignal,
|
||
tracingOptions: updatedOptions.tracingOptions
|
||
})];
|
||
case 2:
|
||
_b.sent();
|
||
return [2 /*return*/, true];
|
||
case 3:
|
||
e_3 = _b.sent();
|
||
if (e_3.statusCode === 404) {
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: "Expected exception when checking container existence"
|
||
});
|
||
return [2 /*return*/, false];
|
||
}
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_3.message
|
||
});
|
||
throw e_3;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Creates a {@link BlobClient}
|
||
*
|
||
* @param blobName - A blob name
|
||
* @returns A new BlobClient object for the given blob name.
|
||
*/
|
||
ContainerClient.prototype.getBlobClient = function (blobName) {
|
||
return new BlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
|
||
};
|
||
/**
|
||
* Creates an {@link AppendBlobClient}
|
||
*
|
||
* @param blobName - An append blob name
|
||
*/
|
||
ContainerClient.prototype.getAppendBlobClient = function (blobName) {
|
||
return new AppendBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
|
||
};
|
||
/**
|
||
* Creates a {@link BlockBlobClient}
|
||
*
|
||
* @param blobName - A block blob name
|
||
*
|
||
*
|
||
* Example usage:
|
||
*
|
||
* ```js
|
||
* const content = "Hello world!";
|
||
*
|
||
* const blockBlobClient = containerClient.getBlockBlobClient("<blob name>");
|
||
* const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
|
||
* ```
|
||
*/
|
||
ContainerClient.prototype.getBlockBlobClient = function (blobName) {
|
||
return new BlockBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
|
||
};
|
||
/**
|
||
* Creates a {@link PageBlobClient}
|
||
*
|
||
* @param blobName - A page blob name
|
||
*/
|
||
ContainerClient.prototype.getPageBlobClient = function (blobName) {
|
||
return new PageBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
|
||
};
|
||
/**
|
||
* Returns all user-defined metadata and system properties for the specified
|
||
* container. The data returned does not include the container's list of blobs.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-container-properties
|
||
*
|
||
* WARNING: The `metadata` object returned in the response will have its keys in lowercase, even if
|
||
* they originally contained uppercase characters. This differs from the metadata keys returned by
|
||
* the `listContainers` method of {@link BlobServiceClient} using the `includeMetadata` option, which
|
||
* will retain their original casing.
|
||
*
|
||
* @param options - Options to Container Get Properties operation.
|
||
*/
|
||
ContainerClient.prototype.getProperties = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_4;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (!options.conditions) {
|
||
options.conditions = {};
|
||
}
|
||
_a = createSpan("ContainerClient-getProperties", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.containerContext.getProperties(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal }, options.conditions), convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_4 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_4.message
|
||
});
|
||
throw e_4;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Marks the specified container for deletion. The container and any blobs
|
||
* contained within it are later deleted during garbage collection.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container
|
||
*
|
||
* @param options - Options to Container Delete operation.
|
||
*/
|
||
ContainerClient.prototype.delete = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_5;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (!options.conditions) {
|
||
options.conditions = {};
|
||
}
|
||
_a = createSpan("ContainerClient-delete", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.containerContext.delete(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_5 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_5.message
|
||
});
|
||
throw e_5;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Marks the specified container for deletion if it exists. The container and any blobs
|
||
* contained within it are later deleted during garbage collection.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container
|
||
*
|
||
* @param options - Options to Container Delete operation.
|
||
*/
|
||
ContainerClient.prototype.deleteIfExists = function (options) {
|
||
var _a, _b;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _c, span, updatedOptions, res, e_6;
|
||
return tslib.__generator(this, function (_d) {
|
||
switch (_d.label) {
|
||
case 0:
|
||
_c = createSpan("ContainerClient-deleteIfExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
|
||
_d.label = 1;
|
||
case 1:
|
||
_d.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.delete(updatedOptions)];
|
||
case 2:
|
||
res = _d.sent();
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
|
||
})];
|
||
case 3:
|
||
e_6 = _d.sent();
|
||
if (((_a = e_6.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerNotFound") {
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: "Expected exception when deleting a container only if it exists."
|
||
});
|
||
return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_6.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_6.response })];
|
||
}
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_6.message
|
||
});
|
||
throw e_6;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Sets one or more user-defined name-value pairs for the specified container.
|
||
*
|
||
* If no option provided, or no metadata defined in the parameter, the container
|
||
* metadata will be removed.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-metadata
|
||
*
|
||
* @param metadata - Replace existing metadata with this value.
|
||
* If no value provided the existing metadata will be removed.
|
||
* @param options - Options to Container Set Metadata operation.
|
||
*/
|
||
ContainerClient.prototype.setMetadata = function (metadata, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_7;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (!options.conditions) {
|
||
options.conditions = {};
|
||
}
|
||
if (options.conditions.ifUnmodifiedSince) {
|
||
throw new RangeError("the IfUnmodifiedSince must have their default values because they are ignored by the blob service");
|
||
}
|
||
_a = createSpan("ContainerClient-setMetadata", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.containerContext.setMetadata(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: metadata, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_7 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_7.message
|
||
});
|
||
throw e_7;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Gets the permissions for the specified container. The permissions indicate
|
||
* whether container data may be accessed publicly.
|
||
*
|
||
* WARNING: JavaScript Date will potentially lose precision when parsing startsOn and expiresOn strings.
|
||
* For example, new Date("2018-12-31T03:44:23.8827891Z").toISOString() will get "2018-12-31T03:44:23.882Z".
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-container-acl
|
||
*
|
||
* @param options - Options to Container Get Access Policy operation.
|
||
*/
|
||
ContainerClient.prototype.getAccessPolicy = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, response, res, _i, response_1, identifier, accessPolicy, e_8;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (!options.conditions) {
|
||
options.conditions = {};
|
||
}
|
||
_a = createSpan("ContainerClient-getAccessPolicy", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.containerContext.getAccessPolicy(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
response = _b.sent();
|
||
res = {
|
||
_response: response._response,
|
||
blobPublicAccess: response.blobPublicAccess,
|
||
date: response.date,
|
||
etag: response.etag,
|
||
errorCode: response.errorCode,
|
||
lastModified: response.lastModified,
|
||
requestId: response.requestId,
|
||
clientRequestId: response.clientRequestId,
|
||
signedIdentifiers: [],
|
||
version: response.version
|
||
};
|
||
for (_i = 0, response_1 = response; _i < response_1.length; _i++) {
|
||
identifier = response_1[_i];
|
||
accessPolicy = undefined;
|
||
if (identifier.accessPolicy) {
|
||
accessPolicy = {
|
||
permissions: identifier.accessPolicy.permissions
|
||
};
|
||
if (identifier.accessPolicy.expiresOn) {
|
||
accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);
|
||
}
|
||
if (identifier.accessPolicy.startsOn) {
|
||
accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);
|
||
}
|
||
}
|
||
res.signedIdentifiers.push({
|
||
accessPolicy: accessPolicy,
|
||
id: identifier.id
|
||
});
|
||
}
|
||
return [2 /*return*/, res];
|
||
case 3:
|
||
e_8 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_8.message
|
||
});
|
||
throw e_8;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Sets the permissions for the specified container. The permissions indicate
|
||
* whether blobs in a container may be accessed publicly.
|
||
*
|
||
* When you set permissions for a container, the existing permissions are replaced.
|
||
* If no access or containerAcl provided, the existing container ACL will be
|
||
* removed.
|
||
*
|
||
* When you establish a stored access policy on a container, it may take up to 30 seconds to take effect.
|
||
* During this interval, a shared access signature that is associated with the stored access policy will
|
||
* fail with status code 403 (Forbidden), until the access policy becomes active.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-acl
|
||
*
|
||
* @param access - The level of public access to data in the container.
|
||
* @param containerAcl - Array of elements each having a unique Id and details of the access policy.
|
||
* @param options - Options to Container Set Access Policy operation.
|
||
*/
|
||
ContainerClient.prototype.setAccessPolicy = function (access, containerAcl, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, acl, _i, _b, identifier, e_9;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
options.conditions = options.conditions || {};
|
||
_a = createSpan("ContainerClient-setAccessPolicy", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
acl = [];
|
||
for (_i = 0, _b = containerAcl || []; _i < _b.length; _i++) {
|
||
identifier = _b[_i];
|
||
acl.push({
|
||
accessPolicy: {
|
||
expiresOn: identifier.accessPolicy.expiresOn
|
||
? truncatedISO8061Date(identifier.accessPolicy.expiresOn)
|
||
: "",
|
||
permissions: identifier.accessPolicy.permissions,
|
||
startsOn: identifier.accessPolicy.startsOn
|
||
? truncatedISO8061Date(identifier.accessPolicy.startsOn)
|
||
: ""
|
||
},
|
||
id: identifier.id
|
||
});
|
||
}
|
||
return [4 /*yield*/, this.containerContext.setAccessPolicy(tslib.__assign({ abortSignal: options.abortSignal, access: access, containerAcl: acl, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _c.sent()];
|
||
case 3:
|
||
e_9 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_9.message
|
||
});
|
||
throw e_9;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Get a {@link BlobLeaseClient} that manages leases on the container.
|
||
*
|
||
* @param proposeLeaseId - Initial proposed lease Id.
|
||
* @returns A new BlobLeaseClient object for managing leases on the container.
|
||
*/
|
||
ContainerClient.prototype.getBlobLeaseClient = function (proposeLeaseId) {
|
||
return new BlobLeaseClient(this, proposeLeaseId);
|
||
};
|
||
/**
|
||
* Creates a new block blob, or updates the content of an existing block blob.
|
||
*
|
||
* Updating an existing block blob overwrites any existing metadata on the blob.
|
||
* Partial updates are not supported; the content of the existing blob is
|
||
* overwritten with the new content. To perform a partial update of a block blob's,
|
||
* use {@link BlockBlobClient.stageBlock} and {@link BlockBlobClient.commitBlockList}.
|
||
*
|
||
* This is a non-parallel uploading method, please use {@link BlockBlobClient.uploadFile},
|
||
* {@link BlockBlobClient.uploadStream} or {@link BlockBlobClient.uploadBrowserData} for better
|
||
* performance with concurrency uploading.
|
||
*
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/put-blob
|
||
*
|
||
* @param blobName - Name of the block blob to create or update.
|
||
* @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function
|
||
* which returns a new Readable stream whose offset is from data source beginning.
|
||
* @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
|
||
* string including non non-Base64/Hex-encoded characters.
|
||
* @param options - Options to configure the Block Blob Upload operation.
|
||
* @returns Block Blob upload response data and the corresponding BlockBlobClient instance.
|
||
*/
|
||
ContainerClient.prototype.uploadBlockBlob = function (blobName, body, contentLength, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, blockBlobClient, response, e_10;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("ContainerClient-uploadBlockBlob", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
blockBlobClient = this.getBlockBlobClient(blobName);
|
||
return [4 /*yield*/, blockBlobClient.upload(body, contentLength, updatedOptions)];
|
||
case 2:
|
||
response = _b.sent();
|
||
return [2 /*return*/, {
|
||
blockBlobClient: blockBlobClient,
|
||
response: response
|
||
}];
|
||
case 3:
|
||
e_10 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_10.message
|
||
});
|
||
throw e_10;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Marks the specified blob or snapshot for deletion. The blob is later deleted
|
||
* during garbage collection. Note that in order to delete a blob, you must delete
|
||
* all of its snapshots. You can delete both at the same time with the Delete
|
||
* Blob operation.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob
|
||
*
|
||
* @param blobName -
|
||
* @param options - Options to Blob Delete operation.
|
||
* @returns Block blob deletion response data.
|
||
*/
|
||
ContainerClient.prototype.deleteBlob = function (blobName, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, blobClient, e_11;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("ContainerClient-deleteBlob", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
blobClient = this.getBlobClient(blobName);
|
||
if (options.versionId) {
|
||
blobClient = blobClient.withVersion(options.versionId);
|
||
}
|
||
return [4 /*yield*/, blobClient.delete(updatedOptions)];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_11 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_11.message
|
||
});
|
||
throw e_11;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* listBlobFlatSegment returns a single segment of blobs starting from the
|
||
* specified Marker. Use an empty Marker to start enumeration from the beginning.
|
||
* After getting a segment, process it, and then call listBlobsFlatSegment again
|
||
* (passing the the previously-returned Marker) to get the next segment.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/list-blobs
|
||
*
|
||
* @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
|
||
* @param options - Options to Container List Blob Flat Segment operation.
|
||
*/
|
||
ContainerClient.prototype.listBlobFlatSegment = function (marker, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, response, wrappedResponse, e_12;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("ContainerClient-listBlobFlatSegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.containerContext.listBlobFlatSegment(tslib.__assign(tslib.__assign({ marker: marker }, options), convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
response = _b.sent();
|
||
wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, segment: tslib.__assign(tslib.__assign({}, response.segment), { blobItems: response.segment.blobItems.map(function (blobItemInteral) {
|
||
var blobItem = tslib.__assign(tslib.__assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
|
||
return blobItem;
|
||
}) }) });
|
||
return [2 /*return*/, wrappedResponse];
|
||
case 3:
|
||
e_12 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_12.message
|
||
});
|
||
throw e_12;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* listBlobHierarchySegment returns a single segment of blobs starting from
|
||
* the specified Marker. Use an empty Marker to start enumeration from the
|
||
* beginning. After getting a segment, process it, and then call listBlobsHierarchicalSegment
|
||
* again (passing the the previously-returned Marker) to get the next segment.
|
||
* @see https://docs.microsoft.com/rest/api/storageservices/list-blobs
|
||
*
|
||
* @param delimiter - The character or string used to define the virtual hierarchy
|
||
* @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
|
||
* @param options - Options to Container List Blob Hierarchy Segment operation.
|
||
*/
|
||
ContainerClient.prototype.listBlobHierarchySegment = function (delimiter, marker, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, response, wrappedResponse, e_13;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("ContainerClient-listBlobHierarchySegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.containerContext.listBlobHierarchySegment(delimiter, tslib.__assign(tslib.__assign({ marker: marker }, options), convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
response = _b.sent();
|
||
wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, segment: tslib.__assign(tslib.__assign({}, response.segment), { blobItems: response.segment.blobItems.map(function (blobItemInteral) {
|
||
var blobItem = tslib.__assign(tslib.__assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
|
||
return blobItem;
|
||
}) }) });
|
||
return [2 /*return*/, wrappedResponse];
|
||
case 3:
|
||
e_13 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_13.message
|
||
});
|
||
throw e_13;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns an AsyncIterableIterator for ContainerListBlobFlatSegmentResponse
|
||
*
|
||
* @param marker - A string value that identifies the portion of
|
||
* the list of blobs to be returned with the next listing operation. The
|
||
* operation returns the ContinuationToken value within the response body if the
|
||
* listing operation did not return all blobs remaining to be listed
|
||
* with the current page. The ContinuationToken value can be used as the value for
|
||
* the marker parameter in a subsequent call to request the next page of list
|
||
* items. The marker value is opaque to the client.
|
||
* @param options - Options to list blobs operation.
|
||
*/
|
||
ContainerClient.prototype.listSegments = function (marker, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__asyncGenerator(this, arguments, function listSegments_1() {
|
||
var listBlobsFlatSegmentResponse;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
|
||
_a.label = 1;
|
||
case 1: return [4 /*yield*/, tslib.__await(this.listBlobFlatSegment(marker, options))];
|
||
case 2:
|
||
listBlobsFlatSegmentResponse = _a.sent();
|
||
marker = listBlobsFlatSegmentResponse.continuationToken;
|
||
return [4 /*yield*/, tslib.__await(listBlobsFlatSegmentResponse)];
|
||
case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
|
||
case 4: return [4 /*yield*/, _a.sent()];
|
||
case 5:
|
||
_a.sent();
|
||
_a.label = 6;
|
||
case 6:
|
||
if (marker) return [3 /*break*/, 1];
|
||
_a.label = 7;
|
||
case 7: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns an AsyncIterableIterator of {@link BlobItem} objects
|
||
*
|
||
* @param options - Options to list blobs operation.
|
||
*/
|
||
ContainerClient.prototype.listItems = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__asyncGenerator(this, arguments, function listItems_1() {
|
||
var marker, _a, _b, listBlobsFlatSegmentResponse, e_14_1;
|
||
var e_14, _c;
|
||
return tslib.__generator(this, function (_d) {
|
||
switch (_d.label) {
|
||
case 0:
|
||
_d.trys.push([0, 7, 8, 13]);
|
||
_a = tslib.__asyncValues(this.listSegments(marker, options));
|
||
_d.label = 1;
|
||
case 1: return [4 /*yield*/, tslib.__await(_a.next())];
|
||
case 2:
|
||
if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
|
||
listBlobsFlatSegmentResponse = _b.value;
|
||
return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)))];
|
||
case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
|
||
case 4:
|
||
_d.sent();
|
||
_d.label = 5;
|
||
case 5: return [3 /*break*/, 1];
|
||
case 6: return [3 /*break*/, 13];
|
||
case 7:
|
||
e_14_1 = _d.sent();
|
||
e_14 = { error: e_14_1 };
|
||
return [3 /*break*/, 13];
|
||
case 8:
|
||
_d.trys.push([8, , 11, 12]);
|
||
if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
|
||
return [4 /*yield*/, tslib.__await(_c.call(_a))];
|
||
case 9:
|
||
_d.sent();
|
||
_d.label = 10;
|
||
case 10: return [3 /*break*/, 12];
|
||
case 11:
|
||
if (e_14) throw e_14.error;
|
||
return [7 /*endfinally*/];
|
||
case 12: return [7 /*endfinally*/];
|
||
case 13: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns an async iterable iterator to list all the blobs
|
||
* under the specified account.
|
||
*
|
||
* .byPage() returns an async iterable iterator to list the blobs in pages.
|
||
*
|
||
* Example using `for await` syntax:
|
||
*
|
||
* ```js
|
||
* // Get the containerClient before you run these snippets,
|
||
* // Can be obtained from `blobServiceClient.getContainerClient("<your-container-name>");`
|
||
* let i = 1;
|
||
* for await (const blob of containerClient.listBlobsFlat()) {
|
||
* console.log(`Blob ${i++}: ${blob.name}`);
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using `iter.next()`:
|
||
*
|
||
* ```js
|
||
* let i = 1;
|
||
* let iter = containerClient.listBlobsFlat();
|
||
* let blobItem = await iter.next();
|
||
* while (!blobItem.done) {
|
||
* console.log(`Blob ${i++}: ${blobItem.value.name}`);
|
||
* blobItem = await iter.next();
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using `byPage()`:
|
||
*
|
||
* ```js
|
||
* // passing optional maxPageSize in the page settings
|
||
* let i = 1;
|
||
* for await (const response of containerClient.listBlobsFlat().byPage({ maxPageSize: 20 })) {
|
||
* for (const blob of response.segment.blobItems) {
|
||
* console.log(`Blob ${i++}: ${blob.name}`);
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using paging with a marker:
|
||
*
|
||
* ```js
|
||
* let i = 1;
|
||
* let iterator = containerClient.listBlobsFlat().byPage({ maxPageSize: 2 });
|
||
* let response = (await iterator.next()).value;
|
||
*
|
||
* // Prints 2 blob names
|
||
* for (const blob of response.segment.blobItems) {
|
||
* console.log(`Blob ${i++}: ${blob.name}`);
|
||
* }
|
||
*
|
||
* // Gets next marker
|
||
* let marker = response.continuationToken;
|
||
*
|
||
* // Passing next marker as continuationToken
|
||
*
|
||
* iterator = containerClient.listBlobsFlat().byPage({ continuationToken: marker, maxPageSize: 10 });
|
||
* response = (await iterator.next()).value;
|
||
*
|
||
* // Prints 10 blob names
|
||
* for (const blob of response.segment.blobItems) {
|
||
* console.log(`Blob ${i++}: ${blob.name}`);
|
||
* }
|
||
* ```
|
||
*
|
||
* @param options - Options to list blobs.
|
||
* @returns An asyncIterableIterator that supports paging.
|
||
*/
|
||
ContainerClient.prototype.listBlobsFlat = function (options) {
|
||
var _a;
|
||
var _this = this;
|
||
if (options === void 0) { options = {}; }
|
||
var include = [];
|
||
if (options.includeCopy) {
|
||
include.push("copy");
|
||
}
|
||
if (options.includeDeleted) {
|
||
include.push("deleted");
|
||
}
|
||
if (options.includeMetadata) {
|
||
include.push("metadata");
|
||
}
|
||
if (options.includeSnapshots) {
|
||
include.push("snapshots");
|
||
}
|
||
if (options.includeVersions) {
|
||
include.push("versions");
|
||
}
|
||
if (options.includeUncommitedBlobs) {
|
||
include.push("uncommittedblobs");
|
||
}
|
||
if (options.includeTags) {
|
||
include.push("tags");
|
||
}
|
||
if (options.prefix === "") {
|
||
options.prefix = undefined;
|
||
}
|
||
var updatedOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
|
||
// AsyncIterableIterator to iterate over blobs
|
||
var iter = this.listItems(updatedOptions);
|
||
return _a = {
|
||
/**
|
||
* The next method, part of the iteration protocol
|
||
*/
|
||
next: function () {
|
||
return iter.next();
|
||
}
|
||
},
|
||
/**
|
||
* The connection to the async iterator, part of the iteration protocol
|
||
*/
|
||
_a[Symbol.asyncIterator] = function () {
|
||
return this;
|
||
},
|
||
/**
|
||
* Return an AsyncIterableIterator that works a page at a time
|
||
*/
|
||
_a.byPage = function (settings) {
|
||
if (settings === void 0) { settings = {}; }
|
||
return _this.listSegments(settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
|
||
},
|
||
_a;
|
||
};
|
||
/**
|
||
* Returns an AsyncIterableIterator for ContainerListBlobHierarchySegmentResponse
|
||
*
|
||
* @param delimiter - The character or string used to define the virtual hierarchy
|
||
* @param marker - A string value that identifies the portion of
|
||
* the list of blobs to be returned with the next listing operation. The
|
||
* operation returns the ContinuationToken value within the response body if the
|
||
* listing operation did not return all blobs remaining to be listed
|
||
* with the current page. The ContinuationToken value can be used as the value for
|
||
* the marker parameter in a subsequent call to request the next page of list
|
||
* items. The marker value is opaque to the client.
|
||
* @param options - Options to list blobs operation.
|
||
*/
|
||
ContainerClient.prototype.listHierarchySegments = function (delimiter, marker, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__asyncGenerator(this, arguments, function listHierarchySegments_1() {
|
||
var listBlobsHierarchySegmentResponse;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
|
||
_a.label = 1;
|
||
case 1: return [4 /*yield*/, tslib.__await(this.listBlobHierarchySegment(delimiter, marker, options))];
|
||
case 2:
|
||
listBlobsHierarchySegmentResponse = _a.sent();
|
||
marker = listBlobsHierarchySegmentResponse.continuationToken;
|
||
return [4 /*yield*/, tslib.__await(listBlobsHierarchySegmentResponse)];
|
||
case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
|
||
case 4: return [4 /*yield*/, _a.sent()];
|
||
case 5:
|
||
_a.sent();
|
||
_a.label = 6;
|
||
case 6:
|
||
if (marker) return [3 /*break*/, 1];
|
||
_a.label = 7;
|
||
case 7: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns an AsyncIterableIterator for {@link BlobPrefix} and {@link BlobItem} objects.
|
||
*
|
||
* @param delimiter - The character or string used to define the virtual hierarchy
|
||
* @param options - Options to list blobs operation.
|
||
*/
|
||
ContainerClient.prototype.listItemsByHierarchy = function (delimiter, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__asyncGenerator(this, arguments, function listItemsByHierarchy_1() {
|
||
var marker, _a, _b, listBlobsHierarchySegmentResponse, segment, _i, _c, prefix, _d, _e, blob, e_15_1;
|
||
var e_15, _f;
|
||
return tslib.__generator(this, function (_g) {
|
||
switch (_g.label) {
|
||
case 0:
|
||
_g.trys.push([0, 14, 15, 20]);
|
||
_a = tslib.__asyncValues(this.listHierarchySegments(delimiter, marker, options));
|
||
_g.label = 1;
|
||
case 1: return [4 /*yield*/, tslib.__await(_a.next())];
|
||
case 2:
|
||
if (!(_b = _g.sent(), !_b.done)) return [3 /*break*/, 13];
|
||
listBlobsHierarchySegmentResponse = _b.value;
|
||
segment = listBlobsHierarchySegmentResponse.segment;
|
||
if (!segment.blobPrefixes) return [3 /*break*/, 7];
|
||
_i = 0, _c = segment.blobPrefixes;
|
||
_g.label = 3;
|
||
case 3:
|
||
if (!(_i < _c.length)) return [3 /*break*/, 7];
|
||
prefix = _c[_i];
|
||
return [4 /*yield*/, tslib.__await(tslib.__assign({ kind: "prefix" }, prefix))];
|
||
case 4: return [4 /*yield*/, _g.sent()];
|
||
case 5:
|
||
_g.sent();
|
||
_g.label = 6;
|
||
case 6:
|
||
_i++;
|
||
return [3 /*break*/, 3];
|
||
case 7:
|
||
_d = 0, _e = segment.blobItems;
|
||
_g.label = 8;
|
||
case 8:
|
||
if (!(_d < _e.length)) return [3 /*break*/, 12];
|
||
blob = _e[_d];
|
||
return [4 /*yield*/, tslib.__await(tslib.__assign({ kind: "blob" }, blob))];
|
||
case 9: return [4 /*yield*/, _g.sent()];
|
||
case 10:
|
||
_g.sent();
|
||
_g.label = 11;
|
||
case 11:
|
||
_d++;
|
||
return [3 /*break*/, 8];
|
||
case 12: return [3 /*break*/, 1];
|
||
case 13: return [3 /*break*/, 20];
|
||
case 14:
|
||
e_15_1 = _g.sent();
|
||
e_15 = { error: e_15_1 };
|
||
return [3 /*break*/, 20];
|
||
case 15:
|
||
_g.trys.push([15, , 18, 19]);
|
||
if (!(_b && !_b.done && (_f = _a.return))) return [3 /*break*/, 17];
|
||
return [4 /*yield*/, tslib.__await(_f.call(_a))];
|
||
case 16:
|
||
_g.sent();
|
||
_g.label = 17;
|
||
case 17: return [3 /*break*/, 19];
|
||
case 18:
|
||
if (e_15) throw e_15.error;
|
||
return [7 /*endfinally*/];
|
||
case 19: return [7 /*endfinally*/];
|
||
case 20: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns an async iterable iterator to list all the blobs by hierarchy.
|
||
* under the specified account.
|
||
*
|
||
* .byPage() returns an async iterable iterator to list the blobs by hierarchy in pages.
|
||
*
|
||
* Example using `for await` syntax:
|
||
*
|
||
* ```js
|
||
* for await (const item of containerClient.listBlobsByHierarchy("/")) {
|
||
* if (item.kind === "prefix") {
|
||
* console.log(`\tBlobPrefix: ${item.name}`);
|
||
* } else {
|
||
* console.log(`\tBlobItem: name - ${item.name}, last modified - ${item.properties.lastModified}`);
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using `iter.next()`:
|
||
*
|
||
* ```js
|
||
* let iter = containerClient.listBlobsByHierarchy("/", { prefix: "prefix1/" });
|
||
* let entity = await iter.next();
|
||
* while (!entity.done) {
|
||
* let item = entity.value;
|
||
* if (item.kind === "prefix") {
|
||
* console.log(`\tBlobPrefix: ${item.name}`);
|
||
* } else {
|
||
* console.log(`\tBlobItem: name - ${item.name}, last modified - ${item.properties.lastModified}`);
|
||
* }
|
||
* entity = await iter.next();
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using `byPage()`:
|
||
*
|
||
* ```js
|
||
* console.log("Listing blobs by hierarchy by page");
|
||
* for await (const response of containerClient.listBlobsByHierarchy("/").byPage()) {
|
||
* const segment = response.segment;
|
||
* if (segment.blobPrefixes) {
|
||
* for (const prefix of segment.blobPrefixes) {
|
||
* console.log(`\tBlobPrefix: ${prefix.name}`);
|
||
* }
|
||
* }
|
||
* for (const blob of response.segment.blobItems) {
|
||
* console.log(`\tBlobItem: name - ${blob.name}, last modified - ${blob.properties.lastModified}`);
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using paging with a max page size:
|
||
*
|
||
* ```js
|
||
* console.log("Listing blobs by hierarchy by page, specifying a prefix and a max page size");
|
||
*
|
||
* let i = 1;
|
||
* for await (const response of containerClient.listBlobsByHierarchy("/", { prefix: "prefix2/sub1/"}).byPage({ maxPageSize: 2 })) {
|
||
* console.log(`Page ${i++}`);
|
||
* const segment = response.segment;
|
||
*
|
||
* if (segment.blobPrefixes) {
|
||
* for (const prefix of segment.blobPrefixes) {
|
||
* console.log(`\tBlobPrefix: ${prefix.name}`);
|
||
* }
|
||
* }
|
||
*
|
||
* for (const blob of response.segment.blobItems) {
|
||
* console.log(`\tBlobItem: name - ${blob.name}, last modified - ${blob.properties.lastModified}`);
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* @param delimiter - The character or string used to define the virtual hierarchy
|
||
* @param options - Options to list blobs operation.
|
||
*/
|
||
ContainerClient.prototype.listBlobsByHierarchy = function (delimiter, options) {
|
||
var _a;
|
||
var _this = this;
|
||
if (options === void 0) { options = {}; }
|
||
if (delimiter === "") {
|
||
throw new RangeError("delimiter should contain one or more characters");
|
||
}
|
||
var include = [];
|
||
if (options.includeCopy) {
|
||
include.push("copy");
|
||
}
|
||
if (options.includeDeleted) {
|
||
include.push("deleted");
|
||
}
|
||
if (options.includeMetadata) {
|
||
include.push("metadata");
|
||
}
|
||
if (options.includeSnapshots) {
|
||
include.push("snapshots");
|
||
}
|
||
if (options.includeVersions) {
|
||
include.push("versions");
|
||
}
|
||
if (options.includeUncommitedBlobs) {
|
||
include.push("uncommittedblobs");
|
||
}
|
||
if (options.includeTags) {
|
||
include.push("tags");
|
||
}
|
||
if (options.prefix === "") {
|
||
options.prefix = undefined;
|
||
}
|
||
var updatedOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
|
||
// AsyncIterableIterator to iterate over blob prefixes and blobs
|
||
var iter = this.listItemsByHierarchy(delimiter, updatedOptions);
|
||
return _a = {
|
||
/**
|
||
* The next method, part of the iteration protocol
|
||
*/
|
||
next: function () {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, iter.next()];
|
||
});
|
||
});
|
||
}
|
||
},
|
||
/**
|
||
* The connection to the async iterator, part of the iteration protocol
|
||
*/
|
||
_a[Symbol.asyncIterator] = function () {
|
||
return this;
|
||
},
|
||
/**
|
||
* Return an AsyncIterableIterator that works a page at a time
|
||
*/
|
||
_a.byPage = function (settings) {
|
||
if (settings === void 0) { settings = {}; }
|
||
return _this.listHierarchySegments(delimiter, settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
|
||
},
|
||
_a;
|
||
};
|
||
ContainerClient.prototype.getContainerNameFromUrl = function () {
|
||
var containerName;
|
||
try {
|
||
// URL may look like the following
|
||
// "https://myaccount.blob.core.windows.net/mycontainer?sasString";
|
||
// "https://myaccount.blob.core.windows.net/mycontainer";
|
||
// IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername`
|
||
// http://localhost:10001/devstoreaccount1/containername
|
||
var parsedUrl = coreHttp.URLBuilder.parse(this.url);
|
||
if (parsedUrl.getHost().split(".")[1] === "blob") {
|
||
// "https://myaccount.blob.core.windows.net/containername".
|
||
// "https://customdomain.com/containername".
|
||
// .getPath() -> /containername
|
||
containerName = parsedUrl.getPath().split("/")[1];
|
||
}
|
||
else if (isIpEndpointStyle(parsedUrl)) {
|
||
// IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername
|
||
// Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername
|
||
// .getPath() -> /devstoreaccount1/containername
|
||
containerName = parsedUrl.getPath().split("/")[2];
|
||
}
|
||
else {
|
||
// "https://customdomain.com/containername".
|
||
// .getPath() -> /containername
|
||
containerName = parsedUrl.getPath().split("/")[1];
|
||
}
|
||
// decode the encoded containerName - to get all the special characters that might be present in it
|
||
containerName = decodeURIComponent(containerName);
|
||
if (!containerName) {
|
||
throw new Error("Provided containerName is invalid.");
|
||
}
|
||
return containerName;
|
||
}
|
||
catch (error) {
|
||
throw new Error("Unable to extract containerName with provided information.");
|
||
}
|
||
};
|
||
/**
|
||
* Only available for ContainerClient constructed with a shared key credential.
|
||
*
|
||
* Generates a Blob Container Service Shared Access Signature (SAS) URI based on the client properties
|
||
* and parameters passed in. The SAS is signed by the shared key credential of the client.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
|
||
*
|
||
* @param options - Optional parameters.
|
||
* @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
|
||
*/
|
||
ContainerClient.prototype.generateSasUrl = function (options) {
|
||
var _this = this;
|
||
return new Promise(function (resolve) {
|
||
if (!(_this.credential instanceof StorageSharedKeyCredential)) {
|
||
throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential");
|
||
}
|
||
var sas = generateBlobSASQueryParameters(tslib.__assign({ containerName: _this._containerName }, options), _this.credential).toString();
|
||
resolve(appendToURLQuery(_this.url, sas));
|
||
});
|
||
};
|
||
/**
|
||
* Creates a BlobBatchClient object to conduct batch operations.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
|
||
*
|
||
* @returns A new BlobBatchClient object for this container.
|
||
*/
|
||
ContainerClient.prototype.getBlobBatchClient = function () {
|
||
return new BlobBatchClient(this.url, this.pipeline);
|
||
};
|
||
return ContainerClient;
|
||
}(StorageClient));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* This is a helper class to construct a string representing the permissions granted by an AccountSAS. Setting a value
|
||
* to true means that any SAS which uses these permissions will grant permissions for that operation. Once all the
|
||
* values are set, this should be serialized with toString and set as the permissions field on an
|
||
* {@link AccountSASSignatureValues} object. It is possible to construct the permissions string without this class, but
|
||
* the order of the permissions is particular and this class guarantees correctness.
|
||
*/
|
||
var AccountSASPermissions = /** @class */ (function () {
|
||
function AccountSASPermissions() {
|
||
/**
|
||
* Permission to read resources and list queues and tables granted.
|
||
*/
|
||
this.read = false;
|
||
/**
|
||
* Permission to write resources granted.
|
||
*/
|
||
this.write = false;
|
||
/**
|
||
* Permission to create blobs and files granted.
|
||
*/
|
||
this.delete = false;
|
||
/**
|
||
* Permission to delete versions granted.
|
||
*/
|
||
this.deleteVersion = false;
|
||
/**
|
||
* Permission to list blob containers, blobs, shares, directories, and files granted.
|
||
*/
|
||
this.list = false;
|
||
/**
|
||
* Permission to add messages, table entities, and append to blobs granted.
|
||
*/
|
||
this.add = false;
|
||
/**
|
||
* Permission to create blobs and files granted.
|
||
*/
|
||
this.create = false;
|
||
/**
|
||
* Permissions to update messages and table entities granted.
|
||
*/
|
||
this.update = false;
|
||
/**
|
||
* Permission to get and delete messages granted.
|
||
*/
|
||
this.process = false;
|
||
/**
|
||
* Specfies Tag access granted.
|
||
*/
|
||
this.tag = false;
|
||
/**
|
||
* Permission to filter blobs.
|
||
*/
|
||
this.filter = false;
|
||
}
|
||
/**
|
||
* Parse initializes the AccountSASPermissions fields from a string.
|
||
*
|
||
* @param permissions -
|
||
*/
|
||
AccountSASPermissions.parse = function (permissions) {
|
||
var accountSASPermissions = new AccountSASPermissions();
|
||
for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
|
||
var c = permissions_1[_i];
|
||
switch (c) {
|
||
case "r":
|
||
accountSASPermissions.read = true;
|
||
break;
|
||
case "w":
|
||
accountSASPermissions.write = true;
|
||
break;
|
||
case "d":
|
||
accountSASPermissions.delete = true;
|
||
break;
|
||
case "x":
|
||
accountSASPermissions.deleteVersion = true;
|
||
break;
|
||
case "l":
|
||
accountSASPermissions.list = true;
|
||
break;
|
||
case "a":
|
||
accountSASPermissions.add = true;
|
||
break;
|
||
case "c":
|
||
accountSASPermissions.create = true;
|
||
break;
|
||
case "u":
|
||
accountSASPermissions.update = true;
|
||
break;
|
||
case "p":
|
||
accountSASPermissions.process = true;
|
||
break;
|
||
case "t":
|
||
accountSASPermissions.tag = true;
|
||
break;
|
||
case "f":
|
||
accountSASPermissions.filter = true;
|
||
break;
|
||
default:
|
||
throw new RangeError("Invalid permission character: " + c);
|
||
}
|
||
}
|
||
return accountSASPermissions;
|
||
};
|
||
/**
|
||
* Creates a {@link AccountSASPermissions} from a raw object which contains same keys as it
|
||
* and boolean values for them.
|
||
*
|
||
* @param permissionLike -
|
||
*/
|
||
AccountSASPermissions.from = function (permissionLike) {
|
||
var accountSASPermissions = new AccountSASPermissions();
|
||
if (permissionLike.read) {
|
||
accountSASPermissions.read = true;
|
||
}
|
||
if (permissionLike.write) {
|
||
accountSASPermissions.write = true;
|
||
}
|
||
if (permissionLike.delete) {
|
||
accountSASPermissions.delete = true;
|
||
}
|
||
if (permissionLike.deleteVersion) {
|
||
accountSASPermissions.deleteVersion = true;
|
||
}
|
||
if (permissionLike.filter) {
|
||
accountSASPermissions.filter = true;
|
||
}
|
||
if (permissionLike.tag) {
|
||
accountSASPermissions.tag = true;
|
||
}
|
||
if (permissionLike.list) {
|
||
accountSASPermissions.list = true;
|
||
}
|
||
if (permissionLike.add) {
|
||
accountSASPermissions.add = true;
|
||
}
|
||
if (permissionLike.create) {
|
||
accountSASPermissions.create = true;
|
||
}
|
||
if (permissionLike.update) {
|
||
accountSASPermissions.update = true;
|
||
}
|
||
if (permissionLike.process) {
|
||
accountSASPermissions.process = true;
|
||
}
|
||
return accountSASPermissions;
|
||
};
|
||
/**
|
||
* Produces the SAS permissions string for an Azure Storage account.
|
||
* Call this method to set AccountSASSignatureValues Permissions field.
|
||
*
|
||
* Using this method will guarantee the resource types are in
|
||
* an order accepted by the service.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
|
||
*
|
||
*/
|
||
AccountSASPermissions.prototype.toString = function () {
|
||
// The order of the characters should be as specified here to ensure correctness:
|
||
// https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
|
||
// Use a string array instead of string concatenating += operator for performance
|
||
var permissions = [];
|
||
if (this.read) {
|
||
permissions.push("r");
|
||
}
|
||
if (this.write) {
|
||
permissions.push("w");
|
||
}
|
||
if (this.delete) {
|
||
permissions.push("d");
|
||
}
|
||
if (this.deleteVersion) {
|
||
permissions.push("x");
|
||
}
|
||
if (this.filter) {
|
||
permissions.push("f");
|
||
}
|
||
if (this.tag) {
|
||
permissions.push("t");
|
||
}
|
||
if (this.list) {
|
||
permissions.push("l");
|
||
}
|
||
if (this.add) {
|
||
permissions.push("a");
|
||
}
|
||
if (this.create) {
|
||
permissions.push("c");
|
||
}
|
||
if (this.update) {
|
||
permissions.push("u");
|
||
}
|
||
if (this.process) {
|
||
permissions.push("p");
|
||
}
|
||
return permissions.join("");
|
||
};
|
||
return AccountSASPermissions;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* This is a helper class to construct a string representing the resources accessible by an AccountSAS. Setting a value
|
||
* to true means that any SAS which uses these permissions will grant access to that resource type. Once all the
|
||
* values are set, this should be serialized with toString and set as the resources field on an
|
||
* {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but
|
||
* the order of the resources is particular and this class guarantees correctness.
|
||
*/
|
||
var AccountSASResourceTypes = /** @class */ (function () {
|
||
function AccountSASResourceTypes() {
|
||
/**
|
||
* Permission to access service level APIs granted.
|
||
*/
|
||
this.service = false;
|
||
/**
|
||
* Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares) granted.
|
||
*/
|
||
this.container = false;
|
||
/**
|
||
* Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files) granted.
|
||
*/
|
||
this.object = false;
|
||
}
|
||
/**
|
||
* Creates an {@link AccountSASResourceTypes} from the specified resource types string. This method will throw an
|
||
* Error if it encounters a character that does not correspond to a valid resource type.
|
||
*
|
||
* @param resourceTypes -
|
||
*/
|
||
AccountSASResourceTypes.parse = function (resourceTypes) {
|
||
var accountSASResourceTypes = new AccountSASResourceTypes();
|
||
for (var _i = 0, resourceTypes_1 = resourceTypes; _i < resourceTypes_1.length; _i++) {
|
||
var c = resourceTypes_1[_i];
|
||
switch (c) {
|
||
case "s":
|
||
accountSASResourceTypes.service = true;
|
||
break;
|
||
case "c":
|
||
accountSASResourceTypes.container = true;
|
||
break;
|
||
case "o":
|
||
accountSASResourceTypes.object = true;
|
||
break;
|
||
default:
|
||
throw new RangeError("Invalid resource type: " + c);
|
||
}
|
||
}
|
||
return accountSASResourceTypes;
|
||
};
|
||
/**
|
||
* Converts the given resource types to a string.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
|
||
*
|
||
*/
|
||
AccountSASResourceTypes.prototype.toString = function () {
|
||
var resourceTypes = [];
|
||
if (this.service) {
|
||
resourceTypes.push("s");
|
||
}
|
||
if (this.container) {
|
||
resourceTypes.push("c");
|
||
}
|
||
if (this.object) {
|
||
resourceTypes.push("o");
|
||
}
|
||
return resourceTypes.join("");
|
||
};
|
||
return AccountSASResourceTypes;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* This is a helper class to construct a string representing the services accessible by an AccountSAS. Setting a value
|
||
* to true means that any SAS which uses these permissions will grant access to that service. Once all the
|
||
* values are set, this should be serialized with toString and set as the services field on an
|
||
* {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but
|
||
* the order of the services is particular and this class guarantees correctness.
|
||
*/
|
||
var AccountSASServices = /** @class */ (function () {
|
||
function AccountSASServices() {
|
||
/**
|
||
* Permission to access blob resources granted.
|
||
*/
|
||
this.blob = false;
|
||
/**
|
||
* Permission to access file resources granted.
|
||
*/
|
||
this.file = false;
|
||
/**
|
||
* Permission to access queue resources granted.
|
||
*/
|
||
this.queue = false;
|
||
/**
|
||
* Permission to access table resources granted.
|
||
*/
|
||
this.table = false;
|
||
}
|
||
/**
|
||
* Creates an {@link AccountSASServices} from the specified services string. This method will throw an
|
||
* Error if it encounters a character that does not correspond to a valid service.
|
||
*
|
||
* @param services -
|
||
*/
|
||
AccountSASServices.parse = function (services) {
|
||
var accountSASServices = new AccountSASServices();
|
||
for (var _i = 0, services_1 = services; _i < services_1.length; _i++) {
|
||
var c = services_1[_i];
|
||
switch (c) {
|
||
case "b":
|
||
accountSASServices.blob = true;
|
||
break;
|
||
case "f":
|
||
accountSASServices.file = true;
|
||
break;
|
||
case "q":
|
||
accountSASServices.queue = true;
|
||
break;
|
||
case "t":
|
||
accountSASServices.table = true;
|
||
break;
|
||
default:
|
||
throw new RangeError("Invalid service character: " + c);
|
||
}
|
||
}
|
||
return accountSASServices;
|
||
};
|
||
/**
|
||
* Converts the given services to a string.
|
||
*
|
||
*/
|
||
AccountSASServices.prototype.toString = function () {
|
||
var services = [];
|
||
if (this.blob) {
|
||
services.push("b");
|
||
}
|
||
if (this.table) {
|
||
services.push("t");
|
||
}
|
||
if (this.queue) {
|
||
services.push("q");
|
||
}
|
||
if (this.file) {
|
||
services.push("f");
|
||
}
|
||
return services.join("");
|
||
};
|
||
return AccountSASServices;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
||
*
|
||
* Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual
|
||
* REST request.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
|
||
*
|
||
* @param accountSASSignatureValues -
|
||
* @param sharedKeyCredential -
|
||
*/
|
||
function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyCredential) {
|
||
var version = accountSASSignatureValues.version
|
||
? accountSASSignatureValues.version
|
||
: SERVICE_VERSION;
|
||
if (accountSASSignatureValues.permissions &&
|
||
accountSASSignatureValues.permissions.deleteVersion &&
|
||
version < "2019-10-10") {
|
||
throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
|
||
}
|
||
if (accountSASSignatureValues.permissions &&
|
||
accountSASSignatureValues.permissions.tag &&
|
||
version < "2019-12-12") {
|
||
throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
|
||
}
|
||
if (accountSASSignatureValues.permissions &&
|
||
accountSASSignatureValues.permissions.filter &&
|
||
version < "2019-12-12") {
|
||
throw RangeError("'version' must be >= '2019-12-12' when provided 'f' permission.");
|
||
}
|
||
var parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());
|
||
var parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();
|
||
var parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();
|
||
var stringToSign = [
|
||
sharedKeyCredential.accountName,
|
||
parsedPermissions,
|
||
parsedServices,
|
||
parsedResourceTypes,
|
||
accountSASSignatureValues.startsOn
|
||
? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)
|
||
: "",
|
||
truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),
|
||
accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : "",
|
||
accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : "",
|
||
version,
|
||
"" // Account SAS requires an additional newline character
|
||
].join("\n");
|
||
var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
|
||
return new SASQueryParameters(version, signature, parsedPermissions.toString(), parsedServices, parsedResourceTypes, accountSASSignatureValues.protocol, accountSASSignatureValues.startsOn, accountSASSignatureValues.expiresOn, accountSASSignatureValues.ipRange);
|
||
}
|
||
|
||
/**
|
||
* A BlobServiceClient represents a Client to the Azure Storage Blob service allowing you
|
||
* to manipulate blob containers.
|
||
*/
|
||
var BlobServiceClient = /** @class */ (function (_super) {
|
||
tslib.__extends(BlobServiceClient, _super);
|
||
function BlobServiceClient(url, credentialOrPipeline, options) {
|
||
var _this = this;
|
||
var pipeline;
|
||
if (credentialOrPipeline instanceof Pipeline) {
|
||
pipeline = credentialOrPipeline;
|
||
}
|
||
else if ((coreHttp.isNode && credentialOrPipeline instanceof StorageSharedKeyCredential) ||
|
||
credentialOrPipeline instanceof AnonymousCredential ||
|
||
coreHttp.isTokenCredential(credentialOrPipeline)) {
|
||
pipeline = newPipeline(credentialOrPipeline, options);
|
||
}
|
||
else {
|
||
// The second parameter is undefined. Use anonymous credential
|
||
pipeline = newPipeline(new AnonymousCredential(), options);
|
||
}
|
||
_this = _super.call(this, url, pipeline) || this;
|
||
_this.serviceContext = new Service(_this.storageClientContext);
|
||
return _this;
|
||
}
|
||
/**
|
||
*
|
||
* Creates an instance of BlobServiceClient from connection string.
|
||
*
|
||
* @param connectionString - Account connection string or a SAS connection string of an Azure storage account.
|
||
* [ Note - Account connection string can only be used in NODE.JS runtime. ]
|
||
* Account connection string example -
|
||
* `DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net`
|
||
* SAS connection string example -
|
||
* `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`
|
||
* @param options - Optional. Options to configure the HTTP pipeline.
|
||
*/
|
||
BlobServiceClient.fromConnectionString = function (connectionString, options) {
|
||
options = options || {};
|
||
var extractedCreds = extractConnectionStringParts(connectionString);
|
||
if (extractedCreds.kind === "AccountConnString") {
|
||
{
|
||
var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
|
||
options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
|
||
var pipeline = newPipeline(sharedKeyCredential, options);
|
||
return new BlobServiceClient(extractedCreds.url, pipeline);
|
||
}
|
||
}
|
||
else if (extractedCreds.kind === "SASConnString") {
|
||
var pipeline = newPipeline(new AnonymousCredential(), options);
|
||
return new BlobServiceClient(extractedCreds.url + "?" + extractedCreds.accountSas, pipeline);
|
||
}
|
||
else {
|
||
throw new Error("Connection string must be either an Account connection string or a SAS connection string");
|
||
}
|
||
};
|
||
/**
|
||
* Creates a {@link ContainerClient} object
|
||
*
|
||
* @param containerName - A container name
|
||
* @returns A new ContainerClient object for the given container name.
|
||
*
|
||
* Example usage:
|
||
*
|
||
* ```js
|
||
* const containerClient = blobServiceClient.getContainerClient("<container name>");
|
||
* ```
|
||
*/
|
||
BlobServiceClient.prototype.getContainerClient = function (containerName) {
|
||
return new ContainerClient(appendToURLPath(this.url, encodeURIComponent(containerName)), this.pipeline);
|
||
};
|
||
/**
|
||
* Create a Blob container.
|
||
*
|
||
* @param containerName - Name of the container to create.
|
||
* @param options - Options to configure Container Create operation.
|
||
* @returns Container creation response and the corresponding container client.
|
||
*/
|
||
BlobServiceClient.prototype.createContainer = function (containerName, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, containerClient, containerCreateResponse, e_1;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobServiceClient-createContainer", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
containerClient = this.getContainerClient(containerName);
|
||
return [4 /*yield*/, containerClient.create(updatedOptions)];
|
||
case 2:
|
||
containerCreateResponse = _b.sent();
|
||
return [2 /*return*/, {
|
||
containerClient: containerClient,
|
||
containerCreateResponse: containerCreateResponse
|
||
}];
|
||
case 3:
|
||
e_1 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_1.message
|
||
});
|
||
throw e_1;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Deletes a Blob container.
|
||
*
|
||
* @param containerName - Name of the container to delete.
|
||
* @param options - Options to configure Container Delete operation.
|
||
* @returns Container deletion response.
|
||
*/
|
||
BlobServiceClient.prototype.deleteContainer = function (containerName, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, containerClient, e_2;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobServiceClient-deleteContainer", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
containerClient = this.getContainerClient(containerName);
|
||
return [4 /*yield*/, containerClient.delete(updatedOptions)];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_2 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_2.message
|
||
});
|
||
throw e_2;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Restore a previously deleted Blob container.
|
||
* This API is only functional if Container Soft Delete is enabled for the storage account associated with the container.
|
||
*
|
||
* @param deletedContainerName - Name of the previously deleted container.
|
||
* @param deletedContainerVersion - Version of the previously deleted container, used to uniquely identify the deleted container.
|
||
* @param options - Options to configure Container Restore operation.
|
||
* @returns Container deletion response.
|
||
*/
|
||
BlobServiceClient.prototype.undeleteContainer = function (deletedContainerName, deletedContainerVersion, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, containerClient, containerContext, containerUndeleteResponse, e_3;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobServiceClient-undeleteContainer", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
containerClient = this.getContainerClient(options.destinationContainerName || deletedContainerName);
|
||
containerContext = new Container(containerClient["storageClientContext"]);
|
||
return [4 /*yield*/, containerContext.restore(tslib.__assign({ deletedContainerName: deletedContainerName,
|
||
deletedContainerVersion: deletedContainerVersion }, updatedOptions))];
|
||
case 2:
|
||
containerUndeleteResponse = _b.sent();
|
||
return [2 /*return*/, { containerClient: containerClient, containerUndeleteResponse: containerUndeleteResponse }];
|
||
case 3:
|
||
e_3 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_3.message
|
||
});
|
||
throw e_3;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Rename an existing Blob Container.
|
||
*
|
||
* @param sourceContainerName - The name of the source container.
|
||
* @param destinationContainerName - The new name of the container.
|
||
* @param options - Options to configure Container Rename operation.
|
||
*/
|
||
// @ts-ignore Need to hide this interface for now. Make it public and turn on the live tests for it when the service is ready.
|
||
BlobServiceClient.prototype.renameContainer = function (sourceContainerName, destinationContainerName, options) {
|
||
var _a;
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _b, span, updatedOptions, containerClient, containerContext, containerRenameResponse, e_4;
|
||
return tslib.__generator(this, function (_c) {
|
||
switch (_c.label) {
|
||
case 0:
|
||
_b = createSpan("BlobServiceClient-renameContainer", options), span = _b.span, updatedOptions = _b.updatedOptions;
|
||
_c.label = 1;
|
||
case 1:
|
||
_c.trys.push([1, 3, 4, 5]);
|
||
containerClient = this.getContainerClient(destinationContainerName);
|
||
containerContext = new Container(containerClient["storageClientContext"]);
|
||
return [4 /*yield*/, containerContext.rename(sourceContainerName, tslib.__assign(tslib.__assign({}, updatedOptions), { sourceLeaseId: (_a = options.sourceCondition) === null || _a === void 0 ? void 0 : _a.leaseId }))];
|
||
case 2:
|
||
containerRenameResponse = _c.sent();
|
||
return [2 /*return*/, { containerClient: containerClient, containerRenameResponse: containerRenameResponse }];
|
||
case 3:
|
||
e_4 = _c.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_4.message
|
||
});
|
||
throw e_4;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Gets the properties of a storage account’s Blob service, including properties
|
||
* for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-properties
|
||
*
|
||
* @param options - Options to the Service Get Properties operation.
|
||
* @returns Response data for the Service Get Properties operation.
|
||
*/
|
||
BlobServiceClient.prototype.getProperties = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_5;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobServiceClient-getProperties", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.serviceContext.getProperties(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_5 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_5.message
|
||
});
|
||
throw e_5;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Sets properties for a storage account’s Blob service endpoint, including properties
|
||
* for Storage Analytics, CORS (Cross-Origin Resource Sharing) rules and soft delete settings.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-service-properties
|
||
*
|
||
* @param properties -
|
||
* @param options - Options to the Service Set Properties operation.
|
||
* @returns Response data for the Service Set Properties operation.
|
||
*/
|
||
BlobServiceClient.prototype.setProperties = function (properties, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_6;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobServiceClient-setProperties", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.serviceContext.setProperties(properties, tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_6 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_6.message
|
||
});
|
||
throw e_6;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Retrieves statistics related to replication for the Blob service. It is only
|
||
* available on the secondary location endpoint when read-access geo-redundant
|
||
* replication is enabled for the storage account.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-stats
|
||
*
|
||
* @param options - Options to the Service Get Statistics operation.
|
||
* @returns Response data for the Service Get Statistics operation.
|
||
*/
|
||
BlobServiceClient.prototype.getStatistics = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_7;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobServiceClient-getStatistics", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.serviceContext.getStatistics(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_7 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_7.message
|
||
});
|
||
throw e_7;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* The Get Account Information operation returns the sku name and account kind
|
||
* for the specified account.
|
||
* The Get Account Information operation is available on service versions beginning
|
||
* with version 2018-03-28.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-account-information
|
||
*
|
||
* @param options - Options to the Service Get Account Info operation.
|
||
* @returns Response data for the Service Get Account Info operation.
|
||
*/
|
||
BlobServiceClient.prototype.getAccountInfo = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_8;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobServiceClient-getAccountInfo", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.serviceContext.getAccountInfo(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_8 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_8.message
|
||
});
|
||
throw e_8;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns a list of the containers under the specified account.
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/list-containers2
|
||
*
|
||
* @param marker - A string value that identifies the portion of
|
||
* the list of containers to be returned with the next listing operation. The
|
||
* operation returns the continuationToken value within the response body if the
|
||
* listing operation did not return all containers remaining to be listed
|
||
* with the current page. The continuationToken value can be used as the value for
|
||
* the marker parameter in a subsequent call to request the next page of list
|
||
* items. The marker value is opaque to the client.
|
||
* @param options - Options to the Service List Container Segment operation.
|
||
* @returns Response data for the Service List Container Segment operation.
|
||
*/
|
||
BlobServiceClient.prototype.listContainersSegment = function (marker, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, e_9;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobServiceClient-listContainersSegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.serviceContext.listContainersSegment(tslib.__assign(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal, marker: marker }, options), { include: typeof options.include === "string" ? [options.include] : options.include }), convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
e_9 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_9.message
|
||
});
|
||
throw e_9;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* The Filter Blobs operation enables callers to list blobs across all containers whose tags
|
||
* match a given search expression. Filter blobs searches across all containers within a
|
||
* storage account but can be scoped within the expression to a single container.
|
||
*
|
||
* @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.
|
||
* The given expression must evaluate to true for a blob to be returned in the results.
|
||
* The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
|
||
* however, only a subset of the OData filter syntax is supported in the Blob service.
|
||
* @param marker - A string value that identifies the portion of
|
||
* the list of blobs to be returned with the next listing operation. The
|
||
* operation returns the continuationToken value within the response body if the
|
||
* listing operation did not return all blobs remaining to be listed
|
||
* with the current page. The continuationToken value can be used as the value for
|
||
* the marker parameter in a subsequent call to request the next page of list
|
||
* items. The marker value is opaque to the client.
|
||
* @param options - Options to find blobs by tags.
|
||
*/
|
||
BlobServiceClient.prototype.findBlobsByTagsSegment = function (tagFilterSqlExpression, marker, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, response, wrappedResponse, e_10;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobServiceClient-findBlobsByTagsSegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.serviceContext.filterBlobs(tslib.__assign({ abortSignal: options.abortSignal, where: tagFilterSqlExpression, marker: marker, maxPageSize: options.maxPageSize }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
response = _b.sent();
|
||
wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, blobs: response.blobs.map(function (blob) {
|
||
var _a;
|
||
var tagValue = "";
|
||
if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {
|
||
tagValue = blob.tags.blobTagSet[0].value;
|
||
}
|
||
return tslib.__assign(tslib.__assign({}, blob), { tags: toTags(blob.tags), tagValue: tagValue });
|
||
}) });
|
||
return [2 /*return*/, wrappedResponse];
|
||
case 3:
|
||
e_10 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_10.message
|
||
});
|
||
throw e_10;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns an AsyncIterableIterator for ServiceFindBlobsByTagsSegmentResponse.
|
||
*
|
||
* @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.
|
||
* The given expression must evaluate to true for a blob to be returned in the results.
|
||
* The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
|
||
* however, only a subset of the OData filter syntax is supported in the Blob service.
|
||
* @param marker - A string value that identifies the portion of
|
||
* the list of blobs to be returned with the next listing operation. The
|
||
* operation returns the continuationToken value within the response body if the
|
||
* listing operation did not return all blobs remaining to be listed
|
||
* with the current page. The continuationToken value can be used as the value for
|
||
* the marker parameter in a subsequent call to request the next page of list
|
||
* items. The marker value is opaque to the client.
|
||
* @param options - Options to find blobs by tags.
|
||
*/
|
||
BlobServiceClient.prototype.findBlobsByTagsSegments = function (tagFilterSqlExpression, marker, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__asyncGenerator(this, arguments, function findBlobsByTagsSegments_1() {
|
||
var response;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
if (!(!!marker || marker === undefined)) return [3 /*break*/, 6];
|
||
_a.label = 1;
|
||
case 1: return [4 /*yield*/, tslib.__await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options))];
|
||
case 2:
|
||
response = _a.sent();
|
||
response.blobs = response.blobs || [];
|
||
marker = response.continuationToken;
|
||
return [4 /*yield*/, tslib.__await(response)];
|
||
case 3: return [4 /*yield*/, _a.sent()];
|
||
case 4:
|
||
_a.sent();
|
||
_a.label = 5;
|
||
case 5:
|
||
if (marker) return [3 /*break*/, 1];
|
||
_a.label = 6;
|
||
case 6: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns an AsyncIterableIterator for blobs.
|
||
*
|
||
* @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.
|
||
* The given expression must evaluate to true for a blob to be returned in the results.
|
||
* The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
|
||
* however, only a subset of the OData filter syntax is supported in the Blob service.
|
||
* @param options - Options to findBlobsByTagsItems.
|
||
*/
|
||
BlobServiceClient.prototype.findBlobsByTagsItems = function (tagFilterSqlExpression, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__asyncGenerator(this, arguments, function findBlobsByTagsItems_1() {
|
||
var marker, _a, _b, segment, e_11_1;
|
||
var e_11, _c;
|
||
return tslib.__generator(this, function (_d) {
|
||
switch (_d.label) {
|
||
case 0:
|
||
_d.trys.push([0, 7, 8, 13]);
|
||
_a = tslib.__asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options));
|
||
_d.label = 1;
|
||
case 1: return [4 /*yield*/, tslib.__await(_a.next())];
|
||
case 2:
|
||
if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
|
||
segment = _b.value;
|
||
return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(segment.blobs)))];
|
||
case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
|
||
case 4:
|
||
_d.sent();
|
||
_d.label = 5;
|
||
case 5: return [3 /*break*/, 1];
|
||
case 6: return [3 /*break*/, 13];
|
||
case 7:
|
||
e_11_1 = _d.sent();
|
||
e_11 = { error: e_11_1 };
|
||
return [3 /*break*/, 13];
|
||
case 8:
|
||
_d.trys.push([8, , 11, 12]);
|
||
if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
|
||
return [4 /*yield*/, tslib.__await(_c.call(_a))];
|
||
case 9:
|
||
_d.sent();
|
||
_d.label = 10;
|
||
case 10: return [3 /*break*/, 12];
|
||
case 11:
|
||
if (e_11) throw e_11.error;
|
||
return [7 /*endfinally*/];
|
||
case 12: return [7 /*endfinally*/];
|
||
case 13: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns an async iterable iterator to find all blobs with specified tag
|
||
* under the specified account.
|
||
*
|
||
* .byPage() returns an async iterable iterator to list the blobs in pages.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-properties
|
||
*
|
||
* Example using `for await` syntax:
|
||
*
|
||
* ```js
|
||
* let i = 1;
|
||
* for await (const blob of blobServiceClient.findBlobsByTags("tagkey='tagvalue'")) {
|
||
* console.log(`Blob ${i++}: ${container.name}`);
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using `iter.next()`:
|
||
*
|
||
* ```js
|
||
* let i = 1;
|
||
* const iter = blobServiceClient.findBlobsByTags("tagkey='tagvalue'");
|
||
* let blobItem = await iter.next();
|
||
* while (!blobItem.done) {
|
||
* console.log(`Blob ${i++}: ${blobItem.value.name}`);
|
||
* blobItem = await iter.next();
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using `byPage()`:
|
||
*
|
||
* ```js
|
||
* // passing optional maxPageSize in the page settings
|
||
* let i = 1;
|
||
* for await (const response of blobServiceClient.findBlobsByTags("tagkey='tagvalue'").byPage({ maxPageSize: 20 })) {
|
||
* if (response.blobs) {
|
||
* for (const blob of response.blobs) {
|
||
* console.log(`Blob ${i++}: ${blob.name}`);
|
||
* }
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using paging with a marker:
|
||
*
|
||
* ```js
|
||
* let i = 1;
|
||
* let iterator = blobServiceClient.findBlobsByTags("tagkey='tagvalue'").byPage({ maxPageSize: 2 });
|
||
* let response = (await iterator.next()).value;
|
||
*
|
||
* // Prints 2 blob names
|
||
* if (response.blobs) {
|
||
* for (const blob of response.blobs) {
|
||
* console.log(`Blob ${i++}: ${blob.name}`);
|
||
* }
|
||
* }
|
||
*
|
||
* // Gets next marker
|
||
* let marker = response.continuationToken;
|
||
* // Passing next marker as continuationToken
|
||
* iterator = blobServiceClient
|
||
* .findBlobsByTags("tagkey='tagvalue'")
|
||
* .byPage({ continuationToken: marker, maxPageSize: 10 });
|
||
* response = (await iterator.next()).value;
|
||
*
|
||
* // Prints blob names
|
||
* if (response.blobs) {
|
||
* for (const blob of response.blobs) {
|
||
* console.log(`Blob ${i++}: ${blob.name}`);
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.
|
||
* The given expression must evaluate to true for a blob to be returned in the results.
|
||
* The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
|
||
* however, only a subset of the OData filter syntax is supported in the Blob service.
|
||
* @param options - Options to find blobs by tags.
|
||
*/
|
||
BlobServiceClient.prototype.findBlobsByTags = function (tagFilterSqlExpression, options) {
|
||
var _a;
|
||
var _this = this;
|
||
if (options === void 0) { options = {}; }
|
||
// AsyncIterableIterator to iterate over blobs
|
||
var listSegmentOptions = tslib.__assign({}, options);
|
||
var iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);
|
||
return _a = {
|
||
/**
|
||
* The next method, part of the iteration protocol
|
||
*/
|
||
next: function () {
|
||
return iter.next();
|
||
}
|
||
},
|
||
/**
|
||
* The connection to the async iterator, part of the iteration protocol
|
||
*/
|
||
_a[Symbol.asyncIterator] = function () {
|
||
return this;
|
||
},
|
||
/**
|
||
* Return an AsyncIterableIterator that works a page at a time
|
||
*/
|
||
_a.byPage = function (settings) {
|
||
if (settings === void 0) { settings = {}; }
|
||
return _this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
|
||
},
|
||
_a;
|
||
};
|
||
/**
|
||
* Returns an AsyncIterableIterator for ServiceListContainersSegmentResponses
|
||
*
|
||
* @param marker - A string value that identifies the portion of
|
||
* the list of containers to be returned with the next listing operation. The
|
||
* operation returns the continuationToken value within the response body if the
|
||
* listing operation did not return all containers remaining to be listed
|
||
* with the current page. The continuationToken value can be used as the value for
|
||
* the marker parameter in a subsequent call to request the next page of list
|
||
* items. The marker value is opaque to the client.
|
||
* @param options - Options to list containers operation.
|
||
*/
|
||
BlobServiceClient.prototype.listSegments = function (marker, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__asyncGenerator(this, arguments, function listSegments_1() {
|
||
var listContainersSegmentResponse;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
|
||
_a.label = 1;
|
||
case 1: return [4 /*yield*/, tslib.__await(this.listContainersSegment(marker, options))];
|
||
case 2:
|
||
listContainersSegmentResponse = _a.sent();
|
||
listContainersSegmentResponse.containerItems =
|
||
listContainersSegmentResponse.containerItems || [];
|
||
marker = listContainersSegmentResponse.continuationToken;
|
||
return [4 /*yield*/, tslib.__await(listContainersSegmentResponse)];
|
||
case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
|
||
case 4: return [4 /*yield*/, _a.sent()];
|
||
case 5:
|
||
_a.sent();
|
||
_a.label = 6;
|
||
case 6:
|
||
if (marker) return [3 /*break*/, 1];
|
||
_a.label = 7;
|
||
case 7: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns an AsyncIterableIterator for Container Items
|
||
*
|
||
* @param options - Options to list containers operation.
|
||
*/
|
||
BlobServiceClient.prototype.listItems = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__asyncGenerator(this, arguments, function listItems_1() {
|
||
var marker, _a, _b, segment, e_12_1;
|
||
var e_12, _c;
|
||
return tslib.__generator(this, function (_d) {
|
||
switch (_d.label) {
|
||
case 0:
|
||
_d.trys.push([0, 7, 8, 13]);
|
||
_a = tslib.__asyncValues(this.listSegments(marker, options));
|
||
_d.label = 1;
|
||
case 1: return [4 /*yield*/, tslib.__await(_a.next())];
|
||
case 2:
|
||
if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
|
||
segment = _b.value;
|
||
return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(segment.containerItems)))];
|
||
case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
|
||
case 4:
|
||
_d.sent();
|
||
_d.label = 5;
|
||
case 5: return [3 /*break*/, 1];
|
||
case 6: return [3 /*break*/, 13];
|
||
case 7:
|
||
e_12_1 = _d.sent();
|
||
e_12 = { error: e_12_1 };
|
||
return [3 /*break*/, 13];
|
||
case 8:
|
||
_d.trys.push([8, , 11, 12]);
|
||
if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
|
||
return [4 /*yield*/, tslib.__await(_c.call(_a))];
|
||
case 9:
|
||
_d.sent();
|
||
_d.label = 10;
|
||
case 10: return [3 /*break*/, 12];
|
||
case 11:
|
||
if (e_12) throw e_12.error;
|
||
return [7 /*endfinally*/];
|
||
case 12: return [7 /*endfinally*/];
|
||
case 13: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns an async iterable iterator to list all the containers
|
||
* under the specified account.
|
||
*
|
||
* .byPage() returns an async iterable iterator to list the containers in pages.
|
||
*
|
||
* Example using `for await` syntax:
|
||
*
|
||
* ```js
|
||
* let i = 1;
|
||
* for await (const container of blobServiceClient.listContainers()) {
|
||
* console.log(`Container ${i++}: ${container.name}`);
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using `iter.next()`:
|
||
*
|
||
* ```js
|
||
* let i = 1;
|
||
* const iter = blobServiceClient.listContainers();
|
||
* let containerItem = await iter.next();
|
||
* while (!containerItem.done) {
|
||
* console.log(`Container ${i++}: ${containerItem.value.name}`);
|
||
* containerItem = await iter.next();
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using `byPage()`:
|
||
*
|
||
* ```js
|
||
* // passing optional maxPageSize in the page settings
|
||
* let i = 1;
|
||
* for await (const response of blobServiceClient.listContainers().byPage({ maxPageSize: 20 })) {
|
||
* if (response.containerItems) {
|
||
* for (const container of response.containerItems) {
|
||
* console.log(`Container ${i++}: ${container.name}`);
|
||
* }
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* Example using paging with a marker:
|
||
*
|
||
* ```js
|
||
* let i = 1;
|
||
* let iterator = blobServiceClient.listContainers().byPage({ maxPageSize: 2 });
|
||
* let response = (await iterator.next()).value;
|
||
*
|
||
* // Prints 2 container names
|
||
* if (response.containerItems) {
|
||
* for (const container of response.containerItems) {
|
||
* console.log(`Container ${i++}: ${container.name}`);
|
||
* }
|
||
* }
|
||
*
|
||
* // Gets next marker
|
||
* let marker = response.continuationToken;
|
||
* // Passing next marker as continuationToken
|
||
* iterator = blobServiceClient
|
||
* .listContainers()
|
||
* .byPage({ continuationToken: marker, maxPageSize: 10 });
|
||
* response = (await iterator.next()).value;
|
||
*
|
||
* // Prints 10 container names
|
||
* if (response.containerItems) {
|
||
* for (const container of response.containerItems) {
|
||
* console.log(`Container ${i++}: ${container.name}`);
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* @param options - Options to list containers.
|
||
* @returns An asyncIterableIterator that supports paging.
|
||
*/
|
||
BlobServiceClient.prototype.listContainers = function (options) {
|
||
var _a;
|
||
var _this = this;
|
||
if (options === void 0) { options = {}; }
|
||
if (options.prefix === "") {
|
||
options.prefix = undefined;
|
||
}
|
||
var include = [];
|
||
if (options.includeDeleted) {
|
||
include.push("deleted");
|
||
}
|
||
if (options.includeMetadata) {
|
||
include.push("metadata");
|
||
}
|
||
// AsyncIterableIterator to iterate over containers
|
||
var listSegmentOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
|
||
var iter = this.listItems(listSegmentOptions);
|
||
return _a = {
|
||
/**
|
||
* The next method, part of the iteration protocol
|
||
*/
|
||
next: function () {
|
||
return iter.next();
|
||
}
|
||
},
|
||
/**
|
||
* The connection to the async iterator, part of the iteration protocol
|
||
*/
|
||
_a[Symbol.asyncIterator] = function () {
|
||
return this;
|
||
},
|
||
/**
|
||
* Return an AsyncIterableIterator that works a page at a time
|
||
*/
|
||
_a.byPage = function (settings) {
|
||
if (settings === void 0) { settings = {}; }
|
||
return _this.listSegments(settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
|
||
},
|
||
_a;
|
||
};
|
||
/**
|
||
* ONLY AVAILABLE WHEN USING BEARER TOKEN AUTHENTICATION (TokenCredential).
|
||
*
|
||
* Retrieves a user delegation key for the Blob service. This is only a valid operation when using
|
||
* bearer token authentication.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-user-delegation-key
|
||
*
|
||
* @param startsOn - The start time for the user delegation SAS. Must be within 7 days of the current time
|
||
* @param expiresOn - The end time for the user delegation SAS. Must be within 7 days of the current time
|
||
*/
|
||
BlobServiceClient.prototype.getUserDelegationKey = function (startsOn, expiresOn, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, span, updatedOptions, response, userDelegationKey, res, e_13;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = createSpan("BlobServiceClient-getUserDelegationKey", options), span = _a.span, updatedOptions = _a.updatedOptions;
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, 4, 5]);
|
||
return [4 /*yield*/, this.serviceContext.getUserDelegationKey({
|
||
startsOn: truncatedISO8061Date(startsOn, false),
|
||
expiresOn: truncatedISO8061Date(expiresOn, false)
|
||
}, tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
|
||
case 2:
|
||
response = _b.sent();
|
||
userDelegationKey = {
|
||
signedObjectId: response.signedObjectId,
|
||
signedTenantId: response.signedTenantId,
|
||
signedStartsOn: new Date(response.signedStartsOn),
|
||
signedExpiresOn: new Date(response.signedExpiresOn),
|
||
signedService: response.signedService,
|
||
signedVersion: response.signedVersion,
|
||
value: response.value
|
||
};
|
||
res = tslib.__assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);
|
||
return [2 /*return*/, res];
|
||
case 3:
|
||
e_13 = _b.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: e_13.message
|
||
});
|
||
throw e_13;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Creates a BlobBatchClient object to conduct batch operations.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
|
||
*
|
||
* @returns A new BlobBatchClient object for this service.
|
||
*/
|
||
BlobServiceClient.prototype.getBlobBatchClient = function () {
|
||
return new BlobBatchClient(this.url, this.pipeline);
|
||
};
|
||
/**
|
||
* Only available for BlobServiceClient constructed with a shared key credential.
|
||
*
|
||
* Generates a Blob account Shared Access Signature (SAS) URI based on the client properties
|
||
* and parameters passed in. The SAS is signed by the shared key credential of the client.
|
||
*
|
||
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-account-sas
|
||
*
|
||
* @param expiresOn - Optional. The time at which the shared access signature becomes invalid. Default to an hour later if not provided.
|
||
* @param permissions - Specifies the list of permissions to be associated with the SAS.
|
||
* @param resourceTypes - Specifies the resource types associated with the shared access signature.
|
||
* @param options - Optional parameters.
|
||
* @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
|
||
*/
|
||
BlobServiceClient.prototype.generateAccountSasUrl = function (expiresOn, permissions, resourceTypes, options) {
|
||
if (permissions === void 0) { permissions = AccountSASPermissions.parse("r"); }
|
||
if (resourceTypes === void 0) { resourceTypes = "sco"; }
|
||
if (options === void 0) { options = {}; }
|
||
if (!(this.credential instanceof StorageSharedKeyCredential)) {
|
||
throw RangeError("Can only generate the account SAS when the client is initialized with a shared key credential");
|
||
}
|
||
if (expiresOn === undefined) {
|
||
var now = new Date();
|
||
expiresOn = new Date(now.getTime() + 3600 * 1000);
|
||
}
|
||
var sas = generateAccountSASQueryParameters(tslib.__assign({ permissions: permissions,
|
||
expiresOn: expiresOn,
|
||
resourceTypes: resourceTypes, services: AccountSASServices.parse("b").toString() }, options), this.credential).toString();
|
||
return appendToURLQuery(this.url, sas);
|
||
};
|
||
return BlobServiceClient;
|
||
}(StorageClient));
|
||
|
||
Object.defineProperty(exports, 'BaseRequestPolicy', {
|
||
enumerable: true,
|
||
get: function () {
|
||
return coreHttp.BaseRequestPolicy;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, 'HttpHeaders', {
|
||
enumerable: true,
|
||
get: function () {
|
||
return coreHttp.HttpHeaders;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, 'RequestPolicyOptions', {
|
||
enumerable: true,
|
||
get: function () {
|
||
return coreHttp.RequestPolicyOptions;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, 'RestError', {
|
||
enumerable: true,
|
||
get: function () {
|
||
return coreHttp.RestError;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, 'WebResource', {
|
||
enumerable: true,
|
||
get: function () {
|
||
return coreHttp.WebResource;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, 'deserializationPolicy', {
|
||
enumerable: true,
|
||
get: function () {
|
||
return coreHttp.deserializationPolicy;
|
||
}
|
||
});
|
||
exports.AccountSASPermissions = AccountSASPermissions;
|
||
exports.AccountSASResourceTypes = AccountSASResourceTypes;
|
||
exports.AccountSASServices = AccountSASServices;
|
||
exports.AnonymousCredential = AnonymousCredential;
|
||
exports.AnonymousCredentialPolicy = AnonymousCredentialPolicy;
|
||
exports.AppendBlobClient = AppendBlobClient;
|
||
exports.BlobBatch = BlobBatch;
|
||
exports.BlobBatchClient = BlobBatchClient;
|
||
exports.BlobClient = BlobClient;
|
||
exports.BlobLeaseClient = BlobLeaseClient;
|
||
exports.BlobSASPermissions = BlobSASPermissions;
|
||
exports.BlobServiceClient = BlobServiceClient;
|
||
exports.BlockBlobClient = BlockBlobClient;
|
||
exports.ContainerClient = ContainerClient;
|
||
exports.ContainerSASPermissions = ContainerSASPermissions;
|
||
exports.Credential = Credential;
|
||
exports.CredentialPolicy = CredentialPolicy;
|
||
exports.PageBlobClient = PageBlobClient;
|
||
exports.Pipeline = Pipeline;
|
||
exports.SASQueryParameters = SASQueryParameters;
|
||
exports.StorageBrowserPolicy = StorageBrowserPolicy;
|
||
exports.StorageBrowserPolicyFactory = StorageBrowserPolicyFactory;
|
||
exports.StorageOAuthScopes = StorageOAuthScopes;
|
||
exports.StorageRetryPolicy = StorageRetryPolicy;
|
||
exports.StorageRetryPolicyFactory = StorageRetryPolicyFactory;
|
||
exports.StorageSharedKeyCredential = StorageSharedKeyCredential;
|
||
exports.StorageSharedKeyCredentialPolicy = StorageSharedKeyCredentialPolicy;
|
||
exports.generateAccountSASQueryParameters = generateAccountSASQueryParameters;
|
||
exports.generateBlobSASQueryParameters = generateBlobSASQueryParameters;
|
||
exports.logger = logger;
|
||
exports.newPipeline = newPipeline;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 374 */,
|
||
/* 375 */,
|
||
/* 376 */,
|
||
/* 377 */,
|
||
/* 378 */,
|
||
/* 379 */,
|
||
/* 380 */,
|
||
/* 381 */,
|
||
/* 382 */,
|
||
/* 383 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.Path = void 0;
|
||
const path = __importStar(__webpack_require__(622));
|
||
const pathHelper = __importStar(__webpack_require__(972));
|
||
const assert_1 = __importDefault(__webpack_require__(357));
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
/**
|
||
* Helper class for parsing paths into segments
|
||
*/
|
||
class Path {
|
||
/**
|
||
* Constructs a Path
|
||
* @param itemPath Path or array of segments
|
||
*/
|
||
constructor(itemPath) {
|
||
this.segments = [];
|
||
// String
|
||
if (typeof itemPath === 'string') {
|
||
assert_1.default(itemPath, `Parameter 'itemPath' must not be empty`);
|
||
// Normalize slashes and trim unnecessary trailing slash
|
||
itemPath = pathHelper.safeTrimTrailingSeparator(itemPath);
|
||
// Not rooted
|
||
if (!pathHelper.hasRoot(itemPath)) {
|
||
this.segments = itemPath.split(path.sep);
|
||
}
|
||
// Rooted
|
||
else {
|
||
// Add all segments, while not at the root
|
||
let remaining = itemPath;
|
||
let dir = pathHelper.dirname(remaining);
|
||
while (dir !== remaining) {
|
||
// Add the segment
|
||
const basename = path.basename(remaining);
|
||
this.segments.unshift(basename);
|
||
// Truncate the last segment
|
||
remaining = dir;
|
||
dir = pathHelper.dirname(remaining);
|
||
}
|
||
// Remainder is the root
|
||
this.segments.unshift(remaining);
|
||
}
|
||
}
|
||
// Array
|
||
else {
|
||
// Must not be empty
|
||
assert_1.default(itemPath.length > 0, `Parameter 'itemPath' must not be an empty array`);
|
||
// Each segment
|
||
for (let i = 0; i < itemPath.length; i++) {
|
||
let segment = itemPath[i];
|
||
// Must not be empty
|
||
assert_1.default(segment, `Parameter 'itemPath' must not contain any empty segments`);
|
||
// Normalize slashes
|
||
segment = pathHelper.normalizeSeparators(itemPath[i]);
|
||
// Root segment
|
||
if (i === 0 && pathHelper.hasRoot(segment)) {
|
||
segment = pathHelper.safeTrimTrailingSeparator(segment);
|
||
assert_1.default(segment === pathHelper.dirname(segment), `Parameter 'itemPath' root segment contains information for multiple segments`);
|
||
this.segments.push(segment);
|
||
}
|
||
// All other segments
|
||
else {
|
||
// Must not contain slash
|
||
assert_1.default(!segment.includes(path.sep), `Parameter 'itemPath' contains unexpected path separators`);
|
||
this.segments.push(segment);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
/**
|
||
* Converts the path to it's string representation
|
||
*/
|
||
toString() {
|
||
// First segment
|
||
let result = this.segments[0];
|
||
// All others
|
||
let skipSlash = result.endsWith(path.sep) || (IS_WINDOWS && /^[A-Z]:$/i.test(result));
|
||
for (let i = 1; i < this.segments.length; i++) {
|
||
if (skipSlash) {
|
||
skipSlash = false;
|
||
}
|
||
else {
|
||
result += path.sep;
|
||
}
|
||
result += this.segments[i];
|
||
}
|
||
return result;
|
||
}
|
||
}
|
||
exports.Path = Path;
|
||
//# sourceMappingURL=internal-path.js.map
|
||
|
||
/***/ }),
|
||
/* 384 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.SearchState = void 0;
|
||
class SearchState {
|
||
constructor(path, level) {
|
||
this.path = path;
|
||
this.level = level;
|
||
}
|
||
}
|
||
exports.SearchState = SearchState;
|
||
//# sourceMappingURL=internal-search-state.js.map
|
||
|
||
/***/ }),
|
||
/* 385 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||
|
||
var isPlainObject = _interopDefault(__webpack_require__(626));
|
||
var universalUserAgent = __webpack_require__(562);
|
||
|
||
function lowercaseKeys(object) {
|
||
if (!object) {
|
||
return {};
|
||
}
|
||
|
||
return Object.keys(object).reduce((newObj, key) => {
|
||
newObj[key.toLowerCase()] = object[key];
|
||
return newObj;
|
||
}, {});
|
||
}
|
||
|
||
function mergeDeep(defaults, options) {
|
||
const result = Object.assign({}, defaults);
|
||
Object.keys(options).forEach(key => {
|
||
if (isPlainObject(options[key])) {
|
||
if (!(key in defaults)) Object.assign(result, {
|
||
[key]: options[key]
|
||
});else result[key] = mergeDeep(defaults[key], options[key]);
|
||
} else {
|
||
Object.assign(result, {
|
||
[key]: options[key]
|
||
});
|
||
}
|
||
});
|
||
return result;
|
||
}
|
||
|
||
function merge(defaults, route, options) {
|
||
if (typeof route === "string") {
|
||
let [method, url] = route.split(" ");
|
||
options = Object.assign(url ? {
|
||
method,
|
||
url
|
||
} : {
|
||
url: method
|
||
}, options);
|
||
} else {
|
||
options = Object.assign({}, route);
|
||
} // lowercase header names before merging with defaults to avoid duplicates
|
||
|
||
|
||
options.headers = lowercaseKeys(options.headers);
|
||
const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten
|
||
|
||
if (defaults && defaults.mediaType.previews.length) {
|
||
mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews);
|
||
}
|
||
|
||
mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, ""));
|
||
return mergedOptions;
|
||
}
|
||
|
||
function addQueryParameters(url, parameters) {
|
||
const separator = /\?/.test(url) ? "&" : "?";
|
||
const names = Object.keys(parameters);
|
||
|
||
if (names.length === 0) {
|
||
return url;
|
||
}
|
||
|
||
return url + separator + names.map(name => {
|
||
if (name === "q") {
|
||
return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
|
||
}
|
||
|
||
return `${name}=${encodeURIComponent(parameters[name])}`;
|
||
}).join("&");
|
||
}
|
||
|
||
const urlVariableRegex = /\{[^}]+\}/g;
|
||
|
||
function removeNonChars(variableName) {
|
||
return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
|
||
}
|
||
|
||
function extractUrlVariableNames(url) {
|
||
const matches = url.match(urlVariableRegex);
|
||
|
||
if (!matches) {
|
||
return [];
|
||
}
|
||
|
||
return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
|
||
}
|
||
|
||
function omit(object, keysToOmit) {
|
||
return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => {
|
||
obj[key] = object[key];
|
||
return obj;
|
||
}, {});
|
||
}
|
||
|
||
// Based on https://github.com/bramstein/url-template, licensed under BSD
|
||
// TODO: create separate package.
|
||
//
|
||
// Copyright (c) 2012-2014, Bram Stein
|
||
// All rights reserved.
|
||
// Redistribution and use in source and binary forms, with or without
|
||
// modification, are permitted provided that the following conditions
|
||
// are met:
|
||
// 1. Redistributions of source code must retain the above copyright
|
||
// notice, this list of conditions and the following disclaimer.
|
||
// 2. Redistributions in binary form must reproduce the above copyright
|
||
// notice, this list of conditions and the following disclaimer in the
|
||
// documentation and/or other materials provided with the distribution.
|
||
// 3. The name of the author may not be used to endorse or promote products
|
||
// derived from this software without specific prior written permission.
|
||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||
// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
||
/* istanbul ignore file */
|
||
function encodeReserved(str) {
|
||
return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {
|
||
if (!/%[0-9A-Fa-f]/.test(part)) {
|
||
part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
|
||
}
|
||
|
||
return part;
|
||
}).join("");
|
||
}
|
||
|
||
function encodeUnreserved(str) {
|
||
return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
|
||
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
|
||
});
|
||
}
|
||
|
||
function encodeValue(operator, value, key) {
|
||
value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
|
||
|
||
if (key) {
|
||
return encodeUnreserved(key) + "=" + value;
|
||
} else {
|
||
return value;
|
||
}
|
||
}
|
||
|
||
function isDefined(value) {
|
||
return value !== undefined && value !== null;
|
||
}
|
||
|
||
function isKeyOperator(operator) {
|
||
return operator === ";" || operator === "&" || operator === "?";
|
||
}
|
||
|
||
function getValues(context, operator, key, modifier) {
|
||
var value = context[key],
|
||
result = [];
|
||
|
||
if (isDefined(value) && value !== "") {
|
||
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
||
value = value.toString();
|
||
|
||
if (modifier && modifier !== "*") {
|
||
value = value.substring(0, parseInt(modifier, 10));
|
||
}
|
||
|
||
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
|
||
} else {
|
||
if (modifier === "*") {
|
||
if (Array.isArray(value)) {
|
||
value.filter(isDefined).forEach(function (value) {
|
||
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
|
||
});
|
||
} else {
|
||
Object.keys(value).forEach(function (k) {
|
||
if (isDefined(value[k])) {
|
||
result.push(encodeValue(operator, value[k], k));
|
||
}
|
||
});
|
||
}
|
||
} else {
|
||
const tmp = [];
|
||
|
||
if (Array.isArray(value)) {
|
||
value.filter(isDefined).forEach(function (value) {
|
||
tmp.push(encodeValue(operator, value));
|
||
});
|
||
} else {
|
||
Object.keys(value).forEach(function (k) {
|
||
if (isDefined(value[k])) {
|
||
tmp.push(encodeUnreserved(k));
|
||
tmp.push(encodeValue(operator, value[k].toString()));
|
||
}
|
||
});
|
||
}
|
||
|
||
if (isKeyOperator(operator)) {
|
||
result.push(encodeUnreserved(key) + "=" + tmp.join(","));
|
||
} else if (tmp.length !== 0) {
|
||
result.push(tmp.join(","));
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
if (operator === ";") {
|
||
if (isDefined(value)) {
|
||
result.push(encodeUnreserved(key));
|
||
}
|
||
} else if (value === "" && (operator === "&" || operator === "?")) {
|
||
result.push(encodeUnreserved(key) + "=");
|
||
} else if (value === "") {
|
||
result.push("");
|
||
}
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
function parseUrl(template) {
|
||
return {
|
||
expand: expand.bind(null, template)
|
||
};
|
||
}
|
||
|
||
function expand(template, context) {
|
||
var operators = ["+", "#", ".", "/", ";", "?", "&"];
|
||
return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) {
|
||
if (expression) {
|
||
let operator = "";
|
||
const values = [];
|
||
|
||
if (operators.indexOf(expression.charAt(0)) !== -1) {
|
||
operator = expression.charAt(0);
|
||
expression = expression.substr(1);
|
||
}
|
||
|
||
expression.split(/,/g).forEach(function (variable) {
|
||
var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
|
||
values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
|
||
});
|
||
|
||
if (operator && operator !== "+") {
|
||
var separator = ",";
|
||
|
||
if (operator === "?") {
|
||
separator = "&";
|
||
} else if (operator !== "#") {
|
||
separator = operator;
|
||
}
|
||
|
||
return (values.length !== 0 ? operator : "") + values.join(separator);
|
||
} else {
|
||
return values.join(",");
|
||
}
|
||
} else {
|
||
return encodeReserved(literal);
|
||
}
|
||
});
|
||
}
|
||
|
||
function parse(options) {
|
||
// https://fetch.spec.whatwg.org/#methods
|
||
let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible
|
||
|
||
let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{+$1}");
|
||
let headers = Object.assign({}, options.headers);
|
||
let body;
|
||
let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later
|
||
|
||
const urlVariableNames = extractUrlVariableNames(url);
|
||
url = parseUrl(url).expand(parameters);
|
||
|
||
if (!/^http/.test(url)) {
|
||
url = options.baseUrl + url;
|
||
}
|
||
|
||
const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl");
|
||
const remainingParameters = omit(parameters, omittedParameters);
|
||
const isBinaryRequset = /application\/octet-stream/i.test(headers.accept);
|
||
|
||
if (!isBinaryRequset) {
|
||
if (options.mediaType.format) {
|
||
// e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw
|
||
headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(",");
|
||
}
|
||
|
||
if (options.mediaType.previews.length) {
|
||
const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
|
||
headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => {
|
||
const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
|
||
return `application/vnd.github.${preview}-preview${format}`;
|
||
}).join(",");
|
||
}
|
||
} // for GET/HEAD requests, set URL query parameters from remaining parameters
|
||
// for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters
|
||
|
||
|
||
if (["GET", "HEAD"].includes(method)) {
|
||
url = addQueryParameters(url, remainingParameters);
|
||
} else {
|
||
if ("data" in remainingParameters) {
|
||
body = remainingParameters.data;
|
||
} else {
|
||
if (Object.keys(remainingParameters).length) {
|
||
body = remainingParameters;
|
||
} else {
|
||
headers["content-length"] = 0;
|
||
}
|
||
}
|
||
} // default content-type for JSON if body is set
|
||
|
||
|
||
if (!headers["content-type"] && typeof body !== "undefined") {
|
||
headers["content-type"] = "application/json; charset=utf-8";
|
||
} // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.
|
||
// fetch does not allow to set `content-length` header, but we can set body to an empty string
|
||
|
||
|
||
if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
|
||
body = "";
|
||
} // Only return body/request keys if present
|
||
|
||
|
||
return Object.assign({
|
||
method,
|
||
url,
|
||
headers
|
||
}, typeof body !== "undefined" ? {
|
||
body
|
||
} : null, options.request ? {
|
||
request: options.request
|
||
} : null);
|
||
}
|
||
|
||
function endpointWithDefaults(defaults, route, options) {
|
||
return parse(merge(defaults, route, options));
|
||
}
|
||
|
||
function withDefaults(oldDefaults, newDefaults) {
|
||
const DEFAULTS = merge(oldDefaults, newDefaults);
|
||
const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
|
||
return Object.assign(endpoint, {
|
||
DEFAULTS,
|
||
defaults: withDefaults.bind(null, DEFAULTS),
|
||
merge: merge.bind(null, DEFAULTS),
|
||
parse
|
||
});
|
||
}
|
||
|
||
const VERSION = "5.5.1";
|
||
|
||
const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url.
|
||
// So we use RequestParameters and add method as additional required property.
|
||
|
||
const DEFAULTS = {
|
||
method: "GET",
|
||
baseUrl: "https://api.github.com",
|
||
headers: {
|
||
accept: "application/vnd.github.v3+json",
|
||
"user-agent": userAgent
|
||
},
|
||
mediaType: {
|
||
format: "",
|
||
previews: []
|
||
}
|
||
};
|
||
|
||
const endpoint = withDefaults(null, DEFAULTS);
|
||
|
||
exports.endpoint = endpoint;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 386 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.partialMatch = exports.match = exports.getSearchPaths = void 0;
|
||
const pathHelper = __importStar(__webpack_require__(972));
|
||
const internal_match_kind_1 = __webpack_require__(327);
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
/**
|
||
* Given an array of patterns, returns an array of paths to search.
|
||
* Duplicates and paths under other included paths are filtered out.
|
||
*/
|
||
function getSearchPaths(patterns) {
|
||
// Ignore negate patterns
|
||
patterns = patterns.filter(x => !x.negate);
|
||
// Create a map of all search paths
|
||
const searchPathMap = {};
|
||
for (const pattern of patterns) {
|
||
const key = IS_WINDOWS
|
||
? pattern.searchPath.toUpperCase()
|
||
: pattern.searchPath;
|
||
searchPathMap[key] = 'candidate';
|
||
}
|
||
const result = [];
|
||
for (const pattern of patterns) {
|
||
// Check if already included
|
||
const key = IS_WINDOWS
|
||
? pattern.searchPath.toUpperCase()
|
||
: pattern.searchPath;
|
||
if (searchPathMap[key] === 'included') {
|
||
continue;
|
||
}
|
||
// Check for an ancestor search path
|
||
let foundAncestor = false;
|
||
let tempKey = key;
|
||
let parent = pathHelper.dirname(tempKey);
|
||
while (parent !== tempKey) {
|
||
if (searchPathMap[parent]) {
|
||
foundAncestor = true;
|
||
break;
|
||
}
|
||
tempKey = parent;
|
||
parent = pathHelper.dirname(tempKey);
|
||
}
|
||
// Include the search pattern in the result
|
||
if (!foundAncestor) {
|
||
result.push(pattern.searchPath);
|
||
searchPathMap[key] = 'included';
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
exports.getSearchPaths = getSearchPaths;
|
||
/**
|
||
* Matches the patterns against the path
|
||
*/
|
||
function match(patterns, itemPath) {
|
||
let result = internal_match_kind_1.MatchKind.None;
|
||
for (const pattern of patterns) {
|
||
if (pattern.negate) {
|
||
result &= ~pattern.match(itemPath);
|
||
}
|
||
else {
|
||
result |= pattern.match(itemPath);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
exports.match = match;
|
||
/**
|
||
* Checks whether to descend further into the directory
|
||
*/
|
||
function partialMatch(patterns, itemPath) {
|
||
return patterns.some(x => !x.negate && x.partialMatch(itemPath));
|
||
}
|
||
exports.partialMatch = partialMatch;
|
||
//# sourceMappingURL=internal-pattern-helper.js.map
|
||
|
||
/***/ }),
|
||
/* 387 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.DiagAPI = void 0;
|
||
var logLevelLogger_1 = __webpack_require__(673);
|
||
var types_1 = __webpack_require__(545);
|
||
var global_utils_1 = __webpack_require__(525);
|
||
var API_NAME = 'diag';
|
||
/**
|
||
* Singleton object which represents the entry point to the OpenTelemetry internal
|
||
* diagnostic API
|
||
*/
|
||
var DiagAPI = /** @class */ (function () {
|
||
/**
|
||
* Private internal constructor
|
||
* @private
|
||
*/
|
||
function DiagAPI() {
|
||
function _logProxy(funcName) {
|
||
return function () {
|
||
var logger = global_utils_1.getGlobal('diag');
|
||
// shortcut if logger not set
|
||
if (!logger)
|
||
return;
|
||
return logger[funcName].apply(logger,
|
||
// work around Function.prototype.apply types
|
||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
arguments);
|
||
};
|
||
}
|
||
// Using self local variable for minification purposes as 'this' cannot be minified
|
||
var self = this;
|
||
// DiagAPI specific functions
|
||
self.setLogger = function (logger, logLevel) {
|
||
var _a;
|
||
if (logLevel === void 0) { logLevel = types_1.DiagLogLevel.INFO; }
|
||
if (logger === self) {
|
||
// There isn't much we can do here.
|
||
// Logging to the console might break the user application.
|
||
// Try to log to self. If a logger was previously registered it will receive the log.
|
||
var err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');
|
||
self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);
|
||
return;
|
||
}
|
||
global_utils_1.registerGlobal('diag', logLevelLogger_1.createLogLevelDiagLogger(logLevel, logger), true);
|
||
};
|
||
self.disable = function () {
|
||
global_utils_1.unregisterGlobal(API_NAME);
|
||
};
|
||
self.verbose = _logProxy('verbose');
|
||
self.debug = _logProxy('debug');
|
||
self.info = _logProxy('info');
|
||
self.warn = _logProxy('warn');
|
||
self.error = _logProxy('error');
|
||
}
|
||
/** Get the singleton instance of the DiagAPI API */
|
||
DiagAPI.instance = function () {
|
||
if (!this._instance) {
|
||
this._instance = new DiagAPI();
|
||
}
|
||
return this._instance;
|
||
};
|
||
return DiagAPI;
|
||
}());
|
||
exports.DiagAPI = DiagAPI;
|
||
//# sourceMappingURL=diag.js.map
|
||
|
||
/***/ }),
|
||
/* 388 */,
|
||
/* 389 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
const fs = __webpack_require__(747);
|
||
const shebangCommand = __webpack_require__(866);
|
||
|
||
function readShebang(command) {
|
||
// Read the first 150 bytes from the file
|
||
const size = 150;
|
||
let buffer;
|
||
|
||
if (Buffer.alloc) {
|
||
// Node.js v4.5+ / v5.10+
|
||
buffer = Buffer.alloc(size);
|
||
} else {
|
||
// Old Node.js API
|
||
buffer = new Buffer(size);
|
||
buffer.fill(0); // zero-fill
|
||
}
|
||
|
||
let fd;
|
||
|
||
try {
|
||
fd = fs.openSync(command, 'r');
|
||
fs.readSync(fd, buffer, 0, size, 0);
|
||
fs.closeSync(fd);
|
||
} catch (e) { /* Empty */ }
|
||
|
||
// Attempt to extract shebang (null is returned if not a shebang)
|
||
return shebangCommand(buffer.toString());
|
||
}
|
||
|
||
module.exports = readShebang;
|
||
|
||
|
||
/***/ }),
|
||
/* 390 */,
|
||
/* 391 */,
|
||
/* 392 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||
|
||
var osName = _interopDefault(__webpack_require__(2));
|
||
|
||
function getUserAgent() {
|
||
try {
|
||
return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
|
||
} catch (error) {
|
||
if (/wmic os get Caption/.test(error.message)) {
|
||
return "Windows <version undetectable>";
|
||
}
|
||
|
||
throw error;
|
||
}
|
||
}
|
||
|
||
exports.getUserAgent = getUserAgent;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 393 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
/*!
|
||
* Copyright (c) 2015, Salesforce.com, Inc.
|
||
* All rights reserved.
|
||
*
|
||
* Redistribution and use in source and binary forms, with or without
|
||
* modification, are permitted provided that the following conditions are met:
|
||
*
|
||
* 1. Redistributions of source code must retain the above copyright notice,
|
||
* this list of conditions and the following disclaimer.
|
||
*
|
||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||
* this list of conditions and the following disclaimer in the documentation
|
||
* and/or other materials provided with the distribution.
|
||
*
|
||
* 3. Neither the name of Salesforce.com nor the names of its contributors may
|
||
* be used to endorse or promote products derived from this software without
|
||
* specific prior written permission.
|
||
*
|
||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
* POSSIBILITY OF SUCH DAMAGE.
|
||
*/
|
||
|
||
const punycode = __webpack_require__(815);
|
||
const urlParse = __webpack_require__(835).parse;
|
||
const util = __webpack_require__(669);
|
||
const pubsuffix = __webpack_require__(324);
|
||
const Store = __webpack_require__(338).Store;
|
||
const MemoryCookieStore = __webpack_require__(332).MemoryCookieStore;
|
||
const pathMatch = __webpack_require__(678).pathMatch;
|
||
const VERSION = __webpack_require__(460);
|
||
const { fromCallback } = __webpack_require__(147);
|
||
|
||
// From RFC6265 S4.1.1
|
||
// note that it excludes \x3B ";"
|
||
const COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/;
|
||
|
||
const CONTROL_CHARS = /[\x00-\x1F]/;
|
||
|
||
// From Chromium // '\r', '\n' and '\0' should be treated as a terminator in
|
||
// the "relaxed" mode, see:
|
||
// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60
|
||
const TERMINATORS = ["\n", "\r", "\0"];
|
||
|
||
// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or ";"'
|
||
// Note ';' is \x3B
|
||
const PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/;
|
||
|
||
// date-time parsing constants (RFC6265 S5.1.1)
|
||
|
||
const DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/;
|
||
|
||
const MONTH_TO_NUM = {
|
||
jan: 0,
|
||
feb: 1,
|
||
mar: 2,
|
||
apr: 3,
|
||
may: 4,
|
||
jun: 5,
|
||
jul: 6,
|
||
aug: 7,
|
||
sep: 8,
|
||
oct: 9,
|
||
nov: 10,
|
||
dec: 11
|
||
};
|
||
|
||
const MAX_TIME = 2147483647000; // 31-bit max
|
||
const MIN_TIME = 0; // 31-bit min
|
||
const SAME_SITE_CONTEXT_VAL_ERR =
|
||
'Invalid sameSiteContext option for getCookies(); expected one of "strict", "lax", or "none"';
|
||
|
||
function checkSameSiteContext(value) {
|
||
const context = String(value).toLowerCase();
|
||
if (context === "none" || context === "lax" || context === "strict") {
|
||
return context;
|
||
} else {
|
||
return null;
|
||
}
|
||
}
|
||
|
||
const PrefixSecurityEnum = Object.freeze({
|
||
SILENT: "silent",
|
||
STRICT: "strict",
|
||
DISABLED: "unsafe-disabled"
|
||
});
|
||
|
||
// Dumped from ip-regex@4.0.0, with the following changes:
|
||
// * all capturing groups converted to non-capturing -- "(?:)"
|
||
// * support for IPv6 Scoped Literal ("%eth1") removed
|
||
// * lowercase hexadecimal only
|
||
var IP_REGEX_LOWERCASE =/(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-f\d]{1,4}:){7}(?:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,2}|:)|(?:[a-f\d]{1,4}:){4}(?:(?::[a-f\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,3}|:)|(?:[a-f\d]{1,4}:){3}(?:(?::[a-f\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,4}|:)|(?:[a-f\d]{1,4}:){2}(?:(?::[a-f\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,5}|:)|(?:[a-f\d]{1,4}:){1}(?:(?::[a-f\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,7}|:)))$)/;
|
||
|
||
/*
|
||
* Parses a Natural number (i.e., non-negative integer) with either the
|
||
* <min>*<max>DIGIT ( non-digit *OCTET )
|
||
* or
|
||
* <min>*<max>DIGIT
|
||
* grammar (RFC6265 S5.1.1).
|
||
*
|
||
* The "trailingOK" boolean controls if the grammar accepts a
|
||
* "( non-digit *OCTET )" trailer.
|
||
*/
|
||
function parseDigits(token, minDigits, maxDigits, trailingOK) {
|
||
let count = 0;
|
||
while (count < token.length) {
|
||
const c = token.charCodeAt(count);
|
||
// "non-digit = %x00-2F / %x3A-FF"
|
||
if (c <= 0x2f || c >= 0x3a) {
|
||
break;
|
||
}
|
||
count++;
|
||
}
|
||
|
||
// constrain to a minimum and maximum number of digits.
|
||
if (count < minDigits || count > maxDigits) {
|
||
return null;
|
||
}
|
||
|
||
if (!trailingOK && count != token.length) {
|
||
return null;
|
||
}
|
||
|
||
return parseInt(token.substr(0, count), 10);
|
||
}
|
||
|
||
function parseTime(token) {
|
||
const parts = token.split(":");
|
||
const result = [0, 0, 0];
|
||
|
||
/* RF6256 S5.1.1:
|
||
* time = hms-time ( non-digit *OCTET )
|
||
* hms-time = time-field ":" time-field ":" time-field
|
||
* time-field = 1*2DIGIT
|
||
*/
|
||
|
||
if (parts.length !== 3) {
|
||
return null;
|
||
}
|
||
|
||
for (let i = 0; i < 3; i++) {
|
||
// "time-field" must be strictly "1*2DIGIT", HOWEVER, "hms-time" can be
|
||
// followed by "( non-digit *OCTET )" so therefore the last time-field can
|
||
// have a trailer
|
||
const trailingOK = i == 2;
|
||
const num = parseDigits(parts[i], 1, 2, trailingOK);
|
||
if (num === null) {
|
||
return null;
|
||
}
|
||
result[i] = num;
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
function parseMonth(token) {
|
||
token = String(token)
|
||
.substr(0, 3)
|
||
.toLowerCase();
|
||
const num = MONTH_TO_NUM[token];
|
||
return num >= 0 ? num : null;
|
||
}
|
||
|
||
/*
|
||
* RFC6265 S5.1.1 date parser (see RFC for full grammar)
|
||
*/
|
||
function parseDate(str) {
|
||
if (!str) {
|
||
return;
|
||
}
|
||
|
||
/* RFC6265 S5.1.1:
|
||
* 2. Process each date-token sequentially in the order the date-tokens
|
||
* appear in the cookie-date
|
||
*/
|
||
const tokens = str.split(DATE_DELIM);
|
||
if (!tokens) {
|
||
return;
|
||
}
|
||
|
||
let hour = null;
|
||
let minute = null;
|
||
let second = null;
|
||
let dayOfMonth = null;
|
||
let month = null;
|
||
let year = null;
|
||
|
||
for (let i = 0; i < tokens.length; i++) {
|
||
const token = tokens[i].trim();
|
||
if (!token.length) {
|
||
continue;
|
||
}
|
||
|
||
let result;
|
||
|
||
/* 2.1. If the found-time flag is not set and the token matches the time
|
||
* production, set the found-time flag and set the hour- value,
|
||
* minute-value, and second-value to the numbers denoted by the digits in
|
||
* the date-token, respectively. Skip the remaining sub-steps and continue
|
||
* to the next date-token.
|
||
*/
|
||
if (second === null) {
|
||
result = parseTime(token);
|
||
if (result) {
|
||
hour = result[0];
|
||
minute = result[1];
|
||
second = result[2];
|
||
continue;
|
||
}
|
||
}
|
||
|
||
/* 2.2. If the found-day-of-month flag is not set and the date-token matches
|
||
* the day-of-month production, set the found-day-of- month flag and set
|
||
* the day-of-month-value to the number denoted by the date-token. Skip
|
||
* the remaining sub-steps and continue to the next date-token.
|
||
*/
|
||
if (dayOfMonth === null) {
|
||
// "day-of-month = 1*2DIGIT ( non-digit *OCTET )"
|
||
result = parseDigits(token, 1, 2, true);
|
||
if (result !== null) {
|
||
dayOfMonth = result;
|
||
continue;
|
||
}
|
||
}
|
||
|
||
/* 2.3. If the found-month flag is not set and the date-token matches the
|
||
* month production, set the found-month flag and set the month-value to
|
||
* the month denoted by the date-token. Skip the remaining sub-steps and
|
||
* continue to the next date-token.
|
||
*/
|
||
if (month === null) {
|
||
result = parseMonth(token);
|
||
if (result !== null) {
|
||
month = result;
|
||
continue;
|
||
}
|
||
}
|
||
|
||
/* 2.4. If the found-year flag is not set and the date-token matches the
|
||
* year production, set the found-year flag and set the year-value to the
|
||
* number denoted by the date-token. Skip the remaining sub-steps and
|
||
* continue to the next date-token.
|
||
*/
|
||
if (year === null) {
|
||
// "year = 2*4DIGIT ( non-digit *OCTET )"
|
||
result = parseDigits(token, 2, 4, true);
|
||
if (result !== null) {
|
||
year = result;
|
||
/* From S5.1.1:
|
||
* 3. If the year-value is greater than or equal to 70 and less
|
||
* than or equal to 99, increment the year-value by 1900.
|
||
* 4. If the year-value is greater than or equal to 0 and less
|
||
* than or equal to 69, increment the year-value by 2000.
|
||
*/
|
||
if (year >= 70 && year <= 99) {
|
||
year += 1900;
|
||
} else if (year >= 0 && year <= 69) {
|
||
year += 2000;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/* RFC 6265 S5.1.1
|
||
* "5. Abort these steps and fail to parse the cookie-date if:
|
||
* * at least one of the found-day-of-month, found-month, found-
|
||
* year, or found-time flags is not set,
|
||
* * the day-of-month-value is less than 1 or greater than 31,
|
||
* * the year-value is less than 1601,
|
||
* * the hour-value is greater than 23,
|
||
* * the minute-value is greater than 59, or
|
||
* * the second-value is greater than 59.
|
||
* (Note that leap seconds cannot be represented in this syntax.)"
|
||
*
|
||
* So, in order as above:
|
||
*/
|
||
if (
|
||
dayOfMonth === null ||
|
||
month === null ||
|
||
year === null ||
|
||
second === null ||
|
||
dayOfMonth < 1 ||
|
||
dayOfMonth > 31 ||
|
||
year < 1601 ||
|
||
hour > 23 ||
|
||
minute > 59 ||
|
||
second > 59
|
||
) {
|
||
return;
|
||
}
|
||
|
||
return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second));
|
||
}
|
||
|
||
function formatDate(date) {
|
||
return date.toUTCString();
|
||
}
|
||
|
||
// S5.1.2 Canonicalized Host Names
|
||
function canonicalDomain(str) {
|
||
if (str == null) {
|
||
return null;
|
||
}
|
||
str = str.trim().replace(/^\./, ""); // S4.1.2.3 & S5.2.3: ignore leading .
|
||
|
||
// convert to IDN if any non-ASCII characters
|
||
if (punycode && /[^\u0001-\u007f]/.test(str)) {
|
||
str = punycode.toASCII(str);
|
||
}
|
||
|
||
return str.toLowerCase();
|
||
}
|
||
|
||
// S5.1.3 Domain Matching
|
||
function domainMatch(str, domStr, canonicalize) {
|
||
if (str == null || domStr == null) {
|
||
return null;
|
||
}
|
||
if (canonicalize !== false) {
|
||
str = canonicalDomain(str);
|
||
domStr = canonicalDomain(domStr);
|
||
}
|
||
|
||
/*
|
||
* S5.1.3:
|
||
* "A string domain-matches a given domain string if at least one of the
|
||
* following conditions hold:"
|
||
*
|
||
* " o The domain string and the string are identical. (Note that both the
|
||
* domain string and the string will have been canonicalized to lower case at
|
||
* this point)"
|
||
*/
|
||
if (str == domStr) {
|
||
return true;
|
||
}
|
||
|
||
/* " o All of the following [three] conditions hold:" */
|
||
|
||
/* "* The domain string is a suffix of the string" */
|
||
const idx = str.indexOf(domStr);
|
||
if (idx <= 0) {
|
||
return false; // it's a non-match (-1) or prefix (0)
|
||
}
|
||
|
||
// next, check it's a proper suffix
|
||
// e.g., "a.b.c".indexOf("b.c") === 2
|
||
// 5 === 3+2
|
||
if (str.length !== domStr.length + idx) {
|
||
return false; // it's not a suffix
|
||
}
|
||
|
||
/* " * The last character of the string that is not included in the
|
||
* domain string is a %x2E (".") character." */
|
||
if (str.substr(idx-1,1) !== '.') {
|
||
return false; // doesn't align on "."
|
||
}
|
||
|
||
/* " * The string is a host name (i.e., not an IP address)." */
|
||
if (IP_REGEX_LOWERCASE.test(str)) {
|
||
return false; // it's an IP address
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
// RFC6265 S5.1.4 Paths and Path-Match
|
||
|
||
/*
|
||
* "The user agent MUST use an algorithm equivalent to the following algorithm
|
||
* to compute the default-path of a cookie:"
|
||
*
|
||
* Assumption: the path (and not query part or absolute uri) is passed in.
|
||
*/
|
||
function defaultPath(path) {
|
||
// "2. If the uri-path is empty or if the first character of the uri-path is not
|
||
// a %x2F ("/") character, output %x2F ("/") and skip the remaining steps.
|
||
if (!path || path.substr(0, 1) !== "/") {
|
||
return "/";
|
||
}
|
||
|
||
// "3. If the uri-path contains no more than one %x2F ("/") character, output
|
||
// %x2F ("/") and skip the remaining step."
|
||
if (path === "/") {
|
||
return path;
|
||
}
|
||
|
||
const rightSlash = path.lastIndexOf("/");
|
||
if (rightSlash === 0) {
|
||
return "/";
|
||
}
|
||
|
||
// "4. Output the characters of the uri-path from the first character up to,
|
||
// but not including, the right-most %x2F ("/")."
|
||
return path.slice(0, rightSlash);
|
||
}
|
||
|
||
function trimTerminator(str) {
|
||
for (let t = 0; t < TERMINATORS.length; t++) {
|
||
const terminatorIdx = str.indexOf(TERMINATORS[t]);
|
||
if (terminatorIdx !== -1) {
|
||
str = str.substr(0, terminatorIdx);
|
||
}
|
||
}
|
||
|
||
return str;
|
||
}
|
||
|
||
function parseCookiePair(cookiePair, looseMode) {
|
||
cookiePair = trimTerminator(cookiePair);
|
||
|
||
let firstEq = cookiePair.indexOf("=");
|
||
if (looseMode) {
|
||
if (firstEq === 0) {
|
||
// '=' is immediately at start
|
||
cookiePair = cookiePair.substr(1);
|
||
firstEq = cookiePair.indexOf("="); // might still need to split on '='
|
||
}
|
||
} else {
|
||
// non-loose mode
|
||
if (firstEq <= 0) {
|
||
// no '=' or is at start
|
||
return; // needs to have non-empty "cookie-name"
|
||
}
|
||
}
|
||
|
||
let cookieName, cookieValue;
|
||
if (firstEq <= 0) {
|
||
cookieName = "";
|
||
cookieValue = cookiePair.trim();
|
||
} else {
|
||
cookieName = cookiePair.substr(0, firstEq).trim();
|
||
cookieValue = cookiePair.substr(firstEq + 1).trim();
|
||
}
|
||
|
||
if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {
|
||
return;
|
||
}
|
||
|
||
const c = new Cookie();
|
||
c.key = cookieName;
|
||
c.value = cookieValue;
|
||
return c;
|
||
}
|
||
|
||
function parse(str, options) {
|
||
if (!options || typeof options !== "object") {
|
||
options = {};
|
||
}
|
||
str = str.trim();
|
||
|
||
// We use a regex to parse the "name-value-pair" part of S5.2
|
||
const firstSemi = str.indexOf(";"); // S5.2 step 1
|
||
const cookiePair = firstSemi === -1 ? str : str.substr(0, firstSemi);
|
||
const c = parseCookiePair(cookiePair, !!options.loose);
|
||
if (!c) {
|
||
return;
|
||
}
|
||
|
||
if (firstSemi === -1) {
|
||
return c;
|
||
}
|
||
|
||
// S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string
|
||
// (including the %x3B (";") in question)." plus later on in the same section
|
||
// "discard the first ";" and trim".
|
||
const unparsed = str.slice(firstSemi + 1).trim();
|
||
|
||
// "If the unparsed-attributes string is empty, skip the rest of these
|
||
// steps."
|
||
if (unparsed.length === 0) {
|
||
return c;
|
||
}
|
||
|
||
/*
|
||
* S5.2 says that when looping over the items "[p]rocess the attribute-name
|
||
* and attribute-value according to the requirements in the following
|
||
* subsections" for every item. Plus, for many of the individual attributes
|
||
* in S5.3 it says to use the "attribute-value of the last attribute in the
|
||
* cookie-attribute-list". Therefore, in this implementation, we overwrite
|
||
* the previous value.
|
||
*/
|
||
const cookie_avs = unparsed.split(";");
|
||
while (cookie_avs.length) {
|
||
const av = cookie_avs.shift().trim();
|
||
if (av.length === 0) {
|
||
// happens if ";;" appears
|
||
continue;
|
||
}
|
||
const av_sep = av.indexOf("=");
|
||
let av_key, av_value;
|
||
|
||
if (av_sep === -1) {
|
||
av_key = av;
|
||
av_value = null;
|
||
} else {
|
||
av_key = av.substr(0, av_sep);
|
||
av_value = av.substr(av_sep + 1);
|
||
}
|
||
|
||
av_key = av_key.trim().toLowerCase();
|
||
|
||
if (av_value) {
|
||
av_value = av_value.trim();
|
||
}
|
||
|
||
switch (av_key) {
|
||
case "expires": // S5.2.1
|
||
if (av_value) {
|
||
const exp = parseDate(av_value);
|
||
// "If the attribute-value failed to parse as a cookie date, ignore the
|
||
// cookie-av."
|
||
if (exp) {
|
||
// over and underflow not realistically a concern: V8's getTime() seems to
|
||
// store something larger than a 32-bit time_t (even with 32-bit node)
|
||
c.expires = exp;
|
||
}
|
||
}
|
||
break;
|
||
|
||
case "max-age": // S5.2.2
|
||
if (av_value) {
|
||
// "If the first character of the attribute-value is not a DIGIT or a "-"
|
||
// character ...[or]... If the remainder of attribute-value contains a
|
||
// non-DIGIT character, ignore the cookie-av."
|
||
if (/^-?[0-9]+$/.test(av_value)) {
|
||
const delta = parseInt(av_value, 10);
|
||
// "If delta-seconds is less than or equal to zero (0), let expiry-time
|
||
// be the earliest representable date and time."
|
||
c.setMaxAge(delta);
|
||
}
|
||
}
|
||
break;
|
||
|
||
case "domain": // S5.2.3
|
||
// "If the attribute-value is empty, the behavior is undefined. However,
|
||
// the user agent SHOULD ignore the cookie-av entirely."
|
||
if (av_value) {
|
||
// S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E
|
||
// (".") character."
|
||
const domain = av_value.trim().replace(/^\./, "");
|
||
if (domain) {
|
||
// "Convert the cookie-domain to lower case."
|
||
c.domain = domain.toLowerCase();
|
||
}
|
||
}
|
||
break;
|
||
|
||
case "path": // S5.2.4
|
||
/*
|
||
* "If the attribute-value is empty or if the first character of the
|
||
* attribute-value is not %x2F ("/"):
|
||
* Let cookie-path be the default-path.
|
||
* Otherwise:
|
||
* Let cookie-path be the attribute-value."
|
||
*
|
||
* We'll represent the default-path as null since it depends on the
|
||
* context of the parsing.
|
||
*/
|
||
c.path = av_value && av_value[0] === "/" ? av_value : null;
|
||
break;
|
||
|
||
case "secure": // S5.2.5
|
||
/*
|
||
* "If the attribute-name case-insensitively matches the string "Secure",
|
||
* the user agent MUST append an attribute to the cookie-attribute-list
|
||
* with an attribute-name of Secure and an empty attribute-value."
|
||
*/
|
||
c.secure = true;
|
||
break;
|
||
|
||
case "httponly": // S5.2.6 -- effectively the same as 'secure'
|
||
c.httpOnly = true;
|
||
break;
|
||
|
||
case "samesite": // RFC6265bis-02 S5.3.7
|
||
const enforcement = av_value ? av_value.toLowerCase() : "";
|
||
switch (enforcement) {
|
||
case "strict":
|
||
c.sameSite = "strict";
|
||
break;
|
||
case "lax":
|
||
c.sameSite = "lax";
|
||
break;
|
||
default:
|
||
// RFC6265bis-02 S5.3.7 step 1:
|
||
// "If cookie-av's attribute-value is not a case-insensitive match
|
||
// for "Strict" or "Lax", ignore the "cookie-av"."
|
||
// This effectively sets it to 'none' from the prototype.
|
||
break;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
c.extensions = c.extensions || [];
|
||
c.extensions.push(av);
|
||
break;
|
||
}
|
||
}
|
||
|
||
return c;
|
||
}
|
||
|
||
/**
|
||
* If the cookie-name begins with a case-sensitive match for the
|
||
* string "__Secure-", abort these steps and ignore the cookie
|
||
* entirely unless the cookie's secure-only-flag is true.
|
||
* @param cookie
|
||
* @returns boolean
|
||
*/
|
||
function isSecurePrefixConditionMet(cookie) {
|
||
return !cookie.key.startsWith("__Secure-") || cookie.secure;
|
||
}
|
||
|
||
/**
|
||
* If the cookie-name begins with a case-sensitive match for the
|
||
* string "__Host-", abort these steps and ignore the cookie
|
||
* entirely unless the cookie meets all the following criteria:
|
||
* 1. The cookie's secure-only-flag is true.
|
||
* 2. The cookie's host-only-flag is true.
|
||
* 3. The cookie-attribute-list contains an attribute with an
|
||
* attribute-name of "Path", and the cookie's path is "/".
|
||
* @param cookie
|
||
* @returns boolean
|
||
*/
|
||
function isHostPrefixConditionMet(cookie) {
|
||
return (
|
||
!cookie.key.startsWith("__Host-") ||
|
||
(cookie.secure &&
|
||
cookie.hostOnly &&
|
||
cookie.path != null &&
|
||
cookie.path === "/")
|
||
);
|
||
}
|
||
|
||
// avoid the V8 deoptimization monster!
|
||
function jsonParse(str) {
|
||
let obj;
|
||
try {
|
||
obj = JSON.parse(str);
|
||
} catch (e) {
|
||
return e;
|
||
}
|
||
return obj;
|
||
}
|
||
|
||
function fromJSON(str) {
|
||
if (!str) {
|
||
return null;
|
||
}
|
||
|
||
let obj;
|
||
if (typeof str === "string") {
|
||
obj = jsonParse(str);
|
||
if (obj instanceof Error) {
|
||
return null;
|
||
}
|
||
} else {
|
||
// assume it's an Object
|
||
obj = str;
|
||
}
|
||
|
||
const c = new Cookie();
|
||
for (let i = 0; i < Cookie.serializableProperties.length; i++) {
|
||
const prop = Cookie.serializableProperties[i];
|
||
if (obj[prop] === undefined || obj[prop] === cookieDefaults[prop]) {
|
||
continue; // leave as prototype default
|
||
}
|
||
|
||
if (prop === "expires" || prop === "creation" || prop === "lastAccessed") {
|
||
if (obj[prop] === null) {
|
||
c[prop] = null;
|
||
} else {
|
||
c[prop] = obj[prop] == "Infinity" ? "Infinity" : new Date(obj[prop]);
|
||
}
|
||
} else {
|
||
c[prop] = obj[prop];
|
||
}
|
||
}
|
||
|
||
return c;
|
||
}
|
||
|
||
/* Section 5.4 part 2:
|
||
* "* Cookies with longer paths are listed before cookies with
|
||
* shorter paths.
|
||
*
|
||
* * Among cookies that have equal-length path fields, cookies with
|
||
* earlier creation-times are listed before cookies with later
|
||
* creation-times."
|
||
*/
|
||
|
||
function cookieCompare(a, b) {
|
||
let cmp = 0;
|
||
|
||
// descending for length: b CMP a
|
||
const aPathLen = a.path ? a.path.length : 0;
|
||
const bPathLen = b.path ? b.path.length : 0;
|
||
cmp = bPathLen - aPathLen;
|
||
if (cmp !== 0) {
|
||
return cmp;
|
||
}
|
||
|
||
// ascending for time: a CMP b
|
||
const aTime = a.creation ? a.creation.getTime() : MAX_TIME;
|
||
const bTime = b.creation ? b.creation.getTime() : MAX_TIME;
|
||
cmp = aTime - bTime;
|
||
if (cmp !== 0) {
|
||
return cmp;
|
||
}
|
||
|
||
// break ties for the same millisecond (precision of JavaScript's clock)
|
||
cmp = a.creationIndex - b.creationIndex;
|
||
|
||
return cmp;
|
||
}
|
||
|
||
// Gives the permutation of all possible pathMatch()es of a given path. The
|
||
// array is in longest-to-shortest order. Handy for indexing.
|
||
function permutePath(path) {
|
||
if (path === "/") {
|
||
return ["/"];
|
||
}
|
||
const permutations = [path];
|
||
while (path.length > 1) {
|
||
const lindex = path.lastIndexOf("/");
|
||
if (lindex === 0) {
|
||
break;
|
||
}
|
||
path = path.substr(0, lindex);
|
||
permutations.push(path);
|
||
}
|
||
permutations.push("/");
|
||
return permutations;
|
||
}
|
||
|
||
function getCookieContext(url) {
|
||
if (url instanceof Object) {
|
||
return url;
|
||
}
|
||
// NOTE: decodeURI will throw on malformed URIs (see GH-32).
|
||
// Therefore, we will just skip decoding for such URIs.
|
||
try {
|
||
url = decodeURI(url);
|
||
} catch (err) {
|
||
// Silently swallow error
|
||
}
|
||
|
||
return urlParse(url);
|
||
}
|
||
|
||
const cookieDefaults = {
|
||
// the order in which the RFC has them:
|
||
key: "",
|
||
value: "",
|
||
expires: "Infinity",
|
||
maxAge: null,
|
||
domain: null,
|
||
path: null,
|
||
secure: false,
|
||
httpOnly: false,
|
||
extensions: null,
|
||
// set by the CookieJar:
|
||
hostOnly: null,
|
||
pathIsDefault: null,
|
||
creation: null,
|
||
lastAccessed: null,
|
||
sameSite: "none"
|
||
};
|
||
|
||
class Cookie {
|
||
constructor(options = {}) {
|
||
if (util.inspect.custom) {
|
||
this[util.inspect.custom] = this.inspect;
|
||
}
|
||
|
||
Object.assign(this, cookieDefaults, options);
|
||
this.creation = this.creation || new Date();
|
||
|
||
// used to break creation ties in cookieCompare():
|
||
Object.defineProperty(this, "creationIndex", {
|
||
configurable: false,
|
||
enumerable: false, // important for assert.deepEqual checks
|
||
writable: true,
|
||
value: ++Cookie.cookiesCreated
|
||
});
|
||
}
|
||
|
||
inspect() {
|
||
const now = Date.now();
|
||
const hostOnly = this.hostOnly != null ? this.hostOnly : "?";
|
||
const createAge = this.creation
|
||
? `${now - this.creation.getTime()}ms`
|
||
: "?";
|
||
const accessAge = this.lastAccessed
|
||
? `${now - this.lastAccessed.getTime()}ms`
|
||
: "?";
|
||
return `Cookie="${this.toString()}; hostOnly=${hostOnly}; aAge=${accessAge}; cAge=${createAge}"`;
|
||
}
|
||
|
||
toJSON() {
|
||
const obj = {};
|
||
|
||
for (const prop of Cookie.serializableProperties) {
|
||
if (this[prop] === cookieDefaults[prop]) {
|
||
continue; // leave as prototype default
|
||
}
|
||
|
||
if (
|
||
prop === "expires" ||
|
||
prop === "creation" ||
|
||
prop === "lastAccessed"
|
||
) {
|
||
if (this[prop] === null) {
|
||
obj[prop] = null;
|
||
} else {
|
||
obj[prop] =
|
||
this[prop] == "Infinity" // intentionally not ===
|
||
? "Infinity"
|
||
: this[prop].toISOString();
|
||
}
|
||
} else if (prop === "maxAge") {
|
||
if (this[prop] !== null) {
|
||
// again, intentionally not ===
|
||
obj[prop] =
|
||
this[prop] == Infinity || this[prop] == -Infinity
|
||
? this[prop].toString()
|
||
: this[prop];
|
||
}
|
||
} else {
|
||
if (this[prop] !== cookieDefaults[prop]) {
|
||
obj[prop] = this[prop];
|
||
}
|
||
}
|
||
}
|
||
|
||
return obj;
|
||
}
|
||
|
||
clone() {
|
||
return fromJSON(this.toJSON());
|
||
}
|
||
|
||
validate() {
|
||
if (!COOKIE_OCTETS.test(this.value)) {
|
||
return false;
|
||
}
|
||
if (
|
||
this.expires != Infinity &&
|
||
!(this.expires instanceof Date) &&
|
||
!parseDate(this.expires)
|
||
) {
|
||
return false;
|
||
}
|
||
if (this.maxAge != null && this.maxAge <= 0) {
|
||
return false; // "Max-Age=" non-zero-digit *DIGIT
|
||
}
|
||
if (this.path != null && !PATH_VALUE.test(this.path)) {
|
||
return false;
|
||
}
|
||
|
||
const cdomain = this.cdomain();
|
||
if (cdomain) {
|
||
if (cdomain.match(/\.$/)) {
|
||
return false; // S4.1.2.3 suggests that this is bad. domainMatch() tests confirm this
|
||
}
|
||
const suffix = pubsuffix.getPublicSuffix(cdomain);
|
||
if (suffix == null) {
|
||
// it's a public suffix
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
|
||
setExpires(exp) {
|
||
if (exp instanceof Date) {
|
||
this.expires = exp;
|
||
} else {
|
||
this.expires = parseDate(exp) || "Infinity";
|
||
}
|
||
}
|
||
|
||
setMaxAge(age) {
|
||
if (age === Infinity || age === -Infinity) {
|
||
this.maxAge = age.toString(); // so JSON.stringify() works
|
||
} else {
|
||
this.maxAge = age;
|
||
}
|
||
}
|
||
|
||
cookieString() {
|
||
let val = this.value;
|
||
if (val == null) {
|
||
val = "";
|
||
}
|
||
if (this.key === "") {
|
||
return val;
|
||
}
|
||
return `${this.key}=${val}`;
|
||
}
|
||
|
||
// gives Set-Cookie header format
|
||
toString() {
|
||
let str = this.cookieString();
|
||
|
||
if (this.expires != Infinity) {
|
||
if (this.expires instanceof Date) {
|
||
str += `; Expires=${formatDate(this.expires)}`;
|
||
} else {
|
||
str += `; Expires=${this.expires}`;
|
||
}
|
||
}
|
||
|
||
if (this.maxAge != null && this.maxAge != Infinity) {
|
||
str += `; Max-Age=${this.maxAge}`;
|
||
}
|
||
|
||
if (this.domain && !this.hostOnly) {
|
||
str += `; Domain=${this.domain}`;
|
||
}
|
||
if (this.path) {
|
||
str += `; Path=${this.path}`;
|
||
}
|
||
|
||
if (this.secure) {
|
||
str += "; Secure";
|
||
}
|
||
if (this.httpOnly) {
|
||
str += "; HttpOnly";
|
||
}
|
||
if (this.sameSite && this.sameSite !== "none") {
|
||
const ssCanon = Cookie.sameSiteCanonical[this.sameSite.toLowerCase()];
|
||
str += `; SameSite=${ssCanon ? ssCanon : this.sameSite}`;
|
||
}
|
||
if (this.extensions) {
|
||
this.extensions.forEach(ext => {
|
||
str += `; ${ext}`;
|
||
});
|
||
}
|
||
|
||
return str;
|
||
}
|
||
|
||
// TTL() partially replaces the "expiry-time" parts of S5.3 step 3 (setCookie()
|
||
// elsewhere)
|
||
// S5.3 says to give the "latest representable date" for which we use Infinity
|
||
// For "expired" we use 0
|
||
TTL(now) {
|
||
/* RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires
|
||
* attribute, the Max-Age attribute has precedence and controls the
|
||
* expiration date of the cookie.
|
||
* (Concurs with S5.3 step 3)
|
||
*/
|
||
if (this.maxAge != null) {
|
||
return this.maxAge <= 0 ? 0 : this.maxAge * 1000;
|
||
}
|
||
|
||
let expires = this.expires;
|
||
if (expires != Infinity) {
|
||
if (!(expires instanceof Date)) {
|
||
expires = parseDate(expires) || Infinity;
|
||
}
|
||
|
||
if (expires == Infinity) {
|
||
return Infinity;
|
||
}
|
||
|
||
return expires.getTime() - (now || Date.now());
|
||
}
|
||
|
||
return Infinity;
|
||
}
|
||
|
||
// expiryTime() replaces the "expiry-time" parts of S5.3 step 3 (setCookie()
|
||
// elsewhere)
|
||
expiryTime(now) {
|
||
if (this.maxAge != null) {
|
||
const relativeTo = now || this.creation || new Date();
|
||
const age = this.maxAge <= 0 ? -Infinity : this.maxAge * 1000;
|
||
return relativeTo.getTime() + age;
|
||
}
|
||
|
||
if (this.expires == Infinity) {
|
||
return Infinity;
|
||
}
|
||
return this.expires.getTime();
|
||
}
|
||
|
||
// expiryDate() replaces the "expiry-time" parts of S5.3 step 3 (setCookie()
|
||
// elsewhere), except it returns a Date
|
||
expiryDate(now) {
|
||
const millisec = this.expiryTime(now);
|
||
if (millisec == Infinity) {
|
||
return new Date(MAX_TIME);
|
||
} else if (millisec == -Infinity) {
|
||
return new Date(MIN_TIME);
|
||
} else {
|
||
return new Date(millisec);
|
||
}
|
||
}
|
||
|
||
// This replaces the "persistent-flag" parts of S5.3 step 3
|
||
isPersistent() {
|
||
return this.maxAge != null || this.expires != Infinity;
|
||
}
|
||
|
||
// Mostly S5.1.2 and S5.2.3:
|
||
canonicalizedDomain() {
|
||
if (this.domain == null) {
|
||
return null;
|
||
}
|
||
return canonicalDomain(this.domain);
|
||
}
|
||
|
||
cdomain() {
|
||
return this.canonicalizedDomain();
|
||
}
|
||
}
|
||
|
||
Cookie.cookiesCreated = 0;
|
||
Cookie.parse = parse;
|
||
Cookie.fromJSON = fromJSON;
|
||
Cookie.serializableProperties = Object.keys(cookieDefaults);
|
||
Cookie.sameSiteLevel = {
|
||
strict: 3,
|
||
lax: 2,
|
||
none: 1
|
||
};
|
||
|
||
Cookie.sameSiteCanonical = {
|
||
strict: "Strict",
|
||
lax: "Lax"
|
||
};
|
||
|
||
function getNormalizedPrefixSecurity(prefixSecurity) {
|
||
if (prefixSecurity != null) {
|
||
const normalizedPrefixSecurity = prefixSecurity.toLowerCase();
|
||
/* The three supported options */
|
||
switch (normalizedPrefixSecurity) {
|
||
case PrefixSecurityEnum.STRICT:
|
||
case PrefixSecurityEnum.SILENT:
|
||
case PrefixSecurityEnum.DISABLED:
|
||
return normalizedPrefixSecurity;
|
||
}
|
||
}
|
||
/* Default is SILENT */
|
||
return PrefixSecurityEnum.SILENT;
|
||
}
|
||
|
||
class CookieJar {
|
||
constructor(store, options = { rejectPublicSuffixes: true }) {
|
||
if (typeof options === "boolean") {
|
||
options = { rejectPublicSuffixes: options };
|
||
}
|
||
this.rejectPublicSuffixes = options.rejectPublicSuffixes;
|
||
this.enableLooseMode = !!options.looseMode;
|
||
this.allowSpecialUseDomain = !!options.allowSpecialUseDomain;
|
||
this.store = store || new MemoryCookieStore();
|
||
this.prefixSecurity = getNormalizedPrefixSecurity(options.prefixSecurity);
|
||
this._cloneSync = syncWrap("clone");
|
||
this._importCookiesSync = syncWrap("_importCookies");
|
||
this.getCookiesSync = syncWrap("getCookies");
|
||
this.getCookieStringSync = syncWrap("getCookieString");
|
||
this.getSetCookieStringsSync = syncWrap("getSetCookieStrings");
|
||
this.removeAllCookiesSync = syncWrap("removeAllCookies");
|
||
this.setCookieSync = syncWrap("setCookie");
|
||
this.serializeSync = syncWrap("serialize");
|
||
}
|
||
|
||
setCookie(cookie, url, options, cb) {
|
||
let err;
|
||
const context = getCookieContext(url);
|
||
if (typeof options === "function") {
|
||
cb = options;
|
||
options = {};
|
||
}
|
||
|
||
const host = canonicalDomain(context.hostname);
|
||
const loose = options.loose || this.enableLooseMode;
|
||
|
||
let sameSiteContext = null;
|
||
if (options.sameSiteContext) {
|
||
sameSiteContext = checkSameSiteContext(options.sameSiteContext);
|
||
if (!sameSiteContext) {
|
||
return cb(new Error(SAME_SITE_CONTEXT_VAL_ERR));
|
||
}
|
||
}
|
||
|
||
// S5.3 step 1
|
||
if (typeof cookie === "string" || cookie instanceof String) {
|
||
cookie = Cookie.parse(cookie, { loose: loose });
|
||
if (!cookie) {
|
||
err = new Error("Cookie failed to parse");
|
||
return cb(options.ignoreError ? null : err);
|
||
}
|
||
} else if (!(cookie instanceof Cookie)) {
|
||
// If you're seeing this error, and are passing in a Cookie object,
|
||
// it *might* be a Cookie object from another loaded version of tough-cookie.
|
||
err = new Error(
|
||
"First argument to setCookie must be a Cookie object or string"
|
||
);
|
||
return cb(options.ignoreError ? null : err);
|
||
}
|
||
|
||
// S5.3 step 2
|
||
const now = options.now || new Date(); // will assign later to save effort in the face of errors
|
||
|
||
// S5.3 step 3: NOOP; persistent-flag and expiry-time is handled by getCookie()
|
||
|
||
// S5.3 step 4: NOOP; domain is null by default
|
||
|
||
// S5.3 step 5: public suffixes
|
||
if (this.rejectPublicSuffixes && cookie.domain) {
|
||
const suffix = pubsuffix.getPublicSuffix(cookie.cdomain());
|
||
if (suffix == null) {
|
||
// e.g. "com"
|
||
err = new Error("Cookie has domain set to a public suffix");
|
||
return cb(options.ignoreError ? null : err);
|
||
}
|
||
}
|
||
|
||
// S5.3 step 6:
|
||
if (cookie.domain) {
|
||
if (!domainMatch(host, cookie.cdomain(), false)) {
|
||
err = new Error(
|
||
`Cookie not in this host's domain. Cookie:${cookie.cdomain()} Request:${host}`
|
||
);
|
||
return cb(options.ignoreError ? null : err);
|
||
}
|
||
|
||
if (cookie.hostOnly == null) {
|
||
// don't reset if already set
|
||
cookie.hostOnly = false;
|
||
}
|
||
} else {
|
||
cookie.hostOnly = true;
|
||
cookie.domain = host;
|
||
}
|
||
|
||
//S5.2.4 If the attribute-value is empty or if the first character of the
|
||
//attribute-value is not %x2F ("/"):
|
||
//Let cookie-path be the default-path.
|
||
if (!cookie.path || cookie.path[0] !== "/") {
|
||
cookie.path = defaultPath(context.pathname);
|
||
cookie.pathIsDefault = true;
|
||
}
|
||
|
||
// S5.3 step 8: NOOP; secure attribute
|
||
// S5.3 step 9: NOOP; httpOnly attribute
|
||
|
||
// S5.3 step 10
|
||
if (options.http === false && cookie.httpOnly) {
|
||
err = new Error("Cookie is HttpOnly and this isn't an HTTP API");
|
||
return cb(options.ignoreError ? null : err);
|
||
}
|
||
|
||
// 6252bis-02 S5.4 Step 13 & 14:
|
||
if (cookie.sameSite !== "none" && sameSiteContext) {
|
||
// "If the cookie's "same-site-flag" is not "None", and the cookie
|
||
// is being set from a context whose "site for cookies" is not an
|
||
// exact match for request-uri's host's registered domain, then
|
||
// abort these steps and ignore the newly created cookie entirely."
|
||
if (sameSiteContext === "none") {
|
||
err = new Error(
|
||
"Cookie is SameSite but this is a cross-origin request"
|
||
);
|
||
return cb(options.ignoreError ? null : err);
|
||
}
|
||
}
|
||
|
||
/* 6265bis-02 S5.4 Steps 15 & 16 */
|
||
const ignoreErrorForPrefixSecurity =
|
||
this.prefixSecurity === PrefixSecurityEnum.SILENT;
|
||
const prefixSecurityDisabled =
|
||
this.prefixSecurity === PrefixSecurityEnum.DISABLED;
|
||
/* If prefix checking is not disabled ...*/
|
||
if (!prefixSecurityDisabled) {
|
||
let errorFound = false;
|
||
let errorMsg;
|
||
/* Check secure prefix condition */
|
||
if (!isSecurePrefixConditionMet(cookie)) {
|
||
errorFound = true;
|
||
errorMsg = "Cookie has __Secure prefix but Secure attribute is not set";
|
||
} else if (!isHostPrefixConditionMet(cookie)) {
|
||
/* Check host prefix condition */
|
||
errorFound = true;
|
||
errorMsg =
|
||
"Cookie has __Host prefix but either Secure or HostOnly attribute is not set or Path is not '/'";
|
||
}
|
||
if (errorFound) {
|
||
return cb(
|
||
options.ignoreError || ignoreErrorForPrefixSecurity
|
||
? null
|
||
: new Error(errorMsg)
|
||
);
|
||
}
|
||
}
|
||
|
||
const store = this.store;
|
||
|
||
if (!store.updateCookie) {
|
||
store.updateCookie = function(oldCookie, newCookie, cb) {
|
||
this.putCookie(newCookie, cb);
|
||
};
|
||
}
|
||
|
||
function withCookie(err, oldCookie) {
|
||
if (err) {
|
||
return cb(err);
|
||
}
|
||
|
||
const next = function(err) {
|
||
if (err) {
|
||
return cb(err);
|
||
} else {
|
||
cb(null, cookie);
|
||
}
|
||
};
|
||
|
||
if (oldCookie) {
|
||
// S5.3 step 11 - "If the cookie store contains a cookie with the same name,
|
||
// domain, and path as the newly created cookie:"
|
||
if (options.http === false && oldCookie.httpOnly) {
|
||
// step 11.2
|
||
err = new Error("old Cookie is HttpOnly and this isn't an HTTP API");
|
||
return cb(options.ignoreError ? null : err);
|
||
}
|
||
cookie.creation = oldCookie.creation; // step 11.3
|
||
cookie.creationIndex = oldCookie.creationIndex; // preserve tie-breaker
|
||
cookie.lastAccessed = now;
|
||
// Step 11.4 (delete cookie) is implied by just setting the new one:
|
||
store.updateCookie(oldCookie, cookie, next); // step 12
|
||
} else {
|
||
cookie.creation = cookie.lastAccessed = now;
|
||
store.putCookie(cookie, next); // step 12
|
||
}
|
||
}
|
||
|
||
store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie);
|
||
}
|
||
|
||
// RFC6365 S5.4
|
||
getCookies(url, options, cb) {
|
||
const context = getCookieContext(url);
|
||
if (typeof options === "function") {
|
||
cb = options;
|
||
options = {};
|
||
}
|
||
|
||
const host = canonicalDomain(context.hostname);
|
||
const path = context.pathname || "/";
|
||
|
||
let secure = options.secure;
|
||
if (
|
||
secure == null &&
|
||
context.protocol &&
|
||
(context.protocol == "https:" || context.protocol == "wss:")
|
||
) {
|
||
secure = true;
|
||
}
|
||
|
||
let sameSiteLevel = 0;
|
||
if (options.sameSiteContext) {
|
||
const sameSiteContext = checkSameSiteContext(options.sameSiteContext);
|
||
sameSiteLevel = Cookie.sameSiteLevel[sameSiteContext];
|
||
if (!sameSiteLevel) {
|
||
return cb(new Error(SAME_SITE_CONTEXT_VAL_ERR));
|
||
}
|
||
}
|
||
|
||
let http = options.http;
|
||
if (http == null) {
|
||
http = true;
|
||
}
|
||
|
||
const now = options.now || Date.now();
|
||
const expireCheck = options.expire !== false;
|
||
const allPaths = !!options.allPaths;
|
||
const store = this.store;
|
||
|
||
function matchingCookie(c) {
|
||
// "Either:
|
||
// The cookie's host-only-flag is true and the canonicalized
|
||
// request-host is identical to the cookie's domain.
|
||
// Or:
|
||
// The cookie's host-only-flag is false and the canonicalized
|
||
// request-host domain-matches the cookie's domain."
|
||
if (c.hostOnly) {
|
||
if (c.domain != host) {
|
||
return false;
|
||
}
|
||
} else {
|
||
if (!domainMatch(host, c.domain, false)) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// "The request-uri's path path-matches the cookie's path."
|
||
if (!allPaths && !pathMatch(path, c.path)) {
|
||
return false;
|
||
}
|
||
|
||
// "If the cookie's secure-only-flag is true, then the request-uri's
|
||
// scheme must denote a "secure" protocol"
|
||
if (c.secure && !secure) {
|
||
return false;
|
||
}
|
||
|
||
// "If the cookie's http-only-flag is true, then exclude the cookie if the
|
||
// cookie-string is being generated for a "non-HTTP" API"
|
||
if (c.httpOnly && !http) {
|
||
return false;
|
||
}
|
||
|
||
// RFC6265bis-02 S5.3.7
|
||
if (sameSiteLevel) {
|
||
const cookieLevel = Cookie.sameSiteLevel[c.sameSite || "none"];
|
||
if (cookieLevel > sameSiteLevel) {
|
||
// only allow cookies at or below the request level
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// deferred from S5.3
|
||
// non-RFC: allow retention of expired cookies by choice
|
||
if (expireCheck && c.expiryTime() <= now) {
|
||
store.removeCookie(c.domain, c.path, c.key, () => {}); // result ignored
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
store.findCookies(
|
||
host,
|
||
allPaths ? null : path,
|
||
this.allowSpecialUseDomain,
|
||
(err, cookies) => {
|
||
if (err) {
|
||
return cb(err);
|
||
}
|
||
|
||
cookies = cookies.filter(matchingCookie);
|
||
|
||
// sorting of S5.4 part 2
|
||
if (options.sort !== false) {
|
||
cookies = cookies.sort(cookieCompare);
|
||
}
|
||
|
||
// S5.4 part 3
|
||
const now = new Date();
|
||
for (const cookie of cookies) {
|
||
cookie.lastAccessed = now;
|
||
}
|
||
// TODO persist lastAccessed
|
||
|
||
cb(null, cookies);
|
||
}
|
||
);
|
||
}
|
||
|
||
getCookieString(...args) {
|
||
const cb = args.pop();
|
||
const next = function(err, cookies) {
|
||
if (err) {
|
||
cb(err);
|
||
} else {
|
||
cb(
|
||
null,
|
||
cookies
|
||
.sort(cookieCompare)
|
||
.map(c => c.cookieString())
|
||
.join("; ")
|
||
);
|
||
}
|
||
};
|
||
args.push(next);
|
||
this.getCookies.apply(this, args);
|
||
}
|
||
|
||
getSetCookieStrings(...args) {
|
||
const cb = args.pop();
|
||
const next = function(err, cookies) {
|
||
if (err) {
|
||
cb(err);
|
||
} else {
|
||
cb(
|
||
null,
|
||
cookies.map(c => {
|
||
return c.toString();
|
||
})
|
||
);
|
||
}
|
||
};
|
||
args.push(next);
|
||
this.getCookies.apply(this, args);
|
||
}
|
||
|
||
serialize(cb) {
|
||
let type = this.store.constructor.name;
|
||
if (type === "Object") {
|
||
type = null;
|
||
}
|
||
|
||
// update README.md "Serialization Format" if you change this, please!
|
||
const serialized = {
|
||
// The version of tough-cookie that serialized this jar. Generally a good
|
||
// practice since future versions can make data import decisions based on
|
||
// known past behavior. When/if this matters, use `semver`.
|
||
version: `tough-cookie@${VERSION}`,
|
||
|
||
// add the store type, to make humans happy:
|
||
storeType: type,
|
||
|
||
// CookieJar configuration:
|
||
rejectPublicSuffixes: !!this.rejectPublicSuffixes,
|
||
|
||
// this gets filled from getAllCookies:
|
||
cookies: []
|
||
};
|
||
|
||
if (
|
||
!(
|
||
this.store.getAllCookies &&
|
||
typeof this.store.getAllCookies === "function"
|
||
)
|
||
) {
|
||
return cb(
|
||
new Error(
|
||
"store does not support getAllCookies and cannot be serialized"
|
||
)
|
||
);
|
||
}
|
||
|
||
this.store.getAllCookies((err, cookies) => {
|
||
if (err) {
|
||
return cb(err);
|
||
}
|
||
|
||
serialized.cookies = cookies.map(cookie => {
|
||
// convert to serialized 'raw' cookies
|
||
cookie = cookie instanceof Cookie ? cookie.toJSON() : cookie;
|
||
|
||
// Remove the index so new ones get assigned during deserialization
|
||
delete cookie.creationIndex;
|
||
|
||
return cookie;
|
||
});
|
||
|
||
return cb(null, serialized);
|
||
});
|
||
}
|
||
|
||
toJSON() {
|
||
return this.serializeSync();
|
||
}
|
||
|
||
// use the class method CookieJar.deserialize instead of calling this directly
|
||
_importCookies(serialized, cb) {
|
||
let cookies = serialized.cookies;
|
||
if (!cookies || !Array.isArray(cookies)) {
|
||
return cb(new Error("serialized jar has no cookies array"));
|
||
}
|
||
cookies = cookies.slice(); // do not modify the original
|
||
|
||
const putNext = err => {
|
||
if (err) {
|
||
return cb(err);
|
||
}
|
||
|
||
if (!cookies.length) {
|
||
return cb(err, this);
|
||
}
|
||
|
||
let cookie;
|
||
try {
|
||
cookie = fromJSON(cookies.shift());
|
||
} catch (e) {
|
||
return cb(e);
|
||
}
|
||
|
||
if (cookie === null) {
|
||
return putNext(null); // skip this cookie
|
||
}
|
||
|
||
this.store.putCookie(cookie, putNext);
|
||
};
|
||
|
||
putNext();
|
||
}
|
||
|
||
clone(newStore, cb) {
|
||
if (arguments.length === 1) {
|
||
cb = newStore;
|
||
newStore = null;
|
||
}
|
||
|
||
this.serialize((err, serialized) => {
|
||
if (err) {
|
||
return cb(err);
|
||
}
|
||
CookieJar.deserialize(serialized, newStore, cb);
|
||
});
|
||
}
|
||
|
||
cloneSync(newStore) {
|
||
if (arguments.length === 0) {
|
||
return this._cloneSync();
|
||
}
|
||
if (!newStore.synchronous) {
|
||
throw new Error(
|
||
"CookieJar clone destination store is not synchronous; use async API instead."
|
||
);
|
||
}
|
||
return this._cloneSync(newStore);
|
||
}
|
||
|
||
removeAllCookies(cb) {
|
||
const store = this.store;
|
||
|
||
// Check that the store implements its own removeAllCookies(). The default
|
||
// implementation in Store will immediately call the callback with a "not
|
||
// implemented" Error.
|
||
if (
|
||
typeof store.removeAllCookies === "function" &&
|
||
store.removeAllCookies !== Store.prototype.removeAllCookies
|
||
) {
|
||
return store.removeAllCookies(cb);
|
||
}
|
||
|
||
store.getAllCookies((err, cookies) => {
|
||
if (err) {
|
||
return cb(err);
|
||
}
|
||
|
||
if (cookies.length === 0) {
|
||
return cb(null);
|
||
}
|
||
|
||
let completedCount = 0;
|
||
const removeErrors = [];
|
||
|
||
function removeCookieCb(removeErr) {
|
||
if (removeErr) {
|
||
removeErrors.push(removeErr);
|
||
}
|
||
|
||
completedCount++;
|
||
|
||
if (completedCount === cookies.length) {
|
||
return cb(removeErrors.length ? removeErrors[0] : null);
|
||
}
|
||
}
|
||
|
||
cookies.forEach(cookie => {
|
||
store.removeCookie(
|
||
cookie.domain,
|
||
cookie.path,
|
||
cookie.key,
|
||
removeCookieCb
|
||
);
|
||
});
|
||
});
|
||
}
|
||
|
||
static deserialize(strOrObj, store, cb) {
|
||
if (arguments.length !== 3) {
|
||
// store is optional
|
||
cb = store;
|
||
store = null;
|
||
}
|
||
|
||
let serialized;
|
||
if (typeof strOrObj === "string") {
|
||
serialized = jsonParse(strOrObj);
|
||
if (serialized instanceof Error) {
|
||
return cb(serialized);
|
||
}
|
||
} else {
|
||
serialized = strOrObj;
|
||
}
|
||
|
||
const jar = new CookieJar(store, serialized.rejectPublicSuffixes);
|
||
jar._importCookies(serialized, err => {
|
||
if (err) {
|
||
return cb(err);
|
||
}
|
||
cb(null, jar);
|
||
});
|
||
}
|
||
|
||
static deserializeSync(strOrObj, store) {
|
||
const serialized =
|
||
typeof strOrObj === "string" ? JSON.parse(strOrObj) : strOrObj;
|
||
const jar = new CookieJar(store, serialized.rejectPublicSuffixes);
|
||
|
||
// catch this mistake early:
|
||
if (!jar.store.synchronous) {
|
||
throw new Error(
|
||
"CookieJar store is not synchronous; use async API instead."
|
||
);
|
||
}
|
||
|
||
jar._importCookiesSync(serialized);
|
||
return jar;
|
||
}
|
||
}
|
||
CookieJar.fromJSON = CookieJar.deserializeSync;
|
||
|
||
[
|
||
"_importCookies",
|
||
"clone",
|
||
"getCookies",
|
||
"getCookieString",
|
||
"getSetCookieStrings",
|
||
"removeAllCookies",
|
||
"serialize",
|
||
"setCookie"
|
||
].forEach(name => {
|
||
CookieJar.prototype[name] = fromCallback(CookieJar.prototype[name]);
|
||
});
|
||
CookieJar.deserialize = fromCallback(CookieJar.deserialize);
|
||
|
||
// Use a closure to provide a true imperative API for synchronous stores.
|
||
function syncWrap(method) {
|
||
return function(...args) {
|
||
if (!this.store.synchronous) {
|
||
throw new Error(
|
||
"CookieJar store is not synchronous; use async API instead."
|
||
);
|
||
}
|
||
|
||
let syncErr, syncResult;
|
||
this[method](...args, (err, result) => {
|
||
syncErr = err;
|
||
syncResult = result;
|
||
});
|
||
|
||
if (syncErr) {
|
||
throw syncErr;
|
||
}
|
||
return syncResult;
|
||
};
|
||
}
|
||
|
||
exports.version = VERSION;
|
||
exports.CookieJar = CookieJar;
|
||
exports.Cookie = Cookie;
|
||
exports.Store = Store;
|
||
exports.MemoryCookieStore = MemoryCookieStore;
|
||
exports.parseDate = parseDate;
|
||
exports.formatDate = formatDate;
|
||
exports.parse = parse;
|
||
exports.fromJSON = fromJSON;
|
||
exports.domainMatch = domainMatch;
|
||
exports.defaultPath = defaultPath;
|
||
exports.pathMatch = pathMatch;
|
||
exports.getPublicSuffix = pubsuffix.getPublicSuffix;
|
||
exports.cookieCompare = cookieCompare;
|
||
exports.permuteDomain = __webpack_require__(898).permuteDomain;
|
||
exports.permutePath = permutePath;
|
||
exports.canonicalDomain = canonicalDomain;
|
||
exports.PrefixSecurityEnum = PrefixSecurityEnum;
|
||
|
||
|
||
/***/ }),
|
||
/* 394 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.ProxyTracerProvider = void 0;
|
||
var ProxyTracer_1 = __webpack_require__(398);
|
||
var NoopTracerProvider_1 = __webpack_require__(162);
|
||
/**
|
||
* Tracer provider which provides {@link ProxyTracer}s.
|
||
*
|
||
* Before a delegate is set, tracers provided are NoOp.
|
||
* When a delegate is set, traces are provided from the delegate.
|
||
* When a delegate is set after tracers have already been provided,
|
||
* all tracers already provided will use the provided delegate implementation.
|
||
*/
|
||
var ProxyTracerProvider = /** @class */ (function () {
|
||
function ProxyTracerProvider() {
|
||
}
|
||
/**
|
||
* Get a {@link ProxyTracer}
|
||
*/
|
||
ProxyTracerProvider.prototype.getTracer = function (name, version) {
|
||
var _a;
|
||
return ((_a = this.getDelegateTracer(name, version)) !== null && _a !== void 0 ? _a : new ProxyTracer_1.ProxyTracer(this, name, version));
|
||
};
|
||
ProxyTracerProvider.prototype.getDelegate = function () {
|
||
var _a;
|
||
return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopTracerProvider_1.NOOP_TRACER_PROVIDER;
|
||
};
|
||
/**
|
||
* Set the delegate tracer provider
|
||
*/
|
||
ProxyTracerProvider.prototype.setDelegate = function (delegate) {
|
||
this._delegate = delegate;
|
||
};
|
||
ProxyTracerProvider.prototype.getDelegateTracer = function (name, version) {
|
||
var _a;
|
||
return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version);
|
||
};
|
||
return ProxyTracerProvider;
|
||
}());
|
||
exports.ProxyTracerProvider = ProxyTracerProvider;
|
||
//# sourceMappingURL=ProxyTracerProvider.js.map
|
||
|
||
/***/ }),
|
||
/* 395 */,
|
||
/* 396 */,
|
||
/* 397 */,
|
||
/* 398 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.ProxyTracer = void 0;
|
||
var NoopTracer_1 = __webpack_require__(151);
|
||
/**
|
||
* Proxy tracer provided by the proxy tracer provider
|
||
*/
|
||
var ProxyTracer = /** @class */ (function () {
|
||
function ProxyTracer(_provider, name, version) {
|
||
this._provider = _provider;
|
||
this.name = name;
|
||
this.version = version;
|
||
}
|
||
ProxyTracer.prototype.startSpan = function (name, options, context) {
|
||
return this._getTracer().startSpan(name, options, context);
|
||
};
|
||
/**
|
||
* Try to get a tracer from the proxy tracer provider.
|
||
* If the proxy tracer provider has no delegate, return a noop tracer.
|
||
*/
|
||
ProxyTracer.prototype._getTracer = function () {
|
||
if (this._delegate) {
|
||
return this._delegate;
|
||
}
|
||
var tracer = this._provider.getDelegateTracer(this.name, this.version);
|
||
if (!tracer) {
|
||
return NoopTracer_1.NOOP_TRACER;
|
||
}
|
||
this._delegate = tracer;
|
||
return this._delegate;
|
||
};
|
||
return ProxyTracer;
|
||
}());
|
||
exports.ProxyTracer = ProxyTracer;
|
||
//# sourceMappingURL=ProxyTracer.js.map
|
||
|
||
/***/ }),
|
||
/* 399 */,
|
||
/* 400 */,
|
||
/* 401 */,
|
||
/* 402 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = Octokit;
|
||
|
||
const { request } = __webpack_require__(753);
|
||
const Hook = __webpack_require__(523);
|
||
|
||
const parseClientOptions = __webpack_require__(294);
|
||
|
||
function Octokit(plugins, options) {
|
||
options = options || {};
|
||
const hook = new Hook.Collection();
|
||
const log = Object.assign(
|
||
{
|
||
debug: () => {},
|
||
info: () => {},
|
||
warn: console.warn,
|
||
error: console.error
|
||
},
|
||
options && options.log
|
||
);
|
||
const api = {
|
||
hook,
|
||
log,
|
||
request: request.defaults(parseClientOptions(options, log, hook))
|
||
};
|
||
|
||
plugins.forEach(pluginFunction => pluginFunction(api, options));
|
||
|
||
return api;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 403 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const url = __webpack_require__(835);
|
||
const http = __webpack_require__(605);
|
||
const https = __webpack_require__(211);
|
||
const pm = __webpack_require__(20);
|
||
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 = {}));
|
||
var Headers;
|
||
(function (Headers) {
|
||
Headers["Accept"] = "accept";
|
||
Headers["ContentType"] = "content-type";
|
||
})(Headers = exports.Headers || (exports.Headers = {}));
|
||
var MediaTypes;
|
||
(function (MediaTypes) {
|
||
MediaTypes["ApplicationJson"] = "application/json";
|
||
})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));
|
||
/**
|
||
* Returns the proxy URL, depending upon the supplied url and proxy environment variables.
|
||
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
|
||
*/
|
||
function getProxyUrl(serverUrl) {
|
||
let proxyUrl = pm.getProxyUrl(url.parse(serverUrl));
|
||
return proxyUrl ? proxyUrl.href : '';
|
||
}
|
||
exports.getProxyUrl = getProxyUrl;
|
||
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(async (resolve, reject) => {
|
||
let output = Buffer.alloc(0);
|
||
this.message.on('data', (chunk) => {
|
||
output = Buffer.concat([output, chunk]);
|
||
});
|
||
this.message.on('end', () => {
|
||
resolve(output.toString());
|
||
});
|
||
});
|
||
}
|
||
}
|
||
exports.HttpClientResponse = HttpClientResponse;
|
||
function isHttps(requestUrl) {
|
||
let parsedUrl = url.parse(requestUrl);
|
||
return parsedUrl.protocol === 'https:';
|
||
}
|
||
exports.isHttps = isHttps;
|
||
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 || [];
|
||
this.requestOptions = requestOptions;
|
||
if (requestOptions) {
|
||
if (requestOptions.ignoreSslError != null) {
|
||
this._ignoreSslError = requestOptions.ignoreSslError;
|
||
}
|
||
this._socketTimeout = requestOptions.socketTimeout;
|
||
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);
|
||
}
|
||
/**
|
||
* Gets a typed object from an endpoint
|
||
* Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise
|
||
*/
|
||
async getJson(requestUrl, additionalHeaders = {}) {
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
let res = await this.get(requestUrl, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
async postJson(requestUrl, obj, additionalHeaders = {}) {
|
||
let data = JSON.stringify(obj, null, 2);
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
||
let res = await this.post(requestUrl, data, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
async putJson(requestUrl, obj, additionalHeaders = {}) {
|
||
let data = JSON.stringify(obj, null, 2);
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
||
let res = await this.put(requestUrl, data, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
async patchJson(requestUrl, obj, additionalHeaders = {}) {
|
||
let data = JSON.stringify(obj, null, 2);
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
||
let res = await this.patch(requestUrl, data, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
/**
|
||
* Makes a raw http request.
|
||
* All other methods such as get, post, patch, and request ultimately call this.
|
||
* Prefer get, del, post and patch
|
||
*/
|
||
async request(verb, requestUrl, data, headers) {
|
||
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 = await 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.
|
||
await response.readBody();
|
||
// strip authorization header if redirected to a different hostname
|
||
if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {
|
||
for (let header in headers) {
|
||
// header names are case insensitive
|
||
if (header.toLowerCase() === 'authorization') {
|
||
delete headers[header];
|
||
}
|
||
}
|
||
}
|
||
// let's make the request with the new redirectUrl
|
||
info = this._prepareRequest(verb, parsedRedirectUrl, headers);
|
||
response = await 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) {
|
||
await response.readBody();
|
||
await 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;
|
||
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();
|
||
}
|
||
}
|
||
/**
|
||
* Gets an http agent. This function is useful when you need an http agent that handles
|
||
* routing through a proxy server - depending upon the url and proxy environment variables.
|
||
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
|
||
*/
|
||
getAgent(serverUrl) {
|
||
let parsedUrl = url.parse(serverUrl);
|
||
return this._getAgent(parsedUrl);
|
||
}
|
||
_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.handlers.forEach(handler => {
|
||
handler.prepareRequest(info.options);
|
||
});
|
||
}
|
||
return info;
|
||
}
|
||
_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 || {});
|
||
}
|
||
_getExistingOrDefaultHeader(additionalHeaders, header, _default) {
|
||
const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
|
||
let clientHeader;
|
||
if (this.requestOptions && this.requestOptions.headers) {
|
||
clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
|
||
}
|
||
return additionalHeaders[header] || clientHeader || _default;
|
||
}
|
||
_getAgent(parsedUrl) {
|
||
let agent;
|
||
let proxyUrl = pm.getProxyUrl(parsedUrl);
|
||
let useProxy = proxyUrl && proxyUrl.hostname;
|
||
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: proxyUrl.auth,
|
||
host: proxyUrl.hostname,
|
||
port: proxyUrl.port
|
||
}
|
||
};
|
||
let tunnelAgent;
|
||
const overHttps = 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
|
||
});
|
||
}
|
||
return agent;
|
||
}
|
||
_performExponentialBackoff(retryNumber) {
|
||
retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
|
||
const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
|
||
return new Promise(resolve => setTimeout(() => resolve(), ms));
|
||
}
|
||
static dateTimeDeserializer(key, value) {
|
||
if (typeof value === 'string') {
|
||
let a = new Date(value);
|
||
if (!isNaN(a.valueOf())) {
|
||
return a;
|
||
}
|
||
}
|
||
return value;
|
||
}
|
||
async _processResponse(res, options) {
|
||
return new Promise(async (resolve, reject) => {
|
||
const statusCode = res.message.statusCode;
|
||
const response = {
|
||
statusCode: statusCode,
|
||
result: null,
|
||
headers: {}
|
||
};
|
||
// not found leads to null obj returned
|
||
if (statusCode == HttpCodes.NotFound) {
|
||
resolve(response);
|
||
}
|
||
let obj;
|
||
let contents;
|
||
// get the result from the body
|
||
try {
|
||
contents = await res.readBody();
|
||
if (contents && contents.length > 0) {
|
||
if (options && options.deserializeDates) {
|
||
obj = JSON.parse(contents, HttpClient.dateTimeDeserializer);
|
||
}
|
||
else {
|
||
obj = JSON.parse(contents);
|
||
}
|
||
response.result = obj;
|
||
}
|
||
response.headers = res.message.headers;
|
||
}
|
||
catch (err) {
|
||
// Invalid resource (contents not json); leaving result obj null
|
||
}
|
||
// note that 3xx redirects are handled by the http layer.
|
||
if (statusCode > 299) {
|
||
let msg;
|
||
// if exception/error in body, attempt to get better error
|
||
if (obj && obj.message) {
|
||
msg = obj.message;
|
||
}
|
||
else if (contents && contents.length > 0) {
|
||
// it may be the case that the exception is in the body message as string
|
||
msg = contents;
|
||
}
|
||
else {
|
||
msg = 'Failed request: (' + statusCode + ')';
|
||
}
|
||
let err = new Error(msg);
|
||
// attach statusCode and body obj (if available) to the error object
|
||
err['statusCode'] = statusCode;
|
||
if (response.result) {
|
||
err['result'] = response.result;
|
||
}
|
||
reject(err);
|
||
}
|
||
else {
|
||
resolve(response);
|
||
}
|
||
});
|
||
}
|
||
}
|
||
exports.HttpClient = HttpClient;
|
||
|
||
|
||
/***/ }),
|
||
/* 404 */,
|
||
/* 405 */,
|
||
/* 406 */,
|
||
/* 407 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("buffer");
|
||
|
||
/***/ }),
|
||
/* 408 */,
|
||
/* 409 */
|
||
/***/ (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;
|
||
};
|
||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const cache = __importStar(__webpack_require__(638));
|
||
const core = __importStar(__webpack_require__(470));
|
||
const glob = __importStar(__webpack_require__(281));
|
||
const path_1 = __importDefault(__webpack_require__(622));
|
||
const fs_1 = __importDefault(__webpack_require__(747));
|
||
const constants_1 = __webpack_require__(196);
|
||
const cache_utils_1 = __webpack_require__(570);
|
||
exports.restoreCache = (packageManager) => __awaiter(void 0, void 0, void 0, function* () {
|
||
const packageManagerInfo = yield cache_utils_1.getPackageManagerInfo(packageManager);
|
||
if (!packageManagerInfo) {
|
||
throw new Error(`Caching for '${packageManager}' is not supported`);
|
||
}
|
||
const platform = process.env.RUNNER_OS;
|
||
const cachePath = yield cache_utils_1.getCacheDirectoryPath(packageManagerInfo, packageManager);
|
||
const lockFilePath = findLockFile(packageManagerInfo);
|
||
const fileHash = yield glob.hashFiles(lockFilePath);
|
||
const primaryKey = `node-cache-${platform}-${packageManager}-${fileHash}`;
|
||
core.debug(`primary key is ${primaryKey}`);
|
||
core.saveState(constants_1.State.CachePrimaryKey, primaryKey);
|
||
const cacheKey = yield cache.restoreCache([cachePath], primaryKey);
|
||
if (!cacheKey) {
|
||
core.info(`${packageManager} cache is not found`);
|
||
return;
|
||
}
|
||
core.saveState(constants_1.State.CacheMatchedKey, cacheKey);
|
||
core.info(`Cache restored from key: ${cacheKey}`);
|
||
});
|
||
const findLockFile = (packageManager) => {
|
||
let lockFiles = packageManager.lockFilePatterns;
|
||
const workspace = process.env.GITHUB_WORKSPACE;
|
||
const rootContent = fs_1.default.readdirSync(workspace);
|
||
const lockFile = lockFiles.find(item => rootContent.includes(item));
|
||
if (!lockFile) {
|
||
throw new Error(`Dependencies lock file is not found in ${workspace}. Supported file patterns: ${lockFiles.toString()}`);
|
||
}
|
||
return path_1.default.join(workspace, lockFile);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 410 */,
|
||
/* 411 */,
|
||
/* 412 */,
|
||
/* 413 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = __webpack_require__(141);
|
||
|
||
|
||
/***/ }),
|
||
/* 414 */,
|
||
/* 415 */,
|
||
/* 416 */,
|
||
/* 417 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("crypto");
|
||
|
||
/***/ }),
|
||
/* 418 */,
|
||
/* 419 */,
|
||
/* 420 */,
|
||
/* 421 */,
|
||
/* 422 */,
|
||
/* 423 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, WriterState, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLProcessingInstruction, XMLRaw, XMLText, XMLWriterBase, assign,
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
assign = __webpack_require__(582).assign;
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLDeclaration = __webpack_require__(738);
|
||
|
||
XMLDocType = __webpack_require__(735);
|
||
|
||
XMLCData = __webpack_require__(657);
|
||
|
||
XMLComment = __webpack_require__(919);
|
||
|
||
XMLElement = __webpack_require__(796);
|
||
|
||
XMLRaw = __webpack_require__(660);
|
||
|
||
XMLText = __webpack_require__(708);
|
||
|
||
XMLProcessingInstruction = __webpack_require__(491);
|
||
|
||
XMLDummy = __webpack_require__(956);
|
||
|
||
XMLDTDAttList = __webpack_require__(801);
|
||
|
||
XMLDTDElement = __webpack_require__(597);
|
||
|
||
XMLDTDEntity = __webpack_require__(661);
|
||
|
||
XMLDTDNotation = __webpack_require__(891);
|
||
|
||
WriterState = __webpack_require__(541);
|
||
|
||
module.exports = XMLWriterBase = (function() {
|
||
function XMLWriterBase(options) {
|
||
var key, ref, value;
|
||
options || (options = {});
|
||
this.options = options;
|
||
ref = options.writer || {};
|
||
for (key in ref) {
|
||
if (!hasProp.call(ref, key)) continue;
|
||
value = ref[key];
|
||
this["_" + key] = this[key];
|
||
this[key] = value;
|
||
}
|
||
}
|
||
|
||
XMLWriterBase.prototype.filterOptions = function(options) {
|
||
var filteredOptions, ref, ref1, ref2, ref3, ref4, ref5, ref6;
|
||
options || (options = {});
|
||
options = assign({}, this.options, options);
|
||
filteredOptions = {
|
||
writer: this
|
||
};
|
||
filteredOptions.pretty = options.pretty || false;
|
||
filteredOptions.allowEmpty = options.allowEmpty || false;
|
||
filteredOptions.indent = (ref = options.indent) != null ? ref : ' ';
|
||
filteredOptions.newline = (ref1 = options.newline) != null ? ref1 : '\n';
|
||
filteredOptions.offset = (ref2 = options.offset) != null ? ref2 : 0;
|
||
filteredOptions.dontPrettyTextNodes = (ref3 = (ref4 = options.dontPrettyTextNodes) != null ? ref4 : options.dontprettytextnodes) != null ? ref3 : 0;
|
||
filteredOptions.spaceBeforeSlash = (ref5 = (ref6 = options.spaceBeforeSlash) != null ? ref6 : options.spacebeforeslash) != null ? ref5 : '';
|
||
if (filteredOptions.spaceBeforeSlash === true) {
|
||
filteredOptions.spaceBeforeSlash = ' ';
|
||
}
|
||
filteredOptions.suppressPrettyCount = 0;
|
||
filteredOptions.user = {};
|
||
filteredOptions.state = WriterState.None;
|
||
return filteredOptions;
|
||
};
|
||
|
||
XMLWriterBase.prototype.indent = function(node, options, level) {
|
||
var indentLevel;
|
||
if (!options.pretty || options.suppressPrettyCount) {
|
||
return '';
|
||
} else if (options.pretty) {
|
||
indentLevel = (level || 0) + options.offset + 1;
|
||
if (indentLevel > 0) {
|
||
return new Array(indentLevel).join(options.indent);
|
||
}
|
||
}
|
||
return '';
|
||
};
|
||
|
||
XMLWriterBase.prototype.endline = function(node, options, level) {
|
||
if (!options.pretty || options.suppressPrettyCount) {
|
||
return '';
|
||
} else {
|
||
return options.newline;
|
||
}
|
||
};
|
||
|
||
XMLWriterBase.prototype.attribute = function(att, options, level) {
|
||
var r;
|
||
this.openAttribute(att, options, level);
|
||
r = ' ' + att.name + '="' + att.value + '"';
|
||
this.closeAttribute(att, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.cdata = function(node, options, level) {
|
||
var r;
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level) + '<![CDATA[';
|
||
options.state = WriterState.InsideTag;
|
||
r += node.value;
|
||
options.state = WriterState.CloseTag;
|
||
r += ']]>' + this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.comment = function(node, options, level) {
|
||
var r;
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level) + '<!-- ';
|
||
options.state = WriterState.InsideTag;
|
||
r += node.value;
|
||
options.state = WriterState.CloseTag;
|
||
r += ' -->' + this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.declaration = function(node, options, level) {
|
||
var r;
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level) + '<?xml';
|
||
options.state = WriterState.InsideTag;
|
||
r += ' version="' + node.version + '"';
|
||
if (node.encoding != null) {
|
||
r += ' encoding="' + node.encoding + '"';
|
||
}
|
||
if (node.standalone != null) {
|
||
r += ' standalone="' + node.standalone + '"';
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
r += options.spaceBeforeSlash + '?>';
|
||
r += this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.docType = function(node, options, level) {
|
||
var child, i, len, r, ref;
|
||
level || (level = 0);
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level);
|
||
r += '<!DOCTYPE ' + node.root().name;
|
||
if (node.pubID && node.sysID) {
|
||
r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
|
||
} else if (node.sysID) {
|
||
r += ' SYSTEM "' + node.sysID + '"';
|
||
}
|
||
if (node.children.length > 0) {
|
||
r += ' [';
|
||
r += this.endline(node, options, level);
|
||
options.state = WriterState.InsideTag;
|
||
ref = node.children;
|
||
for (i = 0, len = ref.length; i < len; i++) {
|
||
child = ref[i];
|
||
r += this.writeChildNode(child, options, level + 1);
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
r += ']';
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
r += options.spaceBeforeSlash + '>';
|
||
r += this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.element = function(node, options, level) {
|
||
var att, child, childNodeCount, firstChildNode, i, j, len, len1, name, prettySuppressed, r, ref, ref1, ref2;
|
||
level || (level = 0);
|
||
prettySuppressed = false;
|
||
r = '';
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r += this.indent(node, options, level) + '<' + node.name;
|
||
ref = node.attribs;
|
||
for (name in ref) {
|
||
if (!hasProp.call(ref, name)) continue;
|
||
att = ref[name];
|
||
r += this.attribute(att, options, level);
|
||
}
|
||
childNodeCount = node.children.length;
|
||
firstChildNode = childNodeCount === 0 ? null : node.children[0];
|
||
if (childNodeCount === 0 || node.children.every(function(e) {
|
||
return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';
|
||
})) {
|
||
if (options.allowEmpty) {
|
||
r += '>';
|
||
options.state = WriterState.CloseTag;
|
||
r += '</' + node.name + '>' + this.endline(node, options, level);
|
||
} else {
|
||
options.state = WriterState.CloseTag;
|
||
r += options.spaceBeforeSlash + '/>' + this.endline(node, options, level);
|
||
}
|
||
} else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {
|
||
r += '>';
|
||
options.state = WriterState.InsideTag;
|
||
options.suppressPrettyCount++;
|
||
prettySuppressed = true;
|
||
r += this.writeChildNode(firstChildNode, options, level + 1);
|
||
options.suppressPrettyCount--;
|
||
prettySuppressed = false;
|
||
options.state = WriterState.CloseTag;
|
||
r += '</' + node.name + '>' + this.endline(node, options, level);
|
||
} else {
|
||
if (options.dontPrettyTextNodes) {
|
||
ref1 = node.children;
|
||
for (i = 0, len = ref1.length; i < len; i++) {
|
||
child = ref1[i];
|
||
if ((child.type === NodeType.Text || child.type === NodeType.Raw) && (child.value != null)) {
|
||
options.suppressPrettyCount++;
|
||
prettySuppressed = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
r += '>' + this.endline(node, options, level);
|
||
options.state = WriterState.InsideTag;
|
||
ref2 = node.children;
|
||
for (j = 0, len1 = ref2.length; j < len1; j++) {
|
||
child = ref2[j];
|
||
r += this.writeChildNode(child, options, level + 1);
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
r += this.indent(node, options, level) + '</' + node.name + '>';
|
||
if (prettySuppressed) {
|
||
options.suppressPrettyCount--;
|
||
}
|
||
r += this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
}
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.writeChildNode = function(node, options, level) {
|
||
switch (node.type) {
|
||
case NodeType.CData:
|
||
return this.cdata(node, options, level);
|
||
case NodeType.Comment:
|
||
return this.comment(node, options, level);
|
||
case NodeType.Element:
|
||
return this.element(node, options, level);
|
||
case NodeType.Raw:
|
||
return this.raw(node, options, level);
|
||
case NodeType.Text:
|
||
return this.text(node, options, level);
|
||
case NodeType.ProcessingInstruction:
|
||
return this.processingInstruction(node, options, level);
|
||
case NodeType.Dummy:
|
||
return '';
|
||
case NodeType.Declaration:
|
||
return this.declaration(node, options, level);
|
||
case NodeType.DocType:
|
||
return this.docType(node, options, level);
|
||
case NodeType.AttributeDeclaration:
|
||
return this.dtdAttList(node, options, level);
|
||
case NodeType.ElementDeclaration:
|
||
return this.dtdElement(node, options, level);
|
||
case NodeType.EntityDeclaration:
|
||
return this.dtdEntity(node, options, level);
|
||
case NodeType.NotationDeclaration:
|
||
return this.dtdNotation(node, options, level);
|
||
default:
|
||
throw new Error("Unknown XML node type: " + node.constructor.name);
|
||
}
|
||
};
|
||
|
||
XMLWriterBase.prototype.processingInstruction = function(node, options, level) {
|
||
var r;
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level) + '<?';
|
||
options.state = WriterState.InsideTag;
|
||
r += node.target;
|
||
if (node.value) {
|
||
r += ' ' + node.value;
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
r += options.spaceBeforeSlash + '?>';
|
||
r += this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.raw = function(node, options, level) {
|
||
var r;
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level);
|
||
options.state = WriterState.InsideTag;
|
||
r += node.value;
|
||
options.state = WriterState.CloseTag;
|
||
r += this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.text = function(node, options, level) {
|
||
var r;
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level);
|
||
options.state = WriterState.InsideTag;
|
||
r += node.value;
|
||
options.state = WriterState.CloseTag;
|
||
r += this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.dtdAttList = function(node, options, level) {
|
||
var r;
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level) + '<!ATTLIST';
|
||
options.state = WriterState.InsideTag;
|
||
r += ' ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType;
|
||
if (node.defaultValueType !== '#DEFAULT') {
|
||
r += ' ' + node.defaultValueType;
|
||
}
|
||
if (node.defaultValue) {
|
||
r += ' "' + node.defaultValue + '"';
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.dtdElement = function(node, options, level) {
|
||
var r;
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level) + '<!ELEMENT';
|
||
options.state = WriterState.InsideTag;
|
||
r += ' ' + node.name + ' ' + node.value;
|
||
options.state = WriterState.CloseTag;
|
||
r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.dtdEntity = function(node, options, level) {
|
||
var r;
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level) + '<!ENTITY';
|
||
options.state = WriterState.InsideTag;
|
||
if (node.pe) {
|
||
r += ' %';
|
||
}
|
||
r += ' ' + node.name;
|
||
if (node.value) {
|
||
r += ' "' + node.value + '"';
|
||
} else {
|
||
if (node.pubID && node.sysID) {
|
||
r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
|
||
} else if (node.sysID) {
|
||
r += ' SYSTEM "' + node.sysID + '"';
|
||
}
|
||
if (node.nData) {
|
||
r += ' NDATA ' + node.nData;
|
||
}
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.dtdNotation = function(node, options, level) {
|
||
var r;
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
r = this.indent(node, options, level) + '<!NOTATION';
|
||
options.state = WriterState.InsideTag;
|
||
r += ' ' + node.name;
|
||
if (node.pubID && node.sysID) {
|
||
r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
|
||
} else if (node.pubID) {
|
||
r += ' PUBLIC "' + node.pubID + '"';
|
||
} else if (node.sysID) {
|
||
r += ' SYSTEM "' + node.sysID + '"';
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);
|
||
options.state = WriterState.None;
|
||
this.closeNode(node, options, level);
|
||
return r;
|
||
};
|
||
|
||
XMLWriterBase.prototype.openNode = function(node, options, level) {};
|
||
|
||
XMLWriterBase.prototype.closeNode = function(node, options, level) {};
|
||
|
||
XMLWriterBase.prototype.openAttribute = function(att, options, level) {};
|
||
|
||
XMLWriterBase.prototype.closeAttribute = function(att, options, level) {};
|
||
|
||
return XMLWriterBase;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 424 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var iterate = __webpack_require__(157)
|
||
, initState = __webpack_require__(903)
|
||
, terminator = __webpack_require__(939)
|
||
;
|
||
|
||
// Public API
|
||
module.exports = parallel;
|
||
|
||
/**
|
||
* Runs iterator over provided array elements in parallel
|
||
*
|
||
* @param {array|object} list - array or object (named list) to iterate over
|
||
* @param {function} iterator - iterator to run
|
||
* @param {function} callback - invoked when all elements processed
|
||
* @returns {function} - jobs terminator
|
||
*/
|
||
function parallel(list, iterator, callback)
|
||
{
|
||
var state = initState(list);
|
||
|
||
while (state.index < (state['keyedList'] || list).length)
|
||
{
|
||
iterate(list, iterator, state, function(error, result)
|
||
{
|
||
if (error)
|
||
{
|
||
callback(error, result);
|
||
return;
|
||
}
|
||
|
||
// looks like it's the last one
|
||
if (Object.keys(state.jobs).length === 0)
|
||
{
|
||
callback(null, state.results);
|
||
return;
|
||
}
|
||
});
|
||
|
||
state.index++;
|
||
}
|
||
|
||
return terminator.bind(state, callback);
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 425 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||
r[k] = a[j];
|
||
return r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.NoopContextManager = void 0;
|
||
var context_1 = __webpack_require__(132);
|
||
var NoopContextManager = /** @class */ (function () {
|
||
function NoopContextManager() {
|
||
}
|
||
NoopContextManager.prototype.active = function () {
|
||
return context_1.ROOT_CONTEXT;
|
||
};
|
||
NoopContextManager.prototype.with = function (_context, fn, thisArg) {
|
||
var args = [];
|
||
for (var _i = 3; _i < arguments.length; _i++) {
|
||
args[_i - 3] = arguments[_i];
|
||
}
|
||
return fn.call.apply(fn, __spreadArrays([thisArg], args));
|
||
};
|
||
NoopContextManager.prototype.bind = function (target, _context) {
|
||
return target;
|
||
};
|
||
NoopContextManager.prototype.enable = function () {
|
||
return this;
|
||
};
|
||
NoopContextManager.prototype.disable = function () {
|
||
return this;
|
||
};
|
||
return NoopContextManager;
|
||
}());
|
||
exports.NoopContextManager = NoopContextManager;
|
||
//# sourceMappingURL=NoopContextManager.js.map
|
||
|
||
/***/ }),
|
||
/* 426 */,
|
||
/* 427 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
// Older verions of Node.js might not have `util.getSystemErrorName()`.
|
||
// In that case, fall back to a deprecated internal.
|
||
const util = __webpack_require__(669);
|
||
|
||
let uv;
|
||
|
||
if (typeof util.getSystemErrorName === 'function') {
|
||
module.exports = util.getSystemErrorName;
|
||
} else {
|
||
try {
|
||
uv = process.binding('uv');
|
||
|
||
if (typeof uv.errname !== 'function') {
|
||
throw new TypeError('uv.errname is not a function');
|
||
}
|
||
} catch (err) {
|
||
console.error('execa/lib/errname: unable to establish process.binding(\'uv\')', err);
|
||
uv = null;
|
||
}
|
||
|
||
module.exports = code => errname(uv, code);
|
||
}
|
||
|
||
// Used for testing the fallback behavior
|
||
module.exports.__test__ = errname;
|
||
|
||
function errname(uv, code) {
|
||
if (uv) {
|
||
return uv.errname(code);
|
||
}
|
||
|
||
if (!(code < 0)) {
|
||
throw new Error('err >= 0');
|
||
}
|
||
|
||
return `Unknown system error ${code}`;
|
||
}
|
||
|
||
|
||
|
||
/***/ }),
|
||
/* 428 */,
|
||
/* 429 */,
|
||
/* 430 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = octokitValidate;
|
||
|
||
const validate = __webpack_require__(348);
|
||
|
||
function octokitValidate(octokit) {
|
||
octokit.hook.before("request", validate.bind(null, octokit));
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 431 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
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 os = __importStar(__webpack_require__(87));
|
||
const utils_1 = __webpack_require__(82);
|
||
/**
|
||
* Commands
|
||
*
|
||
* Command Format:
|
||
* ::name key=value,key=value::message
|
||
*
|
||
* Examples:
|
||
* ::warning::This is the message
|
||
* ::set-env name=MY_VAR::some value
|
||
*/
|
||
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 += ' ';
|
||
let first = true;
|
||
for (const key in this.properties) {
|
||
if (this.properties.hasOwnProperty(key)) {
|
||
const val = this.properties[key];
|
||
if (val) {
|
||
if (first) {
|
||
first = false;
|
||
}
|
||
else {
|
||
cmdStr += ',';
|
||
}
|
||
cmdStr += `${key}=${escapeProperty(val)}`;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
|
||
return cmdStr;
|
||
}
|
||
}
|
||
function escapeData(s) {
|
||
return utils_1.toCommandValue(s)
|
||
.replace(/%/g, '%25')
|
||
.replace(/\r/g, '%0D')
|
||
.replace(/\n/g, '%0A');
|
||
}
|
||
function escapeProperty(s) {
|
||
return utils_1.toCommandValue(s)
|
||
.replace(/%/g, '%25')
|
||
.replace(/\r/g, '%0D')
|
||
.replace(/\n/g, '%0A')
|
||
.replace(/:/g, '%3A')
|
||
.replace(/,/g, '%2C');
|
||
}
|
||
//# sourceMappingURL=command.js.map
|
||
|
||
/***/ }),
|
||
/* 432 */,
|
||
/* 433 */,
|
||
/* 434 */
|
||
/***/ (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 exec_1 = __webpack_require__(986);
|
||
const io = __importStar(__webpack_require__(1));
|
||
const fs_1 = __webpack_require__(747);
|
||
const path = __importStar(__webpack_require__(622));
|
||
const utils = __importStar(__webpack_require__(15));
|
||
const constants_1 = __webpack_require__(931);
|
||
function getTarPath(args, compressionMethod) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
switch (process.platform) {
|
||
case 'win32': {
|
||
const systemTar = `${process.env['windir']}\\System32\\tar.exe`;
|
||
if (compressionMethod !== constants_1.CompressionMethod.Gzip) {
|
||
// We only use zstandard compression on windows when gnu tar is installed due to
|
||
// a bug with compressing large files with bsdtar + zstd
|
||
args.push('--force-local');
|
||
}
|
||
else if (fs_1.existsSync(systemTar)) {
|
||
return systemTar;
|
||
}
|
||
else if (yield utils.isGnuTarInstalled()) {
|
||
args.push('--force-local');
|
||
}
|
||
break;
|
||
}
|
||
case 'darwin': {
|
||
const gnuTar = yield io.which('gtar', false);
|
||
if (gnuTar) {
|
||
// fix permission denied errors when extracting BSD tar archive with GNU tar - https://github.com/actions/cache/issues/527
|
||
args.push('--delay-directory-restore');
|
||
return gnuTar;
|
||
}
|
||
break;
|
||
}
|
||
default:
|
||
break;
|
||
}
|
||
return yield io.which('tar', true);
|
||
});
|
||
}
|
||
function execTar(args, compressionMethod, cwd) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
try {
|
||
yield exec_1.exec(`"${yield getTarPath(args, compressionMethod)}"`, args, { cwd });
|
||
}
|
||
catch (error) {
|
||
throw new Error(`Tar failed with error: ${error === null || error === void 0 ? void 0 : error.message}`);
|
||
}
|
||
});
|
||
}
|
||
function getWorkingDirectory() {
|
||
var _a;
|
||
return (_a = process.env['GITHUB_WORKSPACE']) !== null && _a !== void 0 ? _a : process.cwd();
|
||
}
|
||
function extractTar(archivePath, compressionMethod) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// Create directory to extract tar into
|
||
const workingDirectory = getWorkingDirectory();
|
||
yield io.mkdirP(workingDirectory);
|
||
// --d: Decompress.
|
||
// --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit.
|
||
// Using 30 here because we also support 32-bit self-hosted runners.
|
||
function getCompressionProgram() {
|
||
switch (compressionMethod) {
|
||
case constants_1.CompressionMethod.Zstd:
|
||
return ['--use-compress-program', 'zstd -d --long=30'];
|
||
case constants_1.CompressionMethod.ZstdWithoutLong:
|
||
return ['--use-compress-program', 'zstd -d'];
|
||
default:
|
||
return ['-z'];
|
||
}
|
||
}
|
||
const args = [
|
||
...getCompressionProgram(),
|
||
'-xf',
|
||
archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
||
'-P',
|
||
'-C',
|
||
workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/')
|
||
];
|
||
yield execTar(args, compressionMethod);
|
||
});
|
||
}
|
||
exports.extractTar = extractTar;
|
||
function createTar(archiveFolder, sourceDirectories, compressionMethod) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// Write source directories to manifest.txt to avoid command length limits
|
||
const manifestFilename = 'manifest.txt';
|
||
const cacheFileName = utils.getCacheFileName(compressionMethod);
|
||
fs_1.writeFileSync(path.join(archiveFolder, manifestFilename), sourceDirectories.join('\n'));
|
||
const workingDirectory = getWorkingDirectory();
|
||
// -T#: Compress using # working thread. If # is 0, attempt to detect and use the number of physical CPU cores.
|
||
// --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit.
|
||
// Using 30 here because we also support 32-bit self-hosted runners.
|
||
// Long range mode is added to zstd in v1.3.2 release, so we will not use --long in older version of zstd.
|
||
function getCompressionProgram() {
|
||
switch (compressionMethod) {
|
||
case constants_1.CompressionMethod.Zstd:
|
||
return ['--use-compress-program', 'zstd -T0 --long=30'];
|
||
case constants_1.CompressionMethod.ZstdWithoutLong:
|
||
return ['--use-compress-program', 'zstd -T0'];
|
||
default:
|
||
return ['-z'];
|
||
}
|
||
}
|
||
const args = [
|
||
'--posix',
|
||
...getCompressionProgram(),
|
||
'-cf',
|
||
cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
||
'-P',
|
||
'-C',
|
||
workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
||
'--files-from',
|
||
manifestFilename
|
||
];
|
||
yield execTar(args, compressionMethod, archiveFolder);
|
||
});
|
||
}
|
||
exports.createTar = createTar;
|
||
function listTar(archivePath, compressionMethod) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// --d: Decompress.
|
||
// --long=#: Enables long distance matching with # bits.
|
||
// Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit.
|
||
// Using 30 here because we also support 32-bit self-hosted runners.
|
||
function getCompressionProgram() {
|
||
switch (compressionMethod) {
|
||
case constants_1.CompressionMethod.Zstd:
|
||
return ['--use-compress-program', 'zstd -d --long=30'];
|
||
case constants_1.CompressionMethod.ZstdWithoutLong:
|
||
return ['--use-compress-program', 'zstd -d'];
|
||
default:
|
||
return ['-z'];
|
||
}
|
||
}
|
||
const args = [
|
||
...getCompressionProgram(),
|
||
'-tf',
|
||
archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
||
'-P'
|
||
];
|
||
yield execTar(args, compressionMethod);
|
||
});
|
||
}
|
||
exports.listTar = listTar;
|
||
//# sourceMappingURL=tar.js.map
|
||
|
||
/***/ }),
|
||
/* 435 */,
|
||
/* 436 */,
|
||
/* 437 */,
|
||
/* 438 */,
|
||
/* 439 */,
|
||
/* 440 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.diag = exports.propagation = exports.trace = exports.context = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;
|
||
__exportStar(__webpack_require__(792), exports);
|
||
__exportStar(__webpack_require__(452), exports);
|
||
__exportStar(__webpack_require__(158), exports);
|
||
__exportStar(__webpack_require__(893), exports);
|
||
__exportStar(__webpack_require__(918), exports);
|
||
__exportStar(__webpack_require__(875), exports);
|
||
__exportStar(__webpack_require__(906), exports);
|
||
__exportStar(__webpack_require__(727), exports);
|
||
__exportStar(__webpack_require__(851), exports);
|
||
__exportStar(__webpack_require__(95), exports);
|
||
__exportStar(__webpack_require__(151), exports);
|
||
__exportStar(__webpack_require__(162), exports);
|
||
__exportStar(__webpack_require__(398), exports);
|
||
__exportStar(__webpack_require__(394), exports);
|
||
__exportStar(__webpack_require__(781), exports);
|
||
__exportStar(__webpack_require__(340), exports);
|
||
__exportStar(__webpack_require__(607), exports);
|
||
__exportStar(__webpack_require__(670), exports);
|
||
__exportStar(__webpack_require__(181), exports);
|
||
__exportStar(__webpack_require__(220), exports);
|
||
__exportStar(__webpack_require__(932), exports);
|
||
__exportStar(__webpack_require__(839), exports);
|
||
__exportStar(__webpack_require__(975), exports);
|
||
__exportStar(__webpack_require__(70), exports);
|
||
__exportStar(__webpack_require__(694), exports);
|
||
__exportStar(__webpack_require__(695), exports);
|
||
var spancontext_utils_1 = __webpack_require__(629);
|
||
Object.defineProperty(exports, "INVALID_SPANID", { enumerable: true, get: function () { return spancontext_utils_1.INVALID_SPANID; } });
|
||
Object.defineProperty(exports, "INVALID_TRACEID", { enumerable: true, get: function () { return spancontext_utils_1.INVALID_TRACEID; } });
|
||
Object.defineProperty(exports, "INVALID_SPAN_CONTEXT", { enumerable: true, get: function () { return spancontext_utils_1.INVALID_SPAN_CONTEXT; } });
|
||
Object.defineProperty(exports, "isSpanContextValid", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });
|
||
Object.defineProperty(exports, "isValidTraceId", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });
|
||
Object.defineProperty(exports, "isValidSpanId", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });
|
||
__exportStar(__webpack_require__(132), exports);
|
||
__exportStar(__webpack_require__(425), exports);
|
||
__exportStar(__webpack_require__(845), exports);
|
||
var context_1 = __webpack_require__(492);
|
||
/** Entrypoint for context API */
|
||
exports.context = context_1.ContextAPI.getInstance();
|
||
var trace_1 = __webpack_require__(911);
|
||
/** Entrypoint for trace API */
|
||
exports.trace = trace_1.TraceAPI.getInstance();
|
||
var propagation_1 = __webpack_require__(21);
|
||
/** Entrypoint for propagation API */
|
||
exports.propagation = propagation_1.PropagationAPI.getInstance();
|
||
var diag_1 = __webpack_require__(387);
|
||
/**
|
||
* Entrypoint for Diag API.
|
||
* Defines Diagnostic handler used for internal diagnostic logging operations.
|
||
* The default provides a Noop DiagLogger implementation which may be changed via the
|
||
* diag.setLogger(logger: DiagLogger) function.
|
||
*/
|
||
exports.diag = diag_1.DiagAPI.instance();
|
||
exports.default = {
|
||
trace: exports.trace,
|
||
context: exports.context,
|
||
propagation: exports.propagation,
|
||
diag: exports.diag,
|
||
};
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
/***/ }),
|
||
/* 441 */,
|
||
/* 442 */,
|
||
/* 443 */,
|
||
/* 444 */,
|
||
/* 445 */,
|
||
/* 446 */,
|
||
/* 447 */,
|
||
/* 448 */,
|
||
/* 449 */,
|
||
/* 450 */,
|
||
/* 451 */
|
||
/***/ (function(module) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var XMLNamedNodeMap;
|
||
|
||
module.exports = XMLNamedNodeMap = (function() {
|
||
function XMLNamedNodeMap(nodes) {
|
||
this.nodes = nodes;
|
||
}
|
||
|
||
Object.defineProperty(XMLNamedNodeMap.prototype, 'length', {
|
||
get: function() {
|
||
return Object.keys(this.nodes).length || 0;
|
||
}
|
||
});
|
||
|
||
XMLNamedNodeMap.prototype.clone = function() {
|
||
return this.nodes = null;
|
||
};
|
||
|
||
XMLNamedNodeMap.prototype.getNamedItem = function(name) {
|
||
return this.nodes[name];
|
||
};
|
||
|
||
XMLNamedNodeMap.prototype.setNamedItem = function(node) {
|
||
var oldNode;
|
||
oldNode = this.nodes[node.nodeName];
|
||
this.nodes[node.nodeName] = node;
|
||
return oldNode || null;
|
||
};
|
||
|
||
XMLNamedNodeMap.prototype.removeNamedItem = function(name) {
|
||
var oldNode;
|
||
oldNode = this.nodes[name];
|
||
delete this.nodes[name];
|
||
return oldNode || null;
|
||
};
|
||
|
||
XMLNamedNodeMap.prototype.item = function(index) {
|
||
return this.nodes[Object.keys(this.nodes)[index]] || null;
|
||
};
|
||
|
||
XMLNamedNodeMap.prototype.getNamedItemNS = function(namespaceURI, localName) {
|
||
throw new Error("This DOM method is not implemented.");
|
||
};
|
||
|
||
XMLNamedNodeMap.prototype.setNamedItemNS = function(node) {
|
||
throw new Error("This DOM method is not implemented.");
|
||
};
|
||
|
||
XMLNamedNodeMap.prototype.removeNamedItemNS = function(namespaceURI, localName) {
|
||
throw new Error("This DOM method is not implemented.");
|
||
};
|
||
|
||
return XMLNamedNodeMap;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 452 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=Exception.js.map
|
||
|
||
/***/ }),
|
||
/* 453 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var once = __webpack_require__(969)
|
||
var eos = __webpack_require__(3)
|
||
var fs = __webpack_require__(747) // we only need fs to get the ReadStream and WriteStream prototypes
|
||
|
||
var noop = function () {}
|
||
var ancient = /^v?\.0/.test(process.version)
|
||
|
||
var isFn = function (fn) {
|
||
return typeof fn === 'function'
|
||
}
|
||
|
||
var isFS = function (stream) {
|
||
if (!ancient) return false // newer node version do not need to care about fs is a special way
|
||
if (!fs) return false // browser
|
||
return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)
|
||
}
|
||
|
||
var isRequest = function (stream) {
|
||
return stream.setHeader && isFn(stream.abort)
|
||
}
|
||
|
||
var destroyer = function (stream, reading, writing, callback) {
|
||
callback = once(callback)
|
||
|
||
var closed = false
|
||
stream.on('close', function () {
|
||
closed = true
|
||
})
|
||
|
||
eos(stream, {readable: reading, writable: writing}, function (err) {
|
||
if (err) return callback(err)
|
||
closed = true
|
||
callback()
|
||
})
|
||
|
||
var destroyed = false
|
||
return function (err) {
|
||
if (closed) return
|
||
if (destroyed) return
|
||
destroyed = true
|
||
|
||
if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks
|
||
if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want
|
||
|
||
if (isFn(stream.destroy)) return stream.destroy()
|
||
|
||
callback(err || new Error('stream was destroyed'))
|
||
}
|
||
}
|
||
|
||
var call = function (fn) {
|
||
fn()
|
||
}
|
||
|
||
var pipe = function (from, to) {
|
||
return from.pipe(to)
|
||
}
|
||
|
||
var pump = function () {
|
||
var streams = Array.prototype.slice.call(arguments)
|
||
var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop
|
||
|
||
if (Array.isArray(streams[0])) streams = streams[0]
|
||
if (streams.length < 2) throw new Error('pump requires two streams per minimum')
|
||
|
||
var error
|
||
var destroys = streams.map(function (stream, i) {
|
||
var reading = i < streams.length - 1
|
||
var writing = i > 0
|
||
return destroyer(stream, reading, writing, function (err) {
|
||
if (!error) error = err
|
||
if (err) destroys.forEach(call)
|
||
if (reading) return
|
||
destroys.forEach(call)
|
||
callback(error)
|
||
})
|
||
})
|
||
|
||
return streams.reduce(pipe)
|
||
}
|
||
|
||
module.exports = pump
|
||
|
||
|
||
/***/ }),
|
||
/* 454 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||
|
||
var Stream = _interopDefault(__webpack_require__(794));
|
||
var http = _interopDefault(__webpack_require__(605));
|
||
var Url = _interopDefault(__webpack_require__(835));
|
||
var https = _interopDefault(__webpack_require__(211));
|
||
var zlib = _interopDefault(__webpack_require__(761));
|
||
|
||
// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
|
||
|
||
// fix for "Readable" isn't a named export issue
|
||
const Readable = Stream.Readable;
|
||
|
||
const BUFFER = Symbol('buffer');
|
||
const TYPE = Symbol('type');
|
||
|
||
class Blob {
|
||
constructor() {
|
||
this[TYPE] = '';
|
||
|
||
const blobParts = arguments[0];
|
||
const options = arguments[1];
|
||
|
||
const buffers = [];
|
||
let size = 0;
|
||
|
||
if (blobParts) {
|
||
const a = blobParts;
|
||
const length = Number(a.length);
|
||
for (let i = 0; i < length; i++) {
|
||
const element = a[i];
|
||
let buffer;
|
||
if (element instanceof Buffer) {
|
||
buffer = element;
|
||
} else if (ArrayBuffer.isView(element)) {
|
||
buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
|
||
} else if (element instanceof ArrayBuffer) {
|
||
buffer = Buffer.from(element);
|
||
} else if (element instanceof Blob) {
|
||
buffer = element[BUFFER];
|
||
} else {
|
||
buffer = Buffer.from(typeof element === 'string' ? element : String(element));
|
||
}
|
||
size += buffer.length;
|
||
buffers.push(buffer);
|
||
}
|
||
}
|
||
|
||
this[BUFFER] = Buffer.concat(buffers);
|
||
|
||
let type = options && options.type !== undefined && String(options.type).toLowerCase();
|
||
if (type && !/[^\u0020-\u007E]/.test(type)) {
|
||
this[TYPE] = type;
|
||
}
|
||
}
|
||
get size() {
|
||
return this[BUFFER].length;
|
||
}
|
||
get type() {
|
||
return this[TYPE];
|
||
}
|
||
text() {
|
||
return Promise.resolve(this[BUFFER].toString());
|
||
}
|
||
arrayBuffer() {
|
||
const buf = this[BUFFER];
|
||
const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
|
||
return Promise.resolve(ab);
|
||
}
|
||
stream() {
|
||
const readable = new Readable();
|
||
readable._read = function () {};
|
||
readable.push(this[BUFFER]);
|
||
readable.push(null);
|
||
return readable;
|
||
}
|
||
toString() {
|
||
return '[object Blob]';
|
||
}
|
||
slice() {
|
||
const size = this.size;
|
||
|
||
const start = arguments[0];
|
||
const end = arguments[1];
|
||
let relativeStart, relativeEnd;
|
||
if (start === undefined) {
|
||
relativeStart = 0;
|
||
} else if (start < 0) {
|
||
relativeStart = Math.max(size + start, 0);
|
||
} else {
|
||
relativeStart = Math.min(start, size);
|
||
}
|
||
if (end === undefined) {
|
||
relativeEnd = size;
|
||
} else if (end < 0) {
|
||
relativeEnd = Math.max(size + end, 0);
|
||
} else {
|
||
relativeEnd = Math.min(end, size);
|
||
}
|
||
const span = Math.max(relativeEnd - relativeStart, 0);
|
||
|
||
const buffer = this[BUFFER];
|
||
const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
|
||
const blob = new Blob([], { type: arguments[2] });
|
||
blob[BUFFER] = slicedBuffer;
|
||
return blob;
|
||
}
|
||
}
|
||
|
||
Object.defineProperties(Blob.prototype, {
|
||
size: { enumerable: true },
|
||
type: { enumerable: true },
|
||
slice: { enumerable: true }
|
||
});
|
||
|
||
Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
|
||
value: 'Blob',
|
||
writable: false,
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
|
||
/**
|
||
* fetch-error.js
|
||
*
|
||
* FetchError interface for operational errors
|
||
*/
|
||
|
||
/**
|
||
* Create FetchError instance
|
||
*
|
||
* @param String message Error message for human
|
||
* @param String type Error type for machine
|
||
* @param String systemError For Node.js system error
|
||
* @return FetchError
|
||
*/
|
||
function FetchError(message, type, systemError) {
|
||
Error.call(this, message);
|
||
|
||
this.message = message;
|
||
this.type = type;
|
||
|
||
// when err.type is `system`, err.code contains system error code
|
||
if (systemError) {
|
||
this.code = this.errno = systemError.code;
|
||
}
|
||
|
||
// hide custom error implementation details from end-users
|
||
Error.captureStackTrace(this, this.constructor);
|
||
}
|
||
|
||
FetchError.prototype = Object.create(Error.prototype);
|
||
FetchError.prototype.constructor = FetchError;
|
||
FetchError.prototype.name = 'FetchError';
|
||
|
||
let convert;
|
||
try {
|
||
convert = __webpack_require__(18).convert;
|
||
} catch (e) {}
|
||
|
||
const INTERNALS = Symbol('Body internals');
|
||
|
||
// fix an issue where "PassThrough" isn't a named export for node <10
|
||
const PassThrough = Stream.PassThrough;
|
||
|
||
/**
|
||
* Body mixin
|
||
*
|
||
* Ref: https://fetch.spec.whatwg.org/#body
|
||
*
|
||
* @param Stream body Readable stream
|
||
* @param Object opts Response options
|
||
* @return Void
|
||
*/
|
||
function Body(body) {
|
||
var _this = this;
|
||
|
||
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
||
_ref$size = _ref.size;
|
||
|
||
let size = _ref$size === undefined ? 0 : _ref$size;
|
||
var _ref$timeout = _ref.timeout;
|
||
let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
|
||
|
||
if (body == null) {
|
||
// body is undefined or null
|
||
body = null;
|
||
} else if (isURLSearchParams(body)) {
|
||
// body is a URLSearchParams
|
||
body = Buffer.from(body.toString());
|
||
} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
|
||
// body is ArrayBuffer
|
||
body = Buffer.from(body);
|
||
} else if (ArrayBuffer.isView(body)) {
|
||
// body is ArrayBufferView
|
||
body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
|
||
} else if (body instanceof Stream) ; else {
|
||
// none of the above
|
||
// coerce to string then buffer
|
||
body = Buffer.from(String(body));
|
||
}
|
||
this[INTERNALS] = {
|
||
body,
|
||
disturbed: false,
|
||
error: null
|
||
};
|
||
this.size = size;
|
||
this.timeout = timeout;
|
||
|
||
if (body instanceof Stream) {
|
||
body.on('error', function (err) {
|
||
const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
|
||
_this[INTERNALS].error = error;
|
||
});
|
||
}
|
||
}
|
||
|
||
Body.prototype = {
|
||
get body() {
|
||
return this[INTERNALS].body;
|
||
},
|
||
|
||
get bodyUsed() {
|
||
return this[INTERNALS].disturbed;
|
||
},
|
||
|
||
/**
|
||
* Decode response as ArrayBuffer
|
||
*
|
||
* @return Promise
|
||
*/
|
||
arrayBuffer() {
|
||
return consumeBody.call(this).then(function (buf) {
|
||
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
|
||
});
|
||
},
|
||
|
||
/**
|
||
* Return raw response as Blob
|
||
*
|
||
* @return Promise
|
||
*/
|
||
blob() {
|
||
let ct = this.headers && this.headers.get('content-type') || '';
|
||
return consumeBody.call(this).then(function (buf) {
|
||
return Object.assign(
|
||
// Prevent copying
|
||
new Blob([], {
|
||
type: ct.toLowerCase()
|
||
}), {
|
||
[BUFFER]: buf
|
||
});
|
||
});
|
||
},
|
||
|
||
/**
|
||
* Decode response as json
|
||
*
|
||
* @return Promise
|
||
*/
|
||
json() {
|
||
var _this2 = this;
|
||
|
||
return consumeBody.call(this).then(function (buffer) {
|
||
try {
|
||
return JSON.parse(buffer.toString());
|
||
} catch (err) {
|
||
return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
|
||
}
|
||
});
|
||
},
|
||
|
||
/**
|
||
* Decode response as text
|
||
*
|
||
* @return Promise
|
||
*/
|
||
text() {
|
||
return consumeBody.call(this).then(function (buffer) {
|
||
return buffer.toString();
|
||
});
|
||
},
|
||
|
||
/**
|
||
* Decode response as buffer (non-spec api)
|
||
*
|
||
* @return Promise
|
||
*/
|
||
buffer() {
|
||
return consumeBody.call(this);
|
||
},
|
||
|
||
/**
|
||
* Decode response as text, while automatically detecting the encoding and
|
||
* trying to decode to UTF-8 (non-spec api)
|
||
*
|
||
* @return Promise
|
||
*/
|
||
textConverted() {
|
||
var _this3 = this;
|
||
|
||
return consumeBody.call(this).then(function (buffer) {
|
||
return convertBody(buffer, _this3.headers);
|
||
});
|
||
}
|
||
};
|
||
|
||
// In browsers, all properties are enumerable.
|
||
Object.defineProperties(Body.prototype, {
|
||
body: { enumerable: true },
|
||
bodyUsed: { enumerable: true },
|
||
arrayBuffer: { enumerable: true },
|
||
blob: { enumerable: true },
|
||
json: { enumerable: true },
|
||
text: { enumerable: true }
|
||
});
|
||
|
||
Body.mixIn = function (proto) {
|
||
for (const name of Object.getOwnPropertyNames(Body.prototype)) {
|
||
// istanbul ignore else: future proof
|
||
if (!(name in proto)) {
|
||
const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
|
||
Object.defineProperty(proto, name, desc);
|
||
}
|
||
}
|
||
};
|
||
|
||
/**
|
||
* Consume and convert an entire Body to a Buffer.
|
||
*
|
||
* Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
|
||
*
|
||
* @return Promise
|
||
*/
|
||
function consumeBody() {
|
||
var _this4 = this;
|
||
|
||
if (this[INTERNALS].disturbed) {
|
||
return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
|
||
}
|
||
|
||
this[INTERNALS].disturbed = true;
|
||
|
||
if (this[INTERNALS].error) {
|
||
return Body.Promise.reject(this[INTERNALS].error);
|
||
}
|
||
|
||
let body = this.body;
|
||
|
||
// body is null
|
||
if (body === null) {
|
||
return Body.Promise.resolve(Buffer.alloc(0));
|
||
}
|
||
|
||
// body is blob
|
||
if (isBlob(body)) {
|
||
body = body.stream();
|
||
}
|
||
|
||
// body is buffer
|
||
if (Buffer.isBuffer(body)) {
|
||
return Body.Promise.resolve(body);
|
||
}
|
||
|
||
// istanbul ignore if: should never happen
|
||
if (!(body instanceof Stream)) {
|
||
return Body.Promise.resolve(Buffer.alloc(0));
|
||
}
|
||
|
||
// body is stream
|
||
// get ready to actually consume the body
|
||
let accum = [];
|
||
let accumBytes = 0;
|
||
let abort = false;
|
||
|
||
return new Body.Promise(function (resolve, reject) {
|
||
let resTimeout;
|
||
|
||
// allow timeout on slow response body
|
||
if (_this4.timeout) {
|
||
resTimeout = setTimeout(function () {
|
||
abort = true;
|
||
reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
|
||
}, _this4.timeout);
|
||
}
|
||
|
||
// handle stream errors
|
||
body.on('error', function (err) {
|
||
if (err.name === 'AbortError') {
|
||
// if the request was aborted, reject with this Error
|
||
abort = true;
|
||
reject(err);
|
||
} else {
|
||
// other errors, such as incorrect content-encoding
|
||
reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
|
||
}
|
||
});
|
||
|
||
body.on('data', function (chunk) {
|
||
if (abort || chunk === null) {
|
||
return;
|
||
}
|
||
|
||
if (_this4.size && accumBytes + chunk.length > _this4.size) {
|
||
abort = true;
|
||
reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
|
||
return;
|
||
}
|
||
|
||
accumBytes += chunk.length;
|
||
accum.push(chunk);
|
||
});
|
||
|
||
body.on('end', function () {
|
||
if (abort) {
|
||
return;
|
||
}
|
||
|
||
clearTimeout(resTimeout);
|
||
|
||
try {
|
||
resolve(Buffer.concat(accum, accumBytes));
|
||
} catch (err) {
|
||
// handle streams that have accumulated too much data (issue #414)
|
||
reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
/**
|
||
* Detect buffer encoding and convert to target encoding
|
||
* ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
|
||
*
|
||
* @param Buffer buffer Incoming buffer
|
||
* @param String encoding Target encoding
|
||
* @return String
|
||
*/
|
||
function convertBody(buffer, headers) {
|
||
if (typeof convert !== 'function') {
|
||
throw new Error('The package `encoding` must be installed to use the textConverted() function');
|
||
}
|
||
|
||
const ct = headers.get('content-type');
|
||
let charset = 'utf-8';
|
||
let res, str;
|
||
|
||
// header
|
||
if (ct) {
|
||
res = /charset=([^;]*)/i.exec(ct);
|
||
}
|
||
|
||
// no charset in content type, peek at response body for at most 1024 bytes
|
||
str = buffer.slice(0, 1024).toString();
|
||
|
||
// html5
|
||
if (!res && str) {
|
||
res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
|
||
}
|
||
|
||
// html4
|
||
if (!res && str) {
|
||
res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
|
||
if (!res) {
|
||
res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str);
|
||
if (res) {
|
||
res.pop(); // drop last quote
|
||
}
|
||
}
|
||
|
||
if (res) {
|
||
res = /charset=(.*)/i.exec(res.pop());
|
||
}
|
||
}
|
||
|
||
// xml
|
||
if (!res && str) {
|
||
res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
|
||
}
|
||
|
||
// found charset
|
||
if (res) {
|
||
charset = res.pop();
|
||
|
||
// prevent decode issues when sites use incorrect encoding
|
||
// ref: https://hsivonen.fi/encoding-menu/
|
||
if (charset === 'gb2312' || charset === 'gbk') {
|
||
charset = 'gb18030';
|
||
}
|
||
}
|
||
|
||
// turn raw buffers into a single utf-8 buffer
|
||
return convert(buffer, 'UTF-8', charset).toString();
|
||
}
|
||
|
||
/**
|
||
* Detect a URLSearchParams object
|
||
* ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
|
||
*
|
||
* @param Object obj Object to detect by type or brand
|
||
* @return String
|
||
*/
|
||
function isURLSearchParams(obj) {
|
||
// Duck-typing as a necessary condition.
|
||
if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
|
||
return false;
|
||
}
|
||
|
||
// Brand-checking and more duck-typing as optional condition.
|
||
return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
|
||
}
|
||
|
||
/**
|
||
* Check if `obj` is a W3C `Blob` object (which `File` inherits from)
|
||
* @param {*} obj
|
||
* @return {boolean}
|
||
*/
|
||
function isBlob(obj) {
|
||
return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
|
||
}
|
||
|
||
/**
|
||
* Clone body given Res/Req instance
|
||
*
|
||
* @param Mixed instance Response or Request instance
|
||
* @return Mixed
|
||
*/
|
||
function clone(instance) {
|
||
let p1, p2;
|
||
let body = instance.body;
|
||
|
||
// don't allow cloning a used body
|
||
if (instance.bodyUsed) {
|
||
throw new Error('cannot clone body after it is used');
|
||
}
|
||
|
||
// check that body is a stream and not form-data object
|
||
// note: we can't clone the form-data object without having it as a dependency
|
||
if (body instanceof Stream && typeof body.getBoundary !== 'function') {
|
||
// tee instance body
|
||
p1 = new PassThrough();
|
||
p2 = new PassThrough();
|
||
body.pipe(p1);
|
||
body.pipe(p2);
|
||
// set instance body to teed body and return the other teed body
|
||
instance[INTERNALS].body = p1;
|
||
body = p2;
|
||
}
|
||
|
||
return body;
|
||
}
|
||
|
||
/**
|
||
* Performs the operation "extract a `Content-Type` value from |object|" as
|
||
* specified in the specification:
|
||
* https://fetch.spec.whatwg.org/#concept-bodyinit-extract
|
||
*
|
||
* This function assumes that instance.body is present.
|
||
*
|
||
* @param Mixed instance Any options.body input
|
||
*/
|
||
function extractContentType(body) {
|
||
if (body === null) {
|
||
// body is null
|
||
return null;
|
||
} else if (typeof body === 'string') {
|
||
// body is string
|
||
return 'text/plain;charset=UTF-8';
|
||
} else if (isURLSearchParams(body)) {
|
||
// body is a URLSearchParams
|
||
return 'application/x-www-form-urlencoded;charset=UTF-8';
|
||
} else if (isBlob(body)) {
|
||
// body is blob
|
||
return body.type || null;
|
||
} else if (Buffer.isBuffer(body)) {
|
||
// body is buffer
|
||
return null;
|
||
} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
|
||
// body is ArrayBuffer
|
||
return null;
|
||
} else if (ArrayBuffer.isView(body)) {
|
||
// body is ArrayBufferView
|
||
return null;
|
||
} else if (typeof body.getBoundary === 'function') {
|
||
// detect form data input from form-data module
|
||
return `multipart/form-data;boundary=${body.getBoundary()}`;
|
||
} else if (body instanceof Stream) {
|
||
// body is stream
|
||
// can't really do much about this
|
||
return null;
|
||
} else {
|
||
// Body constructor defaults other things to string
|
||
return 'text/plain;charset=UTF-8';
|
||
}
|
||
}
|
||
|
||
/**
|
||
* The Fetch Standard treats this as if "total bytes" is a property on the body.
|
||
* For us, we have to explicitly get it with a function.
|
||
*
|
||
* ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
|
||
*
|
||
* @param Body instance Instance of Body
|
||
* @return Number? Number of bytes, or null if not possible
|
||
*/
|
||
function getTotalBytes(instance) {
|
||
const body = instance.body;
|
||
|
||
|
||
if (body === null) {
|
||
// body is null
|
||
return 0;
|
||
} else if (isBlob(body)) {
|
||
return body.size;
|
||
} else if (Buffer.isBuffer(body)) {
|
||
// body is buffer
|
||
return body.length;
|
||
} else if (body && typeof body.getLengthSync === 'function') {
|
||
// detect form data input from form-data module
|
||
if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
|
||
body.hasKnownLength && body.hasKnownLength()) {
|
||
// 2.x
|
||
return body.getLengthSync();
|
||
}
|
||
return null;
|
||
} else {
|
||
// body is stream
|
||
return null;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Write a Body to a Node.js WritableStream (e.g. http.Request) object.
|
||
*
|
||
* @param Body instance Instance of Body
|
||
* @return Void
|
||
*/
|
||
function writeToStream(dest, instance) {
|
||
const body = instance.body;
|
||
|
||
|
||
if (body === null) {
|
||
// body is null
|
||
dest.end();
|
||
} else if (isBlob(body)) {
|
||
body.stream().pipe(dest);
|
||
} else if (Buffer.isBuffer(body)) {
|
||
// body is buffer
|
||
dest.write(body);
|
||
dest.end();
|
||
} else {
|
||
// body is stream
|
||
body.pipe(dest);
|
||
}
|
||
}
|
||
|
||
// expose Promise
|
||
Body.Promise = global.Promise;
|
||
|
||
/**
|
||
* headers.js
|
||
*
|
||
* Headers class offers convenient helpers
|
||
*/
|
||
|
||
const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
|
||
const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
|
||
|
||
function validateName(name) {
|
||
name = `${name}`;
|
||
if (invalidTokenRegex.test(name) || name === '') {
|
||
throw new TypeError(`${name} is not a legal HTTP header name`);
|
||
}
|
||
}
|
||
|
||
function validateValue(value) {
|
||
value = `${value}`;
|
||
if (invalidHeaderCharRegex.test(value)) {
|
||
throw new TypeError(`${value} is not a legal HTTP header value`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Find the key in the map object given a header name.
|
||
*
|
||
* Returns undefined if not found.
|
||
*
|
||
* @param String name Header name
|
||
* @return String|Undefined
|
||
*/
|
||
function find(map, name) {
|
||
name = name.toLowerCase();
|
||
for (const key in map) {
|
||
if (key.toLowerCase() === name) {
|
||
return key;
|
||
}
|
||
}
|
||
return undefined;
|
||
}
|
||
|
||
const MAP = Symbol('map');
|
||
class Headers {
|
||
/**
|
||
* Headers class
|
||
*
|
||
* @param Object headers Response headers
|
||
* @return Void
|
||
*/
|
||
constructor() {
|
||
let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
|
||
|
||
this[MAP] = Object.create(null);
|
||
|
||
if (init instanceof Headers) {
|
||
const rawHeaders = init.raw();
|
||
const headerNames = Object.keys(rawHeaders);
|
||
|
||
for (const headerName of headerNames) {
|
||
for (const value of rawHeaders[headerName]) {
|
||
this.append(headerName, value);
|
||
}
|
||
}
|
||
|
||
return;
|
||
}
|
||
|
||
// We don't worry about converting prop to ByteString here as append()
|
||
// will handle it.
|
||
if (init == null) ; else if (typeof init === 'object') {
|
||
const method = init[Symbol.iterator];
|
||
if (method != null) {
|
||
if (typeof method !== 'function') {
|
||
throw new TypeError('Header pairs must be iterable');
|
||
}
|
||
|
||
// sequence<sequence<ByteString>>
|
||
// Note: per spec we have to first exhaust the lists then process them
|
||
const pairs = [];
|
||
for (const pair of init) {
|
||
if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
|
||
throw new TypeError('Each header pair must be iterable');
|
||
}
|
||
pairs.push(Array.from(pair));
|
||
}
|
||
|
||
for (const pair of pairs) {
|
||
if (pair.length !== 2) {
|
||
throw new TypeError('Each header pair must be a name/value tuple');
|
||
}
|
||
this.append(pair[0], pair[1]);
|
||
}
|
||
} else {
|
||
// record<ByteString, ByteString>
|
||
for (const key of Object.keys(init)) {
|
||
const value = init[key];
|
||
this.append(key, value);
|
||
}
|
||
}
|
||
} else {
|
||
throw new TypeError('Provided initializer must be an object');
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Return combined header value given name
|
||
*
|
||
* @param String name Header name
|
||
* @return Mixed
|
||
*/
|
||
get(name) {
|
||
name = `${name}`;
|
||
validateName(name);
|
||
const key = find(this[MAP], name);
|
||
if (key === undefined) {
|
||
return null;
|
||
}
|
||
|
||
return this[MAP][key].join(', ');
|
||
}
|
||
|
||
/**
|
||
* Iterate over all headers
|
||
*
|
||
* @param Function callback Executed for each item with parameters (value, name, thisArg)
|
||
* @param Boolean thisArg `this` context for callback function
|
||
* @return Void
|
||
*/
|
||
forEach(callback) {
|
||
let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
||
|
||
let pairs = getHeaders(this);
|
||
let i = 0;
|
||
while (i < pairs.length) {
|
||
var _pairs$i = pairs[i];
|
||
const name = _pairs$i[0],
|
||
value = _pairs$i[1];
|
||
|
||
callback.call(thisArg, value, name, this);
|
||
pairs = getHeaders(this);
|
||
i++;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Overwrite header values given name
|
||
*
|
||
* @param String name Header name
|
||
* @param String value Header value
|
||
* @return Void
|
||
*/
|
||
set(name, value) {
|
||
name = `${name}`;
|
||
value = `${value}`;
|
||
validateName(name);
|
||
validateValue(value);
|
||
const key = find(this[MAP], name);
|
||
this[MAP][key !== undefined ? key : name] = [value];
|
||
}
|
||
|
||
/**
|
||
* Append a value onto existing header
|
||
*
|
||
* @param String name Header name
|
||
* @param String value Header value
|
||
* @return Void
|
||
*/
|
||
append(name, value) {
|
||
name = `${name}`;
|
||
value = `${value}`;
|
||
validateName(name);
|
||
validateValue(value);
|
||
const key = find(this[MAP], name);
|
||
if (key !== undefined) {
|
||
this[MAP][key].push(value);
|
||
} else {
|
||
this[MAP][name] = [value];
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Check for header name existence
|
||
*
|
||
* @param String name Header name
|
||
* @return Boolean
|
||
*/
|
||
has(name) {
|
||
name = `${name}`;
|
||
validateName(name);
|
||
return find(this[MAP], name) !== undefined;
|
||
}
|
||
|
||
/**
|
||
* Delete all header values given name
|
||
*
|
||
* @param String name Header name
|
||
* @return Void
|
||
*/
|
||
delete(name) {
|
||
name = `${name}`;
|
||
validateName(name);
|
||
const key = find(this[MAP], name);
|
||
if (key !== undefined) {
|
||
delete this[MAP][key];
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Return raw headers (non-spec api)
|
||
*
|
||
* @return Object
|
||
*/
|
||
raw() {
|
||
return this[MAP];
|
||
}
|
||
|
||
/**
|
||
* Get an iterator on keys.
|
||
*
|
||
* @return Iterator
|
||
*/
|
||
keys() {
|
||
return createHeadersIterator(this, 'key');
|
||
}
|
||
|
||
/**
|
||
* Get an iterator on values.
|
||
*
|
||
* @return Iterator
|
||
*/
|
||
values() {
|
||
return createHeadersIterator(this, 'value');
|
||
}
|
||
|
||
/**
|
||
* Get an iterator on entries.
|
||
*
|
||
* This is the default iterator of the Headers object.
|
||
*
|
||
* @return Iterator
|
||
*/
|
||
[Symbol.iterator]() {
|
||
return createHeadersIterator(this, 'key+value');
|
||
}
|
||
}
|
||
Headers.prototype.entries = Headers.prototype[Symbol.iterator];
|
||
|
||
Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
|
||
value: 'Headers',
|
||
writable: false,
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
|
||
Object.defineProperties(Headers.prototype, {
|
||
get: { enumerable: true },
|
||
forEach: { enumerable: true },
|
||
set: { enumerable: true },
|
||
append: { enumerable: true },
|
||
has: { enumerable: true },
|
||
delete: { enumerable: true },
|
||
keys: { enumerable: true },
|
||
values: { enumerable: true },
|
||
entries: { enumerable: true }
|
||
});
|
||
|
||
function getHeaders(headers) {
|
||
let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
|
||
|
||
const keys = Object.keys(headers[MAP]).sort();
|
||
return keys.map(kind === 'key' ? function (k) {
|
||
return k.toLowerCase();
|
||
} : kind === 'value' ? function (k) {
|
||
return headers[MAP][k].join(', ');
|
||
} : function (k) {
|
||
return [k.toLowerCase(), headers[MAP][k].join(', ')];
|
||
});
|
||
}
|
||
|
||
const INTERNAL = Symbol('internal');
|
||
|
||
function createHeadersIterator(target, kind) {
|
||
const iterator = Object.create(HeadersIteratorPrototype);
|
||
iterator[INTERNAL] = {
|
||
target,
|
||
kind,
|
||
index: 0
|
||
};
|
||
return iterator;
|
||
}
|
||
|
||
const HeadersIteratorPrototype = Object.setPrototypeOf({
|
||
next() {
|
||
// istanbul ignore if
|
||
if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
|
||
throw new TypeError('Value of `this` is not a HeadersIterator');
|
||
}
|
||
|
||
var _INTERNAL = this[INTERNAL];
|
||
const target = _INTERNAL.target,
|
||
kind = _INTERNAL.kind,
|
||
index = _INTERNAL.index;
|
||
|
||
const values = getHeaders(target, kind);
|
||
const len = values.length;
|
||
if (index >= len) {
|
||
return {
|
||
value: undefined,
|
||
done: true
|
||
};
|
||
}
|
||
|
||
this[INTERNAL].index = index + 1;
|
||
|
||
return {
|
||
value: values[index],
|
||
done: false
|
||
};
|
||
}
|
||
}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
|
||
|
||
Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
|
||
value: 'HeadersIterator',
|
||
writable: false,
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
|
||
/**
|
||
* Export the Headers object in a form that Node.js can consume.
|
||
*
|
||
* @param Headers headers
|
||
* @return Object
|
||
*/
|
||
function exportNodeCompatibleHeaders(headers) {
|
||
const obj = Object.assign({ __proto__: null }, headers[MAP]);
|
||
|
||
// http.request() only supports string as Host header. This hack makes
|
||
// specifying custom Host header possible.
|
||
const hostHeaderKey = find(headers[MAP], 'Host');
|
||
if (hostHeaderKey !== undefined) {
|
||
obj[hostHeaderKey] = obj[hostHeaderKey][0];
|
||
}
|
||
|
||
return obj;
|
||
}
|
||
|
||
/**
|
||
* Create a Headers object from an object of headers, ignoring those that do
|
||
* not conform to HTTP grammar productions.
|
||
*
|
||
* @param Object obj Object of headers
|
||
* @return Headers
|
||
*/
|
||
function createHeadersLenient(obj) {
|
||
const headers = new Headers();
|
||
for (const name of Object.keys(obj)) {
|
||
if (invalidTokenRegex.test(name)) {
|
||
continue;
|
||
}
|
||
if (Array.isArray(obj[name])) {
|
||
for (const val of obj[name]) {
|
||
if (invalidHeaderCharRegex.test(val)) {
|
||
continue;
|
||
}
|
||
if (headers[MAP][name] === undefined) {
|
||
headers[MAP][name] = [val];
|
||
} else {
|
||
headers[MAP][name].push(val);
|
||
}
|
||
}
|
||
} else if (!invalidHeaderCharRegex.test(obj[name])) {
|
||
headers[MAP][name] = [obj[name]];
|
||
}
|
||
}
|
||
return headers;
|
||
}
|
||
|
||
const INTERNALS$1 = Symbol('Response internals');
|
||
|
||
// fix an issue where "STATUS_CODES" aren't a named export for node <10
|
||
const STATUS_CODES = http.STATUS_CODES;
|
||
|
||
/**
|
||
* Response class
|
||
*
|
||
* @param Stream body Readable stream
|
||
* @param Object opts Response options
|
||
* @return Void
|
||
*/
|
||
class Response {
|
||
constructor() {
|
||
let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
||
let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||
|
||
Body.call(this, body, opts);
|
||
|
||
const status = opts.status || 200;
|
||
const headers = new Headers(opts.headers);
|
||
|
||
if (body != null && !headers.has('Content-Type')) {
|
||
const contentType = extractContentType(body);
|
||
if (contentType) {
|
||
headers.append('Content-Type', contentType);
|
||
}
|
||
}
|
||
|
||
this[INTERNALS$1] = {
|
||
url: opts.url,
|
||
status,
|
||
statusText: opts.statusText || STATUS_CODES[status],
|
||
headers,
|
||
counter: opts.counter
|
||
};
|
||
}
|
||
|
||
get url() {
|
||
return this[INTERNALS$1].url || '';
|
||
}
|
||
|
||
get status() {
|
||
return this[INTERNALS$1].status;
|
||
}
|
||
|
||
/**
|
||
* Convenience property representing if the request ended normally
|
||
*/
|
||
get ok() {
|
||
return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
|
||
}
|
||
|
||
get redirected() {
|
||
return this[INTERNALS$1].counter > 0;
|
||
}
|
||
|
||
get statusText() {
|
||
return this[INTERNALS$1].statusText;
|
||
}
|
||
|
||
get headers() {
|
||
return this[INTERNALS$1].headers;
|
||
}
|
||
|
||
/**
|
||
* Clone this response
|
||
*
|
||
* @return Response
|
||
*/
|
||
clone() {
|
||
return new Response(clone(this), {
|
||
url: this.url,
|
||
status: this.status,
|
||
statusText: this.statusText,
|
||
headers: this.headers,
|
||
ok: this.ok,
|
||
redirected: this.redirected
|
||
});
|
||
}
|
||
}
|
||
|
||
Body.mixIn(Response.prototype);
|
||
|
||
Object.defineProperties(Response.prototype, {
|
||
url: { enumerable: true },
|
||
status: { enumerable: true },
|
||
ok: { enumerable: true },
|
||
redirected: { enumerable: true },
|
||
statusText: { enumerable: true },
|
||
headers: { enumerable: true },
|
||
clone: { enumerable: true }
|
||
});
|
||
|
||
Object.defineProperty(Response.prototype, Symbol.toStringTag, {
|
||
value: 'Response',
|
||
writable: false,
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
|
||
const INTERNALS$2 = Symbol('Request internals');
|
||
|
||
// fix an issue where "format", "parse" aren't a named export for node <10
|
||
const parse_url = Url.parse;
|
||
const format_url = Url.format;
|
||
|
||
const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
|
||
|
||
/**
|
||
* Check if a value is an instance of Request.
|
||
*
|
||
* @param Mixed input
|
||
* @return Boolean
|
||
*/
|
||
function isRequest(input) {
|
||
return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
|
||
}
|
||
|
||
function isAbortSignal(signal) {
|
||
const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
|
||
return !!(proto && proto.constructor.name === 'AbortSignal');
|
||
}
|
||
|
||
/**
|
||
* Request class
|
||
*
|
||
* @param Mixed input Url or Request instance
|
||
* @param Object init Custom options
|
||
* @return Void
|
||
*/
|
||
class Request {
|
||
constructor(input) {
|
||
let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||
|
||
let parsedURL;
|
||
|
||
// normalize input
|
||
if (!isRequest(input)) {
|
||
if (input && input.href) {
|
||
// in order to support Node.js' Url objects; though WHATWG's URL objects
|
||
// will fall into this branch also (since their `toString()` will return
|
||
// `href` property anyway)
|
||
parsedURL = parse_url(input.href);
|
||
} else {
|
||
// coerce input to a string before attempting to parse
|
||
parsedURL = parse_url(`${input}`);
|
||
}
|
||
input = {};
|
||
} else {
|
||
parsedURL = parse_url(input.url);
|
||
}
|
||
|
||
let method = init.method || input.method || 'GET';
|
||
method = method.toUpperCase();
|
||
|
||
if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
|
||
throw new TypeError('Request with GET/HEAD method cannot have body');
|
||
}
|
||
|
||
let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
|
||
|
||
Body.call(this, inputBody, {
|
||
timeout: init.timeout || input.timeout || 0,
|
||
size: init.size || input.size || 0
|
||
});
|
||
|
||
const headers = new Headers(init.headers || input.headers || {});
|
||
|
||
if (inputBody != null && !headers.has('Content-Type')) {
|
||
const contentType = extractContentType(inputBody);
|
||
if (contentType) {
|
||
headers.append('Content-Type', contentType);
|
||
}
|
||
}
|
||
|
||
let signal = isRequest(input) ? input.signal : null;
|
||
if ('signal' in init) signal = init.signal;
|
||
|
||
if (signal != null && !isAbortSignal(signal)) {
|
||
throw new TypeError('Expected signal to be an instanceof AbortSignal');
|
||
}
|
||
|
||
this[INTERNALS$2] = {
|
||
method,
|
||
redirect: init.redirect || input.redirect || 'follow',
|
||
headers,
|
||
parsedURL,
|
||
signal
|
||
};
|
||
|
||
// node-fetch-only options
|
||
this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
|
||
this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
|
||
this.counter = init.counter || input.counter || 0;
|
||
this.agent = init.agent || input.agent;
|
||
}
|
||
|
||
get method() {
|
||
return this[INTERNALS$2].method;
|
||
}
|
||
|
||
get url() {
|
||
return format_url(this[INTERNALS$2].parsedURL);
|
||
}
|
||
|
||
get headers() {
|
||
return this[INTERNALS$2].headers;
|
||
}
|
||
|
||
get redirect() {
|
||
return this[INTERNALS$2].redirect;
|
||
}
|
||
|
||
get signal() {
|
||
return this[INTERNALS$2].signal;
|
||
}
|
||
|
||
/**
|
||
* Clone this request
|
||
*
|
||
* @return Request
|
||
*/
|
||
clone() {
|
||
return new Request(this);
|
||
}
|
||
}
|
||
|
||
Body.mixIn(Request.prototype);
|
||
|
||
Object.defineProperty(Request.prototype, Symbol.toStringTag, {
|
||
value: 'Request',
|
||
writable: false,
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
|
||
Object.defineProperties(Request.prototype, {
|
||
method: { enumerable: true },
|
||
url: { enumerable: true },
|
||
headers: { enumerable: true },
|
||
redirect: { enumerable: true },
|
||
clone: { enumerable: true },
|
||
signal: { enumerable: true }
|
||
});
|
||
|
||
/**
|
||
* Convert a Request to Node.js http request options.
|
||
*
|
||
* @param Request A Request instance
|
||
* @return Object The options object to be passed to http.request
|
||
*/
|
||
function getNodeRequestOptions(request) {
|
||
const parsedURL = request[INTERNALS$2].parsedURL;
|
||
const headers = new Headers(request[INTERNALS$2].headers);
|
||
|
||
// fetch step 1.3
|
||
if (!headers.has('Accept')) {
|
||
headers.set('Accept', '*/*');
|
||
}
|
||
|
||
// Basic fetch
|
||
if (!parsedURL.protocol || !parsedURL.hostname) {
|
||
throw new TypeError('Only absolute URLs are supported');
|
||
}
|
||
|
||
if (!/^https?:$/.test(parsedURL.protocol)) {
|
||
throw new TypeError('Only HTTP(S) protocols are supported');
|
||
}
|
||
|
||
if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
|
||
throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
|
||
}
|
||
|
||
// HTTP-network-or-cache fetch steps 2.4-2.7
|
||
let contentLengthValue = null;
|
||
if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
|
||
contentLengthValue = '0';
|
||
}
|
||
if (request.body != null) {
|
||
const totalBytes = getTotalBytes(request);
|
||
if (typeof totalBytes === 'number') {
|
||
contentLengthValue = String(totalBytes);
|
||
}
|
||
}
|
||
if (contentLengthValue) {
|
||
headers.set('Content-Length', contentLengthValue);
|
||
}
|
||
|
||
// HTTP-network-or-cache fetch step 2.11
|
||
if (!headers.has('User-Agent')) {
|
||
headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
|
||
}
|
||
|
||
// HTTP-network-or-cache fetch step 2.15
|
||
if (request.compress && !headers.has('Accept-Encoding')) {
|
||
headers.set('Accept-Encoding', 'gzip,deflate');
|
||
}
|
||
|
||
let agent = request.agent;
|
||
if (typeof agent === 'function') {
|
||
agent = agent(parsedURL);
|
||
}
|
||
|
||
if (!headers.has('Connection') && !agent) {
|
||
headers.set('Connection', 'close');
|
||
}
|
||
|
||
// HTTP-network fetch step 4.2
|
||
// chunked encoding is handled by Node.js
|
||
|
||
return Object.assign({}, parsedURL, {
|
||
method: request.method,
|
||
headers: exportNodeCompatibleHeaders(headers),
|
||
agent
|
||
});
|
||
}
|
||
|
||
/**
|
||
* abort-error.js
|
||
*
|
||
* AbortError interface for cancelled requests
|
||
*/
|
||
|
||
/**
|
||
* Create AbortError instance
|
||
*
|
||
* @param String message Error message for human
|
||
* @return AbortError
|
||
*/
|
||
function AbortError(message) {
|
||
Error.call(this, message);
|
||
|
||
this.type = 'aborted';
|
||
this.message = message;
|
||
|
||
// hide custom error implementation details from end-users
|
||
Error.captureStackTrace(this, this.constructor);
|
||
}
|
||
|
||
AbortError.prototype = Object.create(Error.prototype);
|
||
AbortError.prototype.constructor = AbortError;
|
||
AbortError.prototype.name = 'AbortError';
|
||
|
||
// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
|
||
const PassThrough$1 = Stream.PassThrough;
|
||
const resolve_url = Url.resolve;
|
||
|
||
/**
|
||
* Fetch function
|
||
*
|
||
* @param Mixed url Absolute url or Request instance
|
||
* @param Object opts Fetch options
|
||
* @return Promise
|
||
*/
|
||
function fetch(url, opts) {
|
||
|
||
// allow custom promise
|
||
if (!fetch.Promise) {
|
||
throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
|
||
}
|
||
|
||
Body.Promise = fetch.Promise;
|
||
|
||
// wrap http.request into fetch
|
||
return new fetch.Promise(function (resolve, reject) {
|
||
// build request object
|
||
const request = new Request(url, opts);
|
||
const options = getNodeRequestOptions(request);
|
||
|
||
const send = (options.protocol === 'https:' ? https : http).request;
|
||
const signal = request.signal;
|
||
|
||
let response = null;
|
||
|
||
const abort = function abort() {
|
||
let error = new AbortError('The user aborted a request.');
|
||
reject(error);
|
||
if (request.body && request.body instanceof Stream.Readable) {
|
||
request.body.destroy(error);
|
||
}
|
||
if (!response || !response.body) return;
|
||
response.body.emit('error', error);
|
||
};
|
||
|
||
if (signal && signal.aborted) {
|
||
abort();
|
||
return;
|
||
}
|
||
|
||
const abortAndFinalize = function abortAndFinalize() {
|
||
abort();
|
||
finalize();
|
||
};
|
||
|
||
// send request
|
||
const req = send(options);
|
||
let reqTimeout;
|
||
|
||
if (signal) {
|
||
signal.addEventListener('abort', abortAndFinalize);
|
||
}
|
||
|
||
function finalize() {
|
||
req.abort();
|
||
if (signal) signal.removeEventListener('abort', abortAndFinalize);
|
||
clearTimeout(reqTimeout);
|
||
}
|
||
|
||
if (request.timeout) {
|
||
req.once('socket', function (socket) {
|
||
reqTimeout = setTimeout(function () {
|
||
reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
|
||
finalize();
|
||
}, request.timeout);
|
||
});
|
||
}
|
||
|
||
req.on('error', function (err) {
|
||
reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
|
||
finalize();
|
||
});
|
||
|
||
req.on('response', function (res) {
|
||
clearTimeout(reqTimeout);
|
||
|
||
const headers = createHeadersLenient(res.headers);
|
||
|
||
// HTTP fetch step 5
|
||
if (fetch.isRedirect(res.statusCode)) {
|
||
// HTTP fetch step 5.2
|
||
const location = headers.get('Location');
|
||
|
||
// HTTP fetch step 5.3
|
||
const locationURL = location === null ? null : resolve_url(request.url, location);
|
||
|
||
// HTTP fetch step 5.5
|
||
switch (request.redirect) {
|
||
case 'error':
|
||
reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));
|
||
finalize();
|
||
return;
|
||
case 'manual':
|
||
// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
|
||
if (locationURL !== null) {
|
||
// handle corrupted header
|
||
try {
|
||
headers.set('Location', locationURL);
|
||
} catch (err) {
|
||
// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
|
||
reject(err);
|
||
}
|
||
}
|
||
break;
|
||
case 'follow':
|
||
// HTTP-redirect fetch step 2
|
||
if (locationURL === null) {
|
||
break;
|
||
}
|
||
|
||
// HTTP-redirect fetch step 5
|
||
if (request.counter >= request.follow) {
|
||
reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
|
||
finalize();
|
||
return;
|
||
}
|
||
|
||
// HTTP-redirect fetch step 6 (counter increment)
|
||
// Create a new Request object.
|
||
const requestOpts = {
|
||
headers: new Headers(request.headers),
|
||
follow: request.follow,
|
||
counter: request.counter + 1,
|
||
agent: request.agent,
|
||
compress: request.compress,
|
||
method: request.method,
|
||
body: request.body,
|
||
signal: request.signal,
|
||
timeout: request.timeout,
|
||
size: request.size
|
||
};
|
||
|
||
// HTTP-redirect fetch step 9
|
||
if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
|
||
reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
|
||
finalize();
|
||
return;
|
||
}
|
||
|
||
// HTTP-redirect fetch step 11
|
||
if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
|
||
requestOpts.method = 'GET';
|
||
requestOpts.body = undefined;
|
||
requestOpts.headers.delete('content-length');
|
||
}
|
||
|
||
// HTTP-redirect fetch step 15
|
||
resolve(fetch(new Request(locationURL, requestOpts)));
|
||
finalize();
|
||
return;
|
||
}
|
||
}
|
||
|
||
// prepare response
|
||
res.once('end', function () {
|
||
if (signal) signal.removeEventListener('abort', abortAndFinalize);
|
||
});
|
||
let body = res.pipe(new PassThrough$1());
|
||
|
||
const response_options = {
|
||
url: request.url,
|
||
status: res.statusCode,
|
||
statusText: res.statusMessage,
|
||
headers: headers,
|
||
size: request.size,
|
||
timeout: request.timeout,
|
||
counter: request.counter
|
||
};
|
||
|
||
// HTTP-network fetch step 12.1.1.3
|
||
const codings = headers.get('Content-Encoding');
|
||
|
||
// HTTP-network fetch step 12.1.1.4: handle content codings
|
||
|
||
// in following scenarios we ignore compression support
|
||
// 1. compression support is disabled
|
||
// 2. HEAD request
|
||
// 3. no Content-Encoding header
|
||
// 4. no content response (204)
|
||
// 5. content not modified response (304)
|
||
if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
|
||
response = new Response(body, response_options);
|
||
resolve(response);
|
||
return;
|
||
}
|
||
|
||
// For Node v6+
|
||
// Be less strict when decoding compressed responses, since sometimes
|
||
// servers send slightly invalid responses that are still accepted
|
||
// by common browsers.
|
||
// Always using Z_SYNC_FLUSH is what cURL does.
|
||
const zlibOptions = {
|
||
flush: zlib.Z_SYNC_FLUSH,
|
||
finishFlush: zlib.Z_SYNC_FLUSH
|
||
};
|
||
|
||
// for gzip
|
||
if (codings == 'gzip' || codings == 'x-gzip') {
|
||
body = body.pipe(zlib.createGunzip(zlibOptions));
|
||
response = new Response(body, response_options);
|
||
resolve(response);
|
||
return;
|
||
}
|
||
|
||
// for deflate
|
||
if (codings == 'deflate' || codings == 'x-deflate') {
|
||
// handle the infamous raw deflate response from old servers
|
||
// a hack for old IIS and Apache servers
|
||
const raw = res.pipe(new PassThrough$1());
|
||
raw.once('data', function (chunk) {
|
||
// see http://stackoverflow.com/questions/37519828
|
||
if ((chunk[0] & 0x0F) === 0x08) {
|
||
body = body.pipe(zlib.createInflate());
|
||
} else {
|
||
body = body.pipe(zlib.createInflateRaw());
|
||
}
|
||
response = new Response(body, response_options);
|
||
resolve(response);
|
||
});
|
||
return;
|
||
}
|
||
|
||
// for br
|
||
if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
|
||
body = body.pipe(zlib.createBrotliDecompress());
|
||
response = new Response(body, response_options);
|
||
resolve(response);
|
||
return;
|
||
}
|
||
|
||
// otherwise, use response as-is
|
||
response = new Response(body, response_options);
|
||
resolve(response);
|
||
});
|
||
|
||
writeToStream(req, request);
|
||
});
|
||
}
|
||
/**
|
||
* Redirect code matching
|
||
*
|
||
* @param Number code Status code
|
||
* @return Boolean
|
||
*/
|
||
fetch.isRedirect = function (code) {
|
||
return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
|
||
};
|
||
|
||
// expose Promise
|
||
fetch.Promise = global.Promise;
|
||
|
||
module.exports = exports = fetch;
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.default = exports;
|
||
exports.Headers = Headers;
|
||
exports.Request = Request;
|
||
exports.Response = Response;
|
||
exports.FetchError = FetchError;
|
||
|
||
|
||
/***/ }),
|
||
/* 455 */,
|
||
/* 456 */,
|
||
/* 457 */,
|
||
/* 458 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, WriterState, XMLStreamWriter, XMLWriterBase,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLWriterBase = __webpack_require__(423);
|
||
|
||
WriterState = __webpack_require__(541);
|
||
|
||
module.exports = XMLStreamWriter = (function(superClass) {
|
||
extend(XMLStreamWriter, superClass);
|
||
|
||
function XMLStreamWriter(stream, options) {
|
||
this.stream = stream;
|
||
XMLStreamWriter.__super__.constructor.call(this, options);
|
||
}
|
||
|
||
XMLStreamWriter.prototype.endline = function(node, options, level) {
|
||
if (node.isLastRootNode && options.state === WriterState.CloseTag) {
|
||
return '';
|
||
} else {
|
||
return XMLStreamWriter.__super__.endline.call(this, node, options, level);
|
||
}
|
||
};
|
||
|
||
XMLStreamWriter.prototype.document = function(doc, options) {
|
||
var child, i, j, k, len, len1, ref, ref1, results;
|
||
ref = doc.children;
|
||
for (i = j = 0, len = ref.length; j < len; i = ++j) {
|
||
child = ref[i];
|
||
child.isLastRootNode = i === doc.children.length - 1;
|
||
}
|
||
options = this.filterOptions(options);
|
||
ref1 = doc.children;
|
||
results = [];
|
||
for (k = 0, len1 = ref1.length; k < len1; k++) {
|
||
child = ref1[k];
|
||
results.push(this.writeChildNode(child, options, 0));
|
||
}
|
||
return results;
|
||
};
|
||
|
||
XMLStreamWriter.prototype.attribute = function(att, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.attribute.call(this, att, options, level));
|
||
};
|
||
|
||
XMLStreamWriter.prototype.cdata = function(node, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.cdata.call(this, node, options, level));
|
||
};
|
||
|
||
XMLStreamWriter.prototype.comment = function(node, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.comment.call(this, node, options, level));
|
||
};
|
||
|
||
XMLStreamWriter.prototype.declaration = function(node, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.declaration.call(this, node, options, level));
|
||
};
|
||
|
||
XMLStreamWriter.prototype.docType = function(node, options, level) {
|
||
var child, j, len, ref;
|
||
level || (level = 0);
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
this.stream.write(this.indent(node, options, level));
|
||
this.stream.write('<!DOCTYPE ' + node.root().name);
|
||
if (node.pubID && node.sysID) {
|
||
this.stream.write(' PUBLIC "' + node.pubID + '" "' + node.sysID + '"');
|
||
} else if (node.sysID) {
|
||
this.stream.write(' SYSTEM "' + node.sysID + '"');
|
||
}
|
||
if (node.children.length > 0) {
|
||
this.stream.write(' [');
|
||
this.stream.write(this.endline(node, options, level));
|
||
options.state = WriterState.InsideTag;
|
||
ref = node.children;
|
||
for (j = 0, len = ref.length; j < len; j++) {
|
||
child = ref[j];
|
||
this.writeChildNode(child, options, level + 1);
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
this.stream.write(']');
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
this.stream.write(options.spaceBeforeSlash + '>');
|
||
this.stream.write(this.endline(node, options, level));
|
||
options.state = WriterState.None;
|
||
return this.closeNode(node, options, level);
|
||
};
|
||
|
||
XMLStreamWriter.prototype.element = function(node, options, level) {
|
||
var att, child, childNodeCount, firstChildNode, j, len, name, prettySuppressed, ref, ref1;
|
||
level || (level = 0);
|
||
this.openNode(node, options, level);
|
||
options.state = WriterState.OpenTag;
|
||
this.stream.write(this.indent(node, options, level) + '<' + node.name);
|
||
ref = node.attribs;
|
||
for (name in ref) {
|
||
if (!hasProp.call(ref, name)) continue;
|
||
att = ref[name];
|
||
this.attribute(att, options, level);
|
||
}
|
||
childNodeCount = node.children.length;
|
||
firstChildNode = childNodeCount === 0 ? null : node.children[0];
|
||
if (childNodeCount === 0 || node.children.every(function(e) {
|
||
return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';
|
||
})) {
|
||
if (options.allowEmpty) {
|
||
this.stream.write('>');
|
||
options.state = WriterState.CloseTag;
|
||
this.stream.write('</' + node.name + '>');
|
||
} else {
|
||
options.state = WriterState.CloseTag;
|
||
this.stream.write(options.spaceBeforeSlash + '/>');
|
||
}
|
||
} else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {
|
||
this.stream.write('>');
|
||
options.state = WriterState.InsideTag;
|
||
options.suppressPrettyCount++;
|
||
prettySuppressed = true;
|
||
this.writeChildNode(firstChildNode, options, level + 1);
|
||
options.suppressPrettyCount--;
|
||
prettySuppressed = false;
|
||
options.state = WriterState.CloseTag;
|
||
this.stream.write('</' + node.name + '>');
|
||
} else {
|
||
this.stream.write('>' + this.endline(node, options, level));
|
||
options.state = WriterState.InsideTag;
|
||
ref1 = node.children;
|
||
for (j = 0, len = ref1.length; j < len; j++) {
|
||
child = ref1[j];
|
||
this.writeChildNode(child, options, level + 1);
|
||
}
|
||
options.state = WriterState.CloseTag;
|
||
this.stream.write(this.indent(node, options, level) + '</' + node.name + '>');
|
||
}
|
||
this.stream.write(this.endline(node, options, level));
|
||
options.state = WriterState.None;
|
||
return this.closeNode(node, options, level);
|
||
};
|
||
|
||
XMLStreamWriter.prototype.processingInstruction = function(node, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.processingInstruction.call(this, node, options, level));
|
||
};
|
||
|
||
XMLStreamWriter.prototype.raw = function(node, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.raw.call(this, node, options, level));
|
||
};
|
||
|
||
XMLStreamWriter.prototype.text = function(node, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.text.call(this, node, options, level));
|
||
};
|
||
|
||
XMLStreamWriter.prototype.dtdAttList = function(node, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.dtdAttList.call(this, node, options, level));
|
||
};
|
||
|
||
XMLStreamWriter.prototype.dtdElement = function(node, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.dtdElement.call(this, node, options, level));
|
||
};
|
||
|
||
XMLStreamWriter.prototype.dtdEntity = function(node, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.dtdEntity.call(this, node, options, level));
|
||
};
|
||
|
||
XMLStreamWriter.prototype.dtdNotation = function(node, options, level) {
|
||
return this.stream.write(XMLStreamWriter.__super__.dtdNotation.call(this, node, options, level));
|
||
};
|
||
|
||
return XMLStreamWriter;
|
||
|
||
})(XMLWriterBase);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 459 */,
|
||
/* 460 */
|
||
/***/ (function(module) {
|
||
|
||
// generated by genversion
|
||
module.exports = '4.0.0'
|
||
|
||
|
||
/***/ }),
|
||
/* 461 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports._globalThis = void 0;
|
||
/** only globals that common to node and browsers are allowed */
|
||
// eslint-disable-next-line node/no-unsupported-features/es-builtins
|
||
exports._globalThis = typeof globalThis === 'object' ? globalThis : global;
|
||
//# sourceMappingURL=globalThis.js.map
|
||
|
||
/***/ }),
|
||
/* 462 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
|
||
// See http://www.robvanderwoude.com/escapechars.php
|
||
const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;
|
||
|
||
function escapeCommand(arg) {
|
||
// Escape meta chars
|
||
arg = arg.replace(metaCharsRegExp, '^$1');
|
||
|
||
return arg;
|
||
}
|
||
|
||
function escapeArgument(arg, doubleEscapeMetaChars) {
|
||
// Convert to string
|
||
arg = `${arg}`;
|
||
|
||
// Algorithm below is based on https://qntm.org/cmd
|
||
|
||
// Sequence of backslashes followed by a double quote:
|
||
// double up all the backslashes and escape the double quote
|
||
arg = arg.replace(/(\\*)"/g, '$1$1\\"');
|
||
|
||
// Sequence of backslashes followed by the end of the string
|
||
// (which will become a double quote later):
|
||
// double up all the backslashes
|
||
arg = arg.replace(/(\\*)$/, '$1$1');
|
||
|
||
// All other backslashes occur literally
|
||
|
||
// Quote the whole thing:
|
||
arg = `"${arg}"`;
|
||
|
||
// Escape meta chars
|
||
arg = arg.replace(metaCharsRegExp, '^$1');
|
||
|
||
// Double escape meta chars if necessary
|
||
if (doubleEscapeMetaChars) {
|
||
arg = arg.replace(metaCharsRegExp, '^$1');
|
||
}
|
||
|
||
return arg;
|
||
}
|
||
|
||
module.exports.command = escapeCommand;
|
||
module.exports.argument = escapeArgument;
|
||
|
||
|
||
/***/ }),
|
||
/* 463 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||
|
||
var deprecation = __webpack_require__(692);
|
||
var once = _interopDefault(__webpack_require__(969));
|
||
|
||
const logOnce = once(deprecation => console.warn(deprecation));
|
||
/**
|
||
* Error with extra properties to help with debugging
|
||
*/
|
||
|
||
class RequestError extends Error {
|
||
constructor(message, statusCode, options) {
|
||
super(message); // Maintains proper stack trace (only available on V8)
|
||
|
||
/* istanbul ignore next */
|
||
|
||
if (Error.captureStackTrace) {
|
||
Error.captureStackTrace(this, this.constructor);
|
||
}
|
||
|
||
this.name = "HttpError";
|
||
this.status = statusCode;
|
||
Object.defineProperty(this, "code", {
|
||
get() {
|
||
logOnce(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`."));
|
||
return statusCode;
|
||
}
|
||
|
||
});
|
||
this.headers = options.headers || {}; // redact request credentials without mutating original request options
|
||
|
||
const requestCopy = Object.assign({}, options.request);
|
||
|
||
if (options.request.headers.authorization) {
|
||
requestCopy.headers = Object.assign({}, options.request.headers, {
|
||
authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]")
|
||
});
|
||
}
|
||
|
||
requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit
|
||
// see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications
|
||
.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended
|
||
// see https://developer.github.com/v3/#oauth2-token-sent-in-a-header
|
||
.replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
|
||
this.request = requestCopy;
|
||
}
|
||
|
||
}
|
||
|
||
exports.RequestError = RequestError;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 464 */,
|
||
/* 465 */,
|
||
/* 466 */,
|
||
/* 467 */,
|
||
/* 468 */,
|
||
/* 469 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
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 });
|
||
// Originally pulled from https://github.com/JasonEtco/actions-toolkit/blob/master/src/github.ts
|
||
const graphql_1 = __webpack_require__(503);
|
||
const rest_1 = __importDefault(__webpack_require__(613));
|
||
const Context = __importStar(__webpack_require__(262));
|
||
// We need this in order to extend Octokit
|
||
rest_1.default.prototype = new rest_1.default();
|
||
exports.context = new Context.Context();
|
||
class GitHub extends rest_1.default {
|
||
constructor(token, opts = {}) {
|
||
super(Object.assign(Object.assign({}, opts), { auth: `token ${token}` }));
|
||
this.graphql = graphql_1.defaults({
|
||
headers: { authorization: `token ${token}` }
|
||
});
|
||
}
|
||
}
|
||
exports.GitHub = GitHub;
|
||
//# sourceMappingURL=github.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());
|
||
});
|
||
};
|
||
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 command_1 = __webpack_require__(431);
|
||
const file_command_1 = __webpack_require__(102);
|
||
const utils_1 = __webpack_require__(82);
|
||
const os = __importStar(__webpack_require__(87));
|
||
const path = __importStar(__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. Non-string values will be converted to a string via JSON.stringify
|
||
*/
|
||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
function exportVariable(name, val) {
|
||
const convertedVal = utils_1.toCommandValue(val);
|
||
process.env[name] = convertedVal;
|
||
const filePath = process.env['GITHUB_ENV'] || '';
|
||
if (filePath) {
|
||
const delimiter = '_GitHubActionsFileCommandDelimeter_';
|
||
const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;
|
||
file_command_1.issueCommand('ENV', commandValue);
|
||
}
|
||
else {
|
||
command_1.issueCommand('set-env', { name }, convertedVal);
|
||
}
|
||
}
|
||
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) {
|
||
const filePath = process.env['GITHUB_PATH'] || '';
|
||
if (filePath) {
|
||
file_command_1.issueCommand('PATH', inputPath);
|
||
}
|
||
else {
|
||
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. Non-string values will be converted to a string via JSON.stringify
|
||
*/
|
||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
function setOutput(name, value) {
|
||
command_1.issueCommand('set-output', { name }, value);
|
||
}
|
||
exports.setOutput = setOutput;
|
||
/**
|
||
* Enables or disables the echoing of commands into stdout for the rest of the step.
|
||
* Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
|
||
*
|
||
*/
|
||
function setCommandEcho(enabled) {
|
||
command_1.issue('echo', enabled ? 'on' : 'off');
|
||
}
|
||
exports.setCommandEcho = setCommandEcho;
|
||
//-----------------------------------------------------------------------
|
||
// 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
|
||
//-----------------------------------------------------------------------
|
||
/**
|
||
* Gets whether Actions Step Debug is on or not
|
||
*/
|
||
function isDebug() {
|
||
return process.env['RUNNER_DEBUG'] === '1';
|
||
}
|
||
exports.isDebug = isDebug;
|
||
/**
|
||
* 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. Errors will be converted to string via toString()
|
||
*/
|
||
function error(message) {
|
||
command_1.issue('error', message instanceof Error ? message.toString() : message);
|
||
}
|
||
exports.error = error;
|
||
/**
|
||
* Adds an warning issue
|
||
* @param message warning issue message. Errors will be converted to string via toString()
|
||
*/
|
||
function warning(message) {
|
||
command_1.issue('warning', message instanceof Error ? message.toString() : 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. Non-string values will be converted to a string via JSON.stringify
|
||
*/
|
||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
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
|
||
|
||
/***/ }),
|
||
/* 471 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = authenticationBeforeRequest;
|
||
|
||
const btoa = __webpack_require__(675);
|
||
const uniq = __webpack_require__(126);
|
||
|
||
function authenticationBeforeRequest(state, options) {
|
||
if (!state.auth.type) {
|
||
return;
|
||
}
|
||
|
||
if (state.auth.type === "basic") {
|
||
const hash = btoa(`${state.auth.username}:${state.auth.password}`);
|
||
options.headers.authorization = `Basic ${hash}`;
|
||
return;
|
||
}
|
||
|
||
if (state.auth.type === "token") {
|
||
options.headers.authorization = `token ${state.auth.token}`;
|
||
return;
|
||
}
|
||
|
||
if (state.auth.type === "app") {
|
||
options.headers.authorization = `Bearer ${state.auth.token}`;
|
||
const acceptHeaders = options.headers.accept
|
||
.split(",")
|
||
.concat("application/vnd.github.machine-man-preview+json");
|
||
options.headers.accept = uniq(acceptHeaders)
|
||
.filter(Boolean)
|
||
.join(",");
|
||
return;
|
||
}
|
||
|
||
options.url += options.url.indexOf("?") === -1 ? "?" : "&";
|
||
|
||
if (state.auth.token) {
|
||
options.url += `access_token=${encodeURIComponent(state.auth.token)}`;
|
||
return;
|
||
}
|
||
|
||
const key = encodeURIComponent(state.auth.key);
|
||
const secret = encodeURIComponent(state.auth.secret);
|
||
options.url += `client_id=${key}&client_secret=${secret}`;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 472 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, WriterState, XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocument, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, getValue, isFunction, isObject, isPlainObject, ref,
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
ref = __webpack_require__(582), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject, getValue = ref.getValue;
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLDocument = __webpack_require__(559);
|
||
|
||
XMLElement = __webpack_require__(796);
|
||
|
||
XMLCData = __webpack_require__(657);
|
||
|
||
XMLComment = __webpack_require__(919);
|
||
|
||
XMLRaw = __webpack_require__(660);
|
||
|
||
XMLText = __webpack_require__(708);
|
||
|
||
XMLProcessingInstruction = __webpack_require__(491);
|
||
|
||
XMLDeclaration = __webpack_require__(738);
|
||
|
||
XMLDocType = __webpack_require__(735);
|
||
|
||
XMLDTDAttList = __webpack_require__(801);
|
||
|
||
XMLDTDEntity = __webpack_require__(661);
|
||
|
||
XMLDTDElement = __webpack_require__(597);
|
||
|
||
XMLDTDNotation = __webpack_require__(891);
|
||
|
||
XMLAttribute = __webpack_require__(884);
|
||
|
||
XMLStringifier = __webpack_require__(602);
|
||
|
||
XMLStringWriter = __webpack_require__(231);
|
||
|
||
WriterState = __webpack_require__(541);
|
||
|
||
module.exports = XMLDocumentCB = (function() {
|
||
function XMLDocumentCB(options, onData, onEnd) {
|
||
var writerOptions;
|
||
this.name = "?xml";
|
||
this.type = NodeType.Document;
|
||
options || (options = {});
|
||
writerOptions = {};
|
||
if (!options.writer) {
|
||
options.writer = new XMLStringWriter();
|
||
} else if (isPlainObject(options.writer)) {
|
||
writerOptions = options.writer;
|
||
options.writer = new XMLStringWriter();
|
||
}
|
||
this.options = options;
|
||
this.writer = options.writer;
|
||
this.writerOptions = this.writer.filterOptions(writerOptions);
|
||
this.stringify = new XMLStringifier(options);
|
||
this.onDataCallback = onData || function() {};
|
||
this.onEndCallback = onEnd || function() {};
|
||
this.currentNode = null;
|
||
this.currentLevel = -1;
|
||
this.openTags = {};
|
||
this.documentStarted = false;
|
||
this.documentCompleted = false;
|
||
this.root = null;
|
||
}
|
||
|
||
XMLDocumentCB.prototype.createChildNode = function(node) {
|
||
var att, attName, attributes, child, i, len, ref1, ref2;
|
||
switch (node.type) {
|
||
case NodeType.CData:
|
||
this.cdata(node.value);
|
||
break;
|
||
case NodeType.Comment:
|
||
this.comment(node.value);
|
||
break;
|
||
case NodeType.Element:
|
||
attributes = {};
|
||
ref1 = node.attribs;
|
||
for (attName in ref1) {
|
||
if (!hasProp.call(ref1, attName)) continue;
|
||
att = ref1[attName];
|
||
attributes[attName] = att.value;
|
||
}
|
||
this.node(node.name, attributes);
|
||
break;
|
||
case NodeType.Dummy:
|
||
this.dummy();
|
||
break;
|
||
case NodeType.Raw:
|
||
this.raw(node.value);
|
||
break;
|
||
case NodeType.Text:
|
||
this.text(node.value);
|
||
break;
|
||
case NodeType.ProcessingInstruction:
|
||
this.instruction(node.target, node.value);
|
||
break;
|
||
default:
|
||
throw new Error("This XML node type is not supported in a JS object: " + node.constructor.name);
|
||
}
|
||
ref2 = node.children;
|
||
for (i = 0, len = ref2.length; i < len; i++) {
|
||
child = ref2[i];
|
||
this.createChildNode(child);
|
||
if (child.type === NodeType.Element) {
|
||
this.up();
|
||
}
|
||
}
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.dummy = function() {
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.node = function(name, attributes, text) {
|
||
var ref1;
|
||
if (name == null) {
|
||
throw new Error("Missing node name.");
|
||
}
|
||
if (this.root && this.currentLevel === -1) {
|
||
throw new Error("Document can only have one root node. " + this.debugInfo(name));
|
||
}
|
||
this.openCurrent();
|
||
name = getValue(name);
|
||
if (attributes == null) {
|
||
attributes = {};
|
||
}
|
||
attributes = getValue(attributes);
|
||
if (!isObject(attributes)) {
|
||
ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];
|
||
}
|
||
this.currentNode = new XMLElement(this, name, attributes);
|
||
this.currentNode.children = false;
|
||
this.currentLevel++;
|
||
this.openTags[this.currentLevel] = this.currentNode;
|
||
if (text != null) {
|
||
this.text(text);
|
||
}
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.element = function(name, attributes, text) {
|
||
var child, i, len, oldValidationFlag, ref1, root;
|
||
if (this.currentNode && this.currentNode.type === NodeType.DocType) {
|
||
this.dtdElement.apply(this, arguments);
|
||
} else {
|
||
if (Array.isArray(name) || isObject(name) || isFunction(name)) {
|
||
oldValidationFlag = this.options.noValidation;
|
||
this.options.noValidation = true;
|
||
root = new XMLDocument(this.options).element('TEMP_ROOT');
|
||
root.element(name);
|
||
this.options.noValidation = oldValidationFlag;
|
||
ref1 = root.children;
|
||
for (i = 0, len = ref1.length; i < len; i++) {
|
||
child = ref1[i];
|
||
this.createChildNode(child);
|
||
if (child.type === NodeType.Element) {
|
||
this.up();
|
||
}
|
||
}
|
||
} else {
|
||
this.node(name, attributes, text);
|
||
}
|
||
}
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.attribute = function(name, value) {
|
||
var attName, attValue;
|
||
if (!this.currentNode || this.currentNode.children) {
|
||
throw new Error("att() can only be used immediately after an ele() call in callback mode. " + this.debugInfo(name));
|
||
}
|
||
if (name != null) {
|
||
name = getValue(name);
|
||
}
|
||
if (isObject(name)) {
|
||
for (attName in name) {
|
||
if (!hasProp.call(name, attName)) continue;
|
||
attValue = name[attName];
|
||
this.attribute(attName, attValue);
|
||
}
|
||
} else {
|
||
if (isFunction(value)) {
|
||
value = value.apply();
|
||
}
|
||
if (this.options.keepNullAttributes && (value == null)) {
|
||
this.currentNode.attribs[name] = new XMLAttribute(this, name, "");
|
||
} else if (value != null) {
|
||
this.currentNode.attribs[name] = new XMLAttribute(this, name, value);
|
||
}
|
||
}
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.text = function(value) {
|
||
var node;
|
||
this.openCurrent();
|
||
node = new XMLText(this, value);
|
||
this.onData(this.writer.text(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.cdata = function(value) {
|
||
var node;
|
||
this.openCurrent();
|
||
node = new XMLCData(this, value);
|
||
this.onData(this.writer.cdata(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.comment = function(value) {
|
||
var node;
|
||
this.openCurrent();
|
||
node = new XMLComment(this, value);
|
||
this.onData(this.writer.comment(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.raw = function(value) {
|
||
var node;
|
||
this.openCurrent();
|
||
node = new XMLRaw(this, value);
|
||
this.onData(this.writer.raw(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.instruction = function(target, value) {
|
||
var i, insTarget, insValue, len, node;
|
||
this.openCurrent();
|
||
if (target != null) {
|
||
target = getValue(target);
|
||
}
|
||
if (value != null) {
|
||
value = getValue(value);
|
||
}
|
||
if (Array.isArray(target)) {
|
||
for (i = 0, len = target.length; i < len; i++) {
|
||
insTarget = target[i];
|
||
this.instruction(insTarget);
|
||
}
|
||
} else if (isObject(target)) {
|
||
for (insTarget in target) {
|
||
if (!hasProp.call(target, insTarget)) continue;
|
||
insValue = target[insTarget];
|
||
this.instruction(insTarget, insValue);
|
||
}
|
||
} else {
|
||
if (isFunction(value)) {
|
||
value = value.apply();
|
||
}
|
||
node = new XMLProcessingInstruction(this, target, value);
|
||
this.onData(this.writer.processingInstruction(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
}
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {
|
||
var node;
|
||
this.openCurrent();
|
||
if (this.documentStarted) {
|
||
throw new Error("declaration() must be the first node.");
|
||
}
|
||
node = new XMLDeclaration(this, version, encoding, standalone);
|
||
this.onData(this.writer.declaration(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {
|
||
this.openCurrent();
|
||
if (root == null) {
|
||
throw new Error("Missing root node name.");
|
||
}
|
||
if (this.root) {
|
||
throw new Error("dtd() must come before the root node.");
|
||
}
|
||
this.currentNode = new XMLDocType(this, pubID, sysID);
|
||
this.currentNode.rootNodeName = root;
|
||
this.currentNode.children = false;
|
||
this.currentLevel++;
|
||
this.openTags[this.currentLevel] = this.currentNode;
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.dtdElement = function(name, value) {
|
||
var node;
|
||
this.openCurrent();
|
||
node = new XMLDTDElement(this, name, value);
|
||
this.onData(this.writer.dtdElement(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {
|
||
var node;
|
||
this.openCurrent();
|
||
node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);
|
||
this.onData(this.writer.dtdAttList(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.entity = function(name, value) {
|
||
var node;
|
||
this.openCurrent();
|
||
node = new XMLDTDEntity(this, false, name, value);
|
||
this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.pEntity = function(name, value) {
|
||
var node;
|
||
this.openCurrent();
|
||
node = new XMLDTDEntity(this, true, name, value);
|
||
this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.notation = function(name, value) {
|
||
var node;
|
||
this.openCurrent();
|
||
node = new XMLDTDNotation(this, name, value);
|
||
this.onData(this.writer.dtdNotation(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.up = function() {
|
||
if (this.currentLevel < 0) {
|
||
throw new Error("The document node has no parent.");
|
||
}
|
||
if (this.currentNode) {
|
||
if (this.currentNode.children) {
|
||
this.closeNode(this.currentNode);
|
||
} else {
|
||
this.openNode(this.currentNode);
|
||
}
|
||
this.currentNode = null;
|
||
} else {
|
||
this.closeNode(this.openTags[this.currentLevel]);
|
||
}
|
||
delete this.openTags[this.currentLevel];
|
||
this.currentLevel--;
|
||
return this;
|
||
};
|
||
|
||
XMLDocumentCB.prototype.end = function() {
|
||
while (this.currentLevel >= 0) {
|
||
this.up();
|
||
}
|
||
return this.onEnd();
|
||
};
|
||
|
||
XMLDocumentCB.prototype.openCurrent = function() {
|
||
if (this.currentNode) {
|
||
this.currentNode.children = true;
|
||
return this.openNode(this.currentNode);
|
||
}
|
||
};
|
||
|
||
XMLDocumentCB.prototype.openNode = function(node) {
|
||
var att, chunk, name, ref1;
|
||
if (!node.isOpen) {
|
||
if (!this.root && this.currentLevel === 0 && node.type === NodeType.Element) {
|
||
this.root = node;
|
||
}
|
||
chunk = '';
|
||
if (node.type === NodeType.Element) {
|
||
this.writerOptions.state = WriterState.OpenTag;
|
||
chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<' + node.name;
|
||
ref1 = node.attribs;
|
||
for (name in ref1) {
|
||
if (!hasProp.call(ref1, name)) continue;
|
||
att = ref1[name];
|
||
chunk += this.writer.attribute(att, this.writerOptions, this.currentLevel);
|
||
}
|
||
chunk += (node.children ? '>' : '/>') + this.writer.endline(node, this.writerOptions, this.currentLevel);
|
||
this.writerOptions.state = WriterState.InsideTag;
|
||
} else {
|
||
this.writerOptions.state = WriterState.OpenTag;
|
||
chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<!DOCTYPE ' + node.rootNodeName;
|
||
if (node.pubID && node.sysID) {
|
||
chunk += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
|
||
} else if (node.sysID) {
|
||
chunk += ' SYSTEM "' + node.sysID + '"';
|
||
}
|
||
if (node.children) {
|
||
chunk += ' [';
|
||
this.writerOptions.state = WriterState.InsideTag;
|
||
} else {
|
||
this.writerOptions.state = WriterState.CloseTag;
|
||
chunk += '>';
|
||
}
|
||
chunk += this.writer.endline(node, this.writerOptions, this.currentLevel);
|
||
}
|
||
this.onData(chunk, this.currentLevel);
|
||
return node.isOpen = true;
|
||
}
|
||
};
|
||
|
||
XMLDocumentCB.prototype.closeNode = function(node) {
|
||
var chunk;
|
||
if (!node.isClosed) {
|
||
chunk = '';
|
||
this.writerOptions.state = WriterState.CloseTag;
|
||
if (node.type === NodeType.Element) {
|
||
chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '</' + node.name + '>' + this.writer.endline(node, this.writerOptions, this.currentLevel);
|
||
} else {
|
||
chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + ']>' + this.writer.endline(node, this.writerOptions, this.currentLevel);
|
||
}
|
||
this.writerOptions.state = WriterState.None;
|
||
this.onData(chunk, this.currentLevel);
|
||
return node.isClosed = true;
|
||
}
|
||
};
|
||
|
||
XMLDocumentCB.prototype.onData = function(chunk, level) {
|
||
this.documentStarted = true;
|
||
return this.onDataCallback(chunk, level + 1);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.onEnd = function() {
|
||
this.documentCompleted = true;
|
||
return this.onEndCallback();
|
||
};
|
||
|
||
XMLDocumentCB.prototype.debugInfo = function(name) {
|
||
if (name == null) {
|
||
return "";
|
||
} else {
|
||
return "node: <" + name + ">";
|
||
}
|
||
};
|
||
|
||
XMLDocumentCB.prototype.ele = function() {
|
||
return this.element.apply(this, arguments);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.nod = function(name, attributes, text) {
|
||
return this.node(name, attributes, text);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.txt = function(value) {
|
||
return this.text(value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.dat = function(value) {
|
||
return this.cdata(value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.com = function(value) {
|
||
return this.comment(value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.ins = function(target, value) {
|
||
return this.instruction(target, value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {
|
||
return this.declaration(version, encoding, standalone);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {
|
||
return this.doctype(root, pubID, sysID);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.e = function(name, attributes, text) {
|
||
return this.element(name, attributes, text);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.n = function(name, attributes, text) {
|
||
return this.node(name, attributes, text);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.t = function(value) {
|
||
return this.text(value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.d = function(value) {
|
||
return this.cdata(value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.c = function(value) {
|
||
return this.comment(value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.r = function(value) {
|
||
return this.raw(value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.i = function(target, value) {
|
||
return this.instruction(target, value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.att = function() {
|
||
if (this.currentNode && this.currentNode.type === NodeType.DocType) {
|
||
return this.attList.apply(this, arguments);
|
||
} else {
|
||
return this.attribute.apply(this, arguments);
|
||
}
|
||
};
|
||
|
||
XMLDocumentCB.prototype.a = function() {
|
||
if (this.currentNode && this.currentNode.type === NodeType.DocType) {
|
||
return this.attList.apply(this, arguments);
|
||
} else {
|
||
return this.attribute.apply(this, arguments);
|
||
}
|
||
};
|
||
|
||
XMLDocumentCB.prototype.ent = function(name, value) {
|
||
return this.entity(name, value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.pent = function(name, value) {
|
||
return this.pEntity(name, value);
|
||
};
|
||
|
||
XMLDocumentCB.prototype.not = function(name, value) {
|
||
return this.notation(name, value);
|
||
};
|
||
|
||
return XMLDocumentCB;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 473 */,
|
||
/* 474 */,
|
||
/* 475 */,
|
||
/* 476 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
"use strict";
|
||
var builder, defaults, escapeCDATA, requiresCDATA, wrapCDATA,
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
builder = __webpack_require__(312);
|
||
|
||
defaults = __webpack_require__(791).defaults;
|
||
|
||
requiresCDATA = function(entry) {
|
||
return typeof entry === "string" && (entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0);
|
||
};
|
||
|
||
wrapCDATA = function(entry) {
|
||
return "<![CDATA[" + (escapeCDATA(entry)) + "]]>";
|
||
};
|
||
|
||
escapeCDATA = function(entry) {
|
||
return entry.replace(']]>', ']]]]><![CDATA[>');
|
||
};
|
||
|
||
exports.Builder = (function() {
|
||
function Builder(opts) {
|
||
var key, ref, value;
|
||
this.options = {};
|
||
ref = defaults["0.2"];
|
||
for (key in ref) {
|
||
if (!hasProp.call(ref, key)) continue;
|
||
value = ref[key];
|
||
this.options[key] = value;
|
||
}
|
||
for (key in opts) {
|
||
if (!hasProp.call(opts, key)) continue;
|
||
value = opts[key];
|
||
this.options[key] = value;
|
||
}
|
||
}
|
||
|
||
Builder.prototype.buildObject = function(rootObj) {
|
||
var attrkey, charkey, render, rootElement, rootName;
|
||
attrkey = this.options.attrkey;
|
||
charkey = this.options.charkey;
|
||
if ((Object.keys(rootObj).length === 1) && (this.options.rootName === defaults['0.2'].rootName)) {
|
||
rootName = Object.keys(rootObj)[0];
|
||
rootObj = rootObj[rootName];
|
||
} else {
|
||
rootName = this.options.rootName;
|
||
}
|
||
render = (function(_this) {
|
||
return function(element, obj) {
|
||
var attr, child, entry, index, key, value;
|
||
if (typeof obj !== 'object') {
|
||
if (_this.options.cdata && requiresCDATA(obj)) {
|
||
element.raw(wrapCDATA(obj));
|
||
} else {
|
||
element.txt(obj);
|
||
}
|
||
} else if (Array.isArray(obj)) {
|
||
for (index in obj) {
|
||
if (!hasProp.call(obj, index)) continue;
|
||
child = obj[index];
|
||
for (key in child) {
|
||
entry = child[key];
|
||
element = render(element.ele(key), entry).up();
|
||
}
|
||
}
|
||
} else {
|
||
for (key in obj) {
|
||
if (!hasProp.call(obj, key)) continue;
|
||
child = obj[key];
|
||
if (key === attrkey) {
|
||
if (typeof child === "object") {
|
||
for (attr in child) {
|
||
value = child[attr];
|
||
element = element.att(attr, value);
|
||
}
|
||
}
|
||
} else if (key === charkey) {
|
||
if (_this.options.cdata && requiresCDATA(child)) {
|
||
element = element.raw(wrapCDATA(child));
|
||
} else {
|
||
element = element.txt(child);
|
||
}
|
||
} else if (Array.isArray(child)) {
|
||
for (index in child) {
|
||
if (!hasProp.call(child, index)) continue;
|
||
entry = child[index];
|
||
if (typeof entry === 'string') {
|
||
if (_this.options.cdata && requiresCDATA(entry)) {
|
||
element = element.ele(key).raw(wrapCDATA(entry)).up();
|
||
} else {
|
||
element = element.ele(key, entry).up();
|
||
}
|
||
} else {
|
||
element = render(element.ele(key), entry).up();
|
||
}
|
||
}
|
||
} else if (typeof child === "object") {
|
||
element = render(element.ele(key), child).up();
|
||
} else {
|
||
if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) {
|
||
element = element.ele(key).raw(wrapCDATA(child)).up();
|
||
} else {
|
||
if (child == null) {
|
||
child = '';
|
||
}
|
||
element = element.ele(key, child.toString()).up();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return element;
|
||
};
|
||
})(this);
|
||
rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, {
|
||
headless: this.options.headless,
|
||
allowSurrogateChars: this.options.allowSurrogateChars
|
||
});
|
||
return render(rootElement, rootObj).end(this.options.renderOpts);
|
||
};
|
||
|
||
return Builder;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 477 */,
|
||
/* 478 */,
|
||
/* 479 */,
|
||
/* 480 */,
|
||
/* 481 */,
|
||
/* 482 */,
|
||
/* 483 */,
|
||
/* 484 */,
|
||
/* 485 */,
|
||
/* 486 */,
|
||
/* 487 */,
|
||
/* 488 */,
|
||
/* 489 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
const path = __webpack_require__(622);
|
||
const which = __webpack_require__(814);
|
||
const pathKey = __webpack_require__(39)();
|
||
|
||
function resolveCommandAttempt(parsed, withoutPathExt) {
|
||
const cwd = process.cwd();
|
||
const hasCustomCwd = parsed.options.cwd != null;
|
||
|
||
// If a custom `cwd` was specified, we need to change the process cwd
|
||
// because `which` will do stat calls but does not support a custom cwd
|
||
if (hasCustomCwd) {
|
||
try {
|
||
process.chdir(parsed.options.cwd);
|
||
} catch (err) {
|
||
/* Empty */
|
||
}
|
||
}
|
||
|
||
let resolved;
|
||
|
||
try {
|
||
resolved = which.sync(parsed.command, {
|
||
path: (parsed.options.env || process.env)[pathKey],
|
||
pathExt: withoutPathExt ? path.delimiter : undefined,
|
||
});
|
||
} catch (e) {
|
||
/* Empty */
|
||
} finally {
|
||
process.chdir(cwd);
|
||
}
|
||
|
||
// If we successfully resolved, ensure that an absolute path is returned
|
||
// Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it
|
||
if (resolved) {
|
||
resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);
|
||
}
|
||
|
||
return resolved;
|
||
}
|
||
|
||
function resolveCommand(parsed) {
|
||
return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);
|
||
}
|
||
|
||
module.exports = resolveCommand;
|
||
|
||
|
||
/***/ }),
|
||
/* 490 */,
|
||
/* 491 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLCharacterData, XMLProcessingInstruction,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLCharacterData = __webpack_require__(639);
|
||
|
||
module.exports = XMLProcessingInstruction = (function(superClass) {
|
||
extend(XMLProcessingInstruction, superClass);
|
||
|
||
function XMLProcessingInstruction(parent, target, value) {
|
||
XMLProcessingInstruction.__super__.constructor.call(this, parent);
|
||
if (target == null) {
|
||
throw new Error("Missing instruction target. " + this.debugInfo());
|
||
}
|
||
this.type = NodeType.ProcessingInstruction;
|
||
this.target = this.stringify.insTarget(target);
|
||
this.name = this.target;
|
||
if (value) {
|
||
this.value = this.stringify.insValue(value);
|
||
}
|
||
}
|
||
|
||
XMLProcessingInstruction.prototype.clone = function() {
|
||
return Object.create(this);
|
||
};
|
||
|
||
XMLProcessingInstruction.prototype.toString = function(options) {
|
||
return this.options.writer.processingInstruction(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
XMLProcessingInstruction.prototype.isEqualNode = function(node) {
|
||
if (!XMLProcessingInstruction.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {
|
||
return false;
|
||
}
|
||
if (node.target !== this.target) {
|
||
return false;
|
||
}
|
||
return true;
|
||
};
|
||
|
||
return XMLProcessingInstruction;
|
||
|
||
})(XMLCharacterData);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 492 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||
r[k] = a[j];
|
||
return r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.ContextAPI = void 0;
|
||
var NoopContextManager_1 = __webpack_require__(425);
|
||
var global_utils_1 = __webpack_require__(525);
|
||
var API_NAME = 'context';
|
||
var NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();
|
||
/**
|
||
* Singleton object which represents the entry point to the OpenTelemetry Context API
|
||
*/
|
||
var ContextAPI = /** @class */ (function () {
|
||
/** Empty private constructor prevents end users from constructing a new instance of the API */
|
||
function ContextAPI() {
|
||
}
|
||
/** Get the singleton instance of the Context API */
|
||
ContextAPI.getInstance = function () {
|
||
if (!this._instance) {
|
||
this._instance = new ContextAPI();
|
||
}
|
||
return this._instance;
|
||
};
|
||
/**
|
||
* Set the current context manager. Returns the initialized context manager
|
||
*/
|
||
ContextAPI.prototype.setGlobalContextManager = function (contextManager) {
|
||
global_utils_1.registerGlobal(API_NAME, contextManager);
|
||
return contextManager;
|
||
};
|
||
/**
|
||
* Get the currently active context
|
||
*/
|
||
ContextAPI.prototype.active = function () {
|
||
return this._getContextManager().active();
|
||
};
|
||
/**
|
||
* Execute a function with an active context
|
||
*
|
||
* @param context context to be active during function execution
|
||
* @param fn function to execute in a context
|
||
* @param thisArg optional receiver to be used for calling fn
|
||
* @param args optional arguments forwarded to fn
|
||
*/
|
||
ContextAPI.prototype.with = function (context, fn, thisArg) {
|
||
var _a;
|
||
var args = [];
|
||
for (var _i = 3; _i < arguments.length; _i++) {
|
||
args[_i - 3] = arguments[_i];
|
||
}
|
||
return (_a = this._getContextManager()).with.apply(_a, __spreadArrays([context, fn, thisArg], args));
|
||
};
|
||
/**
|
||
* Bind a context to a target function or event emitter
|
||
*
|
||
* @param target function or event emitter to bind
|
||
* @param context context to bind to the event emitter or function. Defaults to the currently active context
|
||
*/
|
||
ContextAPI.prototype.bind = function (target, context) {
|
||
if (context === void 0) { context = this.active(); }
|
||
return this._getContextManager().bind(target, context);
|
||
};
|
||
ContextAPI.prototype._getContextManager = function () {
|
||
return global_utils_1.getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;
|
||
};
|
||
/** Disable and remove the global context manager */
|
||
ContextAPI.prototype.disable = function () {
|
||
this._getContextManager().disable();
|
||
global_utils_1.unregisterGlobal(API_NAME);
|
||
};
|
||
return ContextAPI;
|
||
}());
|
||
exports.ContextAPI = ContextAPI;
|
||
//# sourceMappingURL=context.js.map
|
||
|
||
/***/ }),
|
||
/* 493 */,
|
||
/* 494 */,
|
||
/* 495 */,
|
||
/* 496 */,
|
||
/* 497 */,
|
||
/* 498 */,
|
||
/* 499 */,
|
||
/* 500 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = graphql
|
||
|
||
const GraphqlError = __webpack_require__(862)
|
||
|
||
const NON_VARIABLE_OPTIONS = ['method', 'baseUrl', 'url', 'headers', 'request', 'query']
|
||
|
||
function graphql (request, query, options) {
|
||
if (typeof query === 'string') {
|
||
options = Object.assign({ query }, options)
|
||
} else {
|
||
options = query
|
||
}
|
||
|
||
const requestOptions = Object.keys(options).reduce((result, key) => {
|
||
if (NON_VARIABLE_OPTIONS.includes(key)) {
|
||
result[key] = options[key]
|
||
return result
|
||
}
|
||
|
||
if (!result.variables) {
|
||
result.variables = {}
|
||
}
|
||
|
||
result.variables[key] = options[key]
|
||
return result
|
||
}, {})
|
||
|
||
return request(requestOptions)
|
||
.then(response => {
|
||
if (response.data.errors) {
|
||
throw new GraphqlError(requestOptions, response)
|
||
}
|
||
|
||
return response.data.data
|
||
})
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 501 */,
|
||
/* 502 */,
|
||
/* 503 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
const { request } = __webpack_require__(753)
|
||
const getUserAgent = __webpack_require__(46)
|
||
|
||
const version = __webpack_require__(314).version
|
||
const userAgent = `octokit-graphql.js/${version} ${getUserAgent()}`
|
||
|
||
const withDefaults = __webpack_require__(0)
|
||
|
||
module.exports = withDefaults(request, {
|
||
method: 'POST',
|
||
url: '/graphql',
|
||
headers: {
|
||
'user-agent': userAgent
|
||
}
|
||
})
|
||
|
||
|
||
/***/ }),
|
||
/* 504 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = defer;
|
||
|
||
/**
|
||
* Runs provided function on next iteration of the event loop
|
||
*
|
||
* @param {function} fn - function to run
|
||
*/
|
||
function defer(fn)
|
||
{
|
||
var nextTick = typeof setImmediate == 'function'
|
||
? setImmediate
|
||
: (
|
||
typeof process == 'object' && typeof process.nextTick == 'function'
|
||
? process.nextTick
|
||
: null
|
||
);
|
||
|
||
if (nextTick)
|
||
{
|
||
nextTick(fn);
|
||
}
|
||
else
|
||
{
|
||
setTimeout(fn, 0);
|
||
}
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 505 */,
|
||
/* 506 */,
|
||
/* 507 */,
|
||
/* 508 */,
|
||
/* 509 */,
|
||
/* 510 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = addHook
|
||
|
||
function addHook (state, kind, name, hook) {
|
||
var orig = hook
|
||
if (!state.registry[name]) {
|
||
state.registry[name] = []
|
||
}
|
||
|
||
if (kind === 'before') {
|
||
hook = function (method, options) {
|
||
return Promise.resolve()
|
||
.then(orig.bind(null, options))
|
||
.then(method.bind(null, options))
|
||
}
|
||
}
|
||
|
||
if (kind === 'after') {
|
||
hook = function (method, options) {
|
||
var result
|
||
return Promise.resolve()
|
||
.then(method.bind(null, options))
|
||
.then(function (result_) {
|
||
result = result_
|
||
return orig(result, options)
|
||
})
|
||
.then(function () {
|
||
return result
|
||
})
|
||
}
|
||
}
|
||
|
||
if (kind === 'error') {
|
||
hook = function (method, options) {
|
||
return Promise.resolve()
|
||
.then(method.bind(null, options))
|
||
.catch(function (error) {
|
||
return orig(error, options)
|
||
})
|
||
}
|
||
}
|
||
|
||
state.registry[name].push({
|
||
hook: hook,
|
||
orig: orig
|
||
})
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 511 */,
|
||
/* 512 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["ecma","es"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/mrb-publish+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana"},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana"},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["keynote"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana"},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana"},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana"},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana"},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana"},"image/avcs":{"source":"iana"},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shex":{"extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana"},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}};
|
||
|
||
/***/ }),
|
||
/* 513 */,
|
||
/* 514 */,
|
||
/* 515 */
|
||
/***/ (function(module) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var XMLDOMImplementation;
|
||
|
||
module.exports = XMLDOMImplementation = (function() {
|
||
function XMLDOMImplementation() {}
|
||
|
||
XMLDOMImplementation.prototype.hasFeature = function(feature, version) {
|
||
return true;
|
||
};
|
||
|
||
XMLDOMImplementation.prototype.createDocumentType = function(qualifiedName, publicId, systemId) {
|
||
throw new Error("This DOM method is not implemented.");
|
||
};
|
||
|
||
XMLDOMImplementation.prototype.createDocument = function(namespaceURI, qualifiedName, doctype) {
|
||
throw new Error("This DOM method is not implemented.");
|
||
};
|
||
|
||
XMLDOMImplementation.prototype.createHTMLDocument = function(title) {
|
||
throw new Error("This DOM method is not implemented.");
|
||
};
|
||
|
||
XMLDOMImplementation.prototype.getFeature = function(feature, version) {
|
||
throw new Error("This DOM method is not implemented.");
|
||
};
|
||
|
||
return XMLDOMImplementation;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 516 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
|
||
var _v = _interopRequireDefault(__webpack_require__(241));
|
||
|
||
var _sha = _interopRequireDefault(__webpack_require__(616));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
const v5 = (0, _v.default)('v5', 0x50, _sha.default);
|
||
var _default = v5;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 517 */,
|
||
/* 518 */,
|
||
/* 519 */,
|
||
/* 520 */,
|
||
/* 521 */,
|
||
/* 522 */,
|
||
/* 523 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var register = __webpack_require__(363)
|
||
var addHook = __webpack_require__(510)
|
||
var removeHook = __webpack_require__(763)
|
||
|
||
// bind with array of arguments: https://stackoverflow.com/a/21792913
|
||
var bind = Function.bind
|
||
var bindable = bind.bind(bind)
|
||
|
||
function bindApi (hook, state, name) {
|
||
var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state])
|
||
hook.api = { remove: removeHookRef }
|
||
hook.remove = removeHookRef
|
||
|
||
;['before', 'error', 'after', 'wrap'].forEach(function (kind) {
|
||
var args = name ? [state, kind, name] : [state, kind]
|
||
hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args)
|
||
})
|
||
}
|
||
|
||
function HookSingular () {
|
||
var singularHookName = 'h'
|
||
var singularHookState = {
|
||
registry: {}
|
||
}
|
||
var singularHook = register.bind(null, singularHookState, singularHookName)
|
||
bindApi(singularHook, singularHookState, singularHookName)
|
||
return singularHook
|
||
}
|
||
|
||
function HookCollection () {
|
||
var state = {
|
||
registry: {}
|
||
}
|
||
|
||
var hook = register.bind(null, state)
|
||
bindApi(hook, state)
|
||
|
||
return hook
|
||
}
|
||
|
||
var collectionHookDeprecationMessageDisplayed = false
|
||
function Hook () {
|
||
if (!collectionHookDeprecationMessageDisplayed) {
|
||
console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4')
|
||
collectionHookDeprecationMessageDisplayed = true
|
||
}
|
||
return HookCollection()
|
||
}
|
||
|
||
Hook.Singular = HookSingular.bind()
|
||
Hook.Collection = HookCollection.bind()
|
||
|
||
module.exports = Hook
|
||
// expose constructors as a named property for TypeScript
|
||
module.exports.Hook = Hook
|
||
module.exports.Singular = Hook.Singular
|
||
module.exports.Collection = Hook.Collection
|
||
|
||
|
||
/***/ }),
|
||
/* 524 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var XMLDOMConfiguration, XMLDOMErrorHandler, XMLDOMStringList;
|
||
|
||
XMLDOMErrorHandler = __webpack_require__(724);
|
||
|
||
XMLDOMStringList = __webpack_require__(556);
|
||
|
||
module.exports = XMLDOMConfiguration = (function() {
|
||
function XMLDOMConfiguration() {
|
||
var clonedSelf;
|
||
this.defaultParams = {
|
||
"canonical-form": false,
|
||
"cdata-sections": false,
|
||
"comments": false,
|
||
"datatype-normalization": false,
|
||
"element-content-whitespace": true,
|
||
"entities": true,
|
||
"error-handler": new XMLDOMErrorHandler(),
|
||
"infoset": true,
|
||
"validate-if-schema": false,
|
||
"namespaces": true,
|
||
"namespace-declarations": true,
|
||
"normalize-characters": false,
|
||
"schema-location": '',
|
||
"schema-type": '',
|
||
"split-cdata-sections": true,
|
||
"validate": false,
|
||
"well-formed": true
|
||
};
|
||
this.params = clonedSelf = Object.create(this.defaultParams);
|
||
}
|
||
|
||
Object.defineProperty(XMLDOMConfiguration.prototype, 'parameterNames', {
|
||
get: function() {
|
||
return new XMLDOMStringList(Object.keys(this.defaultParams));
|
||
}
|
||
});
|
||
|
||
XMLDOMConfiguration.prototype.getParameter = function(name) {
|
||
if (this.params.hasOwnProperty(name)) {
|
||
return this.params[name];
|
||
} else {
|
||
return null;
|
||
}
|
||
};
|
||
|
||
XMLDOMConfiguration.prototype.canSetParameter = function(name, value) {
|
||
return true;
|
||
};
|
||
|
||
XMLDOMConfiguration.prototype.setParameter = function(name, value) {
|
||
if (value != null) {
|
||
return this.params[name] = value;
|
||
} else {
|
||
return delete this.params[name];
|
||
}
|
||
};
|
||
|
||
return XMLDOMConfiguration;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 525 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;
|
||
var __1 = __webpack_require__(440);
|
||
var platform_1 = __webpack_require__(910);
|
||
var version_1 = __webpack_require__(830);
|
||
var semver_1 = __webpack_require__(987);
|
||
var major = version_1.VERSION.split('.')[0];
|
||
var GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for("io.opentelemetry.js.api." + major);
|
||
var _global = platform_1._globalThis;
|
||
function registerGlobal(type, instance, allowOverride) {
|
||
var _a;
|
||
if (allowOverride === void 0) { allowOverride = false; }
|
||
_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {
|
||
version: version_1.VERSION,
|
||
};
|
||
var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];
|
||
if (!allowOverride && api[type]) {
|
||
// already registered an API of this type
|
||
var err = new Error("@opentelemetry/api: Attempted duplicate registration of API: " + type);
|
||
__1.diag.error(err.stack || err.message);
|
||
return;
|
||
}
|
||
if (api.version !== version_1.VERSION) {
|
||
// All registered APIs must be of the same version exactly
|
||
var err = new Error('@opentelemetry/api: All API registration versions must match');
|
||
__1.diag.error(err.stack || err.message);
|
||
return;
|
||
}
|
||
api[type] = instance;
|
||
}
|
||
exports.registerGlobal = registerGlobal;
|
||
function getGlobal(type) {
|
||
var _a, _b;
|
||
var globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;
|
||
if (!globalVersion || !semver_1.isCompatible(globalVersion)) {
|
||
return;
|
||
}
|
||
return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];
|
||
}
|
||
exports.getGlobal = getGlobal;
|
||
function unregisterGlobal(type) {
|
||
var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];
|
||
if (api) {
|
||
delete api[type];
|
||
}
|
||
}
|
||
exports.unregisterGlobal = unregisterGlobal;
|
||
//# sourceMappingURL=global-utils.js.map
|
||
|
||
/***/ }),
|
||
/* 526 */,
|
||
/* 527 */,
|
||
/* 528 */,
|
||
/* 529 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
const factory = __webpack_require__(47);
|
||
|
||
module.exports = factory();
|
||
|
||
|
||
/***/ }),
|
||
/* 530 */,
|
||
/* 531 */,
|
||
/* 532 */,
|
||
/* 533 */
|
||
/***/ (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;
|
||
};
|
||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const core = __importStar(__webpack_require__(902));
|
||
const io = __importStar(__webpack_require__(1));
|
||
const fs = __importStar(__webpack_require__(747));
|
||
const mm = __importStar(__webpack_require__(31));
|
||
const os = __importStar(__webpack_require__(87));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const httpm = __importStar(__webpack_require__(403));
|
||
const semver = __importStar(__webpack_require__(280));
|
||
const stream = __importStar(__webpack_require__(794));
|
||
const util = __importStar(__webpack_require__(669));
|
||
const v4_1 = __importDefault(__webpack_require__(826));
|
||
const exec_1 = __webpack_require__(986);
|
||
const assert_1 = __webpack_require__(357);
|
||
const retry_helper_1 = __webpack_require__(979);
|
||
class HTTPError extends Error {
|
||
constructor(httpStatusCode) {
|
||
super(`Unexpected HTTP response: ${httpStatusCode}`);
|
||
this.httpStatusCode = httpStatusCode;
|
||
Object.setPrototypeOf(this, new.target.prototype);
|
||
}
|
||
}
|
||
exports.HTTPError = HTTPError;
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
const userAgent = 'actions/tool-cache';
|
||
/**
|
||
* Download a tool from an url and stream it into a file
|
||
*
|
||
* @param url url of tool to download
|
||
* @param dest path to download tool
|
||
* @param auth authorization header
|
||
* @returns path to downloaded tool
|
||
*/
|
||
function downloadTool(url, dest, auth) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
dest = dest || path.join(_getTempDirectory(), v4_1.default());
|
||
yield io.mkdirP(path.dirname(dest));
|
||
core.debug(`Downloading ${url}`);
|
||
core.debug(`Destination ${dest}`);
|
||
const maxAttempts = 3;
|
||
const minSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS', 10);
|
||
const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20);
|
||
const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds);
|
||
return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () {
|
||
return yield downloadToolAttempt(url, dest || '', auth);
|
||
}), (err) => {
|
||
if (err instanceof HTTPError && err.httpStatusCode) {
|
||
// Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests
|
||
if (err.httpStatusCode < 500 &&
|
||
err.httpStatusCode !== 408 &&
|
||
err.httpStatusCode !== 429) {
|
||
return false;
|
||
}
|
||
}
|
||
// Otherwise retry
|
||
return true;
|
||
});
|
||
});
|
||
}
|
||
exports.downloadTool = downloadTool;
|
||
function downloadToolAttempt(url, dest, auth) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if (fs.existsSync(dest)) {
|
||
throw new Error(`Destination file path ${dest} already exists`);
|
||
}
|
||
// Get the response headers
|
||
const http = new httpm.HttpClient(userAgent, [], {
|
||
allowRetries: false
|
||
});
|
||
let headers;
|
||
if (auth) {
|
||
core.debug('set auth');
|
||
headers = {
|
||
authorization: auth
|
||
};
|
||
}
|
||
const response = yield http.get(url, headers);
|
||
if (response.message.statusCode !== 200) {
|
||
const err = new HTTPError(response.message.statusCode);
|
||
core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`);
|
||
throw err;
|
||
}
|
||
// Download the response body
|
||
const pipeline = util.promisify(stream.pipeline);
|
||
const responseMessageFactory = _getGlobal('TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY', () => response.message);
|
||
const readStream = responseMessageFactory();
|
||
let succeeded = false;
|
||
try {
|
||
yield pipeline(readStream, fs.createWriteStream(dest));
|
||
core.debug('download complete');
|
||
succeeded = true;
|
||
return dest;
|
||
}
|
||
finally {
|
||
// Error, delete dest before retry
|
||
if (!succeeded) {
|
||
core.debug('download failed');
|
||
try {
|
||
yield io.rmRF(dest);
|
||
}
|
||
catch (err) {
|
||
core.debug(`Failed to delete '${dest}'. ${err.message}`);
|
||
}
|
||
}
|
||
}
|
||
});
|
||
}
|
||
/**
|
||
* Extract a .7z file
|
||
*
|
||
* @param file path to the .7z file
|
||
* @param dest destination directory. Optional.
|
||
* @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this
|
||
* problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will
|
||
* gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is
|
||
* bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line
|
||
* interface, it is smaller than the full command line interface, and it does support long paths. At the
|
||
* time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website.
|
||
* Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path
|
||
* to 7zr.exe can be pass to this function.
|
||
* @returns path to the destination directory
|
||
*/
|
||
function extract7z(file, dest, _7zPath) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS');
|
||
assert_1.ok(file, 'parameter "file" is required');
|
||
dest = yield _createExtractFolder(dest);
|
||
const originalCwd = process.cwd();
|
||
process.chdir(dest);
|
||
if (_7zPath) {
|
||
try {
|
||
const logLevel = core.isDebug() ? '-bb1' : '-bb0';
|
||
const args = [
|
||
'x',
|
||
logLevel,
|
||
'-bd',
|
||
'-sccUTF-8',
|
||
file
|
||
];
|
||
const options = {
|
||
silent: true
|
||
};
|
||
yield exec_1.exec(`"${_7zPath}"`, args, options);
|
||
}
|
||
finally {
|
||
process.chdir(originalCwd);
|
||
}
|
||
}
|
||
else {
|
||
const escapedScript = path
|
||
.join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1')
|
||
.replace(/'/g, "''")
|
||
.replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines
|
||
const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, '');
|
||
const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '');
|
||
const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`;
|
||
const args = [
|
||
'-NoLogo',
|
||
'-Sta',
|
||
'-NoProfile',
|
||
'-NonInteractive',
|
||
'-ExecutionPolicy',
|
||
'Unrestricted',
|
||
'-Command',
|
||
command
|
||
];
|
||
const options = {
|
||
silent: true
|
||
};
|
||
try {
|
||
const powershellPath = yield io.which('powershell', true);
|
||
yield exec_1.exec(`"${powershellPath}"`, args, options);
|
||
}
|
||
finally {
|
||
process.chdir(originalCwd);
|
||
}
|
||
}
|
||
return dest;
|
||
});
|
||
}
|
||
exports.extract7z = extract7z;
|
||
/**
|
||
* Extract a compressed tar archive
|
||
*
|
||
* @param file path to the tar
|
||
* @param dest destination directory. Optional.
|
||
* @param flags flags for the tar command to use for extraction. Defaults to 'xz' (extracting gzipped tars). Optional.
|
||
* @returns path to the destination directory
|
||
*/
|
||
function extractTar(file, dest, flags = 'xz') {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if (!file) {
|
||
throw new Error("parameter 'file' is required");
|
||
}
|
||
// Create dest
|
||
dest = yield _createExtractFolder(dest);
|
||
// Determine whether GNU tar
|
||
core.debug('Checking tar --version');
|
||
let versionOutput = '';
|
||
yield exec_1.exec('tar --version', [], {
|
||
ignoreReturnCode: true,
|
||
silent: true,
|
||
listeners: {
|
||
stdout: (data) => (versionOutput += data.toString()),
|
||
stderr: (data) => (versionOutput += data.toString())
|
||
}
|
||
});
|
||
core.debug(versionOutput.trim());
|
||
const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR');
|
||
// Initialize args
|
||
let args;
|
||
if (flags instanceof Array) {
|
||
args = flags;
|
||
}
|
||
else {
|
||
args = [flags];
|
||
}
|
||
if (core.isDebug() && !flags.includes('v')) {
|
||
args.push('-v');
|
||
}
|
||
let destArg = dest;
|
||
let fileArg = file;
|
||
if (IS_WINDOWS && isGnuTar) {
|
||
args.push('--force-local');
|
||
destArg = dest.replace(/\\/g, '/');
|
||
// Technically only the dest needs to have `/` but for aesthetic consistency
|
||
// convert slashes in the file arg too.
|
||
fileArg = file.replace(/\\/g, '/');
|
||
}
|
||
if (isGnuTar) {
|
||
// Suppress warnings when using GNU tar to extract archives created by BSD tar
|
||
args.push('--warning=no-unknown-keyword');
|
||
}
|
||
args.push('-C', destArg, '-f', fileArg);
|
||
yield exec_1.exec(`tar`, args);
|
||
return dest;
|
||
});
|
||
}
|
||
exports.extractTar = extractTar;
|
||
/**
|
||
* Extract a zip
|
||
*
|
||
* @param file path to the zip
|
||
* @param dest destination directory. Optional.
|
||
* @returns path to the destination directory
|
||
*/
|
||
function extractZip(file, dest) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if (!file) {
|
||
throw new Error("parameter 'file' is required");
|
||
}
|
||
dest = yield _createExtractFolder(dest);
|
||
if (IS_WINDOWS) {
|
||
yield extractZipWin(file, dest);
|
||
}
|
||
else {
|
||
yield extractZipNix(file, dest);
|
||
}
|
||
return dest;
|
||
});
|
||
}
|
||
exports.extractZip = extractZip;
|
||
function extractZipWin(file, dest) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// build the powershell command
|
||
const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines
|
||
const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '');
|
||
const command = `$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}')`;
|
||
// run powershell
|
||
const powershellPath = yield io.which('powershell', true);
|
||
const args = [
|
||
'-NoLogo',
|
||
'-Sta',
|
||
'-NoProfile',
|
||
'-NonInteractive',
|
||
'-ExecutionPolicy',
|
||
'Unrestricted',
|
||
'-Command',
|
||
command
|
||
];
|
||
yield exec_1.exec(`"${powershellPath}"`, args);
|
||
});
|
||
}
|
||
function extractZipNix(file, dest) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const unzipPath = yield io.which('unzip', true);
|
||
const args = [file];
|
||
if (!core.isDebug()) {
|
||
args.unshift('-q');
|
||
}
|
||
yield exec_1.exec(`"${unzipPath}"`, args, { cwd: dest });
|
||
});
|
||
}
|
||
/**
|
||
* Caches a directory and installs it into the tool cacheDir
|
||
*
|
||
* @param sourceDir the directory to cache into tools
|
||
* @param tool tool name
|
||
* @param version version of the tool. semver format
|
||
* @param arch architecture of the tool. Optional. Defaults to machine architecture
|
||
*/
|
||
function cacheDir(sourceDir, tool, version, arch) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
version = semver.clean(version) || version;
|
||
arch = arch || os.arch();
|
||
core.debug(`Caching tool ${tool} ${version} ${arch}`);
|
||
core.debug(`source dir: ${sourceDir}`);
|
||
if (!fs.statSync(sourceDir).isDirectory()) {
|
||
throw new Error('sourceDir is not a directory');
|
||
}
|
||
// Create the tool dir
|
||
const destPath = yield _createToolPath(tool, version, arch);
|
||
// copy each child item. do not move. move can fail on Windows
|
||
// due to anti-virus software having an open handle on a file.
|
||
for (const itemName of fs.readdirSync(sourceDir)) {
|
||
const s = path.join(sourceDir, itemName);
|
||
yield io.cp(s, destPath, { recursive: true });
|
||
}
|
||
// write .complete
|
||
_completeToolPath(tool, version, arch);
|
||
return destPath;
|
||
});
|
||
}
|
||
exports.cacheDir = cacheDir;
|
||
/**
|
||
* Caches a downloaded file (GUID) and installs it
|
||
* into the tool cache with a given targetName
|
||
*
|
||
* @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid.
|
||
* @param targetFile the name of the file name in the tools directory
|
||
* @param tool tool name
|
||
* @param version version of the tool. semver format
|
||
* @param arch architecture of the tool. Optional. Defaults to machine architecture
|
||
*/
|
||
function cacheFile(sourceFile, targetFile, tool, version, arch) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
version = semver.clean(version) || version;
|
||
arch = arch || os.arch();
|
||
core.debug(`Caching tool ${tool} ${version} ${arch}`);
|
||
core.debug(`source file: ${sourceFile}`);
|
||
if (!fs.statSync(sourceFile).isFile()) {
|
||
throw new Error('sourceFile is not a file');
|
||
}
|
||
// create the tool dir
|
||
const destFolder = yield _createToolPath(tool, version, arch);
|
||
// copy instead of move. move can fail on Windows due to
|
||
// anti-virus software having an open handle on a file.
|
||
const destPath = path.join(destFolder, targetFile);
|
||
core.debug(`destination file ${destPath}`);
|
||
yield io.cp(sourceFile, destPath);
|
||
// write .complete
|
||
_completeToolPath(tool, version, arch);
|
||
return destFolder;
|
||
});
|
||
}
|
||
exports.cacheFile = cacheFile;
|
||
/**
|
||
* Finds the path to a tool version in the local installed tool cache
|
||
*
|
||
* @param toolName name of the tool
|
||
* @param versionSpec version of the tool
|
||
* @param arch optional arch. defaults to arch of computer
|
||
*/
|
||
function find(toolName, versionSpec, arch) {
|
||
if (!toolName) {
|
||
throw new Error('toolName parameter is required');
|
||
}
|
||
if (!versionSpec) {
|
||
throw new Error('versionSpec parameter is required');
|
||
}
|
||
arch = arch || os.arch();
|
||
// attempt to resolve an explicit version
|
||
if (!_isExplicitVersion(versionSpec)) {
|
||
const localVersions = findAllVersions(toolName, arch);
|
||
const match = _evaluateVersions(localVersions, versionSpec);
|
||
versionSpec = match;
|
||
}
|
||
// check for the explicit version in the cache
|
||
let toolPath = '';
|
||
if (versionSpec) {
|
||
versionSpec = semver.clean(versionSpec) || '';
|
||
const cachePath = path.join(_getCacheDirectory(), toolName, versionSpec, arch);
|
||
core.debug(`checking cache: ${cachePath}`);
|
||
if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) {
|
||
core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`);
|
||
toolPath = cachePath;
|
||
}
|
||
else {
|
||
core.debug('not found');
|
||
}
|
||
}
|
||
return toolPath;
|
||
}
|
||
exports.find = find;
|
||
/**
|
||
* Finds the paths to all versions of a tool that are installed in the local tool cache
|
||
*
|
||
* @param toolName name of the tool
|
||
* @param arch optional arch. defaults to arch of computer
|
||
*/
|
||
function findAllVersions(toolName, arch) {
|
||
const versions = [];
|
||
arch = arch || os.arch();
|
||
const toolPath = path.join(_getCacheDirectory(), toolName);
|
||
if (fs.existsSync(toolPath)) {
|
||
const children = fs.readdirSync(toolPath);
|
||
for (const child of children) {
|
||
if (_isExplicitVersion(child)) {
|
||
const fullPath = path.join(toolPath, child, arch || '');
|
||
if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) {
|
||
versions.push(child);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return versions;
|
||
}
|
||
exports.findAllVersions = findAllVersions;
|
||
function getManifestFromRepo(owner, repo, auth, branch = 'master') {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let releases = [];
|
||
const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}`;
|
||
const http = new httpm.HttpClient('tool-cache');
|
||
const headers = {};
|
||
if (auth) {
|
||
core.debug('set auth');
|
||
headers.authorization = auth;
|
||
}
|
||
const response = yield http.getJson(treeUrl, headers);
|
||
if (!response.result) {
|
||
return releases;
|
||
}
|
||
let manifestUrl = '';
|
||
for (const item of response.result.tree) {
|
||
if (item.path === 'versions-manifest.json') {
|
||
manifestUrl = item.url;
|
||
break;
|
||
}
|
||
}
|
||
headers['accept'] = 'application/vnd.github.VERSION.raw';
|
||
let versionsRaw = yield (yield http.get(manifestUrl, headers)).readBody();
|
||
if (versionsRaw) {
|
||
// shouldn't be needed but protects against invalid json saved with BOM
|
||
versionsRaw = versionsRaw.replace(/^\uFEFF/, '');
|
||
try {
|
||
releases = JSON.parse(versionsRaw);
|
||
}
|
||
catch (_a) {
|
||
core.debug('Invalid json');
|
||
}
|
||
}
|
||
return releases;
|
||
});
|
||
}
|
||
exports.getManifestFromRepo = getManifestFromRepo;
|
||
function findFromManifest(versionSpec, stable, manifest, archFilter = os.arch()) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// wrap the internal impl
|
||
const match = yield mm._findMatch(versionSpec, stable, manifest, archFilter);
|
||
return match;
|
||
});
|
||
}
|
||
exports.findFromManifest = findFromManifest;
|
||
function _createExtractFolder(dest) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if (!dest) {
|
||
// create a temp dir
|
||
dest = path.join(_getTempDirectory(), v4_1.default());
|
||
}
|
||
yield io.mkdirP(dest);
|
||
return dest;
|
||
});
|
||
}
|
||
function _createToolPath(tool, version, arch) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || '');
|
||
core.debug(`destination ${folderPath}`);
|
||
const markerPath = `${folderPath}.complete`;
|
||
yield io.rmRF(folderPath);
|
||
yield io.rmRF(markerPath);
|
||
yield io.mkdirP(folderPath);
|
||
return folderPath;
|
||
});
|
||
}
|
||
function _completeToolPath(tool, version, arch) {
|
||
const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || '');
|
||
const markerPath = `${folderPath}.complete`;
|
||
fs.writeFileSync(markerPath, '');
|
||
core.debug('finished caching tool');
|
||
}
|
||
function _isExplicitVersion(versionSpec) {
|
||
const c = semver.clean(versionSpec) || '';
|
||
core.debug(`isExplicit: ${c}`);
|
||
const valid = semver.valid(c) != null;
|
||
core.debug(`explicit? ${valid}`);
|
||
return valid;
|
||
}
|
||
function _evaluateVersions(versions, versionSpec) {
|
||
let version = '';
|
||
core.debug(`evaluating ${versions.length} versions`);
|
||
versions = versions.sort((a, b) => {
|
||
if (semver.gt(a, b)) {
|
||
return 1;
|
||
}
|
||
return -1;
|
||
});
|
||
for (let i = versions.length - 1; i >= 0; i--) {
|
||
const potential = versions[i];
|
||
const satisfied = semver.satisfies(potential, versionSpec);
|
||
if (satisfied) {
|
||
version = potential;
|
||
break;
|
||
}
|
||
}
|
||
if (version) {
|
||
core.debug(`matched: ${version}`);
|
||
}
|
||
else {
|
||
core.debug('match not found');
|
||
}
|
||
return version;
|
||
}
|
||
/**
|
||
* Gets RUNNER_TOOL_CACHE
|
||
*/
|
||
function _getCacheDirectory() {
|
||
const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || '';
|
||
assert_1.ok(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined');
|
||
return cacheDirectory;
|
||
}
|
||
/**
|
||
* Gets RUNNER_TEMP
|
||
*/
|
||
function _getTempDirectory() {
|
||
const tempDirectory = process.env['RUNNER_TEMP'] || '';
|
||
assert_1.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined');
|
||
return tempDirectory;
|
||
}
|
||
/**
|
||
* Gets a global variable
|
||
*/
|
||
function _getGlobal(key, defaultValue) {
|
||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||
const value = global[key];
|
||
/* eslint-enable @typescript-eslint/no-explicit-any */
|
||
return value !== undefined ? value : defaultValue;
|
||
}
|
||
//# sourceMappingURL=tool-cache.js.map
|
||
|
||
/***/ }),
|
||
/* 534 */,
|
||
/* 535 */,
|
||
/* 536 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = hasFirstPage
|
||
|
||
const deprecate = __webpack_require__(370)
|
||
const getPageLinks = __webpack_require__(577)
|
||
|
||
function hasFirstPage (link) {
|
||
deprecate(`octokit.hasFirstPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
|
||
return getPageLinks(link).first
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 537 */,
|
||
/* 538 */
|
||
/***/ (function(module) {
|
||
|
||
/**
|
||
* Convert array of 16 byte values to UUID string format of the form:
|
||
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|
||
*/
|
||
var byteToHex = [];
|
||
for (var i = 0; i < 256; ++i) {
|
||
byteToHex[i] = (i + 0x100).toString(16).substr(1);
|
||
}
|
||
|
||
function bytesToUuid(buf, offset) {
|
||
var i = offset || 0;
|
||
var bth = byteToHex;
|
||
// join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
|
||
return ([
|
||
bth[buf[i++]], bth[buf[i++]],
|
||
bth[buf[i++]], bth[buf[i++]], '-',
|
||
bth[buf[i++]], bth[buf[i++]], '-',
|
||
bth[buf[i++]], bth[buf[i++]], '-',
|
||
bth[buf[i++]], bth[buf[i++]], '-',
|
||
bth[buf[i++]], bth[buf[i++]],
|
||
bth[buf[i++]], bth[buf[i++]],
|
||
bth[buf[i++]], bth[buf[i++]]
|
||
]).join('');
|
||
}
|
||
|
||
module.exports = bytesToUuid;
|
||
|
||
|
||
/***/ }),
|
||
/* 539 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const url = __webpack_require__(835);
|
||
const http = __webpack_require__(605);
|
||
const https = __webpack_require__(211);
|
||
const pm = __webpack_require__(950);
|
||
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["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 = {}));
|
||
var Headers;
|
||
(function (Headers) {
|
||
Headers["Accept"] = "accept";
|
||
Headers["ContentType"] = "content-type";
|
||
})(Headers = exports.Headers || (exports.Headers = {}));
|
||
var MediaTypes;
|
||
(function (MediaTypes) {
|
||
MediaTypes["ApplicationJson"] = "application/json";
|
||
})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));
|
||
/**
|
||
* Returns the proxy URL, depending upon the supplied url and proxy environment variables.
|
||
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
|
||
*/
|
||
function getProxyUrl(serverUrl) {
|
||
let proxyUrl = pm.getProxyUrl(url.parse(serverUrl));
|
||
return proxyUrl ? proxyUrl.href : '';
|
||
}
|
||
exports.getProxyUrl = getProxyUrl;
|
||
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(async (resolve, reject) => {
|
||
let output = Buffer.alloc(0);
|
||
this.message.on('data', (chunk) => {
|
||
output = Buffer.concat([output, chunk]);
|
||
});
|
||
this.message.on('end', () => {
|
||
resolve(output.toString());
|
||
});
|
||
});
|
||
}
|
||
}
|
||
exports.HttpClientResponse = HttpClientResponse;
|
||
function isHttps(requestUrl) {
|
||
let parsedUrl = url.parse(requestUrl);
|
||
return parsedUrl.protocol === 'https:';
|
||
}
|
||
exports.isHttps = isHttps;
|
||
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 || [];
|
||
this.requestOptions = requestOptions;
|
||
if (requestOptions) {
|
||
if (requestOptions.ignoreSslError != null) {
|
||
this._ignoreSslError = requestOptions.ignoreSslError;
|
||
}
|
||
this._socketTimeout = requestOptions.socketTimeout;
|
||
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);
|
||
}
|
||
/**
|
||
* Gets a typed object from an endpoint
|
||
* Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise
|
||
*/
|
||
async getJson(requestUrl, additionalHeaders = {}) {
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
let res = await this.get(requestUrl, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
async postJson(requestUrl, obj, additionalHeaders = {}) {
|
||
let data = JSON.stringify(obj, null, 2);
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
||
let res = await this.post(requestUrl, data, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
async putJson(requestUrl, obj, additionalHeaders = {}) {
|
||
let data = JSON.stringify(obj, null, 2);
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
||
let res = await this.put(requestUrl, data, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
async patchJson(requestUrl, obj, additionalHeaders = {}) {
|
||
let data = JSON.stringify(obj, null, 2);
|
||
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
|
||
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
|
||
let res = await this.patch(requestUrl, data, additionalHeaders);
|
||
return this._processResponse(res, this.requestOptions);
|
||
}
|
||
/**
|
||
* Makes a raw http request.
|
||
* All other methods such as get, post, patch, and request ultimately call this.
|
||
* Prefer get, del, post and patch
|
||
*/
|
||
async request(verb, requestUrl, data, headers) {
|
||
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 = await 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.
|
||
await response.readBody();
|
||
// let's make the request with the new redirectUrl
|
||
info = this._prepareRequest(verb, parsedRedirectUrl, headers);
|
||
response = await 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) {
|
||
await response.readBody();
|
||
await 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;
|
||
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();
|
||
}
|
||
}
|
||
/**
|
||
* Gets an http agent. This function is useful when you need an http agent that handles
|
||
* routing through a proxy server - depending upon the url and proxy environment variables.
|
||
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
|
||
*/
|
||
getAgent(serverUrl) {
|
||
let parsedUrl = url.parse(serverUrl);
|
||
return this._getAgent(parsedUrl);
|
||
}
|
||
_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.handlers.forEach((handler) => {
|
||
handler.prepareRequest(info.options);
|
||
});
|
||
}
|
||
return info;
|
||
}
|
||
_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 || {});
|
||
}
|
||
_getExistingOrDefaultHeader(additionalHeaders, header, _default) {
|
||
const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {});
|
||
let clientHeader;
|
||
if (this.requestOptions && this.requestOptions.headers) {
|
||
clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
|
||
}
|
||
return additionalHeaders[header] || clientHeader || _default;
|
||
}
|
||
_getAgent(parsedUrl) {
|
||
let agent;
|
||
let proxyUrl = pm.getProxyUrl(parsedUrl);
|
||
let useProxy = proxyUrl && proxyUrl.hostname;
|
||
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: proxyUrl.auth,
|
||
host: proxyUrl.hostname,
|
||
port: proxyUrl.port
|
||
},
|
||
};
|
||
let tunnelAgent;
|
||
const overHttps = 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 });
|
||
}
|
||
return agent;
|
||
}
|
||
_performExponentialBackoff(retryNumber) {
|
||
retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
|
||
const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
|
||
return new Promise(resolve => setTimeout(() => resolve(), ms));
|
||
}
|
||
static dateTimeDeserializer(key, value) {
|
||
if (typeof value === 'string') {
|
||
let a = new Date(value);
|
||
if (!isNaN(a.valueOf())) {
|
||
return a;
|
||
}
|
||
}
|
||
return value;
|
||
}
|
||
async _processResponse(res, options) {
|
||
return new Promise(async (resolve, reject) => {
|
||
const statusCode = res.message.statusCode;
|
||
const response = {
|
||
statusCode: statusCode,
|
||
result: null,
|
||
headers: {}
|
||
};
|
||
// not found leads to null obj returned
|
||
if (statusCode == HttpCodes.NotFound) {
|
||
resolve(response);
|
||
}
|
||
let obj;
|
||
let contents;
|
||
// get the result from the body
|
||
try {
|
||
contents = await res.readBody();
|
||
if (contents && contents.length > 0) {
|
||
if (options && options.deserializeDates) {
|
||
obj = JSON.parse(contents, HttpClient.dateTimeDeserializer);
|
||
}
|
||
else {
|
||
obj = JSON.parse(contents);
|
||
}
|
||
response.result = obj;
|
||
}
|
||
response.headers = res.message.headers;
|
||
}
|
||
catch (err) {
|
||
// Invalid resource (contents not json); leaving result obj null
|
||
}
|
||
// note that 3xx redirects are handled by the http layer.
|
||
if (statusCode > 299) {
|
||
let msg;
|
||
// if exception/error in body, attempt to get better error
|
||
if (obj && obj.message) {
|
||
msg = obj.message;
|
||
}
|
||
else if (contents && contents.length > 0) {
|
||
// it may be the case that the exception is in the body message as string
|
||
msg = contents;
|
||
}
|
||
else {
|
||
msg = "Failed request: (" + statusCode + ")";
|
||
}
|
||
let err = new Error(msg);
|
||
// attach statusCode and body obj (if available) to the error object
|
||
err['statusCode'] = statusCode;
|
||
if (response.result) {
|
||
err['result'] = response.result;
|
||
}
|
||
reject(err);
|
||
}
|
||
else {
|
||
resolve(response);
|
||
}
|
||
});
|
||
}
|
||
}
|
||
exports.HttpClient = HttpClient;
|
||
|
||
|
||
/***/ }),
|
||
/* 540 */,
|
||
/* 541 */
|
||
/***/ (function(module) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
module.exports = {
|
||
None: 0,
|
||
OpenTag: 1,
|
||
InsideTag: 2,
|
||
CloseTag: 3
|
||
};
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 542 */,
|
||
/* 543 */,
|
||
/* 544 */,
|
||
/* 545 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.DiagLogLevel = void 0;
|
||
/**
|
||
* Defines the available internal logging levels for the diagnostic logger, the numeric values
|
||
* of the levels are defined to match the original values from the initial LogLevel to avoid
|
||
* compatibility/migration issues for any implementation that assume the numeric ordering.
|
||
*/
|
||
var DiagLogLevel;
|
||
(function (DiagLogLevel) {
|
||
/** Diagnostic Logging level setting to disable all logging (except and forced logs) */
|
||
DiagLogLevel[DiagLogLevel["NONE"] = 0] = "NONE";
|
||
/** Identifies an error scenario */
|
||
DiagLogLevel[DiagLogLevel["ERROR"] = 30] = "ERROR";
|
||
/** Identifies a warning scenario */
|
||
DiagLogLevel[DiagLogLevel["WARN"] = 50] = "WARN";
|
||
/** General informational log message */
|
||
DiagLogLevel[DiagLogLevel["INFO"] = 60] = "INFO";
|
||
/** General debug log message */
|
||
DiagLogLevel[DiagLogLevel["DEBUG"] = 70] = "DEBUG";
|
||
/**
|
||
* Detailed trace level logging should only be used for development, should only be set
|
||
* in a development environment.
|
||
*/
|
||
DiagLogLevel[DiagLogLevel["VERBOSE"] = 80] = "VERBOSE";
|
||
/** Used to set the logging level to include all logging */
|
||
DiagLogLevel[DiagLogLevel["ALL"] = 9999] = "ALL";
|
||
})(DiagLogLevel = exports.DiagLogLevel || (exports.DiagLogLevel = {}));
|
||
//# sourceMappingURL=types.js.map
|
||
|
||
/***/ }),
|
||
/* 546 */,
|
||
/* 547 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var util = __webpack_require__(669);
|
||
var Stream = __webpack_require__(794).Stream;
|
||
var DelayedStream = __webpack_require__(152);
|
||
|
||
module.exports = CombinedStream;
|
||
function CombinedStream() {
|
||
this.writable = false;
|
||
this.readable = true;
|
||
this.dataSize = 0;
|
||
this.maxDataSize = 2 * 1024 * 1024;
|
||
this.pauseStreams = true;
|
||
|
||
this._released = false;
|
||
this._streams = [];
|
||
this._currentStream = null;
|
||
this._insideLoop = false;
|
||
this._pendingNext = false;
|
||
}
|
||
util.inherits(CombinedStream, Stream);
|
||
|
||
CombinedStream.create = function(options) {
|
||
var combinedStream = new this();
|
||
|
||
options = options || {};
|
||
for (var option in options) {
|
||
combinedStream[option] = options[option];
|
||
}
|
||
|
||
return combinedStream;
|
||
};
|
||
|
||
CombinedStream.isStreamLike = function(stream) {
|
||
return (typeof stream !== 'function')
|
||
&& (typeof stream !== 'string')
|
||
&& (typeof stream !== 'boolean')
|
||
&& (typeof stream !== 'number')
|
||
&& (!Buffer.isBuffer(stream));
|
||
};
|
||
|
||
CombinedStream.prototype.append = function(stream) {
|
||
var isStreamLike = CombinedStream.isStreamLike(stream);
|
||
|
||
if (isStreamLike) {
|
||
if (!(stream instanceof DelayedStream)) {
|
||
var newStream = DelayedStream.create(stream, {
|
||
maxDataSize: Infinity,
|
||
pauseStream: this.pauseStreams,
|
||
});
|
||
stream.on('data', this._checkDataSize.bind(this));
|
||
stream = newStream;
|
||
}
|
||
|
||
this._handleErrors(stream);
|
||
|
||
if (this.pauseStreams) {
|
||
stream.pause();
|
||
}
|
||
}
|
||
|
||
this._streams.push(stream);
|
||
return this;
|
||
};
|
||
|
||
CombinedStream.prototype.pipe = function(dest, options) {
|
||
Stream.prototype.pipe.call(this, dest, options);
|
||
this.resume();
|
||
return dest;
|
||
};
|
||
|
||
CombinedStream.prototype._getNext = function() {
|
||
this._currentStream = null;
|
||
|
||
if (this._insideLoop) {
|
||
this._pendingNext = true;
|
||
return; // defer call
|
||
}
|
||
|
||
this._insideLoop = true;
|
||
try {
|
||
do {
|
||
this._pendingNext = false;
|
||
this._realGetNext();
|
||
} while (this._pendingNext);
|
||
} finally {
|
||
this._insideLoop = false;
|
||
}
|
||
};
|
||
|
||
CombinedStream.prototype._realGetNext = function() {
|
||
var stream = this._streams.shift();
|
||
|
||
|
||
if (typeof stream == 'undefined') {
|
||
this.end();
|
||
return;
|
||
}
|
||
|
||
if (typeof stream !== 'function') {
|
||
this._pipeNext(stream);
|
||
return;
|
||
}
|
||
|
||
var getStream = stream;
|
||
getStream(function(stream) {
|
||
var isStreamLike = CombinedStream.isStreamLike(stream);
|
||
if (isStreamLike) {
|
||
stream.on('data', this._checkDataSize.bind(this));
|
||
this._handleErrors(stream);
|
||
}
|
||
|
||
this._pipeNext(stream);
|
||
}.bind(this));
|
||
};
|
||
|
||
CombinedStream.prototype._pipeNext = function(stream) {
|
||
this._currentStream = stream;
|
||
|
||
var isStreamLike = CombinedStream.isStreamLike(stream);
|
||
if (isStreamLike) {
|
||
stream.on('end', this._getNext.bind(this));
|
||
stream.pipe(this, {end: false});
|
||
return;
|
||
}
|
||
|
||
var value = stream;
|
||
this.write(value);
|
||
this._getNext();
|
||
};
|
||
|
||
CombinedStream.prototype._handleErrors = function(stream) {
|
||
var self = this;
|
||
stream.on('error', function(err) {
|
||
self._emitError(err);
|
||
});
|
||
};
|
||
|
||
CombinedStream.prototype.write = function(data) {
|
||
this.emit('data', data);
|
||
};
|
||
|
||
CombinedStream.prototype.pause = function() {
|
||
if (!this.pauseStreams) {
|
||
return;
|
||
}
|
||
|
||
if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();
|
||
this.emit('pause');
|
||
};
|
||
|
||
CombinedStream.prototype.resume = function() {
|
||
if (!this._released) {
|
||
this._released = true;
|
||
this.writable = true;
|
||
this._getNext();
|
||
}
|
||
|
||
if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();
|
||
this.emit('resume');
|
||
};
|
||
|
||
CombinedStream.prototype.end = function() {
|
||
this._reset();
|
||
this.emit('end');
|
||
};
|
||
|
||
CombinedStream.prototype.destroy = function() {
|
||
this._reset();
|
||
this.emit('close');
|
||
};
|
||
|
||
CombinedStream.prototype._reset = function() {
|
||
this.writable = false;
|
||
this._streams = [];
|
||
this._currentStream = null;
|
||
};
|
||
|
||
CombinedStream.prototype._checkDataSize = function() {
|
||
this._updateDataSize();
|
||
if (this.dataSize <= this.maxDataSize) {
|
||
return;
|
||
}
|
||
|
||
var message =
|
||
'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';
|
||
this._emitError(new Error(message));
|
||
};
|
||
|
||
CombinedStream.prototype._updateDataSize = function() {
|
||
this.dataSize = 0;
|
||
|
||
var self = this;
|
||
this._streams.forEach(function(stream) {
|
||
if (!stream.dataSize) {
|
||
return;
|
||
}
|
||
|
||
self.dataSize += stream.dataSize;
|
||
});
|
||
|
||
if (this._currentStream && this._currentStream.dataSize) {
|
||
this.dataSize += this._currentStream.dataSize;
|
||
}
|
||
};
|
||
|
||
CombinedStream.prototype._emitError = function(err) {
|
||
this._reset();
|
||
this.emit('error', err);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 548 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
|
||
/*!
|
||
* isobject <https://github.com/jonschlinkert/isobject>
|
||
*
|
||
* Copyright (c) 2014-2017, Jon Schlinkert.
|
||
* Released under the MIT License.
|
||
*/
|
||
|
||
function isObject(val) {
|
||
return val != null && typeof val === 'object' && Array.isArray(val) === false;
|
||
}
|
||
|
||
/*!
|
||
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
|
||
*
|
||
* Copyright (c) 2014-2017, Jon Schlinkert.
|
||
* Released under the MIT License.
|
||
*/
|
||
|
||
function isObjectObject(o) {
|
||
return isObject(o) === true
|
||
&& Object.prototype.toString.call(o) === '[object Object]';
|
||
}
|
||
|
||
function isPlainObject(o) {
|
||
var ctor,prot;
|
||
|
||
if (isObjectObject(o) === false) return false;
|
||
|
||
// If has modified constructor
|
||
ctor = o.constructor;
|
||
if (typeof ctor !== 'function') return false;
|
||
|
||
// If has modified prototype
|
||
prot = ctor.prototype;
|
||
if (isObjectObject(prot) === false) return false;
|
||
|
||
// If constructor does not have an Object-specific method
|
||
if (prot.hasOwnProperty('isPrototypeOf') === false) {
|
||
return false;
|
||
}
|
||
|
||
// Most likely a plain Object
|
||
return true;
|
||
}
|
||
|
||
module.exports = isPlainObject;
|
||
|
||
|
||
/***/ }),
|
||
/* 549 */,
|
||
/* 550 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = getNextPage
|
||
|
||
const getPage = __webpack_require__(265)
|
||
|
||
function getNextPage (octokit, link, headers) {
|
||
return getPage(octokit, link, 'next', headers)
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 551 */,
|
||
/* 552 */,
|
||
/* 553 */,
|
||
/* 554 */,
|
||
/* 555 */,
|
||
/* 556 */
|
||
/***/ (function(module) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var XMLDOMStringList;
|
||
|
||
module.exports = XMLDOMStringList = (function() {
|
||
function XMLDOMStringList(arr) {
|
||
this.arr = arr || [];
|
||
}
|
||
|
||
Object.defineProperty(XMLDOMStringList.prototype, 'length', {
|
||
get: function() {
|
||
return this.arr.length;
|
||
}
|
||
});
|
||
|
||
XMLDOMStringList.prototype.item = function(index) {
|
||
return this.arr[index] || null;
|
||
};
|
||
|
||
XMLDOMStringList.prototype.contains = function(str) {
|
||
return this.arr.indexOf(str) !== -1;
|
||
};
|
||
|
||
return XMLDOMStringList;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 557 */,
|
||
/* 558 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = hasPreviousPage
|
||
|
||
const deprecate = __webpack_require__(370)
|
||
const getPageLinks = __webpack_require__(577)
|
||
|
||
function hasPreviousPage (link) {
|
||
deprecate(`octokit.hasPreviousPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
|
||
return getPageLinks(link).prev
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 559 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLDOMConfiguration, XMLDOMImplementation, XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
isPlainObject = __webpack_require__(582).isPlainObject;
|
||
|
||
XMLDOMImplementation = __webpack_require__(515);
|
||
|
||
XMLDOMConfiguration = __webpack_require__(524);
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLStringifier = __webpack_require__(602);
|
||
|
||
XMLStringWriter = __webpack_require__(231);
|
||
|
||
module.exports = XMLDocument = (function(superClass) {
|
||
extend(XMLDocument, superClass);
|
||
|
||
function XMLDocument(options) {
|
||
XMLDocument.__super__.constructor.call(this, null);
|
||
this.name = "#document";
|
||
this.type = NodeType.Document;
|
||
this.documentURI = null;
|
||
this.domConfig = new XMLDOMConfiguration();
|
||
options || (options = {});
|
||
if (!options.writer) {
|
||
options.writer = new XMLStringWriter();
|
||
}
|
||
this.options = options;
|
||
this.stringify = new XMLStringifier(options);
|
||
}
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'implementation', {
|
||
value: new XMLDOMImplementation()
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'doctype', {
|
||
get: function() {
|
||
var child, i, len, ref;
|
||
ref = this.children;
|
||
for (i = 0, len = ref.length; i < len; i++) {
|
||
child = ref[i];
|
||
if (child.type === NodeType.DocType) {
|
||
return child;
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'documentElement', {
|
||
get: function() {
|
||
return this.rootObject || null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'inputEncoding', {
|
||
get: function() {
|
||
return null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'strictErrorChecking', {
|
||
get: function() {
|
||
return false;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'xmlEncoding', {
|
||
get: function() {
|
||
if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {
|
||
return this.children[0].encoding;
|
||
} else {
|
||
return null;
|
||
}
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'xmlStandalone', {
|
||
get: function() {
|
||
if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {
|
||
return this.children[0].standalone === 'yes';
|
||
} else {
|
||
return false;
|
||
}
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'xmlVersion', {
|
||
get: function() {
|
||
if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {
|
||
return this.children[0].version;
|
||
} else {
|
||
return "1.0";
|
||
}
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'URL', {
|
||
get: function() {
|
||
return this.documentURI;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'origin', {
|
||
get: function() {
|
||
return null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'compatMode', {
|
||
get: function() {
|
||
return null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'characterSet', {
|
||
get: function() {
|
||
return null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocument.prototype, 'contentType', {
|
||
get: function() {
|
||
return null;
|
||
}
|
||
});
|
||
|
||
XMLDocument.prototype.end = function(writer) {
|
||
var writerOptions;
|
||
writerOptions = {};
|
||
if (!writer) {
|
||
writer = this.options.writer;
|
||
} else if (isPlainObject(writer)) {
|
||
writerOptions = writer;
|
||
writer = this.options.writer;
|
||
}
|
||
return writer.document(this, writer.filterOptions(writerOptions));
|
||
};
|
||
|
||
XMLDocument.prototype.toString = function(options) {
|
||
return this.options.writer.document(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
XMLDocument.prototype.createElement = function(tagName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createDocumentFragment = function() {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createTextNode = function(data) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createComment = function(data) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createCDATASection = function(data) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createProcessingInstruction = function(target, data) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createAttribute = function(name) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createEntityReference = function(name) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.getElementsByTagName = function(tagname) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.importNode = function(importedNode, deep) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createElementNS = function(namespaceURI, qualifiedName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createAttributeNS = function(namespaceURI, qualifiedName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.getElementById = function(elementId) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.adoptNode = function(source) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.normalizeDocument = function() {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.renameNode = function(node, namespaceURI, qualifiedName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.getElementsByClassName = function(classNames) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createEvent = function(eventInterface) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createRange = function() {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createNodeIterator = function(root, whatToShow, filter) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLDocument.prototype.createTreeWalker = function(root, whatToShow, filter) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
return XMLDocument;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 560 */,
|
||
/* 561 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.baggageEntryMetadataSymbol = void 0;
|
||
/**
|
||
* Symbol used to make BaggageEntryMetadata an opaque type
|
||
*/
|
||
exports.baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');
|
||
//# sourceMappingURL=symbol.js.map
|
||
|
||
/***/ }),
|
||
/* 562 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||
|
||
var osName = _interopDefault(__webpack_require__(2));
|
||
|
||
function getUserAgent() {
|
||
try {
|
||
return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
|
||
} catch (error) {
|
||
if (/wmic os get Caption/.test(error.message)) {
|
||
return "Windows <version undetectable>";
|
||
}
|
||
|
||
throw error;
|
||
}
|
||
}
|
||
|
||
exports.getUserAgent = getUserAgent;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 563 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = getPreviousPage
|
||
|
||
const getPage = __webpack_require__(265)
|
||
|
||
function getPreviousPage (octokit, link, headers) {
|
||
return getPage(octokit, link, 'prev', headers)
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 564 */,
|
||
/* 565 */,
|
||
/* 566 */
|
||
/***/ (function(module) {
|
||
|
||
// API
|
||
module.exports = abort;
|
||
|
||
/**
|
||
* Aborts leftover active jobs
|
||
*
|
||
* @param {object} state - current state object
|
||
*/
|
||
function abort(state)
|
||
{
|
||
Object.keys(state.jobs).forEach(clean.bind(state));
|
||
|
||
// reset leftover jobs
|
||
state.jobs = {};
|
||
}
|
||
|
||
/**
|
||
* Cleans up leftover job by invoking abort function for the provided job id
|
||
*
|
||
* @this state
|
||
* @param {string|number} key - job id to abort
|
||
*/
|
||
function clean(key)
|
||
{
|
||
if (typeof this.jobs[key] == 'function')
|
||
{
|
||
this.jobs[key]();
|
||
}
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 567 */,
|
||
/* 568 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
const path = __webpack_require__(622);
|
||
const niceTry = __webpack_require__(948);
|
||
const resolveCommand = __webpack_require__(489);
|
||
const escape = __webpack_require__(462);
|
||
const readShebang = __webpack_require__(389);
|
||
const semver = __webpack_require__(48);
|
||
|
||
const isWin = process.platform === 'win32';
|
||
const isExecutableRegExp = /\.(?:com|exe)$/i;
|
||
const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;
|
||
|
||
// `options.shell` is supported in Node ^4.8.0, ^5.7.0 and >= 6.0.0
|
||
const supportsShellOption = niceTry(() => semver.satisfies(process.version, '^4.8.0 || ^5.7.0 || >= 6.0.0', true)) || false;
|
||
|
||
function detectShebang(parsed) {
|
||
parsed.file = resolveCommand(parsed);
|
||
|
||
const shebang = parsed.file && readShebang(parsed.file);
|
||
|
||
if (shebang) {
|
||
parsed.args.unshift(parsed.file);
|
||
parsed.command = shebang;
|
||
|
||
return resolveCommand(parsed);
|
||
}
|
||
|
||
return parsed.file;
|
||
}
|
||
|
||
function parseNonShell(parsed) {
|
||
if (!isWin) {
|
||
return parsed;
|
||
}
|
||
|
||
// Detect & add support for shebangs
|
||
const commandFile = detectShebang(parsed);
|
||
|
||
// We don't need a shell if the command filename is an executable
|
||
const needsShell = !isExecutableRegExp.test(commandFile);
|
||
|
||
// If a shell is required, use cmd.exe and take care of escaping everything correctly
|
||
// Note that `forceShell` is an hidden option used only in tests
|
||
if (parsed.options.forceShell || needsShell) {
|
||
// Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`
|
||
// The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument
|
||
// Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,
|
||
// we need to double escape them
|
||
const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);
|
||
|
||
// Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\bar)
|
||
// This is necessary otherwise it will always fail with ENOENT in those cases
|
||
parsed.command = path.normalize(parsed.command);
|
||
|
||
// Escape command & arguments
|
||
parsed.command = escape.command(parsed.command);
|
||
parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));
|
||
|
||
const shellCommand = [parsed.command].concat(parsed.args).join(' ');
|
||
|
||
parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`];
|
||
parsed.command = process.env.comspec || 'cmd.exe';
|
||
parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
|
||
}
|
||
|
||
return parsed;
|
||
}
|
||
|
||
function parseShell(parsed) {
|
||
// If node supports the shell option, there's no need to mimic its behavior
|
||
if (supportsShellOption) {
|
||
return parsed;
|
||
}
|
||
|
||
// Mimic node shell option
|
||
// See https://github.com/nodejs/node/blob/b9f6a2dc059a1062776133f3d4fd848c4da7d150/lib/child_process.js#L335
|
||
const shellCommand = [parsed.command].concat(parsed.args).join(' ');
|
||
|
||
if (isWin) {
|
||
parsed.command = typeof parsed.options.shell === 'string' ? parsed.options.shell : process.env.comspec || 'cmd.exe';
|
||
parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`];
|
||
parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
|
||
} else {
|
||
if (typeof parsed.options.shell === 'string') {
|
||
parsed.command = parsed.options.shell;
|
||
} else if (process.platform === 'android') {
|
||
parsed.command = '/system/bin/sh';
|
||
} else {
|
||
parsed.command = '/bin/sh';
|
||
}
|
||
|
||
parsed.args = ['-c', shellCommand];
|
||
}
|
||
|
||
return parsed;
|
||
}
|
||
|
||
function parse(command, args, options) {
|
||
// Normalize arguments, similar to nodejs
|
||
if (args && !Array.isArray(args)) {
|
||
options = args;
|
||
args = null;
|
||
}
|
||
|
||
args = args ? args.slice(0) : []; // Clone array to avoid changing the original
|
||
options = Object.assign({}, options); // Clone object to avoid changing the original
|
||
|
||
// Build our parsed object
|
||
const parsed = {
|
||
command,
|
||
args,
|
||
options,
|
||
file: undefined,
|
||
original: {
|
||
command,
|
||
args,
|
||
},
|
||
};
|
||
|
||
// Delegate further parsing to shell or non-shell
|
||
return options.shell ? parseShell(parsed) : parseNonShell(parsed);
|
||
}
|
||
|
||
module.exports = parse;
|
||
|
||
|
||
/***/ }),
|
||
/* 569 */,
|
||
/* 570 */
|
||
/***/ (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 core = __importStar(__webpack_require__(470));
|
||
const exec = __importStar(__webpack_require__(986));
|
||
exports.supportedPackageManagers = {
|
||
npm: {
|
||
lockFilePatterns: ['package-lock.json', 'yarn.lock'],
|
||
getCacheFolderCommand: 'npm config get cache'
|
||
},
|
||
yarn1: {
|
||
lockFilePatterns: ['yarn.lock'],
|
||
getCacheFolderCommand: 'yarn cache dir'
|
||
},
|
||
yarn2: {
|
||
lockFilePatterns: ['yarn.lock'],
|
||
getCacheFolderCommand: 'yarn config get cacheFolder'
|
||
}
|
||
};
|
||
exports.getCommandOutput = (toolCommand) => __awaiter(void 0, void 0, void 0, function* () {
|
||
const { stdout, stderr, exitCode } = yield exec.getExecOutput(toolCommand);
|
||
if (stderr) {
|
||
throw new Error(stderr);
|
||
}
|
||
return stdout;
|
||
});
|
||
const getPackageManagerVersion = (packageManager, command) => __awaiter(void 0, void 0, void 0, function* () {
|
||
const stdOut = yield exports.getCommandOutput(`${packageManager} ${command}`);
|
||
if (!stdOut) {
|
||
throw new Error(`Could not retrieve version of ${packageManager}`);
|
||
}
|
||
return stdOut;
|
||
});
|
||
exports.getPackageManagerInfo = (packageManager) => __awaiter(void 0, void 0, void 0, function* () {
|
||
if (packageManager === 'npm') {
|
||
return exports.supportedPackageManagers.npm;
|
||
}
|
||
else if (packageManager === 'yarn') {
|
||
const yarnVersion = yield getPackageManagerVersion('yarn', '--version');
|
||
core.debug(`Consumed yarn version is ${yarnVersion}`);
|
||
if (yarnVersion.startsWith('1.')) {
|
||
return exports.supportedPackageManagers.yarn1;
|
||
}
|
||
else {
|
||
return exports.supportedPackageManagers.yarn2;
|
||
}
|
||
}
|
||
else {
|
||
return null;
|
||
}
|
||
});
|
||
exports.getCacheDirectoryPath = (packageManagerInfo, packageManager) => __awaiter(void 0, void 0, void 0, function* () {
|
||
const stdOut = yield exports.getCommandOutput(packageManagerInfo.getCacheFolderCommand);
|
||
if (!stdOut) {
|
||
throw new Error(`Could not get cache folder path for ${packageManager}`);
|
||
}
|
||
core.debug(`${packageManager} path is ${stdOut}`);
|
||
return stdOut;
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
/* 571 */,
|
||
/* 572 */,
|
||
/* 573 */,
|
||
/* 574 */,
|
||
/* 575 */,
|
||
/* 576 */,
|
||
/* 577 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = getPageLinks
|
||
|
||
function getPageLinks (link) {
|
||
link = link.link || link.headers.link || ''
|
||
|
||
const links = {}
|
||
|
||
// link format:
|
||
// '<https://api.github.com/users/aseemk/followers?page=2>; rel="next", <https://api.github.com/users/aseemk/followers?page=2>; rel="last"'
|
||
link.replace(/<([^>]*)>;\s*rel="([\w]*)"/g, (m, uri, type) => {
|
||
links[type] = uri
|
||
})
|
||
|
||
return links
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 578 */,
|
||
/* 579 */,
|
||
/* 580 */,
|
||
/* 581 */,
|
||
/* 582 */
|
||
/***/ (function(module) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var assign, getValue, isArray, isEmpty, isFunction, isObject, isPlainObject,
|
||
slice = [].slice,
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
assign = function() {
|
||
var i, key, len, source, sources, target;
|
||
target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];
|
||
if (isFunction(Object.assign)) {
|
||
Object.assign.apply(null, arguments);
|
||
} else {
|
||
for (i = 0, len = sources.length; i < len; i++) {
|
||
source = sources[i];
|
||
if (source != null) {
|
||
for (key in source) {
|
||
if (!hasProp.call(source, key)) continue;
|
||
target[key] = source[key];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return target;
|
||
};
|
||
|
||
isFunction = function(val) {
|
||
return !!val && Object.prototype.toString.call(val) === '[object Function]';
|
||
};
|
||
|
||
isObject = function(val) {
|
||
var ref;
|
||
return !!val && ((ref = typeof val) === 'function' || ref === 'object');
|
||
};
|
||
|
||
isArray = function(val) {
|
||
if (isFunction(Array.isArray)) {
|
||
return Array.isArray(val);
|
||
} else {
|
||
return Object.prototype.toString.call(val) === '[object Array]';
|
||
}
|
||
};
|
||
|
||
isEmpty = function(val) {
|
||
var key;
|
||
if (isArray(val)) {
|
||
return !val.length;
|
||
} else {
|
||
for (key in val) {
|
||
if (!hasProp.call(val, key)) continue;
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
};
|
||
|
||
isPlainObject = function(val) {
|
||
var ctor, proto;
|
||
return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));
|
||
};
|
||
|
||
getValue = function(obj) {
|
||
if (isFunction(obj.valueOf)) {
|
||
return obj.valueOf();
|
||
} else {
|
||
return obj;
|
||
}
|
||
};
|
||
|
||
module.exports.assign = assign;
|
||
|
||
module.exports.isFunction = isFunction;
|
||
|
||
module.exports.isObject = isObject;
|
||
|
||
module.exports.isArray = isArray;
|
||
|
||
module.exports.isEmpty = isEmpty;
|
||
|
||
module.exports.isPlainObject = isPlainObject;
|
||
|
||
module.exports.getValue = getValue;
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 583 */,
|
||
/* 584 */,
|
||
/* 585 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
Object.defineProperty(exports, "v1", {
|
||
enumerable: true,
|
||
get: function () {
|
||
return _v.default;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "v3", {
|
||
enumerable: true,
|
||
get: function () {
|
||
return _v2.default;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "v4", {
|
||
enumerable: true,
|
||
get: function () {
|
||
return _v3.default;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "v5", {
|
||
enumerable: true,
|
||
get: function () {
|
||
return _v4.default;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "NIL", {
|
||
enumerable: true,
|
||
get: function () {
|
||
return _nil.default;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "version", {
|
||
enumerable: true,
|
||
get: function () {
|
||
return _version.default;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "validate", {
|
||
enumerable: true,
|
||
get: function () {
|
||
return _validate.default;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "stringify", {
|
||
enumerable: true,
|
||
get: function () {
|
||
return _stringify.default;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "parse", {
|
||
enumerable: true,
|
||
get: function () {
|
||
return _parse.default;
|
||
}
|
||
});
|
||
|
||
var _v = _interopRequireDefault(__webpack_require__(173));
|
||
|
||
var _v2 = _interopRequireDefault(__webpack_require__(298));
|
||
|
||
var _v3 = _interopRequireDefault(__webpack_require__(606));
|
||
|
||
var _v4 = _interopRequireDefault(__webpack_require__(516));
|
||
|
||
var _nil = _interopRequireDefault(__webpack_require__(24));
|
||
|
||
var _version = _interopRequireDefault(__webpack_require__(104));
|
||
|
||
var _validate = _interopRequireDefault(__webpack_require__(676));
|
||
|
||
var _stringify = _interopRequireDefault(__webpack_require__(164));
|
||
|
||
var _parse = _interopRequireDefault(__webpack_require__(347));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
/***/ }),
|
||
/* 586 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = octokitRestApiEndpoints;
|
||
|
||
const ROUTES = __webpack_require__(705);
|
||
|
||
function octokitRestApiEndpoints(octokit) {
|
||
// Aliasing scopes for backward compatibility
|
||
// See https://github.com/octokit/rest.js/pull/1134
|
||
ROUTES.gitdata = ROUTES.git;
|
||
ROUTES.authorization = ROUTES.oauthAuthorizations;
|
||
ROUTES.pullRequests = ROUTES.pulls;
|
||
|
||
octokit.registerEndpoints(ROUTES);
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 587 */,
|
||
/* 588 */,
|
||
/* 589 */,
|
||
/* 590 */,
|
||
/* 591 */,
|
||
/* 592 */,
|
||
/* 593 */,
|
||
/* 594 */,
|
||
/* 595 */,
|
||
/* 596 */,
|
||
/* 597 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLDTDElement, XMLNode,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
module.exports = XMLDTDElement = (function(superClass) {
|
||
extend(XMLDTDElement, superClass);
|
||
|
||
function XMLDTDElement(parent, name, value) {
|
||
XMLDTDElement.__super__.constructor.call(this, parent);
|
||
if (name == null) {
|
||
throw new Error("Missing DTD element name. " + this.debugInfo());
|
||
}
|
||
if (!value) {
|
||
value = '(#PCDATA)';
|
||
}
|
||
if (Array.isArray(value)) {
|
||
value = '(' + value.join(',') + ')';
|
||
}
|
||
this.name = this.stringify.name(name);
|
||
this.type = NodeType.ElementDeclaration;
|
||
this.value = this.stringify.dtdElementValue(value);
|
||
}
|
||
|
||
XMLDTDElement.prototype.toString = function(options) {
|
||
return this.options.writer.dtdElement(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
return XMLDTDElement;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 598 */,
|
||
/* 599 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.BaggageImpl = void 0;
|
||
var BaggageImpl = /** @class */ (function () {
|
||
function BaggageImpl(entries) {
|
||
this._entries = entries ? new Map(entries) : new Map();
|
||
}
|
||
BaggageImpl.prototype.getEntry = function (key) {
|
||
var entry = this._entries.get(key);
|
||
if (!entry) {
|
||
return undefined;
|
||
}
|
||
return Object.assign({}, entry);
|
||
};
|
||
BaggageImpl.prototype.getAllEntries = function () {
|
||
return Array.from(this._entries.entries()).map(function (_a) {
|
||
var k = _a[0], v = _a[1];
|
||
return [k, v];
|
||
});
|
||
};
|
||
BaggageImpl.prototype.setEntry = function (key, entry) {
|
||
var newBaggage = new BaggageImpl(this._entries);
|
||
newBaggage._entries.set(key, entry);
|
||
return newBaggage;
|
||
};
|
||
BaggageImpl.prototype.removeEntry = function (key) {
|
||
var newBaggage = new BaggageImpl(this._entries);
|
||
newBaggage._entries.delete(key);
|
||
return newBaggage;
|
||
};
|
||
BaggageImpl.prototype.removeEntries = function () {
|
||
var keys = [];
|
||
for (var _i = 0; _i < arguments.length; _i++) {
|
||
keys[_i] = arguments[_i];
|
||
}
|
||
var newBaggage = new BaggageImpl(this._entries);
|
||
for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
|
||
var key = keys_1[_a];
|
||
newBaggage._entries.delete(key);
|
||
}
|
||
return newBaggage;
|
||
};
|
||
BaggageImpl.prototype.clear = function () {
|
||
return new BaggageImpl();
|
||
};
|
||
return BaggageImpl;
|
||
}());
|
||
exports.BaggageImpl = BaggageImpl;
|
||
//# sourceMappingURL=baggage.js.map
|
||
|
||
/***/ }),
|
||
/* 600 */,
|
||
/* 601 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.getOptions = void 0;
|
||
const core = __importStar(__webpack_require__(470));
|
||
/**
|
||
* Returns a copy with defaults filled in.
|
||
*/
|
||
function getOptions(copy) {
|
||
const result = {
|
||
followSymbolicLinks: true,
|
||
implicitDescendants: true,
|
||
matchDirectories: true,
|
||
omitBrokenSymbolicLinks: true
|
||
};
|
||
if (copy) {
|
||
if (typeof copy.followSymbolicLinks === 'boolean') {
|
||
result.followSymbolicLinks = copy.followSymbolicLinks;
|
||
core.debug(`followSymbolicLinks '${result.followSymbolicLinks}'`);
|
||
}
|
||
if (typeof copy.implicitDescendants === 'boolean') {
|
||
result.implicitDescendants = copy.implicitDescendants;
|
||
core.debug(`implicitDescendants '${result.implicitDescendants}'`);
|
||
}
|
||
if (typeof copy.matchDirectories === 'boolean') {
|
||
result.matchDirectories = copy.matchDirectories;
|
||
core.debug(`matchDirectories '${result.matchDirectories}'`);
|
||
}
|
||
if (typeof copy.omitBrokenSymbolicLinks === 'boolean') {
|
||
result.omitBrokenSymbolicLinks = copy.omitBrokenSymbolicLinks;
|
||
core.debug(`omitBrokenSymbolicLinks '${result.omitBrokenSymbolicLinks}'`);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
exports.getOptions = getOptions;
|
||
//# sourceMappingURL=internal-glob-options-helper.js.map
|
||
|
||
/***/ }),
|
||
/* 602 */
|
||
/***/ (function(module) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var XMLStringifier,
|
||
bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
module.exports = XMLStringifier = (function() {
|
||
function XMLStringifier(options) {
|
||
this.assertLegalName = bind(this.assertLegalName, this);
|
||
this.assertLegalChar = bind(this.assertLegalChar, this);
|
||
var key, ref, value;
|
||
options || (options = {});
|
||
this.options = options;
|
||
if (!this.options.version) {
|
||
this.options.version = '1.0';
|
||
}
|
||
ref = options.stringify || {};
|
||
for (key in ref) {
|
||
if (!hasProp.call(ref, key)) continue;
|
||
value = ref[key];
|
||
this[key] = value;
|
||
}
|
||
}
|
||
|
||
XMLStringifier.prototype.name = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalName('' + val || '');
|
||
};
|
||
|
||
XMLStringifier.prototype.text = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalChar(this.textEscape('' + val || ''));
|
||
};
|
||
|
||
XMLStringifier.prototype.cdata = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
val = '' + val || '';
|
||
val = val.replace(']]>', ']]]]><![CDATA[>');
|
||
return this.assertLegalChar(val);
|
||
};
|
||
|
||
XMLStringifier.prototype.comment = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
val = '' + val || '';
|
||
if (val.match(/--/)) {
|
||
throw new Error("Comment text cannot contain double-hypen: " + val);
|
||
}
|
||
return this.assertLegalChar(val);
|
||
};
|
||
|
||
XMLStringifier.prototype.raw = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return '' + val || '';
|
||
};
|
||
|
||
XMLStringifier.prototype.attValue = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalChar(this.attEscape(val = '' + val || ''));
|
||
};
|
||
|
||
XMLStringifier.prototype.insTarget = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalChar('' + val || '');
|
||
};
|
||
|
||
XMLStringifier.prototype.insValue = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
val = '' + val || '';
|
||
if (val.match(/\?>/)) {
|
||
throw new Error("Invalid processing instruction value: " + val);
|
||
}
|
||
return this.assertLegalChar(val);
|
||
};
|
||
|
||
XMLStringifier.prototype.xmlVersion = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
val = '' + val || '';
|
||
if (!val.match(/1\.[0-9]+/)) {
|
||
throw new Error("Invalid version number: " + val);
|
||
}
|
||
return val;
|
||
};
|
||
|
||
XMLStringifier.prototype.xmlEncoding = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
val = '' + val || '';
|
||
if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {
|
||
throw new Error("Invalid encoding: " + val);
|
||
}
|
||
return this.assertLegalChar(val);
|
||
};
|
||
|
||
XMLStringifier.prototype.xmlStandalone = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
if (val) {
|
||
return "yes";
|
||
} else {
|
||
return "no";
|
||
}
|
||
};
|
||
|
||
XMLStringifier.prototype.dtdPubID = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalChar('' + val || '');
|
||
};
|
||
|
||
XMLStringifier.prototype.dtdSysID = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalChar('' + val || '');
|
||
};
|
||
|
||
XMLStringifier.prototype.dtdElementValue = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalChar('' + val || '');
|
||
};
|
||
|
||
XMLStringifier.prototype.dtdAttType = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalChar('' + val || '');
|
||
};
|
||
|
||
XMLStringifier.prototype.dtdAttDefault = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalChar('' + val || '');
|
||
};
|
||
|
||
XMLStringifier.prototype.dtdEntityValue = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalChar('' + val || '');
|
||
};
|
||
|
||
XMLStringifier.prototype.dtdNData = function(val) {
|
||
if (this.options.noValidation) {
|
||
return val;
|
||
}
|
||
return this.assertLegalChar('' + val || '');
|
||
};
|
||
|
||
XMLStringifier.prototype.convertAttKey = '@';
|
||
|
||
XMLStringifier.prototype.convertPIKey = '?';
|
||
|
||
XMLStringifier.prototype.convertTextKey = '#text';
|
||
|
||
XMLStringifier.prototype.convertCDataKey = '#cdata';
|
||
|
||
XMLStringifier.prototype.convertCommentKey = '#comment';
|
||
|
||
XMLStringifier.prototype.convertRawKey = '#raw';
|
||
|
||
XMLStringifier.prototype.assertLegalChar = function(str) {
|
||
var regex, res;
|
||
if (this.options.noValidation) {
|
||
return str;
|
||
}
|
||
regex = '';
|
||
if (this.options.version === '1.0') {
|
||
regex = /[\0-\x08\x0B\f\x0E-\x1F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
|
||
if (res = str.match(regex)) {
|
||
throw new Error("Invalid character in string: " + str + " at index " + res.index);
|
||
}
|
||
} else if (this.options.version === '1.1') {
|
||
regex = /[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
|
||
if (res = str.match(regex)) {
|
||
throw new Error("Invalid character in string: " + str + " at index " + res.index);
|
||
}
|
||
}
|
||
return str;
|
||
};
|
||
|
||
XMLStringifier.prototype.assertLegalName = function(str) {
|
||
var regex;
|
||
if (this.options.noValidation) {
|
||
return str;
|
||
}
|
||
this.assertLegalChar(str);
|
||
regex = /^([:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])([\x2D\.0-:A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])*$/;
|
||
if (!str.match(regex)) {
|
||
throw new Error("Invalid character in name");
|
||
}
|
||
return str;
|
||
};
|
||
|
||
XMLStringifier.prototype.textEscape = function(str) {
|
||
var ampregex;
|
||
if (this.options.noValidation) {
|
||
return str;
|
||
}
|
||
ampregex = this.options.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g;
|
||
return str.replace(ampregex, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\r/g, '
');
|
||
};
|
||
|
||
XMLStringifier.prototype.attEscape = function(str) {
|
||
var ampregex;
|
||
if (this.options.noValidation) {
|
||
return str;
|
||
}
|
||
ampregex = this.options.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g;
|
||
return str.replace(ampregex, '&').replace(/</g, '<').replace(/"/g, '"').replace(/\t/g, '	').replace(/\n/g, '
').replace(/\r/g, '
');
|
||
};
|
||
|
||
return XMLStringifier;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 603 */,
|
||
/* 604 */,
|
||
/* 605 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("http");
|
||
|
||
/***/ }),
|
||
/* 606 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
|
||
var _rng = _interopRequireDefault(__webpack_require__(944));
|
||
|
||
var _stringify = _interopRequireDefault(__webpack_require__(164));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
function v4(options, buf, offset) {
|
||
options = options || {};
|
||
|
||
const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
|
||
|
||
|
||
rnds[6] = rnds[6] & 0x0f | 0x40;
|
||
rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
|
||
|
||
if (buf) {
|
||
offset = offset || 0;
|
||
|
||
for (let i = 0; i < 16; ++i) {
|
||
buf[offset + i] = rnds[i];
|
||
}
|
||
|
||
return buf;
|
||
}
|
||
|
||
return (0, _stringify.default)(rnds);
|
||
}
|
||
|
||
var _default = v4;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 607 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=span_context.js.map
|
||
|
||
/***/ }),
|
||
/* 608 */
|
||
/***/ (function(module) {
|
||
|
||
/*! *****************************************************************************
|
||
Copyright (c) Microsoft Corporation.
|
||
|
||
Permission to use, copy, modify, and/or distribute this software for any
|
||
purpose with or without fee is hereby granted.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||
PERFORMANCE OF THIS SOFTWARE.
|
||
***************************************************************************** */
|
||
/* global global, define, System, Reflect, Promise */
|
||
var __extends;
|
||
var __assign;
|
||
var __rest;
|
||
var __decorate;
|
||
var __param;
|
||
var __metadata;
|
||
var __awaiter;
|
||
var __generator;
|
||
var __exportStar;
|
||
var __values;
|
||
var __read;
|
||
var __spread;
|
||
var __spreadArrays;
|
||
var __spreadArray;
|
||
var __await;
|
||
var __asyncGenerator;
|
||
var __asyncDelegator;
|
||
var __asyncValues;
|
||
var __makeTemplateObject;
|
||
var __importStar;
|
||
var __importDefault;
|
||
var __classPrivateFieldGet;
|
||
var __classPrivateFieldSet;
|
||
var __createBinding;
|
||
(function (factory) {
|
||
var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
|
||
if (typeof define === "function" && define.amd) {
|
||
define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
|
||
}
|
||
else if ( true && typeof module.exports === "object") {
|
||
factory(createExporter(root, createExporter(module.exports)));
|
||
}
|
||
else {
|
||
factory(createExporter(root));
|
||
}
|
||
function createExporter(exports, previous) {
|
||
if (exports !== root) {
|
||
if (typeof Object.create === "function") {
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
}
|
||
else {
|
||
exports.__esModule = true;
|
||
}
|
||
}
|
||
return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
|
||
}
|
||
})
|
||
(function (exporter) {
|
||
var extendStatics = Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
|
||
__extends = function (d, b) {
|
||
if (typeof b !== "function" && b !== null)
|
||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||
extendStatics(d, b);
|
||
function __() { this.constructor = d; }
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
|
||
__assign = Object.assign || function (t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__rest = function (s, e) {
|
||
var t = {};
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||
t[p] = s[p];
|
||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||
t[p[i]] = s[p[i]];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__decorate = function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
|
||
__param = function (paramIndex, decorator) {
|
||
return function (target, key) { decorator(target, key, paramIndex); }
|
||
};
|
||
|
||
__metadata = function (metadataKey, metadataValue) {
|
||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
|
||
};
|
||
|
||
__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());
|
||
});
|
||
};
|
||
|
||
__generator = function (thisArg, body) {
|
||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||
function step(op) {
|
||
if (f) throw new TypeError("Generator is already executing.");
|
||
while (_) try {
|
||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||
switch (op[0]) {
|
||
case 0: case 1: t = op; break;
|
||
case 4: _.label++; return { value: op[1], done: false };
|
||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||
default:
|
||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||
if (t[2]) _.ops.pop();
|
||
_.trys.pop(); continue;
|
||
}
|
||
op = body.call(thisArg, _);
|
||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||
}
|
||
};
|
||
|
||
__exportStar = function(m, o) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
|
||
};
|
||
|
||
__createBinding = Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
|
||
__values = function (o) {
|
||
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
||
if (m) return m.call(o);
|
||
if (o && typeof o.length === "number") return {
|
||
next: function () {
|
||
if (o && i >= o.length) o = void 0;
|
||
return { value: o && o[i++], done: !o };
|
||
}
|
||
};
|
||
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
||
};
|
||
|
||
__read = function (o, n) {
|
||
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
||
if (!m) return o;
|
||
var i = m.call(o), r, ar = [], e;
|
||
try {
|
||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
||
}
|
||
catch (error) { e = { error: error }; }
|
||
finally {
|
||
try {
|
||
if (r && !r.done && (m = i["return"])) m.call(i);
|
||
}
|
||
finally { if (e) throw e.error; }
|
||
}
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spread = function () {
|
||
for (var ar = [], i = 0; i < arguments.length; i++)
|
||
ar = ar.concat(__read(arguments[i]));
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spreadArrays = function () {
|
||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||
r[k] = a[j];
|
||
return r;
|
||
};
|
||
|
||
__spreadArray = function (to, from, pack) {
|
||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||
if (ar || !(i in from)) {
|
||
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||
ar[i] = from[i];
|
||
}
|
||
}
|
||
return to.concat(ar || from);
|
||
};
|
||
|
||
__await = function (v) {
|
||
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
||
};
|
||
|
||
__asyncGenerator = function (thisArg, _arguments, generator) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
||
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
||
function fulfill(value) { resume("next", value); }
|
||
function reject(value) { resume("throw", value); }
|
||
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
||
};
|
||
|
||
__asyncDelegator = function (o) {
|
||
var i, p;
|
||
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
||
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
||
};
|
||
|
||
__asyncValues = function (o) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||
};
|
||
|
||
__makeTemplateObject = function (cooked, raw) {
|
||
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
||
return cooked;
|
||
};
|
||
|
||
var __setModuleDefault = Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
};
|
||
|
||
__importStar = function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
|
||
__importDefault = function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
|
||
__classPrivateFieldGet = function (receiver, state, kind, f) {
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
||
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
||
};
|
||
|
||
__classPrivateFieldSet = function (receiver, state, value, kind, f) {
|
||
if (kind === "m") throw new TypeError("Private method is not writable");
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
||
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
||
};
|
||
|
||
exporter("__extends", __extends);
|
||
exporter("__assign", __assign);
|
||
exporter("__rest", __rest);
|
||
exporter("__decorate", __decorate);
|
||
exporter("__param", __param);
|
||
exporter("__metadata", __metadata);
|
||
exporter("__awaiter", __awaiter);
|
||
exporter("__generator", __generator);
|
||
exporter("__exportStar", __exportStar);
|
||
exporter("__createBinding", __createBinding);
|
||
exporter("__values", __values);
|
||
exporter("__read", __read);
|
||
exporter("__spread", __spread);
|
||
exporter("__spreadArrays", __spreadArrays);
|
||
exporter("__spreadArray", __spreadArray);
|
||
exporter("__await", __await);
|
||
exporter("__asyncGenerator", __asyncGenerator);
|
||
exporter("__asyncDelegator", __asyncDelegator);
|
||
exporter("__asyncValues", __asyncValues);
|
||
exporter("__makeTemplateObject", __makeTemplateObject);
|
||
exporter("__importStar", __importStar);
|
||
exporter("__importDefault", __importDefault);
|
||
exporter("__classPrivateFieldGet", __classPrivateFieldGet);
|
||
exporter("__classPrivateFieldSet", __classPrivateFieldSet);
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
/* 609 */,
|
||
/* 610 */,
|
||
/* 611 */,
|
||
/* 612 */,
|
||
/* 613 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
const Octokit = __webpack_require__(529);
|
||
|
||
const CORE_PLUGINS = [
|
||
__webpack_require__(190),
|
||
__webpack_require__(19), // deprecated: remove in v17
|
||
__webpack_require__(372),
|
||
__webpack_require__(148),
|
||
__webpack_require__(248),
|
||
__webpack_require__(586),
|
||
__webpack_require__(430),
|
||
|
||
__webpack_require__(850) // deprecated: remove in v17
|
||
];
|
||
|
||
module.exports = Octokit.plugin(CORE_PLUGINS);
|
||
|
||
|
||
/***/ }),
|
||
/* 614 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("events");
|
||
|
||
/***/ }),
|
||
/* 615 */,
|
||
/* 616 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
|
||
var _crypto = _interopRequireDefault(__webpack_require__(417));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
function sha1(bytes) {
|
||
if (Array.isArray(bytes)) {
|
||
bytes = Buffer.from(bytes);
|
||
} else if (typeof bytes === 'string') {
|
||
bytes = Buffer.from(bytes, 'utf8');
|
||
}
|
||
|
||
return _crypto.default.createHash('sha1').update(bytes).digest();
|
||
}
|
||
|
||
var _default = sha1;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 617 */,
|
||
/* 618 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
function getProxyUrl(reqUrl) {
|
||
let usingSsl = reqUrl.protocol === 'https:';
|
||
let proxyUrl;
|
||
if (checkBypass(reqUrl)) {
|
||
return proxyUrl;
|
||
}
|
||
let proxyVar;
|
||
if (usingSsl) {
|
||
proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY'];
|
||
}
|
||
else {
|
||
proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY'];
|
||
}
|
||
if (proxyVar) {
|
||
proxyUrl = new URL(proxyVar);
|
||
}
|
||
return proxyUrl;
|
||
}
|
||
exports.getProxyUrl = getProxyUrl;
|
||
function checkBypass(reqUrl) {
|
||
if (!reqUrl.hostname) {
|
||
return false;
|
||
}
|
||
let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
|
||
if (!noProxy) {
|
||
return false;
|
||
}
|
||
// Determine the request port
|
||
let reqPort;
|
||
if (reqUrl.port) {
|
||
reqPort = Number(reqUrl.port);
|
||
}
|
||
else if (reqUrl.protocol === 'http:') {
|
||
reqPort = 80;
|
||
}
|
||
else if (reqUrl.protocol === 'https:') {
|
||
reqPort = 443;
|
||
}
|
||
// Format the request hostname and hostname with port
|
||
let upperReqHosts = [reqUrl.hostname.toUpperCase()];
|
||
if (typeof reqPort === 'number') {
|
||
upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
|
||
}
|
||
// Compare request host against noproxy
|
||
for (let upperNoProxyItem of noProxy
|
||
.split(',')
|
||
.map(x => x.trim().toUpperCase())
|
||
.filter(x => x)) {
|
||
if (upperReqHosts.some(x => x === upperNoProxyItem)) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
exports.checkBypass = checkBypass;
|
||
|
||
|
||
/***/ }),
|
||
/* 619 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||
|
||
var osName = _interopDefault(__webpack_require__(2));
|
||
|
||
function getUserAgent() {
|
||
try {
|
||
return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
|
||
} catch (error) {
|
||
if (/wmic os get Caption/.test(error.message)) {
|
||
return "Windows <version undetectable>";
|
||
}
|
||
|
||
throw error;
|
||
}
|
||
}
|
||
|
||
exports.getUserAgent = getUserAgent;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 620 */,
|
||
/* 621 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
const path = __webpack_require__(622);
|
||
const pathKey = __webpack_require__(39);
|
||
|
||
module.exports = opts => {
|
||
opts = Object.assign({
|
||
cwd: process.cwd(),
|
||
path: process.env[pathKey()]
|
||
}, opts);
|
||
|
||
let prev;
|
||
let pth = path.resolve(opts.cwd);
|
||
const ret = [];
|
||
|
||
while (prev !== pth) {
|
||
ret.push(path.join(pth, 'node_modules/.bin'));
|
||
prev = pth;
|
||
pth = path.resolve(pth, '..');
|
||
}
|
||
|
||
// ensure the running `node` binary is used
|
||
ret.push(path.dirname(process.execPath));
|
||
|
||
return ret.concat(opts.path).join(path.delimiter);
|
||
};
|
||
|
||
module.exports.env = opts => {
|
||
opts = Object.assign({
|
||
env: process.env
|
||
}, opts);
|
||
|
||
const env = Object.assign({}, opts.env);
|
||
const path = pathKey({env});
|
||
|
||
opts.path = env[path];
|
||
env[path] = module.exports(opts);
|
||
|
||
return env;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 622 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("path");
|
||
|
||
/***/ }),
|
||
/* 623 */,
|
||
/* 624 */,
|
||
/* 625 */,
|
||
/* 626 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
|
||
/*!
|
||
* isobject <https://github.com/jonschlinkert/isobject>
|
||
*
|
||
* Copyright (c) 2014-2017, Jon Schlinkert.
|
||
* Released under the MIT License.
|
||
*/
|
||
|
||
function isObject(val) {
|
||
return val != null && typeof val === 'object' && Array.isArray(val) === false;
|
||
}
|
||
|
||
/*!
|
||
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
|
||
*
|
||
* Copyright (c) 2014-2017, Jon Schlinkert.
|
||
* Released under the MIT License.
|
||
*/
|
||
|
||
function isObjectObject(o) {
|
||
return isObject(o) === true
|
||
&& Object.prototype.toString.call(o) === '[object Object]';
|
||
}
|
||
|
||
function isPlainObject(o) {
|
||
var ctor,prot;
|
||
|
||
if (isObjectObject(o) === false) return false;
|
||
|
||
// If has modified constructor
|
||
ctor = o.constructor;
|
||
if (typeof ctor !== 'function') return false;
|
||
|
||
// If has modified prototype
|
||
prot = ctor.prototype;
|
||
if (isObjectObject(prot) === false) return false;
|
||
|
||
// If constructor does not have an Object-specific method
|
||
if (prot.hasOwnProperty('isPrototypeOf') === false) {
|
||
return false;
|
||
}
|
||
|
||
// Most likely a plain Object
|
||
return true;
|
||
}
|
||
|
||
module.exports = isPlainObject;
|
||
|
||
|
||
/***/ }),
|
||
/* 627 */,
|
||
/* 628 */,
|
||
/* 629 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;
|
||
var trace_flags_1 = __webpack_require__(975);
|
||
var VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;
|
||
var VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;
|
||
exports.INVALID_SPANID = '0000000000000000';
|
||
exports.INVALID_TRACEID = '00000000000000000000000000000000';
|
||
exports.INVALID_SPAN_CONTEXT = {
|
||
traceId: exports.INVALID_TRACEID,
|
||
spanId: exports.INVALID_SPANID,
|
||
traceFlags: trace_flags_1.TraceFlags.NONE,
|
||
};
|
||
function isValidTraceId(traceId) {
|
||
return VALID_TRACEID_REGEX.test(traceId) && traceId !== exports.INVALID_TRACEID;
|
||
}
|
||
exports.isValidTraceId = isValidTraceId;
|
||
function isValidSpanId(spanId) {
|
||
return VALID_SPANID_REGEX.test(spanId) && spanId !== exports.INVALID_SPANID;
|
||
}
|
||
exports.isValidSpanId = isValidSpanId;
|
||
/**
|
||
* Returns true if this {@link SpanContext} is valid.
|
||
* @return true if this {@link SpanContext} is valid.
|
||
*/
|
||
function isSpanContextValid(spanContext) {
|
||
return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));
|
||
}
|
||
exports.isSpanContextValid = isSpanContextValid;
|
||
//# sourceMappingURL=spancontext-utils.js.map
|
||
|
||
/***/ }),
|
||
/* 630 */,
|
||
/* 631 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("net");
|
||
|
||
/***/ }),
|
||
/* 632 */,
|
||
/* 633 */,
|
||
/* 634 */,
|
||
/* 635 */,
|
||
/* 636 */,
|
||
/* 637 */,
|
||
/* 638 */
|
||
/***/ (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 core = __importStar(__webpack_require__(470));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const utils = __importStar(__webpack_require__(15));
|
||
const cacheHttpClient = __importStar(__webpack_require__(114));
|
||
const tar_1 = __webpack_require__(434);
|
||
class ValidationError extends Error {
|
||
constructor(message) {
|
||
super(message);
|
||
this.name = 'ValidationError';
|
||
Object.setPrototypeOf(this, ValidationError.prototype);
|
||
}
|
||
}
|
||
exports.ValidationError = ValidationError;
|
||
class ReserveCacheError extends Error {
|
||
constructor(message) {
|
||
super(message);
|
||
this.name = 'ReserveCacheError';
|
||
Object.setPrototypeOf(this, ReserveCacheError.prototype);
|
||
}
|
||
}
|
||
exports.ReserveCacheError = ReserveCacheError;
|
||
function checkPaths(paths) {
|
||
if (!paths || paths.length === 0) {
|
||
throw new ValidationError(`Path Validation Error: At least one directory or file path is required`);
|
||
}
|
||
}
|
||
function checkKey(key) {
|
||
if (key.length > 512) {
|
||
throw new ValidationError(`Key Validation Error: ${key} cannot be larger than 512 characters.`);
|
||
}
|
||
const regex = /^[^,]*$/;
|
||
if (!regex.test(key)) {
|
||
throw new ValidationError(`Key Validation Error: ${key} cannot contain commas.`);
|
||
}
|
||
}
|
||
/**
|
||
* Restores cache from keys
|
||
*
|
||
* @param paths a list of file paths to restore from the cache
|
||
* @param primaryKey an explicit key for restoring the cache
|
||
* @param restoreKeys an optional ordered list of keys to use for restoring the cache if no cache hit occurred for key
|
||
* @param downloadOptions cache download options
|
||
* @returns string returns the key for the cache hit, otherwise returns undefined
|
||
*/
|
||
function restoreCache(paths, primaryKey, restoreKeys, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
checkPaths(paths);
|
||
restoreKeys = restoreKeys || [];
|
||
const keys = [primaryKey, ...restoreKeys];
|
||
core.debug('Resolved Keys:');
|
||
core.debug(JSON.stringify(keys));
|
||
if (keys.length > 10) {
|
||
throw new ValidationError(`Key Validation Error: Keys are limited to a maximum of 10.`);
|
||
}
|
||
for (const key of keys) {
|
||
checkKey(key);
|
||
}
|
||
const compressionMethod = yield utils.getCompressionMethod();
|
||
// path are needed to compute version
|
||
const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, {
|
||
compressionMethod
|
||
});
|
||
if (!(cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.archiveLocation)) {
|
||
// Cache not found
|
||
return undefined;
|
||
}
|
||
const archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod));
|
||
core.debug(`Archive Path: ${archivePath}`);
|
||
try {
|
||
// Download the cache from the cache entry
|
||
yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options);
|
||
if (core.isDebug()) {
|
||
yield tar_1.listTar(archivePath, compressionMethod);
|
||
}
|
||
const archiveFileSize = utils.getArchiveFileSizeIsBytes(archivePath);
|
||
core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`);
|
||
yield tar_1.extractTar(archivePath, compressionMethod);
|
||
core.info('Cache restored successfully');
|
||
}
|
||
finally {
|
||
// Try to delete the archive to save space
|
||
try {
|
||
yield utils.unlinkFile(archivePath);
|
||
}
|
||
catch (error) {
|
||
core.debug(`Failed to delete archive: ${error}`);
|
||
}
|
||
}
|
||
return cacheEntry.cacheKey;
|
||
});
|
||
}
|
||
exports.restoreCache = restoreCache;
|
||
/**
|
||
* Saves a list of files with the specified key
|
||
*
|
||
* @param paths a list of file paths to be cached
|
||
* @param key an explicit key for restoring the cache
|
||
* @param options cache upload options
|
||
* @returns number returns cacheId if the cache was saved successfully and throws an error if save fails
|
||
*/
|
||
function saveCache(paths, key, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
checkPaths(paths);
|
||
checkKey(key);
|
||
const compressionMethod = yield utils.getCompressionMethod();
|
||
core.debug('Reserving Cache');
|
||
const cacheId = yield cacheHttpClient.reserveCache(key, paths, {
|
||
compressionMethod
|
||
});
|
||
if (cacheId === -1) {
|
||
throw new ReserveCacheError(`Unable to reserve cache with key ${key}, another job may be creating this cache.`);
|
||
}
|
||
core.debug(`Cache ID: ${cacheId}`);
|
||
const cachePaths = yield utils.resolvePaths(paths);
|
||
core.debug('Cache Paths:');
|
||
core.debug(`${JSON.stringify(cachePaths)}`);
|
||
const archiveFolder = yield utils.createTempDirectory();
|
||
const archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod));
|
||
core.debug(`Archive Path: ${archivePath}`);
|
||
yield tar_1.createTar(archiveFolder, cachePaths, compressionMethod);
|
||
if (core.isDebug()) {
|
||
yield tar_1.listTar(archivePath, compressionMethod);
|
||
}
|
||
const fileSizeLimit = 5 * 1024 * 1024 * 1024; // 5GB per repo limit
|
||
const archiveFileSize = utils.getArchiveFileSizeIsBytes(archivePath);
|
||
core.debug(`File Size: ${archiveFileSize}`);
|
||
if (archiveFileSize > fileSizeLimit) {
|
||
throw new Error(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B) is over the 5GB limit, not saving cache.`);
|
||
}
|
||
core.debug(`Saving Cache (ID: ${cacheId})`);
|
||
yield cacheHttpClient.saveCache(cacheId, archivePath, options);
|
||
return cacheId;
|
||
});
|
||
}
|
||
exports.saveCache = saveCache;
|
||
//# sourceMappingURL=cache.js.map
|
||
|
||
/***/ }),
|
||
/* 639 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var XMLCharacterData, XMLNode,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
module.exports = XMLCharacterData = (function(superClass) {
|
||
extend(XMLCharacterData, superClass);
|
||
|
||
function XMLCharacterData(parent) {
|
||
XMLCharacterData.__super__.constructor.call(this, parent);
|
||
this.value = '';
|
||
}
|
||
|
||
Object.defineProperty(XMLCharacterData.prototype, 'data', {
|
||
get: function() {
|
||
return this.value;
|
||
},
|
||
set: function(value) {
|
||
return this.value = value || '';
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLCharacterData.prototype, 'length', {
|
||
get: function() {
|
||
return this.value.length;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLCharacterData.prototype, 'textContent', {
|
||
get: function() {
|
||
return this.value;
|
||
},
|
||
set: function(value) {
|
||
return this.value = value || '';
|
||
}
|
||
});
|
||
|
||
XMLCharacterData.prototype.clone = function() {
|
||
return Object.create(this);
|
||
};
|
||
|
||
XMLCharacterData.prototype.substringData = function(offset, count) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLCharacterData.prototype.appendData = function(arg) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLCharacterData.prototype.insertData = function(offset, arg) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLCharacterData.prototype.deleteData = function(offset, count) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLCharacterData.prototype.replaceData = function(offset, count, arg) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLCharacterData.prototype.isEqualNode = function(node) {
|
||
if (!XMLCharacterData.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {
|
||
return false;
|
||
}
|
||
if (node.data !== this.data) {
|
||
return false;
|
||
}
|
||
return true;
|
||
};
|
||
|
||
return XMLCharacterData;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 640 */
|
||
/***/ (function(module) {
|
||
|
||
/*! *****************************************************************************
|
||
Copyright (c) Microsoft Corporation.
|
||
|
||
Permission to use, copy, modify, and/or distribute this software for any
|
||
purpose with or without fee is hereby granted.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||
PERFORMANCE OF THIS SOFTWARE.
|
||
***************************************************************************** */
|
||
/* global global, define, System, Reflect, Promise */
|
||
var __extends;
|
||
var __assign;
|
||
var __rest;
|
||
var __decorate;
|
||
var __param;
|
||
var __metadata;
|
||
var __awaiter;
|
||
var __generator;
|
||
var __exportStar;
|
||
var __values;
|
||
var __read;
|
||
var __spread;
|
||
var __spreadArrays;
|
||
var __spreadArray;
|
||
var __await;
|
||
var __asyncGenerator;
|
||
var __asyncDelegator;
|
||
var __asyncValues;
|
||
var __makeTemplateObject;
|
||
var __importStar;
|
||
var __importDefault;
|
||
var __classPrivateFieldGet;
|
||
var __classPrivateFieldSet;
|
||
var __createBinding;
|
||
(function (factory) {
|
||
var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
|
||
if (typeof define === "function" && define.amd) {
|
||
define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
|
||
}
|
||
else if ( true && typeof module.exports === "object") {
|
||
factory(createExporter(root, createExporter(module.exports)));
|
||
}
|
||
else {
|
||
factory(createExporter(root));
|
||
}
|
||
function createExporter(exports, previous) {
|
||
if (exports !== root) {
|
||
if (typeof Object.create === "function") {
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
}
|
||
else {
|
||
exports.__esModule = true;
|
||
}
|
||
}
|
||
return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
|
||
}
|
||
})
|
||
(function (exporter) {
|
||
var extendStatics = Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
|
||
__extends = function (d, b) {
|
||
if (typeof b !== "function" && b !== null)
|
||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||
extendStatics(d, b);
|
||
function __() { this.constructor = d; }
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
|
||
__assign = Object.assign || function (t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__rest = function (s, e) {
|
||
var t = {};
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||
t[p] = s[p];
|
||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||
t[p[i]] = s[p[i]];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__decorate = function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
|
||
__param = function (paramIndex, decorator) {
|
||
return function (target, key) { decorator(target, key, paramIndex); }
|
||
};
|
||
|
||
__metadata = function (metadataKey, metadataValue) {
|
||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
|
||
};
|
||
|
||
__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());
|
||
});
|
||
};
|
||
|
||
__generator = function (thisArg, body) {
|
||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||
function step(op) {
|
||
if (f) throw new TypeError("Generator is already executing.");
|
||
while (_) try {
|
||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||
switch (op[0]) {
|
||
case 0: case 1: t = op; break;
|
||
case 4: _.label++; return { value: op[1], done: false };
|
||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||
default:
|
||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||
if (t[2]) _.ops.pop();
|
||
_.trys.pop(); continue;
|
||
}
|
||
op = body.call(thisArg, _);
|
||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||
}
|
||
};
|
||
|
||
__exportStar = function(m, o) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
|
||
};
|
||
|
||
__createBinding = Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
|
||
__values = function (o) {
|
||
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
||
if (m) return m.call(o);
|
||
if (o && typeof o.length === "number") return {
|
||
next: function () {
|
||
if (o && i >= o.length) o = void 0;
|
||
return { value: o && o[i++], done: !o };
|
||
}
|
||
};
|
||
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
||
};
|
||
|
||
__read = function (o, n) {
|
||
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
||
if (!m) return o;
|
||
var i = m.call(o), r, ar = [], e;
|
||
try {
|
||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
||
}
|
||
catch (error) { e = { error: error }; }
|
||
finally {
|
||
try {
|
||
if (r && !r.done && (m = i["return"])) m.call(i);
|
||
}
|
||
finally { if (e) throw e.error; }
|
||
}
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spread = function () {
|
||
for (var ar = [], i = 0; i < arguments.length; i++)
|
||
ar = ar.concat(__read(arguments[i]));
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spreadArrays = function () {
|
||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||
r[k] = a[j];
|
||
return r;
|
||
};
|
||
|
||
__spreadArray = function (to, from, pack) {
|
||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||
if (ar || !(i in from)) {
|
||
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||
ar[i] = from[i];
|
||
}
|
||
}
|
||
return to.concat(ar || from);
|
||
};
|
||
|
||
__await = function (v) {
|
||
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
||
};
|
||
|
||
__asyncGenerator = function (thisArg, _arguments, generator) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
||
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
||
function fulfill(value) { resume("next", value); }
|
||
function reject(value) { resume("throw", value); }
|
||
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
||
};
|
||
|
||
__asyncDelegator = function (o) {
|
||
var i, p;
|
||
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
||
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
||
};
|
||
|
||
__asyncValues = function (o) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||
};
|
||
|
||
__makeTemplateObject = function (cooked, raw) {
|
||
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
||
return cooked;
|
||
};
|
||
|
||
var __setModuleDefault = Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
};
|
||
|
||
__importStar = function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
|
||
__importDefault = function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
|
||
__classPrivateFieldGet = function (receiver, state, kind, f) {
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
||
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
||
};
|
||
|
||
__classPrivateFieldSet = function (receiver, state, value, kind, f) {
|
||
if (kind === "m") throw new TypeError("Private method is not writable");
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
||
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
||
};
|
||
|
||
exporter("__extends", __extends);
|
||
exporter("__assign", __assign);
|
||
exporter("__rest", __rest);
|
||
exporter("__decorate", __decorate);
|
||
exporter("__param", __param);
|
||
exporter("__metadata", __metadata);
|
||
exporter("__awaiter", __awaiter);
|
||
exporter("__generator", __generator);
|
||
exporter("__exportStar", __exportStar);
|
||
exporter("__createBinding", __createBinding);
|
||
exporter("__values", __values);
|
||
exporter("__read", __read);
|
||
exporter("__spread", __spread);
|
||
exporter("__spreadArrays", __spreadArrays);
|
||
exporter("__spreadArray", __spreadArray);
|
||
exporter("__await", __await);
|
||
exporter("__asyncGenerator", __asyncGenerator);
|
||
exporter("__asyncDelegator", __asyncDelegator);
|
||
exporter("__asyncValues", __asyncValues);
|
||
exporter("__makeTemplateObject", __makeTemplateObject);
|
||
exporter("__importStar", __importStar);
|
||
exporter("__importDefault", __importDefault);
|
||
exporter("__classPrivateFieldGet", __classPrivateFieldGet);
|
||
exporter("__classPrivateFieldSet", __classPrivateFieldSet);
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
/* 641 */,
|
||
/* 642 */,
|
||
/* 643 */,
|
||
/* 644 */,
|
||
/* 645 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
;(function (sax) { // wrapper for non-node envs
|
||
sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }
|
||
sax.SAXParser = SAXParser
|
||
sax.SAXStream = SAXStream
|
||
sax.createStream = createStream
|
||
|
||
// When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.
|
||
// When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),
|
||
// since that's the earliest that a buffer overrun could occur. This way, checks are
|
||
// as rare as required, but as often as necessary to ensure never crossing this bound.
|
||
// Furthermore, buffers are only tested at most once per write(), so passing a very
|
||
// large string into write() might have undesirable effects, but this is manageable by
|
||
// the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme
|
||
// edge case, result in creating at most one complete copy of the string passed in.
|
||
// Set to Infinity to have unlimited buffers.
|
||
sax.MAX_BUFFER_LENGTH = 64 * 1024
|
||
|
||
var buffers = [
|
||
'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',
|
||
'procInstName', 'procInstBody', 'entity', 'attribName',
|
||
'attribValue', 'cdata', 'script'
|
||
]
|
||
|
||
sax.EVENTS = [
|
||
'text',
|
||
'processinginstruction',
|
||
'sgmldeclaration',
|
||
'doctype',
|
||
'comment',
|
||
'opentagstart',
|
||
'attribute',
|
||
'opentag',
|
||
'closetag',
|
||
'opencdata',
|
||
'cdata',
|
||
'closecdata',
|
||
'error',
|
||
'end',
|
||
'ready',
|
||
'script',
|
||
'opennamespace',
|
||
'closenamespace'
|
||
]
|
||
|
||
function SAXParser (strict, opt) {
|
||
if (!(this instanceof SAXParser)) {
|
||
return new SAXParser(strict, opt)
|
||
}
|
||
|
||
var parser = this
|
||
clearBuffers(parser)
|
||
parser.q = parser.c = ''
|
||
parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH
|
||
parser.opt = opt || {}
|
||
parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags
|
||
parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'
|
||
parser.tags = []
|
||
parser.closed = parser.closedRoot = parser.sawRoot = false
|
||
parser.tag = parser.error = null
|
||
parser.strict = !!strict
|
||
parser.noscript = !!(strict || parser.opt.noscript)
|
||
parser.state = S.BEGIN
|
||
parser.strictEntities = parser.opt.strictEntities
|
||
parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)
|
||
parser.attribList = []
|
||
|
||
// namespaces form a prototype chain.
|
||
// it always points at the current tag,
|
||
// which protos to its parent tag.
|
||
if (parser.opt.xmlns) {
|
||
parser.ns = Object.create(rootNS)
|
||
}
|
||
|
||
// mostly just for error reporting
|
||
parser.trackPosition = parser.opt.position !== false
|
||
if (parser.trackPosition) {
|
||
parser.position = parser.line = parser.column = 0
|
||
}
|
||
emit(parser, 'onready')
|
||
}
|
||
|
||
if (!Object.create) {
|
||
Object.create = function (o) {
|
||
function F () {}
|
||
F.prototype = o
|
||
var newf = new F()
|
||
return newf
|
||
}
|
||
}
|
||
|
||
if (!Object.keys) {
|
||
Object.keys = function (o) {
|
||
var a = []
|
||
for (var i in o) if (o.hasOwnProperty(i)) a.push(i)
|
||
return a
|
||
}
|
||
}
|
||
|
||
function checkBufferLength (parser) {
|
||
var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)
|
||
var maxActual = 0
|
||
for (var i = 0, l = buffers.length; i < l; i++) {
|
||
var len = parser[buffers[i]].length
|
||
if (len > maxAllowed) {
|
||
// Text/cdata nodes can get big, and since they're buffered,
|
||
// we can get here under normal conditions.
|
||
// Avoid issues by emitting the text node now,
|
||
// so at least it won't get any bigger.
|
||
switch (buffers[i]) {
|
||
case 'textNode':
|
||
closeText(parser)
|
||
break
|
||
|
||
case 'cdata':
|
||
emitNode(parser, 'oncdata', parser.cdata)
|
||
parser.cdata = ''
|
||
break
|
||
|
||
case 'script':
|
||
emitNode(parser, 'onscript', parser.script)
|
||
parser.script = ''
|
||
break
|
||
|
||
default:
|
||
error(parser, 'Max buffer length exceeded: ' + buffers[i])
|
||
}
|
||
}
|
||
maxActual = Math.max(maxActual, len)
|
||
}
|
||
// schedule the next check for the earliest possible buffer overrun.
|
||
var m = sax.MAX_BUFFER_LENGTH - maxActual
|
||
parser.bufferCheckPosition = m + parser.position
|
||
}
|
||
|
||
function clearBuffers (parser) {
|
||
for (var i = 0, l = buffers.length; i < l; i++) {
|
||
parser[buffers[i]] = ''
|
||
}
|
||
}
|
||
|
||
function flushBuffers (parser) {
|
||
closeText(parser)
|
||
if (parser.cdata !== '') {
|
||
emitNode(parser, 'oncdata', parser.cdata)
|
||
parser.cdata = ''
|
||
}
|
||
if (parser.script !== '') {
|
||
emitNode(parser, 'onscript', parser.script)
|
||
parser.script = ''
|
||
}
|
||
}
|
||
|
||
SAXParser.prototype = {
|
||
end: function () { end(this) },
|
||
write: write,
|
||
resume: function () { this.error = null; return this },
|
||
close: function () { return this.write(null) },
|
||
flush: function () { flushBuffers(this) }
|
||
}
|
||
|
||
var Stream
|
||
try {
|
||
Stream = __webpack_require__(794).Stream
|
||
} catch (ex) {
|
||
Stream = function () {}
|
||
}
|
||
|
||
var streamWraps = sax.EVENTS.filter(function (ev) {
|
||
return ev !== 'error' && ev !== 'end'
|
||
})
|
||
|
||
function createStream (strict, opt) {
|
||
return new SAXStream(strict, opt)
|
||
}
|
||
|
||
function SAXStream (strict, opt) {
|
||
if (!(this instanceof SAXStream)) {
|
||
return new SAXStream(strict, opt)
|
||
}
|
||
|
||
Stream.apply(this)
|
||
|
||
this._parser = new SAXParser(strict, opt)
|
||
this.writable = true
|
||
this.readable = true
|
||
|
||
var me = this
|
||
|
||
this._parser.onend = function () {
|
||
me.emit('end')
|
||
}
|
||
|
||
this._parser.onerror = function (er) {
|
||
me.emit('error', er)
|
||
|
||
// if didn't throw, then means error was handled.
|
||
// go ahead and clear error, so we can write again.
|
||
me._parser.error = null
|
||
}
|
||
|
||
this._decoder = null
|
||
|
||
streamWraps.forEach(function (ev) {
|
||
Object.defineProperty(me, 'on' + ev, {
|
||
get: function () {
|
||
return me._parser['on' + ev]
|
||
},
|
||
set: function (h) {
|
||
if (!h) {
|
||
me.removeAllListeners(ev)
|
||
me._parser['on' + ev] = h
|
||
return h
|
||
}
|
||
me.on(ev, h)
|
||
},
|
||
enumerable: true,
|
||
configurable: false
|
||
})
|
||
})
|
||
}
|
||
|
||
SAXStream.prototype = Object.create(Stream.prototype, {
|
||
constructor: {
|
||
value: SAXStream
|
||
}
|
||
})
|
||
|
||
SAXStream.prototype.write = function (data) {
|
||
if (typeof Buffer === 'function' &&
|
||
typeof Buffer.isBuffer === 'function' &&
|
||
Buffer.isBuffer(data)) {
|
||
if (!this._decoder) {
|
||
var SD = __webpack_require__(304).StringDecoder
|
||
this._decoder = new SD('utf8')
|
||
}
|
||
data = this._decoder.write(data)
|
||
}
|
||
|
||
this._parser.write(data.toString())
|
||
this.emit('data', data)
|
||
return true
|
||
}
|
||
|
||
SAXStream.prototype.end = function (chunk) {
|
||
if (chunk && chunk.length) {
|
||
this.write(chunk)
|
||
}
|
||
this._parser.end()
|
||
return true
|
||
}
|
||
|
||
SAXStream.prototype.on = function (ev, handler) {
|
||
var me = this
|
||
if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {
|
||
me._parser['on' + ev] = function () {
|
||
var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)
|
||
args.splice(0, 0, ev)
|
||
me.emit.apply(me, args)
|
||
}
|
||
}
|
||
|
||
return Stream.prototype.on.call(me, ev, handler)
|
||
}
|
||
|
||
// this really needs to be replaced with character classes.
|
||
// XML allows all manner of ridiculous numbers and digits.
|
||
var CDATA = '[CDATA['
|
||
var DOCTYPE = 'DOCTYPE'
|
||
var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'
|
||
var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'
|
||
var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }
|
||
|
||
// http://www.w3.org/TR/REC-xml/#NT-NameStartChar
|
||
// This implementation works on strings, a single character at a time
|
||
// as such, it cannot ever support astral-plane characters (10000-EFFFF)
|
||
// without a significant breaking change to either this parser, or the
|
||
// JavaScript language. Implementation of an emoji-capable xml parser
|
||
// is left as an exercise for the reader.
|
||
var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/
|
||
|
||
var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/
|
||
|
||
var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/
|
||
var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/
|
||
|
||
function isWhitespace (c) {
|
||
return c === ' ' || c === '\n' || c === '\r' || c === '\t'
|
||
}
|
||
|
||
function isQuote (c) {
|
||
return c === '"' || c === '\''
|
||
}
|
||
|
||
function isAttribEnd (c) {
|
||
return c === '>' || isWhitespace(c)
|
||
}
|
||
|
||
function isMatch (regex, c) {
|
||
return regex.test(c)
|
||
}
|
||
|
||
function notMatch (regex, c) {
|
||
return !isMatch(regex, c)
|
||
}
|
||
|
||
var S = 0
|
||
sax.STATE = {
|
||
BEGIN: S++, // leading byte order mark or whitespace
|
||
BEGIN_WHITESPACE: S++, // leading whitespace
|
||
TEXT: S++, // general stuff
|
||
TEXT_ENTITY: S++, // & and such.
|
||
OPEN_WAKA: S++, // <
|
||
SGML_DECL: S++, // <!BLARG
|
||
SGML_DECL_QUOTED: S++, // <!BLARG foo "bar
|
||
DOCTYPE: S++, // <!DOCTYPE
|
||
DOCTYPE_QUOTED: S++, // <!DOCTYPE "//blah
|
||
DOCTYPE_DTD: S++, // <!DOCTYPE "//blah" [ ...
|
||
DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE "//blah" [ "foo
|
||
COMMENT_STARTING: S++, // <!-
|
||
COMMENT: S++, // <!--
|
||
COMMENT_ENDING: S++, // <!-- blah -
|
||
COMMENT_ENDED: S++, // <!-- blah --
|
||
CDATA: S++, // <![CDATA[ something
|
||
CDATA_ENDING: S++, // ]
|
||
CDATA_ENDING_2: S++, // ]]
|
||
PROC_INST: S++, // <?hi
|
||
PROC_INST_BODY: S++, // <?hi there
|
||
PROC_INST_ENDING: S++, // <?hi "there" ?
|
||
OPEN_TAG: S++, // <strong
|
||
OPEN_TAG_SLASH: S++, // <strong /
|
||
ATTRIB: S++, // <a
|
||
ATTRIB_NAME: S++, // <a foo
|
||
ATTRIB_NAME_SAW_WHITE: S++, // <a foo _
|
||
ATTRIB_VALUE: S++, // <a foo=
|
||
ATTRIB_VALUE_QUOTED: S++, // <a foo="bar
|
||
ATTRIB_VALUE_CLOSED: S++, // <a foo="bar"
|
||
ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar
|
||
ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar="""
|
||
ATTRIB_VALUE_ENTITY_U: S++, // <foo bar="
|
||
CLOSE_TAG: S++, // </a
|
||
CLOSE_TAG_SAW_WHITE: S++, // </a >
|
||
SCRIPT: S++, // <script> ...
|
||
SCRIPT_ENDING: S++ // <script> ... <
|
||
}
|
||
|
||
sax.XML_ENTITIES = {
|
||
'amp': '&',
|
||
'gt': '>',
|
||
'lt': '<',
|
||
'quot': '"',
|
||
'apos': "'"
|
||
}
|
||
|
||
sax.ENTITIES = {
|
||
'amp': '&',
|
||
'gt': '>',
|
||
'lt': '<',
|
||
'quot': '"',
|
||
'apos': "'",
|
||
'AElig': 198,
|
||
'Aacute': 193,
|
||
'Acirc': 194,
|
||
'Agrave': 192,
|
||
'Aring': 197,
|
||
'Atilde': 195,
|
||
'Auml': 196,
|
||
'Ccedil': 199,
|
||
'ETH': 208,
|
||
'Eacute': 201,
|
||
'Ecirc': 202,
|
||
'Egrave': 200,
|
||
'Euml': 203,
|
||
'Iacute': 205,
|
||
'Icirc': 206,
|
||
'Igrave': 204,
|
||
'Iuml': 207,
|
||
'Ntilde': 209,
|
||
'Oacute': 211,
|
||
'Ocirc': 212,
|
||
'Ograve': 210,
|
||
'Oslash': 216,
|
||
'Otilde': 213,
|
||
'Ouml': 214,
|
||
'THORN': 222,
|
||
'Uacute': 218,
|
||
'Ucirc': 219,
|
||
'Ugrave': 217,
|
||
'Uuml': 220,
|
||
'Yacute': 221,
|
||
'aacute': 225,
|
||
'acirc': 226,
|
||
'aelig': 230,
|
||
'agrave': 224,
|
||
'aring': 229,
|
||
'atilde': 227,
|
||
'auml': 228,
|
||
'ccedil': 231,
|
||
'eacute': 233,
|
||
'ecirc': 234,
|
||
'egrave': 232,
|
||
'eth': 240,
|
||
'euml': 235,
|
||
'iacute': 237,
|
||
'icirc': 238,
|
||
'igrave': 236,
|
||
'iuml': 239,
|
||
'ntilde': 241,
|
||
'oacute': 243,
|
||
'ocirc': 244,
|
||
'ograve': 242,
|
||
'oslash': 248,
|
||
'otilde': 245,
|
||
'ouml': 246,
|
||
'szlig': 223,
|
||
'thorn': 254,
|
||
'uacute': 250,
|
||
'ucirc': 251,
|
||
'ugrave': 249,
|
||
'uuml': 252,
|
||
'yacute': 253,
|
||
'yuml': 255,
|
||
'copy': 169,
|
||
'reg': 174,
|
||
'nbsp': 160,
|
||
'iexcl': 161,
|
||
'cent': 162,
|
||
'pound': 163,
|
||
'curren': 164,
|
||
'yen': 165,
|
||
'brvbar': 166,
|
||
'sect': 167,
|
||
'uml': 168,
|
||
'ordf': 170,
|
||
'laquo': 171,
|
||
'not': 172,
|
||
'shy': 173,
|
||
'macr': 175,
|
||
'deg': 176,
|
||
'plusmn': 177,
|
||
'sup1': 185,
|
||
'sup2': 178,
|
||
'sup3': 179,
|
||
'acute': 180,
|
||
'micro': 181,
|
||
'para': 182,
|
||
'middot': 183,
|
||
'cedil': 184,
|
||
'ordm': 186,
|
||
'raquo': 187,
|
||
'frac14': 188,
|
||
'frac12': 189,
|
||
'frac34': 190,
|
||
'iquest': 191,
|
||
'times': 215,
|
||
'divide': 247,
|
||
'OElig': 338,
|
||
'oelig': 339,
|
||
'Scaron': 352,
|
||
'scaron': 353,
|
||
'Yuml': 376,
|
||
'fnof': 402,
|
||
'circ': 710,
|
||
'tilde': 732,
|
||
'Alpha': 913,
|
||
'Beta': 914,
|
||
'Gamma': 915,
|
||
'Delta': 916,
|
||
'Epsilon': 917,
|
||
'Zeta': 918,
|
||
'Eta': 919,
|
||
'Theta': 920,
|
||
'Iota': 921,
|
||
'Kappa': 922,
|
||
'Lambda': 923,
|
||
'Mu': 924,
|
||
'Nu': 925,
|
||
'Xi': 926,
|
||
'Omicron': 927,
|
||
'Pi': 928,
|
||
'Rho': 929,
|
||
'Sigma': 931,
|
||
'Tau': 932,
|
||
'Upsilon': 933,
|
||
'Phi': 934,
|
||
'Chi': 935,
|
||
'Psi': 936,
|
||
'Omega': 937,
|
||
'alpha': 945,
|
||
'beta': 946,
|
||
'gamma': 947,
|
||
'delta': 948,
|
||
'epsilon': 949,
|
||
'zeta': 950,
|
||
'eta': 951,
|
||
'theta': 952,
|
||
'iota': 953,
|
||
'kappa': 954,
|
||
'lambda': 955,
|
||
'mu': 956,
|
||
'nu': 957,
|
||
'xi': 958,
|
||
'omicron': 959,
|
||
'pi': 960,
|
||
'rho': 961,
|
||
'sigmaf': 962,
|
||
'sigma': 963,
|
||
'tau': 964,
|
||
'upsilon': 965,
|
||
'phi': 966,
|
||
'chi': 967,
|
||
'psi': 968,
|
||
'omega': 969,
|
||
'thetasym': 977,
|
||
'upsih': 978,
|
||
'piv': 982,
|
||
'ensp': 8194,
|
||
'emsp': 8195,
|
||
'thinsp': 8201,
|
||
'zwnj': 8204,
|
||
'zwj': 8205,
|
||
'lrm': 8206,
|
||
'rlm': 8207,
|
||
'ndash': 8211,
|
||
'mdash': 8212,
|
||
'lsquo': 8216,
|
||
'rsquo': 8217,
|
||
'sbquo': 8218,
|
||
'ldquo': 8220,
|
||
'rdquo': 8221,
|
||
'bdquo': 8222,
|
||
'dagger': 8224,
|
||
'Dagger': 8225,
|
||
'bull': 8226,
|
||
'hellip': 8230,
|
||
'permil': 8240,
|
||
'prime': 8242,
|
||
'Prime': 8243,
|
||
'lsaquo': 8249,
|
||
'rsaquo': 8250,
|
||
'oline': 8254,
|
||
'frasl': 8260,
|
||
'euro': 8364,
|
||
'image': 8465,
|
||
'weierp': 8472,
|
||
'real': 8476,
|
||
'trade': 8482,
|
||
'alefsym': 8501,
|
||
'larr': 8592,
|
||
'uarr': 8593,
|
||
'rarr': 8594,
|
||
'darr': 8595,
|
||
'harr': 8596,
|
||
'crarr': 8629,
|
||
'lArr': 8656,
|
||
'uArr': 8657,
|
||
'rArr': 8658,
|
||
'dArr': 8659,
|
||
'hArr': 8660,
|
||
'forall': 8704,
|
||
'part': 8706,
|
||
'exist': 8707,
|
||
'empty': 8709,
|
||
'nabla': 8711,
|
||
'isin': 8712,
|
||
'notin': 8713,
|
||
'ni': 8715,
|
||
'prod': 8719,
|
||
'sum': 8721,
|
||
'minus': 8722,
|
||
'lowast': 8727,
|
||
'radic': 8730,
|
||
'prop': 8733,
|
||
'infin': 8734,
|
||
'ang': 8736,
|
||
'and': 8743,
|
||
'or': 8744,
|
||
'cap': 8745,
|
||
'cup': 8746,
|
||
'int': 8747,
|
||
'there4': 8756,
|
||
'sim': 8764,
|
||
'cong': 8773,
|
||
'asymp': 8776,
|
||
'ne': 8800,
|
||
'equiv': 8801,
|
||
'le': 8804,
|
||
'ge': 8805,
|
||
'sub': 8834,
|
||
'sup': 8835,
|
||
'nsub': 8836,
|
||
'sube': 8838,
|
||
'supe': 8839,
|
||
'oplus': 8853,
|
||
'otimes': 8855,
|
||
'perp': 8869,
|
||
'sdot': 8901,
|
||
'lceil': 8968,
|
||
'rceil': 8969,
|
||
'lfloor': 8970,
|
||
'rfloor': 8971,
|
||
'lang': 9001,
|
||
'rang': 9002,
|
||
'loz': 9674,
|
||
'spades': 9824,
|
||
'clubs': 9827,
|
||
'hearts': 9829,
|
||
'diams': 9830
|
||
}
|
||
|
||
Object.keys(sax.ENTITIES).forEach(function (key) {
|
||
var e = sax.ENTITIES[key]
|
||
var s = typeof e === 'number' ? String.fromCharCode(e) : e
|
||
sax.ENTITIES[key] = s
|
||
})
|
||
|
||
for (var s in sax.STATE) {
|
||
sax.STATE[sax.STATE[s]] = s
|
||
}
|
||
|
||
// shorthand
|
||
S = sax.STATE
|
||
|
||
function emit (parser, event, data) {
|
||
parser[event] && parser[event](data)
|
||
}
|
||
|
||
function emitNode (parser, nodeType, data) {
|
||
if (parser.textNode) closeText(parser)
|
||
emit(parser, nodeType, data)
|
||
}
|
||
|
||
function closeText (parser) {
|
||
parser.textNode = textopts(parser.opt, parser.textNode)
|
||
if (parser.textNode) emit(parser, 'ontext', parser.textNode)
|
||
parser.textNode = ''
|
||
}
|
||
|
||
function textopts (opt, text) {
|
||
if (opt.trim) text = text.trim()
|
||
if (opt.normalize) text = text.replace(/\s+/g, ' ')
|
||
return text
|
||
}
|
||
|
||
function error (parser, er) {
|
||
closeText(parser)
|
||
if (parser.trackPosition) {
|
||
er += '\nLine: ' + parser.line +
|
||
'\nColumn: ' + parser.column +
|
||
'\nChar: ' + parser.c
|
||
}
|
||
er = new Error(er)
|
||
parser.error = er
|
||
emit(parser, 'onerror', er)
|
||
return parser
|
||
}
|
||
|
||
function end (parser) {
|
||
if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')
|
||
if ((parser.state !== S.BEGIN) &&
|
||
(parser.state !== S.BEGIN_WHITESPACE) &&
|
||
(parser.state !== S.TEXT)) {
|
||
error(parser, 'Unexpected end')
|
||
}
|
||
closeText(parser)
|
||
parser.c = ''
|
||
parser.closed = true
|
||
emit(parser, 'onend')
|
||
SAXParser.call(parser, parser.strict, parser.opt)
|
||
return parser
|
||
}
|
||
|
||
function strictFail (parser, message) {
|
||
if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {
|
||
throw new Error('bad call to strictFail')
|
||
}
|
||
if (parser.strict) {
|
||
error(parser, message)
|
||
}
|
||
}
|
||
|
||
function newTag (parser) {
|
||
if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()
|
||
var parent = parser.tags[parser.tags.length - 1] || parser
|
||
var tag = parser.tag = { name: parser.tagName, attributes: {} }
|
||
|
||
// will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar"
|
||
if (parser.opt.xmlns) {
|
||
tag.ns = parent.ns
|
||
}
|
||
parser.attribList.length = 0
|
||
emitNode(parser, 'onopentagstart', tag)
|
||
}
|
||
|
||
function qname (name, attribute) {
|
||
var i = name.indexOf(':')
|
||
var qualName = i < 0 ? [ '', name ] : name.split(':')
|
||
var prefix = qualName[0]
|
||
var local = qualName[1]
|
||
|
||
// <x "xmlns"="http://foo">
|
||
if (attribute && name === 'xmlns') {
|
||
prefix = 'xmlns'
|
||
local = ''
|
||
}
|
||
|
||
return { prefix: prefix, local: local }
|
||
}
|
||
|
||
function attrib (parser) {
|
||
if (!parser.strict) {
|
||
parser.attribName = parser.attribName[parser.looseCase]()
|
||
}
|
||
|
||
if (parser.attribList.indexOf(parser.attribName) !== -1 ||
|
||
parser.tag.attributes.hasOwnProperty(parser.attribName)) {
|
||
parser.attribName = parser.attribValue = ''
|
||
return
|
||
}
|
||
|
||
if (parser.opt.xmlns) {
|
||
var qn = qname(parser.attribName, true)
|
||
var prefix = qn.prefix
|
||
var local = qn.local
|
||
|
||
if (prefix === 'xmlns') {
|
||
// namespace binding attribute. push the binding into scope
|
||
if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {
|
||
strictFail(parser,
|
||
'xml: prefix must be bound to ' + XML_NAMESPACE + '\n' +
|
||
'Actual: ' + parser.attribValue)
|
||
} else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {
|
||
strictFail(parser,
|
||
'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\n' +
|
||
'Actual: ' + parser.attribValue)
|
||
} else {
|
||
var tag = parser.tag
|
||
var parent = parser.tags[parser.tags.length - 1] || parser
|
||
if (tag.ns === parent.ns) {
|
||
tag.ns = Object.create(parent.ns)
|
||
}
|
||
tag.ns[local] = parser.attribValue
|
||
}
|
||
}
|
||
|
||
// defer onattribute events until all attributes have been seen
|
||
// so any new bindings can take effect. preserve attribute order
|
||
// so deferred events can be emitted in document order
|
||
parser.attribList.push([parser.attribName, parser.attribValue])
|
||
} else {
|
||
// in non-xmlns mode, we can emit the event right away
|
||
parser.tag.attributes[parser.attribName] = parser.attribValue
|
||
emitNode(parser, 'onattribute', {
|
||
name: parser.attribName,
|
||
value: parser.attribValue
|
||
})
|
||
}
|
||
|
||
parser.attribName = parser.attribValue = ''
|
||
}
|
||
|
||
function openTag (parser, selfClosing) {
|
||
if (parser.opt.xmlns) {
|
||
// emit namespace binding events
|
||
var tag = parser.tag
|
||
|
||
// add namespace info to tag
|
||
var qn = qname(parser.tagName)
|
||
tag.prefix = qn.prefix
|
||
tag.local = qn.local
|
||
tag.uri = tag.ns[qn.prefix] || ''
|
||
|
||
if (tag.prefix && !tag.uri) {
|
||
strictFail(parser, 'Unbound namespace prefix: ' +
|
||
JSON.stringify(parser.tagName))
|
||
tag.uri = qn.prefix
|
||
}
|
||
|
||
var parent = parser.tags[parser.tags.length - 1] || parser
|
||
if (tag.ns && parent.ns !== tag.ns) {
|
||
Object.keys(tag.ns).forEach(function (p) {
|
||
emitNode(parser, 'onopennamespace', {
|
||
prefix: p,
|
||
uri: tag.ns[p]
|
||
})
|
||
})
|
||
}
|
||
|
||
// handle deferred onattribute events
|
||
// Note: do not apply default ns to attributes:
|
||
// http://www.w3.org/TR/REC-xml-names/#defaulting
|
||
for (var i = 0, l = parser.attribList.length; i < l; i++) {
|
||
var nv = parser.attribList[i]
|
||
var name = nv[0]
|
||
var value = nv[1]
|
||
var qualName = qname(name, true)
|
||
var prefix = qualName.prefix
|
||
var local = qualName.local
|
||
var uri = prefix === '' ? '' : (tag.ns[prefix] || '')
|
||
var a = {
|
||
name: name,
|
||
value: value,
|
||
prefix: prefix,
|
||
local: local,
|
||
uri: uri
|
||
}
|
||
|
||
// if there's any attributes with an undefined namespace,
|
||
// then fail on them now.
|
||
if (prefix && prefix !== 'xmlns' && !uri) {
|
||
strictFail(parser, 'Unbound namespace prefix: ' +
|
||
JSON.stringify(prefix))
|
||
a.uri = prefix
|
||
}
|
||
parser.tag.attributes[name] = a
|
||
emitNode(parser, 'onattribute', a)
|
||
}
|
||
parser.attribList.length = 0
|
||
}
|
||
|
||
parser.tag.isSelfClosing = !!selfClosing
|
||
|
||
// process the tag
|
||
parser.sawRoot = true
|
||
parser.tags.push(parser.tag)
|
||
emitNode(parser, 'onopentag', parser.tag)
|
||
if (!selfClosing) {
|
||
// special case for <script> in non-strict mode.
|
||
if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {
|
||
parser.state = S.SCRIPT
|
||
} else {
|
||
parser.state = S.TEXT
|
||
}
|
||
parser.tag = null
|
||
parser.tagName = ''
|
||
}
|
||
parser.attribName = parser.attribValue = ''
|
||
parser.attribList.length = 0
|
||
}
|
||
|
||
function closeTag (parser) {
|
||
if (!parser.tagName) {
|
||
strictFail(parser, 'Weird empty close tag.')
|
||
parser.textNode += '</>'
|
||
parser.state = S.TEXT
|
||
return
|
||
}
|
||
|
||
if (parser.script) {
|
||
if (parser.tagName !== 'script') {
|
||
parser.script += '</' + parser.tagName + '>'
|
||
parser.tagName = ''
|
||
parser.state = S.SCRIPT
|
||
return
|
||
}
|
||
emitNode(parser, 'onscript', parser.script)
|
||
parser.script = ''
|
||
}
|
||
|
||
// first make sure that the closing tag actually exists.
|
||
// <a><b></c></b></a> will close everything, otherwise.
|
||
var t = parser.tags.length
|
||
var tagName = parser.tagName
|
||
if (!parser.strict) {
|
||
tagName = tagName[parser.looseCase]()
|
||
}
|
||
var closeTo = tagName
|
||
while (t--) {
|
||
var close = parser.tags[t]
|
||
if (close.name !== closeTo) {
|
||
// fail the first time in strict mode
|
||
strictFail(parser, 'Unexpected close tag')
|
||
} else {
|
||
break
|
||
}
|
||
}
|
||
|
||
// didn't find it. we already failed for strict, so just abort.
|
||
if (t < 0) {
|
||
strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)
|
||
parser.textNode += '</' + parser.tagName + '>'
|
||
parser.state = S.TEXT
|
||
return
|
||
}
|
||
parser.tagName = tagName
|
||
var s = parser.tags.length
|
||
while (s-- > t) {
|
||
var tag = parser.tag = parser.tags.pop()
|
||
parser.tagName = parser.tag.name
|
||
emitNode(parser, 'onclosetag', parser.tagName)
|
||
|
||
var x = {}
|
||
for (var i in tag.ns) {
|
||
x[i] = tag.ns[i]
|
||
}
|
||
|
||
var parent = parser.tags[parser.tags.length - 1] || parser
|
||
if (parser.opt.xmlns && tag.ns !== parent.ns) {
|
||
// remove namespace bindings introduced by tag
|
||
Object.keys(tag.ns).forEach(function (p) {
|
||
var n = tag.ns[p]
|
||
emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })
|
||
})
|
||
}
|
||
}
|
||
if (t === 0) parser.closedRoot = true
|
||
parser.tagName = parser.attribValue = parser.attribName = ''
|
||
parser.attribList.length = 0
|
||
parser.state = S.TEXT
|
||
}
|
||
|
||
function parseEntity (parser) {
|
||
var entity = parser.entity
|
||
var entityLC = entity.toLowerCase()
|
||
var num
|
||
var numStr = ''
|
||
|
||
if (parser.ENTITIES[entity]) {
|
||
return parser.ENTITIES[entity]
|
||
}
|
||
if (parser.ENTITIES[entityLC]) {
|
||
return parser.ENTITIES[entityLC]
|
||
}
|
||
entity = entityLC
|
||
if (entity.charAt(0) === '#') {
|
||
if (entity.charAt(1) === 'x') {
|
||
entity = entity.slice(2)
|
||
num = parseInt(entity, 16)
|
||
numStr = num.toString(16)
|
||
} else {
|
||
entity = entity.slice(1)
|
||
num = parseInt(entity, 10)
|
||
numStr = num.toString(10)
|
||
}
|
||
}
|
||
entity = entity.replace(/^0+/, '')
|
||
if (isNaN(num) || numStr.toLowerCase() !== entity) {
|
||
strictFail(parser, 'Invalid character entity')
|
||
return '&' + parser.entity + ';'
|
||
}
|
||
|
||
return String.fromCodePoint(num)
|
||
}
|
||
|
||
function beginWhiteSpace (parser, c) {
|
||
if (c === '<') {
|
||
parser.state = S.OPEN_WAKA
|
||
parser.startTagPosition = parser.position
|
||
} else if (!isWhitespace(c)) {
|
||
// have to process this as a text node.
|
||
// weird, but happens.
|
||
strictFail(parser, 'Non-whitespace before first tag.')
|
||
parser.textNode = c
|
||
parser.state = S.TEXT
|
||
}
|
||
}
|
||
|
||
function charAt (chunk, i) {
|
||
var result = ''
|
||
if (i < chunk.length) {
|
||
result = chunk.charAt(i)
|
||
}
|
||
return result
|
||
}
|
||
|
||
function write (chunk) {
|
||
var parser = this
|
||
if (this.error) {
|
||
throw this.error
|
||
}
|
||
if (parser.closed) {
|
||
return error(parser,
|
||
'Cannot write after close. Assign an onready handler.')
|
||
}
|
||
if (chunk === null) {
|
||
return end(parser)
|
||
}
|
||
if (typeof chunk === 'object') {
|
||
chunk = chunk.toString()
|
||
}
|
||
var i = 0
|
||
var c = ''
|
||
while (true) {
|
||
c = charAt(chunk, i++)
|
||
parser.c = c
|
||
|
||
if (!c) {
|
||
break
|
||
}
|
||
|
||
if (parser.trackPosition) {
|
||
parser.position++
|
||
if (c === '\n') {
|
||
parser.line++
|
||
parser.column = 0
|
||
} else {
|
||
parser.column++
|
||
}
|
||
}
|
||
|
||
switch (parser.state) {
|
||
case S.BEGIN:
|
||
parser.state = S.BEGIN_WHITESPACE
|
||
if (c === '\uFEFF') {
|
||
continue
|
||
}
|
||
beginWhiteSpace(parser, c)
|
||
continue
|
||
|
||
case S.BEGIN_WHITESPACE:
|
||
beginWhiteSpace(parser, c)
|
||
continue
|
||
|
||
case S.TEXT:
|
||
if (parser.sawRoot && !parser.closedRoot) {
|
||
var starti = i - 1
|
||
while (c && c !== '<' && c !== '&') {
|
||
c = charAt(chunk, i++)
|
||
if (c && parser.trackPosition) {
|
||
parser.position++
|
||
if (c === '\n') {
|
||
parser.line++
|
||
parser.column = 0
|
||
} else {
|
||
parser.column++
|
||
}
|
||
}
|
||
}
|
||
parser.textNode += chunk.substring(starti, i - 1)
|
||
}
|
||
if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {
|
||
parser.state = S.OPEN_WAKA
|
||
parser.startTagPosition = parser.position
|
||
} else {
|
||
if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {
|
||
strictFail(parser, 'Text data outside of root node.')
|
||
}
|
||
if (c === '&') {
|
||
parser.state = S.TEXT_ENTITY
|
||
} else {
|
||
parser.textNode += c
|
||
}
|
||
}
|
||
continue
|
||
|
||
case S.SCRIPT:
|
||
// only non-strict
|
||
if (c === '<') {
|
||
parser.state = S.SCRIPT_ENDING
|
||
} else {
|
||
parser.script += c
|
||
}
|
||
continue
|
||
|
||
case S.SCRIPT_ENDING:
|
||
if (c === '/') {
|
||
parser.state = S.CLOSE_TAG
|
||
} else {
|
||
parser.script += '<' + c
|
||
parser.state = S.SCRIPT
|
||
}
|
||
continue
|
||
|
||
case S.OPEN_WAKA:
|
||
// either a /, ?, !, or text is coming next.
|
||
if (c === '!') {
|
||
parser.state = S.SGML_DECL
|
||
parser.sgmlDecl = ''
|
||
} else if (isWhitespace(c)) {
|
||
// wait for it...
|
||
} else if (isMatch(nameStart, c)) {
|
||
parser.state = S.OPEN_TAG
|
||
parser.tagName = c
|
||
} else if (c === '/') {
|
||
parser.state = S.CLOSE_TAG
|
||
parser.tagName = ''
|
||
} else if (c === '?') {
|
||
parser.state = S.PROC_INST
|
||
parser.procInstName = parser.procInstBody = ''
|
||
} else {
|
||
strictFail(parser, 'Unencoded <')
|
||
// if there was some whitespace, then add that in.
|
||
if (parser.startTagPosition + 1 < parser.position) {
|
||
var pad = parser.position - parser.startTagPosition
|
||
c = new Array(pad).join(' ') + c
|
||
}
|
||
parser.textNode += '<' + c
|
||
parser.state = S.TEXT
|
||
}
|
||
continue
|
||
|
||
case S.SGML_DECL:
|
||
if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {
|
||
emitNode(parser, 'onopencdata')
|
||
parser.state = S.CDATA
|
||
parser.sgmlDecl = ''
|
||
parser.cdata = ''
|
||
} else if (parser.sgmlDecl + c === '--') {
|
||
parser.state = S.COMMENT
|
||
parser.comment = ''
|
||
parser.sgmlDecl = ''
|
||
} else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {
|
||
parser.state = S.DOCTYPE
|
||
if (parser.doctype || parser.sawRoot) {
|
||
strictFail(parser,
|
||
'Inappropriately located doctype declaration')
|
||
}
|
||
parser.doctype = ''
|
||
parser.sgmlDecl = ''
|
||
} else if (c === '>') {
|
||
emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)
|
||
parser.sgmlDecl = ''
|
||
parser.state = S.TEXT
|
||
} else if (isQuote(c)) {
|
||
parser.state = S.SGML_DECL_QUOTED
|
||
parser.sgmlDecl += c
|
||
} else {
|
||
parser.sgmlDecl += c
|
||
}
|
||
continue
|
||
|
||
case S.SGML_DECL_QUOTED:
|
||
if (c === parser.q) {
|
||
parser.state = S.SGML_DECL
|
||
parser.q = ''
|
||
}
|
||
parser.sgmlDecl += c
|
||
continue
|
||
|
||
case S.DOCTYPE:
|
||
if (c === '>') {
|
||
parser.state = S.TEXT
|
||
emitNode(parser, 'ondoctype', parser.doctype)
|
||
parser.doctype = true // just remember that we saw it.
|
||
} else {
|
||
parser.doctype += c
|
||
if (c === '[') {
|
||
parser.state = S.DOCTYPE_DTD
|
||
} else if (isQuote(c)) {
|
||
parser.state = S.DOCTYPE_QUOTED
|
||
parser.q = c
|
||
}
|
||
}
|
||
continue
|
||
|
||
case S.DOCTYPE_QUOTED:
|
||
parser.doctype += c
|
||
if (c === parser.q) {
|
||
parser.q = ''
|
||
parser.state = S.DOCTYPE
|
||
}
|
||
continue
|
||
|
||
case S.DOCTYPE_DTD:
|
||
parser.doctype += c
|
||
if (c === ']') {
|
||
parser.state = S.DOCTYPE
|
||
} else if (isQuote(c)) {
|
||
parser.state = S.DOCTYPE_DTD_QUOTED
|
||
parser.q = c
|
||
}
|
||
continue
|
||
|
||
case S.DOCTYPE_DTD_QUOTED:
|
||
parser.doctype += c
|
||
if (c === parser.q) {
|
||
parser.state = S.DOCTYPE_DTD
|
||
parser.q = ''
|
||
}
|
||
continue
|
||
|
||
case S.COMMENT:
|
||
if (c === '-') {
|
||
parser.state = S.COMMENT_ENDING
|
||
} else {
|
||
parser.comment += c
|
||
}
|
||
continue
|
||
|
||
case S.COMMENT_ENDING:
|
||
if (c === '-') {
|
||
parser.state = S.COMMENT_ENDED
|
||
parser.comment = textopts(parser.opt, parser.comment)
|
||
if (parser.comment) {
|
||
emitNode(parser, 'oncomment', parser.comment)
|
||
}
|
||
parser.comment = ''
|
||
} else {
|
||
parser.comment += '-' + c
|
||
parser.state = S.COMMENT
|
||
}
|
||
continue
|
||
|
||
case S.COMMENT_ENDED:
|
||
if (c !== '>') {
|
||
strictFail(parser, 'Malformed comment')
|
||
// allow <!-- blah -- bloo --> in non-strict mode,
|
||
// which is a comment of " blah -- bloo "
|
||
parser.comment += '--' + c
|
||
parser.state = S.COMMENT
|
||
} else {
|
||
parser.state = S.TEXT
|
||
}
|
||
continue
|
||
|
||
case S.CDATA:
|
||
if (c === ']') {
|
||
parser.state = S.CDATA_ENDING
|
||
} else {
|
||
parser.cdata += c
|
||
}
|
||
continue
|
||
|
||
case S.CDATA_ENDING:
|
||
if (c === ']') {
|
||
parser.state = S.CDATA_ENDING_2
|
||
} else {
|
||
parser.cdata += ']' + c
|
||
parser.state = S.CDATA
|
||
}
|
||
continue
|
||
|
||
case S.CDATA_ENDING_2:
|
||
if (c === '>') {
|
||
if (parser.cdata) {
|
||
emitNode(parser, 'oncdata', parser.cdata)
|
||
}
|
||
emitNode(parser, 'onclosecdata')
|
||
parser.cdata = ''
|
||
parser.state = S.TEXT
|
||
} else if (c === ']') {
|
||
parser.cdata += ']'
|
||
} else {
|
||
parser.cdata += ']]' + c
|
||
parser.state = S.CDATA
|
||
}
|
||
continue
|
||
|
||
case S.PROC_INST:
|
||
if (c === '?') {
|
||
parser.state = S.PROC_INST_ENDING
|
||
} else if (isWhitespace(c)) {
|
||
parser.state = S.PROC_INST_BODY
|
||
} else {
|
||
parser.procInstName += c
|
||
}
|
||
continue
|
||
|
||
case S.PROC_INST_BODY:
|
||
if (!parser.procInstBody && isWhitespace(c)) {
|
||
continue
|
||
} else if (c === '?') {
|
||
parser.state = S.PROC_INST_ENDING
|
||
} else {
|
||
parser.procInstBody += c
|
||
}
|
||
continue
|
||
|
||
case S.PROC_INST_ENDING:
|
||
if (c === '>') {
|
||
emitNode(parser, 'onprocessinginstruction', {
|
||
name: parser.procInstName,
|
||
body: parser.procInstBody
|
||
})
|
||
parser.procInstName = parser.procInstBody = ''
|
||
parser.state = S.TEXT
|
||
} else {
|
||
parser.procInstBody += '?' + c
|
||
parser.state = S.PROC_INST_BODY
|
||
}
|
||
continue
|
||
|
||
case S.OPEN_TAG:
|
||
if (isMatch(nameBody, c)) {
|
||
parser.tagName += c
|
||
} else {
|
||
newTag(parser)
|
||
if (c === '>') {
|
||
openTag(parser)
|
||
} else if (c === '/') {
|
||
parser.state = S.OPEN_TAG_SLASH
|
||
} else {
|
||
if (!isWhitespace(c)) {
|
||
strictFail(parser, 'Invalid character in tag name')
|
||
}
|
||
parser.state = S.ATTRIB
|
||
}
|
||
}
|
||
continue
|
||
|
||
case S.OPEN_TAG_SLASH:
|
||
if (c === '>') {
|
||
openTag(parser, true)
|
||
closeTag(parser)
|
||
} else {
|
||
strictFail(parser, 'Forward-slash in opening tag not followed by >')
|
||
parser.state = S.ATTRIB
|
||
}
|
||
continue
|
||
|
||
case S.ATTRIB:
|
||
// haven't read the attribute name yet.
|
||
if (isWhitespace(c)) {
|
||
continue
|
||
} else if (c === '>') {
|
||
openTag(parser)
|
||
} else if (c === '/') {
|
||
parser.state = S.OPEN_TAG_SLASH
|
||
} else if (isMatch(nameStart, c)) {
|
||
parser.attribName = c
|
||
parser.attribValue = ''
|
||
parser.state = S.ATTRIB_NAME
|
||
} else {
|
||
strictFail(parser, 'Invalid attribute name')
|
||
}
|
||
continue
|
||
|
||
case S.ATTRIB_NAME:
|
||
if (c === '=') {
|
||
parser.state = S.ATTRIB_VALUE
|
||
} else if (c === '>') {
|
||
strictFail(parser, 'Attribute without value')
|
||
parser.attribValue = parser.attribName
|
||
attrib(parser)
|
||
openTag(parser)
|
||
} else if (isWhitespace(c)) {
|
||
parser.state = S.ATTRIB_NAME_SAW_WHITE
|
||
} else if (isMatch(nameBody, c)) {
|
||
parser.attribName += c
|
||
} else {
|
||
strictFail(parser, 'Invalid attribute name')
|
||
}
|
||
continue
|
||
|
||
case S.ATTRIB_NAME_SAW_WHITE:
|
||
if (c === '=') {
|
||
parser.state = S.ATTRIB_VALUE
|
||
} else if (isWhitespace(c)) {
|
||
continue
|
||
} else {
|
||
strictFail(parser, 'Attribute without value')
|
||
parser.tag.attributes[parser.attribName] = ''
|
||
parser.attribValue = ''
|
||
emitNode(parser, 'onattribute', {
|
||
name: parser.attribName,
|
||
value: ''
|
||
})
|
||
parser.attribName = ''
|
||
if (c === '>') {
|
||
openTag(parser)
|
||
} else if (isMatch(nameStart, c)) {
|
||
parser.attribName = c
|
||
parser.state = S.ATTRIB_NAME
|
||
} else {
|
||
strictFail(parser, 'Invalid attribute name')
|
||
parser.state = S.ATTRIB
|
||
}
|
||
}
|
||
continue
|
||
|
||
case S.ATTRIB_VALUE:
|
||
if (isWhitespace(c)) {
|
||
continue
|
||
} else if (isQuote(c)) {
|
||
parser.q = c
|
||
parser.state = S.ATTRIB_VALUE_QUOTED
|
||
} else {
|
||
strictFail(parser, 'Unquoted attribute value')
|
||
parser.state = S.ATTRIB_VALUE_UNQUOTED
|
||
parser.attribValue = c
|
||
}
|
||
continue
|
||
|
||
case S.ATTRIB_VALUE_QUOTED:
|
||
if (c !== parser.q) {
|
||
if (c === '&') {
|
||
parser.state = S.ATTRIB_VALUE_ENTITY_Q
|
||
} else {
|
||
parser.attribValue += c
|
||
}
|
||
continue
|
||
}
|
||
attrib(parser)
|
||
parser.q = ''
|
||
parser.state = S.ATTRIB_VALUE_CLOSED
|
||
continue
|
||
|
||
case S.ATTRIB_VALUE_CLOSED:
|
||
if (isWhitespace(c)) {
|
||
parser.state = S.ATTRIB
|
||
} else if (c === '>') {
|
||
openTag(parser)
|
||
} else if (c === '/') {
|
||
parser.state = S.OPEN_TAG_SLASH
|
||
} else if (isMatch(nameStart, c)) {
|
||
strictFail(parser, 'No whitespace between attributes')
|
||
parser.attribName = c
|
||
parser.attribValue = ''
|
||
parser.state = S.ATTRIB_NAME
|
||
} else {
|
||
strictFail(parser, 'Invalid attribute name')
|
||
}
|
||
continue
|
||
|
||
case S.ATTRIB_VALUE_UNQUOTED:
|
||
if (!isAttribEnd(c)) {
|
||
if (c === '&') {
|
||
parser.state = S.ATTRIB_VALUE_ENTITY_U
|
||
} else {
|
||
parser.attribValue += c
|
||
}
|
||
continue
|
||
}
|
||
attrib(parser)
|
||
if (c === '>') {
|
||
openTag(parser)
|
||
} else {
|
||
parser.state = S.ATTRIB
|
||
}
|
||
continue
|
||
|
||
case S.CLOSE_TAG:
|
||
if (!parser.tagName) {
|
||
if (isWhitespace(c)) {
|
||
continue
|
||
} else if (notMatch(nameStart, c)) {
|
||
if (parser.script) {
|
||
parser.script += '</' + c
|
||
parser.state = S.SCRIPT
|
||
} else {
|
||
strictFail(parser, 'Invalid tagname in closing tag.')
|
||
}
|
||
} else {
|
||
parser.tagName = c
|
||
}
|
||
} else if (c === '>') {
|
||
closeTag(parser)
|
||
} else if (isMatch(nameBody, c)) {
|
||
parser.tagName += c
|
||
} else if (parser.script) {
|
||
parser.script += '</' + parser.tagName
|
||
parser.tagName = ''
|
||
parser.state = S.SCRIPT
|
||
} else {
|
||
if (!isWhitespace(c)) {
|
||
strictFail(parser, 'Invalid tagname in closing tag')
|
||
}
|
||
parser.state = S.CLOSE_TAG_SAW_WHITE
|
||
}
|
||
continue
|
||
|
||
case S.CLOSE_TAG_SAW_WHITE:
|
||
if (isWhitespace(c)) {
|
||
continue
|
||
}
|
||
if (c === '>') {
|
||
closeTag(parser)
|
||
} else {
|
||
strictFail(parser, 'Invalid characters in closing tag')
|
||
}
|
||
continue
|
||
|
||
case S.TEXT_ENTITY:
|
||
case S.ATTRIB_VALUE_ENTITY_Q:
|
||
case S.ATTRIB_VALUE_ENTITY_U:
|
||
var returnState
|
||
var buffer
|
||
switch (parser.state) {
|
||
case S.TEXT_ENTITY:
|
||
returnState = S.TEXT
|
||
buffer = 'textNode'
|
||
break
|
||
|
||
case S.ATTRIB_VALUE_ENTITY_Q:
|
||
returnState = S.ATTRIB_VALUE_QUOTED
|
||
buffer = 'attribValue'
|
||
break
|
||
|
||
case S.ATTRIB_VALUE_ENTITY_U:
|
||
returnState = S.ATTRIB_VALUE_UNQUOTED
|
||
buffer = 'attribValue'
|
||
break
|
||
}
|
||
|
||
if (c === ';') {
|
||
parser[buffer] += parseEntity(parser)
|
||
parser.entity = ''
|
||
parser.state = returnState
|
||
} else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {
|
||
parser.entity += c
|
||
} else {
|
||
strictFail(parser, 'Invalid character in entity name')
|
||
parser[buffer] += '&' + parser.entity + c
|
||
parser.entity = ''
|
||
parser.state = returnState
|
||
}
|
||
|
||
continue
|
||
|
||
default:
|
||
throw new Error(parser, 'Unknown state: ' + parser.state)
|
||
}
|
||
} // while
|
||
|
||
if (parser.position >= parser.bufferCheckPosition) {
|
||
checkBufferLength(parser)
|
||
}
|
||
return parser
|
||
}
|
||
|
||
/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
|
||
/* istanbul ignore next */
|
||
if (!String.fromCodePoint) {
|
||
(function () {
|
||
var stringFromCharCode = String.fromCharCode
|
||
var floor = Math.floor
|
||
var fromCodePoint = function () {
|
||
var MAX_SIZE = 0x4000
|
||
var codeUnits = []
|
||
var highSurrogate
|
||
var lowSurrogate
|
||
var index = -1
|
||
var length = arguments.length
|
||
if (!length) {
|
||
return ''
|
||
}
|
||
var result = ''
|
||
while (++index < length) {
|
||
var codePoint = Number(arguments[index])
|
||
if (
|
||
!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
|
||
codePoint < 0 || // not a valid Unicode code point
|
||
codePoint > 0x10FFFF || // not a valid Unicode code point
|
||
floor(codePoint) !== codePoint // not an integer
|
||
) {
|
||
throw RangeError('Invalid code point: ' + codePoint)
|
||
}
|
||
if (codePoint <= 0xFFFF) { // BMP code point
|
||
codeUnits.push(codePoint)
|
||
} else { // Astral code point; split in surrogate halves
|
||
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
||
codePoint -= 0x10000
|
||
highSurrogate = (codePoint >> 10) + 0xD800
|
||
lowSurrogate = (codePoint % 0x400) + 0xDC00
|
||
codeUnits.push(highSurrogate, lowSurrogate)
|
||
}
|
||
if (index + 1 === length || codeUnits.length > MAX_SIZE) {
|
||
result += stringFromCharCode.apply(null, codeUnits)
|
||
codeUnits.length = 0
|
||
}
|
||
}
|
||
return result
|
||
}
|
||
/* istanbul ignore next */
|
||
if (Object.defineProperty) {
|
||
Object.defineProperty(String, 'fromCodePoint', {
|
||
value: fromCodePoint,
|
||
configurable: true,
|
||
writable: true
|
||
})
|
||
} else {
|
||
String.fromCodePoint = fromCodePoint
|
||
}
|
||
}())
|
||
}
|
||
})( false ? undefined : exports)
|
||
|
||
|
||
/***/ }),
|
||
/* 646 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=Entry.js.map
|
||
|
||
/***/ }),
|
||
/* 647 */,
|
||
/* 648 */,
|
||
/* 649 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = getLastPage
|
||
|
||
const getPage = __webpack_require__(265)
|
||
|
||
function getLastPage (octokit, link, headers) {
|
||
return getPage(octokit, link, 'last', headers)
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 650 */,
|
||
/* 651 */,
|
||
/* 652 */,
|
||
/* 653 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.safeTrimTrailingSeparator = exports.normalizeSeparators = exports.hasRoot = exports.hasAbsoluteRoot = exports.ensureAbsoluteRoot = exports.dirname = void 0;
|
||
const path = __importStar(__webpack_require__(622));
|
||
const assert_1 = __importDefault(__webpack_require__(357));
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
/**
|
||
* Similar to path.dirname except normalizes the path separators and slightly better handling for Windows UNC paths.
|
||
*
|
||
* For example, on Linux/macOS:
|
||
* - `/ => /`
|
||
* - `/hello => /`
|
||
*
|
||
* For example, on Windows:
|
||
* - `C:\ => C:\`
|
||
* - `C:\hello => C:\`
|
||
* - `C: => C:`
|
||
* - `C:hello => C:`
|
||
* - `\ => \`
|
||
* - `\hello => \`
|
||
* - `\\hello => \\hello`
|
||
* - `\\hello\world => \\hello\world`
|
||
*/
|
||
function dirname(p) {
|
||
// Normalize slashes and trim unnecessary trailing slash
|
||
p = safeTrimTrailingSeparator(p);
|
||
// Windows UNC root, e.g. \\hello or \\hello\world
|
||
if (IS_WINDOWS && /^\\\\[^\\]+(\\[^\\]+)?$/.test(p)) {
|
||
return p;
|
||
}
|
||
// Get dirname
|
||
let result = path.dirname(p);
|
||
// Trim trailing slash for Windows UNC root, e.g. \\hello\world\
|
||
if (IS_WINDOWS && /^\\\\[^\\]+\\[^\\]+\\$/.test(result)) {
|
||
result = safeTrimTrailingSeparator(result);
|
||
}
|
||
return result;
|
||
}
|
||
exports.dirname = dirname;
|
||
/**
|
||
* Roots the path if not already rooted. On Windows, relative roots like `\`
|
||
* or `C:` are expanded based on the current working directory.
|
||
*/
|
||
function ensureAbsoluteRoot(root, itemPath) {
|
||
assert_1.default(root, `ensureAbsoluteRoot parameter 'root' must not be empty`);
|
||
assert_1.default(itemPath, `ensureAbsoluteRoot parameter 'itemPath' must not be empty`);
|
||
// Already rooted
|
||
if (hasAbsoluteRoot(itemPath)) {
|
||
return itemPath;
|
||
}
|
||
// Windows
|
||
if (IS_WINDOWS) {
|
||
// Check for itemPath like C: or C:foo
|
||
if (itemPath.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)) {
|
||
let cwd = process.cwd();
|
||
assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
|
||
// Drive letter matches cwd? Expand to cwd
|
||
if (itemPath[0].toUpperCase() === cwd[0].toUpperCase()) {
|
||
// Drive only, e.g. C:
|
||
if (itemPath.length === 2) {
|
||
// Preserve specified drive letter case (upper or lower)
|
||
return `${itemPath[0]}:\\${cwd.substr(3)}`;
|
||
}
|
||
// Drive + path, e.g. C:foo
|
||
else {
|
||
if (!cwd.endsWith('\\')) {
|
||
cwd += '\\';
|
||
}
|
||
// Preserve specified drive letter case (upper or lower)
|
||
return `${itemPath[0]}:\\${cwd.substr(3)}${itemPath.substr(2)}`;
|
||
}
|
||
}
|
||
// Different drive
|
||
else {
|
||
return `${itemPath[0]}:\\${itemPath.substr(2)}`;
|
||
}
|
||
}
|
||
// Check for itemPath like \ or \foo
|
||
else if (normalizeSeparators(itemPath).match(/^\\$|^\\[^\\]/)) {
|
||
const cwd = process.cwd();
|
||
assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
|
||
return `${cwd[0]}:\\${itemPath.substr(1)}`;
|
||
}
|
||
}
|
||
assert_1.default(hasAbsoluteRoot(root), `ensureAbsoluteRoot parameter 'root' must have an absolute root`);
|
||
// Otherwise ensure root ends with a separator
|
||
if (root.endsWith('/') || (IS_WINDOWS && root.endsWith('\\'))) {
|
||
// Intentionally empty
|
||
}
|
||
else {
|
||
// Append separator
|
||
root += path.sep;
|
||
}
|
||
return root + itemPath;
|
||
}
|
||
exports.ensureAbsoluteRoot = ensureAbsoluteRoot;
|
||
/**
|
||
* On Linux/macOS, true if path starts with `/`. On Windows, true for paths like:
|
||
* `\\hello\share` and `C:\hello` (and using alternate separator).
|
||
*/
|
||
function hasAbsoluteRoot(itemPath) {
|
||
assert_1.default(itemPath, `hasAbsoluteRoot parameter 'itemPath' must not be empty`);
|
||
// Normalize separators
|
||
itemPath = normalizeSeparators(itemPath);
|
||
// Windows
|
||
if (IS_WINDOWS) {
|
||
// E.g. \\hello\share or C:\hello
|
||
return itemPath.startsWith('\\\\') || /^[A-Z]:\\/i.test(itemPath);
|
||
}
|
||
// E.g. /hello
|
||
return itemPath.startsWith('/');
|
||
}
|
||
exports.hasAbsoluteRoot = hasAbsoluteRoot;
|
||
/**
|
||
* On Linux/macOS, true if path starts with `/`. On Windows, true for paths like:
|
||
* `\`, `\hello`, `\\hello\share`, `C:`, and `C:\hello` (and using alternate separator).
|
||
*/
|
||
function hasRoot(itemPath) {
|
||
assert_1.default(itemPath, `isRooted parameter 'itemPath' must not be empty`);
|
||
// Normalize separators
|
||
itemPath = normalizeSeparators(itemPath);
|
||
// Windows
|
||
if (IS_WINDOWS) {
|
||
// E.g. \ or \hello or \\hello
|
||
// E.g. C: or C:\hello
|
||
return itemPath.startsWith('\\') || /^[A-Z]:/i.test(itemPath);
|
||
}
|
||
// E.g. /hello
|
||
return itemPath.startsWith('/');
|
||
}
|
||
exports.hasRoot = hasRoot;
|
||
/**
|
||
* Removes redundant slashes and converts `/` to `\` on Windows
|
||
*/
|
||
function normalizeSeparators(p) {
|
||
p = p || '';
|
||
// Windows
|
||
if (IS_WINDOWS) {
|
||
// Convert slashes on Windows
|
||
p = p.replace(/\//g, '\\');
|
||
// Remove redundant slashes
|
||
const isUnc = /^\\\\+[^\\]/.test(p); // e.g. \\hello
|
||
return (isUnc ? '\\' : '') + p.replace(/\\\\+/g, '\\'); // preserve leading \\ for UNC
|
||
}
|
||
// Remove redundant slashes
|
||
return p.replace(/\/\/+/g, '/');
|
||
}
|
||
exports.normalizeSeparators = normalizeSeparators;
|
||
/**
|
||
* Normalizes the path separators and trims the trailing separator (when safe).
|
||
* For example, `/foo/ => /foo` but `/ => /`
|
||
*/
|
||
function safeTrimTrailingSeparator(p) {
|
||
// Short-circuit if empty
|
||
if (!p) {
|
||
return '';
|
||
}
|
||
// Normalize separators
|
||
p = normalizeSeparators(p);
|
||
// No trailing slash
|
||
if (!p.endsWith(path.sep)) {
|
||
return p;
|
||
}
|
||
// Check '/' on Linux/macOS and '\' on Windows
|
||
if (p === path.sep) {
|
||
return p;
|
||
}
|
||
// On Windows check if drive root. E.g. C:\
|
||
if (IS_WINDOWS && /^[A-Z]:\\$/i.test(p)) {
|
||
return p;
|
||
}
|
||
// Otherwise trim trailing slash
|
||
return p.substr(0, p.length - 1);
|
||
}
|
||
exports.safeTrimTrailingSeparator = safeTrimTrailingSeparator;
|
||
//# sourceMappingURL=internal-path-helper.js.map
|
||
|
||
/***/ }),
|
||
/* 654 */
|
||
/***/ (function(module) {
|
||
|
||
// This is not the set of all possible signals.
|
||
//
|
||
// It IS, however, the set of all signals that trigger
|
||
// an exit on either Linux or BSD systems. Linux is a
|
||
// superset of the signal names supported on BSD, and
|
||
// the unknown signals just fail to register, so we can
|
||
// catch that easily enough.
|
||
//
|
||
// Don't bother with SIGKILL. It's uncatchable, which
|
||
// means that we can't fire any callbacks anyway.
|
||
//
|
||
// If a user does happen to register a handler on a non-
|
||
// fatal signal like SIGWINCH or something, and then
|
||
// exit, it'll end up firing `process.emit('exit')`, so
|
||
// the handler will be fired anyway.
|
||
//
|
||
// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised
|
||
// artificially, inherently leave the process in a
|
||
// state from which it is not safe to try and enter JS
|
||
// listeners.
|
||
module.exports = [
|
||
'SIGABRT',
|
||
'SIGALRM',
|
||
'SIGHUP',
|
||
'SIGINT',
|
||
'SIGTERM'
|
||
]
|
||
|
||
if (process.platform !== 'win32') {
|
||
module.exports.push(
|
||
'SIGVTALRM',
|
||
'SIGXCPU',
|
||
'SIGXFSZ',
|
||
'SIGUSR2',
|
||
'SIGTRAP',
|
||
'SIGSYS',
|
||
'SIGQUIT',
|
||
'SIGIOT'
|
||
// should detect profiler and enable/disable accordingly.
|
||
// see #21
|
||
// 'SIGPROF'
|
||
)
|
||
}
|
||
|
||
if (process.platform === 'linux') {
|
||
module.exports.push(
|
||
'SIGIO',
|
||
'SIGPOLL',
|
||
'SIGPWR',
|
||
'SIGSTKFLT',
|
||
'SIGUNUSED'
|
||
)
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 655 */,
|
||
/* 656 */,
|
||
/* 657 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLCData, XMLCharacterData,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLCharacterData = __webpack_require__(639);
|
||
|
||
module.exports = XMLCData = (function(superClass) {
|
||
extend(XMLCData, superClass);
|
||
|
||
function XMLCData(parent, text) {
|
||
XMLCData.__super__.constructor.call(this, parent);
|
||
if (text == null) {
|
||
throw new Error("Missing CDATA text. " + this.debugInfo());
|
||
}
|
||
this.name = "#cdata-section";
|
||
this.type = NodeType.CData;
|
||
this.value = this.stringify.cdata(text);
|
||
}
|
||
|
||
XMLCData.prototype.clone = function() {
|
||
return Object.create(this);
|
||
};
|
||
|
||
XMLCData.prototype.toString = function(options) {
|
||
return this.options.writer.cdata(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
return XMLCData;
|
||
|
||
})(XMLCharacterData);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 658 */,
|
||
/* 659 */,
|
||
/* 660 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLNode, XMLRaw,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
module.exports = XMLRaw = (function(superClass) {
|
||
extend(XMLRaw, superClass);
|
||
|
||
function XMLRaw(parent, text) {
|
||
XMLRaw.__super__.constructor.call(this, parent);
|
||
if (text == null) {
|
||
throw new Error("Missing raw text. " + this.debugInfo());
|
||
}
|
||
this.type = NodeType.Raw;
|
||
this.value = this.stringify.raw(text);
|
||
}
|
||
|
||
XMLRaw.prototype.clone = function() {
|
||
return Object.create(this);
|
||
};
|
||
|
||
XMLRaw.prototype.toString = function(options) {
|
||
return this.options.writer.raw(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
return XMLRaw;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 661 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLDTDEntity, XMLNode, isObject,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
isObject = __webpack_require__(582).isObject;
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
module.exports = XMLDTDEntity = (function(superClass) {
|
||
extend(XMLDTDEntity, superClass);
|
||
|
||
function XMLDTDEntity(parent, pe, name, value) {
|
||
XMLDTDEntity.__super__.constructor.call(this, parent);
|
||
if (name == null) {
|
||
throw new Error("Missing DTD entity name. " + this.debugInfo(name));
|
||
}
|
||
if (value == null) {
|
||
throw new Error("Missing DTD entity value. " + this.debugInfo(name));
|
||
}
|
||
this.pe = !!pe;
|
||
this.name = this.stringify.name(name);
|
||
this.type = NodeType.EntityDeclaration;
|
||
if (!isObject(value)) {
|
||
this.value = this.stringify.dtdEntityValue(value);
|
||
this.internal = true;
|
||
} else {
|
||
if (!value.pubID && !value.sysID) {
|
||
throw new Error("Public and/or system identifiers are required for an external entity. " + this.debugInfo(name));
|
||
}
|
||
if (value.pubID && !value.sysID) {
|
||
throw new Error("System identifier is required for a public external entity. " + this.debugInfo(name));
|
||
}
|
||
this.internal = false;
|
||
if (value.pubID != null) {
|
||
this.pubID = this.stringify.dtdPubID(value.pubID);
|
||
}
|
||
if (value.sysID != null) {
|
||
this.sysID = this.stringify.dtdSysID(value.sysID);
|
||
}
|
||
if (value.nData != null) {
|
||
this.nData = this.stringify.dtdNData(value.nData);
|
||
}
|
||
if (this.pe && this.nData) {
|
||
throw new Error("Notation declaration is not allowed in a parameter entity. " + this.debugInfo(name));
|
||
}
|
||
}
|
||
}
|
||
|
||
Object.defineProperty(XMLDTDEntity.prototype, 'publicId', {
|
||
get: function() {
|
||
return this.pubID;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDTDEntity.prototype, 'systemId', {
|
||
get: function() {
|
||
return this.sysID;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDTDEntity.prototype, 'notationName', {
|
||
get: function() {
|
||
return this.nData || null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDTDEntity.prototype, 'inputEncoding', {
|
||
get: function() {
|
||
return null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDTDEntity.prototype, 'xmlEncoding', {
|
||
get: function() {
|
||
return null;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDTDEntity.prototype, 'xmlVersion', {
|
||
get: function() {
|
||
return null;
|
||
}
|
||
});
|
||
|
||
XMLDTDEntity.prototype.toString = function(options) {
|
||
return this.options.writer.dtdEntity(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
return XMLDTDEntity;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 662 */,
|
||
/* 663 */,
|
||
/* 664 */,
|
||
/* 665 */,
|
||
/* 666 */,
|
||
/* 667 */,
|
||
/* 668 */,
|
||
/* 669 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("util");
|
||
|
||
/***/ }),
|
||
/* 670 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.SpanKind = void 0;
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
var SpanKind;
|
||
(function (SpanKind) {
|
||
/** Default value. Indicates that the span is used internally. */
|
||
SpanKind[SpanKind["INTERNAL"] = 0] = "INTERNAL";
|
||
/**
|
||
* Indicates that the span covers server-side handling of an RPC or other
|
||
* remote request.
|
||
*/
|
||
SpanKind[SpanKind["SERVER"] = 1] = "SERVER";
|
||
/**
|
||
* Indicates that the span covers the client-side wrapper around an RPC or
|
||
* other remote request.
|
||
*/
|
||
SpanKind[SpanKind["CLIENT"] = 2] = "CLIENT";
|
||
/**
|
||
* Indicates that the span describes producer sending a message to a
|
||
* broker. Unlike client and server, there is no direct critical path latency
|
||
* relationship between producer and consumer spans.
|
||
*/
|
||
SpanKind[SpanKind["PRODUCER"] = 3] = "PRODUCER";
|
||
/**
|
||
* Indicates that the span describes consumer receiving a message from a
|
||
* broker. Unlike client and server, there is no direct critical path latency
|
||
* relationship between producer and consumer spans.
|
||
*/
|
||
SpanKind[SpanKind["CONSUMER"] = 4] = "CONSUMER";
|
||
})(SpanKind = exports.SpanKind || (exports.SpanKind = {}));
|
||
//# sourceMappingURL=span_kind.js.map
|
||
|
||
/***/ }),
|
||
/* 671 */,
|
||
/* 672 */
|
||
/***/ (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 _a;
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const assert_1 = __webpack_require__(357);
|
||
const fs = __webpack_require__(747);
|
||
const path = __webpack_require__(622);
|
||
_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
|
||
exports.IS_WINDOWS = process.platform === 'win32';
|
||
function exists(fsPath) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
try {
|
||
yield exports.stat(fsPath);
|
||
}
|
||
catch (err) {
|
||
if (err.code === 'ENOENT') {
|
||
return false;
|
||
}
|
||
throw err;
|
||
}
|
||
return true;
|
||
});
|
||
}
|
||
exports.exists = exists;
|
||
function isDirectory(fsPath, useStat = false) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);
|
||
return stats.isDirectory();
|
||
});
|
||
}
|
||
exports.isDirectory = isDirectory;
|
||
/**
|
||
* On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:
|
||
* \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases).
|
||
*/
|
||
function isRooted(p) {
|
||
p = normalizeSeparators(p);
|
||
if (!p) {
|
||
throw new Error('isRooted() parameter "p" cannot be empty');
|
||
}
|
||
if (exports.IS_WINDOWS) {
|
||
return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello
|
||
); // e.g. C: or C:\hello
|
||
}
|
||
return p.startsWith('/');
|
||
}
|
||
exports.isRooted = isRooted;
|
||
/**
|
||
* Recursively create a directory at `fsPath`.
|
||
*
|
||
* This implementation is optimistic, meaning it attempts to create the full
|
||
* path first, and backs up the path stack from there.
|
||
*
|
||
* @param fsPath The path to create
|
||
* @param maxDepth The maximum recursion depth
|
||
* @param depth The current recursion depth
|
||
*/
|
||
function mkdirP(fsPath, maxDepth = 1000, depth = 1) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
assert_1.ok(fsPath, 'a path argument must be provided');
|
||
fsPath = path.resolve(fsPath);
|
||
if (depth >= maxDepth)
|
||
return exports.mkdir(fsPath);
|
||
try {
|
||
yield exports.mkdir(fsPath);
|
||
return;
|
||
}
|
||
catch (err) {
|
||
switch (err.code) {
|
||
case 'ENOENT': {
|
||
yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1);
|
||
yield exports.mkdir(fsPath);
|
||
return;
|
||
}
|
||
default: {
|
||
let stats;
|
||
try {
|
||
stats = yield exports.stat(fsPath);
|
||
}
|
||
catch (err2) {
|
||
throw err;
|
||
}
|
||
if (!stats.isDirectory())
|
||
throw err;
|
||
}
|
||
}
|
||
}
|
||
});
|
||
}
|
||
exports.mkdirP = mkdirP;
|
||
/**
|
||
* Best effort attempt to determine whether a file exists and is executable.
|
||
* @param filePath file path to check
|
||
* @param extensions additional file extensions to try
|
||
* @return if file exists and is executable, returns the file path. otherwise empty string.
|
||
*/
|
||
function tryGetExecutablePath(filePath, extensions) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let stats = undefined;
|
||
try {
|
||
// test file exists
|
||
stats = yield exports.stat(filePath);
|
||
}
|
||
catch (err) {
|
||
if (err.code !== 'ENOENT') {
|
||
// eslint-disable-next-line no-console
|
||
console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
|
||
}
|
||
}
|
||
if (stats && stats.isFile()) {
|
||
if (exports.IS_WINDOWS) {
|
||
// on Windows, test for valid extension
|
||
const upperExt = path.extname(filePath).toUpperCase();
|
||
if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {
|
||
return filePath;
|
||
}
|
||
}
|
||
else {
|
||
if (isUnixExecutable(stats)) {
|
||
return filePath;
|
||
}
|
||
}
|
||
}
|
||
// try each extension
|
||
const originalFilePath = filePath;
|
||
for (const extension of extensions) {
|
||
filePath = originalFilePath + extension;
|
||
stats = undefined;
|
||
try {
|
||
stats = yield exports.stat(filePath);
|
||
}
|
||
catch (err) {
|
||
if (err.code !== 'ENOENT') {
|
||
// eslint-disable-next-line no-console
|
||
console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
|
||
}
|
||
}
|
||
if (stats && stats.isFile()) {
|
||
if (exports.IS_WINDOWS) {
|
||
// preserve the case of the actual file (since an extension was appended)
|
||
try {
|
||
const directory = path.dirname(filePath);
|
||
const upperName = path.basename(filePath).toUpperCase();
|
||
for (const actualName of yield exports.readdir(directory)) {
|
||
if (upperName === actualName.toUpperCase()) {
|
||
filePath = path.join(directory, actualName);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
catch (err) {
|
||
// eslint-disable-next-line no-console
|
||
console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);
|
||
}
|
||
return filePath;
|
||
}
|
||
else {
|
||
if (isUnixExecutable(stats)) {
|
||
return filePath;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return '';
|
||
});
|
||
}
|
||
exports.tryGetExecutablePath = tryGetExecutablePath;
|
||
function normalizeSeparators(p) {
|
||
p = p || '';
|
||
if (exports.IS_WINDOWS) {
|
||
// convert slashes on Windows
|
||
p = p.replace(/\//g, '\\');
|
||
// remove redundant slashes
|
||
return p.replace(/\\\\+/g, '\\');
|
||
}
|
||
// remove redundant slashes
|
||
return p.replace(/\/\/+/g, '/');
|
||
}
|
||
// on Mac/Linux, test the execute bit
|
||
// R W X R W X R W X
|
||
// 256 128 64 32 16 8 4 2 1
|
||
function isUnixExecutable(stats) {
|
||
return ((stats.mode & 1) > 0 ||
|
||
((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||
|
||
((stats.mode & 64) > 0 && stats.uid === process.getuid()));
|
||
}
|
||
//# sourceMappingURL=io-util.js.map
|
||
|
||
/***/ }),
|
||
/* 673 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.createLogLevelDiagLogger = void 0;
|
||
var types_1 = __webpack_require__(545);
|
||
function createLogLevelDiagLogger(maxLevel, logger) {
|
||
if (maxLevel < types_1.DiagLogLevel.NONE) {
|
||
maxLevel = types_1.DiagLogLevel.NONE;
|
||
}
|
||
else if (maxLevel > types_1.DiagLogLevel.ALL) {
|
||
maxLevel = types_1.DiagLogLevel.ALL;
|
||
}
|
||
// In case the logger is null or undefined
|
||
logger = logger || {};
|
||
function _filterFunc(funcName, theLevel) {
|
||
var theFunc = logger[funcName];
|
||
if (typeof theFunc === 'function' && maxLevel >= theLevel) {
|
||
return theFunc.bind(logger);
|
||
}
|
||
return function () { };
|
||
}
|
||
return {
|
||
error: _filterFunc('error', types_1.DiagLogLevel.ERROR),
|
||
warn: _filterFunc('warn', types_1.DiagLogLevel.WARN),
|
||
info: _filterFunc('info', types_1.DiagLogLevel.INFO),
|
||
debug: _filterFunc('debug', types_1.DiagLogLevel.DEBUG),
|
||
verbose: _filterFunc('verbose', types_1.DiagLogLevel.VERBOSE),
|
||
};
|
||
}
|
||
exports.createLogLevelDiagLogger = createLogLevelDiagLogger;
|
||
//# sourceMappingURL=logLevelLogger.js.map
|
||
|
||
/***/ }),
|
||
/* 674 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = authenticate;
|
||
|
||
const { Deprecation } = __webpack_require__(692);
|
||
const once = __webpack_require__(969);
|
||
|
||
const deprecateAuthenticate = once((log, deprecation) => log.warn(deprecation));
|
||
|
||
function authenticate(state, options) {
|
||
deprecateAuthenticate(
|
||
state.octokit.log,
|
||
new Deprecation(
|
||
'[@octokit/rest] octokit.authenticate() is deprecated. Use "auth" constructor option instead.'
|
||
)
|
||
);
|
||
|
||
if (!options) {
|
||
state.auth = false;
|
||
return;
|
||
}
|
||
|
||
switch (options.type) {
|
||
case "basic":
|
||
if (!options.username || !options.password) {
|
||
throw new Error(
|
||
"Basic authentication requires both a username and password to be set"
|
||
);
|
||
}
|
||
break;
|
||
|
||
case "oauth":
|
||
if (!options.token && !(options.key && options.secret)) {
|
||
throw new Error(
|
||
"OAuth2 authentication requires a token or key & secret to be set"
|
||
);
|
||
}
|
||
break;
|
||
|
||
case "token":
|
||
case "app":
|
||
if (!options.token) {
|
||
throw new Error("Token authentication requires a token to be set");
|
||
}
|
||
break;
|
||
|
||
default:
|
||
throw new Error(
|
||
"Invalid authentication type, must be 'basic', 'oauth', 'token' or 'app'"
|
||
);
|
||
}
|
||
|
||
state.auth = options;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 675 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = function btoa(str) {
|
||
return new Buffer(str).toString('base64')
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 676 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = void 0;
|
||
|
||
var _regex = _interopRequireDefault(__webpack_require__(238));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
function validate(uuid) {
|
||
return typeof uuid === 'string' && _regex.default.test(uuid);
|
||
}
|
||
|
||
var _default = validate;
|
||
exports.default = _default;
|
||
|
||
/***/ }),
|
||
/* 677 */,
|
||
/* 678 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
/*!
|
||
* Copyright (c) 2015, Salesforce.com, Inc.
|
||
* All rights reserved.
|
||
*
|
||
* Redistribution and use in source and binary forms, with or without
|
||
* modification, are permitted provided that the following conditions are met:
|
||
*
|
||
* 1. Redistributions of source code must retain the above copyright notice,
|
||
* this list of conditions and the following disclaimer.
|
||
*
|
||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||
* this list of conditions and the following disclaimer in the documentation
|
||
* and/or other materials provided with the distribution.
|
||
*
|
||
* 3. Neither the name of Salesforce.com nor the names of its contributors may
|
||
* be used to endorse or promote products derived from this software without
|
||
* specific prior written permission.
|
||
*
|
||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
* POSSIBILITY OF SUCH DAMAGE.
|
||
*/
|
||
|
||
/*
|
||
* "A request-path path-matches a given cookie-path if at least one of the
|
||
* following conditions holds:"
|
||
*/
|
||
function pathMatch(reqPath, cookiePath) {
|
||
// "o The cookie-path and the request-path are identical."
|
||
if (cookiePath === reqPath) {
|
||
return true;
|
||
}
|
||
|
||
const idx = reqPath.indexOf(cookiePath);
|
||
if (idx === 0) {
|
||
// "o The cookie-path is a prefix of the request-path, and the last
|
||
// character of the cookie-path is %x2F ("/")."
|
||
if (cookiePath.substr(-1) === "/") {
|
||
return true;
|
||
}
|
||
|
||
// " o The cookie-path is a prefix of the request-path, and the first
|
||
// character of the request-path that is not included in the cookie- path
|
||
// is a %x2F ("/") character."
|
||
if (reqPath.substr(cookiePath.length, 1) === "/") {
|
||
return true;
|
||
}
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
exports.pathMatch = pathMatch;
|
||
|
||
|
||
/***/ }),
|
||
/* 679 */,
|
||
/* 680 */,
|
||
/* 681 */,
|
||
/* 682 */,
|
||
/* 683 */
|
||
/***/ (function(module) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
module.exports = {
|
||
Element: 1,
|
||
Attribute: 2,
|
||
Text: 3,
|
||
CData: 4,
|
||
EntityReference: 5,
|
||
EntityDeclaration: 6,
|
||
ProcessingInstruction: 7,
|
||
Comment: 8,
|
||
Document: 9,
|
||
DocType: 10,
|
||
DocumentFragment: 11,
|
||
NotationDeclaration: 12,
|
||
Declaration: 201,
|
||
Raw: 202,
|
||
AttributeDeclaration: 203,
|
||
ElementDeclaration: 204,
|
||
Dummy: 205
|
||
};
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 684 */,
|
||
/* 685 */,
|
||
/* 686 */,
|
||
/* 687 */,
|
||
/* 688 */,
|
||
/* 689 */,
|
||
/* 690 */,
|
||
/* 691 */,
|
||
/* 692 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
class Deprecation extends Error {
|
||
constructor(message) {
|
||
super(message); // Maintains proper stack trace (only available on V8)
|
||
|
||
/* istanbul ignore next */
|
||
|
||
if (Error.captureStackTrace) {
|
||
Error.captureStackTrace(this, this.constructor);
|
||
}
|
||
|
||
this.name = 'Deprecation';
|
||
}
|
||
|
||
}
|
||
|
||
exports.Deprecation = Deprecation;
|
||
|
||
|
||
/***/ }),
|
||
/* 693 */,
|
||
/* 694 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=tracer_provider.js.map
|
||
|
||
/***/ }),
|
||
/* 695 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=tracer.js.map
|
||
|
||
/***/ }),
|
||
/* 696 */,
|
||
/* 697 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
module.exports = (promise, onFinally) => {
|
||
onFinally = onFinally || (() => {});
|
||
|
||
return promise.then(
|
||
val => new Promise(resolve => {
|
||
resolve(onFinally());
|
||
}).then(() => val),
|
||
err => new Promise(resolve => {
|
||
resolve(onFinally());
|
||
}).then(() => {
|
||
throw err;
|
||
})
|
||
);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 698 */,
|
||
/* 699 */,
|
||
/* 700 */,
|
||
/* 701 */,
|
||
/* 702 */,
|
||
/* 703 */,
|
||
/* 704 */,
|
||
/* 705 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = {"activity":{"checkStarringRepo":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/user/starred/:owner/:repo"},"deleteRepoSubscription":{"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/subscription"},"deleteThreadSubscription":{"method":"DELETE","params":{"thread_id":{"required":true,"type":"integer"}},"url":"/notifications/threads/:thread_id/subscription"},"getRepoSubscription":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/subscription"},"getThread":{"method":"GET","params":{"thread_id":{"required":true,"type":"integer"}},"url":"/notifications/threads/:thread_id"},"getThreadSubscription":{"method":"GET","params":{"thread_id":{"required":true,"type":"integer"}},"url":"/notifications/threads/:thread_id/subscription"},"listEventsForOrg":{"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/events/orgs/:org"},"listEventsForUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/events"},"listFeeds":{"method":"GET","params":{},"url":"/feeds"},"listNotifications":{"method":"GET","params":{"all":{"type":"boolean"},"before":{"type":"string"},"page":{"type":"integer"},"participating":{"type":"boolean"},"per_page":{"type":"integer"},"since":{"type":"string"}},"url":"/notifications"},"listNotificationsForRepo":{"method":"GET","params":{"all":{"type":"boolean"},"before":{"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"participating":{"type":"boolean"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"},"since":{"type":"string"}},"url":"/repos/:owner/:repo/notifications"},"listPublicEvents":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/events"},"listPublicEventsForOrg":{"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/orgs/:org/events"},"listPublicEventsForRepoNetwork":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/networks/:owner/:repo/events"},"listPublicEventsForUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/events/public"},"listReceivedEventsForUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/received_events"},"listReceivedPublicEventsForUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/received_events/public"},"listRepoEvents":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/events"},"listReposStarredByAuthenticatedUser":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"sort":{"enum":["created","updated"],"type":"string"}},"url":"/user/starred"},"listReposStarredByUser":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"sort":{"enum":["created","updated"],"type":"string"},"username":{"required":true,"type":"string"}},"url":"/users/:username/starred"},"listReposWatchedByUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/subscriptions"},"listStargazersForRepo":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/stargazers"},"listWatchedReposForAuthenticatedUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/subscriptions"},"listWatchersForRepo":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/subscribers"},"markAsRead":{"method":"PUT","params":{"last_read_at":{"type":"string"}},"url":"/notifications"},"markNotificationsAsReadForRepo":{"method":"PUT","params":{"last_read_at":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/notifications"},"markThreadAsRead":{"method":"PATCH","params":{"thread_id":{"required":true,"type":"integer"}},"url":"/notifications/threads/:thread_id"},"setRepoSubscription":{"method":"PUT","params":{"ignored":{"type":"boolean"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"subscribed":{"type":"boolean"}},"url":"/repos/:owner/:repo/subscription"},"setThreadSubscription":{"method":"PUT","params":{"ignored":{"type":"boolean"},"thread_id":{"required":true,"type":"integer"}},"url":"/notifications/threads/:thread_id/subscription"},"starRepo":{"method":"PUT","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/user/starred/:owner/:repo"},"unstarRepo":{"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/user/starred/:owner/:repo"}},"apps":{"addRepoToInstallation":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"PUT","params":{"installation_id":{"required":true,"type":"integer"},"repository_id":{"required":true,"type":"integer"}},"url":"/user/installations/:installation_id/repositories/:repository_id"},"checkAccountIsAssociatedWithAny":{"method":"GET","params":{"account_id":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/marketplace_listing/accounts/:account_id"},"checkAccountIsAssociatedWithAnyStubbed":{"method":"GET","params":{"account_id":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/marketplace_listing/stubbed/accounts/:account_id"},"checkAuthorization":{"deprecated":"octokit.oauthAuthorizations.checkAuthorization() has been renamed to octokit.apps.checkAuthorization() (2019-11-05)","method":"GET","params":{"access_token":{"required":true,"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/tokens/:access_token"},"checkToken":{"headers":{"accept":"application/vnd.github.doctor-strange-preview+json"},"method":"POST","params":{"access_token":{"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/token"},"createContentAttachment":{"headers":{"accept":"application/vnd.github.corsair-preview+json"},"method":"POST","params":{"body":{"required":true,"type":"string"},"content_reference_id":{"required":true,"type":"integer"},"title":{"required":true,"type":"string"}},"url":"/content_references/:content_reference_id/attachments"},"createFromManifest":{"headers":{"accept":"application/vnd.github.fury-preview+json"},"method":"POST","params":{"code":{"required":true,"type":"string"}},"url":"/app-manifests/:code/conversions"},"createInstallationToken":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"POST","params":{"installation_id":{"required":true,"type":"integer"},"permissions":{"type":"object"},"repository_ids":{"type":"integer[]"}},"url":"/app/installations/:installation_id/access_tokens"},"deleteAuthorization":{"headers":{"accept":"application/vnd.github.doctor-strange-preview+json"},"method":"DELETE","params":{"access_token":{"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/grant"},"deleteInstallation":{"headers":{"accept":"application/vnd.github.gambit-preview+json,application/vnd.github.machine-man-preview+json"},"method":"DELETE","params":{"installation_id":{"required":true,"type":"integer"}},"url":"/app/installations/:installation_id"},"deleteToken":{"headers":{"accept":"application/vnd.github.doctor-strange-preview+json"},"method":"DELETE","params":{"access_token":{"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/token"},"findOrgInstallation":{"deprecated":"octokit.apps.findOrgInstallation() has been renamed to octokit.apps.getOrgInstallation() (2019-04-10)","headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"org":{"required":true,"type":"string"}},"url":"/orgs/:org/installation"},"findRepoInstallation":{"deprecated":"octokit.apps.findRepoInstallation() has been renamed to octokit.apps.getRepoInstallation() (2019-04-10)","headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/installation"},"findUserInstallation":{"deprecated":"octokit.apps.findUserInstallation() has been renamed to octokit.apps.getUserInstallation() (2019-04-10)","headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"username":{"required":true,"type":"string"}},"url":"/users/:username/installation"},"getAuthenticated":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{},"url":"/app"},"getBySlug":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"app_slug":{"required":true,"type":"string"}},"url":"/apps/:app_slug"},"getInstallation":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"installation_id":{"required":true,"type":"integer"}},"url":"/app/installations/:installation_id"},"getOrgInstallation":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"org":{"required":true,"type":"string"}},"url":"/orgs/:org/installation"},"getRepoInstallation":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/installation"},"getUserInstallation":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"username":{"required":true,"type":"string"}},"url":"/users/:username/installation"},"listAccountsUserOrOrgOnPlan":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"plan_id":{"required":true,"type":"integer"},"sort":{"enum":["created","updated"],"type":"string"}},"url":"/marketplace_listing/plans/:plan_id/accounts"},"listAccountsUserOrOrgOnPlanStubbed":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"plan_id":{"required":true,"type":"integer"},"sort":{"enum":["created","updated"],"type":"string"}},"url":"/marketplace_listing/stubbed/plans/:plan_id/accounts"},"listInstallationReposForAuthenticatedUser":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"installation_id":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/installations/:installation_id/repositories"},"listInstallations":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/app/installations"},"listInstallationsForAuthenticatedUser":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/installations"},"listMarketplacePurchasesForAuthenticatedUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/marketplace_purchases"},"listMarketplacePurchasesForAuthenticatedUserStubbed":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/marketplace_purchases/stubbed"},"listPlans":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/marketplace_listing/plans"},"listPlansStubbed":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/marketplace_listing/stubbed/plans"},"listRepos":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/installation/repositories"},"removeRepoFromInstallation":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"DELETE","params":{"installation_id":{"required":true,"type":"integer"},"repository_id":{"required":true,"type":"integer"}},"url":"/user/installations/:installation_id/repositories/:repository_id"},"resetAuthorization":{"deprecated":"octokit.oauthAuthorizations.resetAuthorization() has been renamed to octokit.apps.resetAuthorization() (2019-11-05)","method":"POST","params":{"access_token":{"required":true,"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/tokens/:access_token"},"resetToken":{"headers":{"accept":"application/vnd.github.doctor-strange-preview+json"},"method":"PATCH","params":{"access_token":{"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/token"},"revokeAuthorizationForApplication":{"deprecated":"octokit.oauthAuthorizations.revokeAuthorizationForApplication() has been renamed to octokit.apps.revokeAuthorizationForApplication() (2019-11-05)","method":"DELETE","params":{"access_token":{"required":true,"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/tokens/:access_token"},"revokeGrantForApplication":{"deprecated":"octokit.oauthAuthorizations.revokeGrantForApplication() has been renamed to octokit.apps.revokeGrantForApplication() (2019-11-05)","method":"DELETE","params":{"access_token":{"required":true,"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/grants/:access_token"},"revokeInstallationToken":{"headers":{"accept":"application/vnd.github.gambit-preview+json"},"method":"DELETE","params":{},"url":"/installation/token"}},"checks":{"create":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"POST","params":{"actions":{"type":"object[]"},"actions[].description":{"required":true,"type":"string"},"actions[].identifier":{"required":true,"type":"string"},"actions[].label":{"required":true,"type":"string"},"completed_at":{"type":"string"},"conclusion":{"enum":["success","failure","neutral","cancelled","timed_out","action_required"],"type":"string"},"details_url":{"type":"string"},"external_id":{"type":"string"},"head_sha":{"required":true,"type":"string"},"name":{"required":true,"type":"string"},"output":{"type":"object"},"output.annotations":{"type":"object[]"},"output.annotations[].annotation_level":{"enum":["notice","warning","failure"],"required":true,"type":"string"},"output.annotations[].end_column":{"type":"integer"},"output.annotations[].end_line":{"required":true,"type":"integer"},"output.annotations[].message":{"required":true,"type":"string"},"output.annotations[].path":{"required":true,"type":"string"},"output.annotations[].raw_details":{"type":"string"},"output.annotations[].start_column":{"type":"integer"},"output.annotations[].start_line":{"required":true,"type":"integer"},"output.annotations[].title":{"type":"string"},"output.images":{"type":"object[]"},"output.images[].alt":{"required":true,"type":"string"},"output.images[].caption":{"type":"string"},"output.images[].image_url":{"required":true,"type":"string"},"output.summary":{"required":true,"type":"string"},"output.text":{"type":"string"},"output.title":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"started_at":{"type":"string"},"status":{"enum":["queued","in_progress","completed"],"type":"string"}},"url":"/repos/:owner/:repo/check-runs"},"createSuite":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"POST","params":{"head_sha":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/check-suites"},"get":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"GET","params":{"check_run_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/check-runs/:check_run_id"},"getSuite":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"GET","params":{"check_suite_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/check-suites/:check_suite_id"},"listAnnotations":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"GET","params":{"check_run_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/check-runs/:check_run_id/annotations"},"listForRef":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"GET","params":{"check_name":{"type":"string"},"filter":{"enum":["latest","all"],"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"status":{"enum":["queued","in_progress","completed"],"type":"string"}},"url":"/repos/:owner/:repo/commits/:ref/check-runs"},"listForSuite":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"GET","params":{"check_name":{"type":"string"},"check_suite_id":{"required":true,"type":"integer"},"filter":{"enum":["latest","all"],"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"},"status":{"enum":["queued","in_progress","completed"],"type":"string"}},"url":"/repos/:owner/:repo/check-suites/:check_suite_id/check-runs"},"listSuitesForRef":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"GET","params":{"app_id":{"type":"integer"},"check_name":{"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/commits/:ref/check-suites"},"rerequestSuite":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"POST","params":{"check_suite_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/check-suites/:check_suite_id/rerequest"},"setSuitesPreferences":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"PATCH","params":{"auto_trigger_checks":{"type":"object[]"},"auto_trigger_checks[].app_id":{"required":true,"type":"integer"},"auto_trigger_checks[].setting":{"required":true,"type":"boolean"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/check-suites/preferences"},"update":{"headers":{"accept":"application/vnd.github.antiope-preview+json"},"method":"PATCH","params":{"actions":{"type":"object[]"},"actions[].description":{"required":true,"type":"string"},"actions[].identifier":{"required":true,"type":"string"},"actions[].label":{"required":true,"type":"string"},"check_run_id":{"required":true,"type":"integer"},"completed_at":{"type":"string"},"conclusion":{"enum":["success","failure","neutral","cancelled","timed_out","action_required"],"type":"string"},"details_url":{"type":"string"},"external_id":{"type":"string"},"name":{"type":"string"},"output":{"type":"object"},"output.annotations":{"type":"object[]"},"output.annotations[].annotation_level":{"enum":["notice","warning","failure"],"required":true,"type":"string"},"output.annotations[].end_column":{"type":"integer"},"output.annotations[].end_line":{"required":true,"type":"integer"},"output.annotations[].message":{"required":true,"type":"string"},"output.annotations[].path":{"required":true,"type":"string"},"output.annotations[].raw_details":{"type":"string"},"output.annotations[].start_column":{"type":"integer"},"output.annotations[].start_line":{"required":true,"type":"integer"},"output.annotations[].title":{"type":"string"},"output.images":{"type":"object[]"},"output.images[].alt":{"required":true,"type":"string"},"output.images[].caption":{"type":"string"},"output.images[].image_url":{"required":true,"type":"string"},"output.summary":{"required":true,"type":"string"},"output.text":{"type":"string"},"output.title":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"started_at":{"type":"string"},"status":{"enum":["queued","in_progress","completed"],"type":"string"}},"url":"/repos/:owner/:repo/check-runs/:check_run_id"}},"codesOfConduct":{"getConductCode":{"headers":{"accept":"application/vnd.github.scarlet-witch-preview+json"},"method":"GET","params":{"key":{"required":true,"type":"string"}},"url":"/codes_of_conduct/:key"},"getForRepo":{"headers":{"accept":"application/vnd.github.scarlet-witch-preview+json"},"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/community/code_of_conduct"},"listConductCodes":{"headers":{"accept":"application/vnd.github.scarlet-witch-preview+json"},"method":"GET","params":{},"url":"/codes_of_conduct"}},"emojis":{"get":{"method":"GET","params":{},"url":"/emojis"}},"gists":{"checkIsStarred":{"method":"GET","params":{"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id/star"},"create":{"method":"POST","params":{"description":{"type":"string"},"files":{"required":true,"type":"object"},"files.content":{"type":"string"},"public":{"type":"boolean"}},"url":"/gists"},"createComment":{"method":"POST","params":{"body":{"required":true,"type":"string"},"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id/comments"},"delete":{"method":"DELETE","params":{"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id"},"deleteComment":{"method":"DELETE","params":{"comment_id":{"required":true,"type":"integer"},"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id/comments/:comment_id"},"fork":{"method":"POST","params":{"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id/forks"},"get":{"method":"GET","params":{"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id"},"getComment":{"method":"GET","params":{"comment_id":{"required":true,"type":"integer"},"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id/comments/:comment_id"},"getRevision":{"method":"GET","params":{"gist_id":{"required":true,"type":"string"},"sha":{"required":true,"type":"string"}},"url":"/gists/:gist_id/:sha"},"list":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"since":{"type":"string"}},"url":"/gists"},"listComments":{"method":"GET","params":{"gist_id":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/gists/:gist_id/comments"},"listCommits":{"method":"GET","params":{"gist_id":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/gists/:gist_id/commits"},"listForks":{"method":"GET","params":{"gist_id":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/gists/:gist_id/forks"},"listPublic":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"since":{"type":"string"}},"url":"/gists/public"},"listPublicForUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"since":{"type":"string"},"username":{"required":true,"type":"string"}},"url":"/users/:username/gists"},"listStarred":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"since":{"type":"string"}},"url":"/gists/starred"},"star":{"method":"PUT","params":{"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id/star"},"unstar":{"method":"DELETE","params":{"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id/star"},"update":{"method":"PATCH","params":{"description":{"type":"string"},"files":{"type":"object"},"files.content":{"type":"string"},"files.filename":{"type":"string"},"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id"},"updateComment":{"method":"PATCH","params":{"body":{"required":true,"type":"string"},"comment_id":{"required":true,"type":"integer"},"gist_id":{"required":true,"type":"string"}},"url":"/gists/:gist_id/comments/:comment_id"}},"git":{"createBlob":{"method":"POST","params":{"content":{"required":true,"type":"string"},"encoding":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/blobs"},"createCommit":{"method":"POST","params":{"author":{"type":"object"},"author.date":{"type":"string"},"author.email":{"type":"string"},"author.name":{"type":"string"},"committer":{"type":"object"},"committer.date":{"type":"string"},"committer.email":{"type":"string"},"committer.name":{"type":"string"},"message":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"parents":{"required":true,"type":"string[]"},"repo":{"required":true,"type":"string"},"signature":{"type":"string"},"tree":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/commits"},"createRef":{"method":"POST","params":{"owner":{"required":true,"type":"string"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"sha":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/refs"},"createTag":{"method":"POST","params":{"message":{"required":true,"type":"string"},"object":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"tag":{"required":true,"type":"string"},"tagger":{"type":"object"},"tagger.date":{"type":"string"},"tagger.email":{"type":"string"},"tagger.name":{"type":"string"},"type":{"enum":["commit","tree","blob"],"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/tags"},"createTree":{"method":"POST","params":{"base_tree":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"tree":{"required":true,"type":"object[]"},"tree[].content":{"type":"string"},"tree[].mode":{"enum":["100644","100755","040000","160000","120000"],"type":"string"},"tree[].path":{"type":"string"},"tree[].sha":{"allowNull":true,"type":"string"},"tree[].type":{"enum":["blob","tree","commit"],"type":"string"}},"url":"/repos/:owner/:repo/git/trees"},"deleteRef":{"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/refs/:ref"},"getBlob":{"method":"GET","params":{"file_sha":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/blobs/:file_sha"},"getCommit":{"method":"GET","params":{"commit_sha":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/commits/:commit_sha"},"getRef":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/ref/:ref"},"getTag":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"tag_sha":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/tags/:tag_sha"},"getTree":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"recursive":{"enum":["1"],"type":"integer"},"repo":{"required":true,"type":"string"},"tree_sha":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/trees/:tree_sha"},"listMatchingRefs":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/matching-refs/:ref"},"listRefs":{"method":"GET","params":{"namespace":{"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/refs/:namespace"},"updateRef":{"method":"PATCH","params":{"force":{"type":"boolean"},"owner":{"required":true,"type":"string"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"sha":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/git/refs/:ref"}},"gitignore":{"getTemplate":{"method":"GET","params":{"name":{"required":true,"type":"string"}},"url":"/gitignore/templates/:name"},"listTemplates":{"method":"GET","params":{},"url":"/gitignore/templates"}},"interactions":{"addOrUpdateRestrictionsForOrg":{"headers":{"accept":"application/vnd.github.sombra-preview+json"},"method":"PUT","params":{"limit":{"enum":["existing_users","contributors_only","collaborators_only"],"required":true,"type":"string"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org/interaction-limits"},"addOrUpdateRestrictionsForRepo":{"headers":{"accept":"application/vnd.github.sombra-preview+json"},"method":"PUT","params":{"limit":{"enum":["existing_users","contributors_only","collaborators_only"],"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/interaction-limits"},"getRestrictionsForOrg":{"headers":{"accept":"application/vnd.github.sombra-preview+json"},"method":"GET","params":{"org":{"required":true,"type":"string"}},"url":"/orgs/:org/interaction-limits"},"getRestrictionsForRepo":{"headers":{"accept":"application/vnd.github.sombra-preview+json"},"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/interaction-limits"},"removeRestrictionsForOrg":{"headers":{"accept":"application/vnd.github.sombra-preview+json"},"method":"DELETE","params":{"org":{"required":true,"type":"string"}},"url":"/orgs/:org/interaction-limits"},"removeRestrictionsForRepo":{"headers":{"accept":"application/vnd.github.sombra-preview+json"},"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/interaction-limits"}},"issues":{"addAssignees":{"method":"POST","params":{"assignees":{"type":"string[]"},"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/assignees"},"addLabels":{"method":"POST","params":{"issue_number":{"required":true,"type":"integer"},"labels":{"required":true,"type":"string[]"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/labels"},"checkAssignee":{"method":"GET","params":{"assignee":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/assignees/:assignee"},"create":{"method":"POST","params":{"assignee":{"type":"string"},"assignees":{"type":"string[]"},"body":{"type":"string"},"labels":{"type":"string[]"},"milestone":{"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"title":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues"},"createComment":{"method":"POST","params":{"body":{"required":true,"type":"string"},"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/comments"},"createLabel":{"method":"POST","params":{"color":{"required":true,"type":"string"},"description":{"type":"string"},"name":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/labels"},"createMilestone":{"method":"POST","params":{"description":{"type":"string"},"due_on":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"state":{"enum":["open","closed"],"type":"string"},"title":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/milestones"},"deleteComment":{"method":"DELETE","params":{"comment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/comments/:comment_id"},"deleteLabel":{"method":"DELETE","params":{"name":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/labels/:name"},"deleteMilestone":{"method":"DELETE","params":{"milestone_number":{"required":true,"type":"integer"},"number":{"alias":"milestone_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/milestones/:milestone_number"},"get":{"method":"GET","params":{"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number"},"getComment":{"method":"GET","params":{"comment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/comments/:comment_id"},"getEvent":{"method":"GET","params":{"event_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/events/:event_id"},"getLabel":{"method":"GET","params":{"name":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/labels/:name"},"getMilestone":{"method":"GET","params":{"milestone_number":{"required":true,"type":"integer"},"number":{"alias":"milestone_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/milestones/:milestone_number"},"list":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"filter":{"enum":["assigned","created","mentioned","subscribed","all"],"type":"string"},"labels":{"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"since":{"type":"string"},"sort":{"enum":["created","updated","comments"],"type":"string"},"state":{"enum":["open","closed","all"],"type":"string"}},"url":"/issues"},"listAssignees":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/assignees"},"listComments":{"method":"GET","params":{"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"},"since":{"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/comments"},"listCommentsForRepo":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"since":{"type":"string"},"sort":{"enum":["created","updated"],"type":"string"}},"url":"/repos/:owner/:repo/issues/comments"},"listEvents":{"method":"GET","params":{"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/events"},"listEventsForRepo":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/events"},"listEventsForTimeline":{"headers":{"accept":"application/vnd.github.mockingbird-preview+json"},"method":"GET","params":{"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/timeline"},"listForAuthenticatedUser":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"filter":{"enum":["assigned","created","mentioned","subscribed","all"],"type":"string"},"labels":{"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"since":{"type":"string"},"sort":{"enum":["created","updated","comments"],"type":"string"},"state":{"enum":["open","closed","all"],"type":"string"}},"url":"/user/issues"},"listForOrg":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"filter":{"enum":["assigned","created","mentioned","subscribed","all"],"type":"string"},"labels":{"type":"string"},"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"since":{"type":"string"},"sort":{"enum":["created","updated","comments"],"type":"string"},"state":{"enum":["open","closed","all"],"type":"string"}},"url":"/orgs/:org/issues"},"listForRepo":{"method":"GET","params":{"assignee":{"type":"string"},"creator":{"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"},"labels":{"type":"string"},"mentioned":{"type":"string"},"milestone":{"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"},"since":{"type":"string"},"sort":{"enum":["created","updated","comments"],"type":"string"},"state":{"enum":["open","closed","all"],"type":"string"}},"url":"/repos/:owner/:repo/issues"},"listLabelsForMilestone":{"method":"GET","params":{"milestone_number":{"required":true,"type":"integer"},"number":{"alias":"milestone_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/milestones/:milestone_number/labels"},"listLabelsForRepo":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/labels"},"listLabelsOnIssue":{"method":"GET","params":{"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/labels"},"listMilestonesForRepo":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"},"sort":{"enum":["due_on","completeness"],"type":"string"},"state":{"enum":["open","closed","all"],"type":"string"}},"url":"/repos/:owner/:repo/milestones"},"lock":{"method":"PUT","params":{"issue_number":{"required":true,"type":"integer"},"lock_reason":{"enum":["off-topic","too heated","resolved","spam"],"type":"string"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/lock"},"removeAssignees":{"method":"DELETE","params":{"assignees":{"type":"string[]"},"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/assignees"},"removeLabel":{"method":"DELETE","params":{"issue_number":{"required":true,"type":"integer"},"name":{"required":true,"type":"string"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/labels/:name"},"removeLabels":{"method":"DELETE","params":{"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/labels"},"replaceLabels":{"method":"PUT","params":{"issue_number":{"required":true,"type":"integer"},"labels":{"type":"string[]"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/labels"},"unlock":{"method":"DELETE","params":{"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/lock"},"update":{"method":"PATCH","params":{"assignee":{"type":"string"},"assignees":{"type":"string[]"},"body":{"type":"string"},"issue_number":{"required":true,"type":"integer"},"labels":{"type":"string[]"},"milestone":{"allowNull":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"state":{"enum":["open","closed"],"type":"string"},"title":{"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number"},"updateComment":{"method":"PATCH","params":{"body":{"required":true,"type":"string"},"comment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/comments/:comment_id"},"updateLabel":{"method":"PATCH","params":{"color":{"type":"string"},"current_name":{"required":true,"type":"string"},"description":{"type":"string"},"name":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/labels/:current_name"},"updateMilestone":{"method":"PATCH","params":{"description":{"type":"string"},"due_on":{"type":"string"},"milestone_number":{"required":true,"type":"integer"},"number":{"alias":"milestone_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"state":{"enum":["open","closed"],"type":"string"},"title":{"type":"string"}},"url":"/repos/:owner/:repo/milestones/:milestone_number"}},"licenses":{"get":{"method":"GET","params":{"license":{"required":true,"type":"string"}},"url":"/licenses/:license"},"getForRepo":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/license"},"list":{"deprecated":"octokit.licenses.list() has been renamed to octokit.licenses.listCommonlyUsed() (2019-03-05)","method":"GET","params":{},"url":"/licenses"},"listCommonlyUsed":{"method":"GET","params":{},"url":"/licenses"}},"markdown":{"render":{"method":"POST","params":{"context":{"type":"string"},"mode":{"enum":["markdown","gfm"],"type":"string"},"text":{"required":true,"type":"string"}},"url":"/markdown"},"renderRaw":{"headers":{"content-type":"text/plain; charset=utf-8"},"method":"POST","params":{"data":{"mapTo":"data","required":true,"type":"string"}},"url":"/markdown/raw"}},"meta":{"get":{"method":"GET","params":{},"url":"/meta"}},"migrations":{"cancelImport":{"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/import"},"deleteArchiveForAuthenticatedUser":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"DELETE","params":{"migration_id":{"required":true,"type":"integer"}},"url":"/user/migrations/:migration_id/archive"},"deleteArchiveForOrg":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"DELETE","params":{"migration_id":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org/migrations/:migration_id/archive"},"getArchiveForAuthenticatedUser":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"GET","params":{"migration_id":{"required":true,"type":"integer"}},"url":"/user/migrations/:migration_id/archive"},"getArchiveForOrg":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"GET","params":{"migration_id":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org/migrations/:migration_id/archive"},"getCommitAuthors":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"since":{"type":"string"}},"url":"/repos/:owner/:repo/import/authors"},"getImportProgress":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/import"},"getLargeFiles":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/import/large_files"},"getStatusForAuthenticatedUser":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"GET","params":{"migration_id":{"required":true,"type":"integer"}},"url":"/user/migrations/:migration_id"},"getStatusForOrg":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"GET","params":{"migration_id":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org/migrations/:migration_id"},"listForAuthenticatedUser":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/migrations"},"listForOrg":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/orgs/:org/migrations"},"listReposForOrg":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"GET","params":{"migration_id":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/orgs/:org/migrations/:migration_id/repositories"},"listReposForUser":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"GET","params":{"migration_id":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/:migration_id/repositories"},"mapCommitAuthor":{"method":"PATCH","params":{"author_id":{"required":true,"type":"integer"},"email":{"type":"string"},"name":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/import/authors/:author_id"},"setLfsPreference":{"method":"PATCH","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"use_lfs":{"enum":["opt_in","opt_out"],"required":true,"type":"string"}},"url":"/repos/:owner/:repo/import/lfs"},"startForAuthenticatedUser":{"method":"POST","params":{"exclude_attachments":{"type":"boolean"},"lock_repositories":{"type":"boolean"},"repositories":{"required":true,"type":"string[]"}},"url":"/user/migrations"},"startForOrg":{"method":"POST","params":{"exclude_attachments":{"type":"boolean"},"lock_repositories":{"type":"boolean"},"org":{"required":true,"type":"string"},"repositories":{"required":true,"type":"string[]"}},"url":"/orgs/:org/migrations"},"startImport":{"method":"PUT","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"tfvc_project":{"type":"string"},"vcs":{"enum":["subversion","git","mercurial","tfvc"],"type":"string"},"vcs_password":{"type":"string"},"vcs_url":{"required":true,"type":"string"},"vcs_username":{"type":"string"}},"url":"/repos/:owner/:repo/import"},"unlockRepoForAuthenticatedUser":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"DELETE","params":{"migration_id":{"required":true,"type":"integer"},"repo_name":{"required":true,"type":"string"}},"url":"/user/migrations/:migration_id/repos/:repo_name/lock"},"unlockRepoForOrg":{"headers":{"accept":"application/vnd.github.wyandotte-preview+json"},"method":"DELETE","params":{"migration_id":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"repo_name":{"required":true,"type":"string"}},"url":"/orgs/:org/migrations/:migration_id/repos/:repo_name/lock"},"updateImport":{"method":"PATCH","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"vcs_password":{"type":"string"},"vcs_username":{"type":"string"}},"url":"/repos/:owner/:repo/import"}},"oauthAuthorizations":{"checkAuthorization":{"deprecated":"octokit.oauthAuthorizations.checkAuthorization() has been renamed to octokit.apps.checkAuthorization() (2019-11-05)","method":"GET","params":{"access_token":{"required":true,"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/tokens/:access_token"},"createAuthorization":{"deprecated":"octokit.oauthAuthorizations.createAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization","method":"POST","params":{"client_id":{"type":"string"},"client_secret":{"type":"string"},"fingerprint":{"type":"string"},"note":{"required":true,"type":"string"},"note_url":{"type":"string"},"scopes":{"type":"string[]"}},"url":"/authorizations"},"deleteAuthorization":{"deprecated":"octokit.oauthAuthorizations.deleteAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-an-authorization","method":"DELETE","params":{"authorization_id":{"required":true,"type":"integer"}},"url":"/authorizations/:authorization_id"},"deleteGrant":{"deprecated":"octokit.oauthAuthorizations.deleteGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-a-grant","method":"DELETE","params":{"grant_id":{"required":true,"type":"integer"}},"url":"/applications/grants/:grant_id"},"getAuthorization":{"deprecated":"octokit.oauthAuthorizations.getAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-authorization","method":"GET","params":{"authorization_id":{"required":true,"type":"integer"}},"url":"/authorizations/:authorization_id"},"getGrant":{"deprecated":"octokit.oauthAuthorizations.getGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-grant","method":"GET","params":{"grant_id":{"required":true,"type":"integer"}},"url":"/applications/grants/:grant_id"},"getOrCreateAuthorizationForApp":{"deprecated":"octokit.oauthAuthorizations.getOrCreateAuthorizationForApp() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app","method":"PUT","params":{"client_id":{"required":true,"type":"string"},"client_secret":{"required":true,"type":"string"},"fingerprint":{"type":"string"},"note":{"type":"string"},"note_url":{"type":"string"},"scopes":{"type":"string[]"}},"url":"/authorizations/clients/:client_id"},"getOrCreateAuthorizationForAppAndFingerprint":{"deprecated":"octokit.oauthAuthorizations.getOrCreateAuthorizationForAppAndFingerprint() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint","method":"PUT","params":{"client_id":{"required":true,"type":"string"},"client_secret":{"required":true,"type":"string"},"fingerprint":{"required":true,"type":"string"},"note":{"type":"string"},"note_url":{"type":"string"},"scopes":{"type":"string[]"}},"url":"/authorizations/clients/:client_id/:fingerprint"},"getOrCreateAuthorizationForAppFingerprint":{"deprecated":"octokit.oauthAuthorizations.getOrCreateAuthorizationForAppFingerprint() has been renamed to octokit.oauthAuthorizations.getOrCreateAuthorizationForAppAndFingerprint() (2018-12-27)","method":"PUT","params":{"client_id":{"required":true,"type":"string"},"client_secret":{"required":true,"type":"string"},"fingerprint":{"required":true,"type":"string"},"note":{"type":"string"},"note_url":{"type":"string"},"scopes":{"type":"string[]"}},"url":"/authorizations/clients/:client_id/:fingerprint"},"listAuthorizations":{"deprecated":"octokit.oauthAuthorizations.listAuthorizations() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations","method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/authorizations"},"listGrants":{"deprecated":"octokit.oauthAuthorizations.listGrants() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-grants","method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/applications/grants"},"resetAuthorization":{"deprecated":"octokit.oauthAuthorizations.resetAuthorization() has been renamed to octokit.apps.resetAuthorization() (2019-11-05)","method":"POST","params":{"access_token":{"required":true,"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/tokens/:access_token"},"revokeAuthorizationForApplication":{"deprecated":"octokit.oauthAuthorizations.revokeAuthorizationForApplication() has been renamed to octokit.apps.revokeAuthorizationForApplication() (2019-11-05)","method":"DELETE","params":{"access_token":{"required":true,"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/tokens/:access_token"},"revokeGrantForApplication":{"deprecated":"octokit.oauthAuthorizations.revokeGrantForApplication() has been renamed to octokit.apps.revokeGrantForApplication() (2019-11-05)","method":"DELETE","params":{"access_token":{"required":true,"type":"string"},"client_id":{"required":true,"type":"string"}},"url":"/applications/:client_id/grants/:access_token"},"updateAuthorization":{"deprecated":"octokit.oauthAuthorizations.updateAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization","method":"PATCH","params":{"add_scopes":{"type":"string[]"},"authorization_id":{"required":true,"type":"integer"},"fingerprint":{"type":"string"},"note":{"type":"string"},"note_url":{"type":"string"},"remove_scopes":{"type":"string[]"},"scopes":{"type":"string[]"}},"url":"/authorizations/:authorization_id"}},"orgs":{"addOrUpdateMembership":{"method":"PUT","params":{"org":{"required":true,"type":"string"},"role":{"enum":["admin","member"],"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/memberships/:username"},"blockUser":{"method":"PUT","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/blocks/:username"},"checkBlockedUser":{"method":"GET","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/blocks/:username"},"checkMembership":{"method":"GET","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/members/:username"},"checkPublicMembership":{"method":"GET","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/public_members/:username"},"concealMembership":{"method":"DELETE","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/public_members/:username"},"convertMemberToOutsideCollaborator":{"method":"PUT","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/outside_collaborators/:username"},"createHook":{"method":"POST","params":{"active":{"type":"boolean"},"config":{"required":true,"type":"object"},"config.content_type":{"type":"string"},"config.insecure_ssl":{"type":"string"},"config.secret":{"type":"string"},"config.url":{"required":true,"type":"string"},"events":{"type":"string[]"},"name":{"required":true,"type":"string"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org/hooks"},"createInvitation":{"method":"POST","params":{"email":{"type":"string"},"invitee_id":{"type":"integer"},"org":{"required":true,"type":"string"},"role":{"enum":["admin","direct_member","billing_manager"],"type":"string"},"team_ids":{"type":"integer[]"}},"url":"/orgs/:org/invitations"},"deleteHook":{"method":"DELETE","params":{"hook_id":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org/hooks/:hook_id"},"get":{"method":"GET","params":{"org":{"required":true,"type":"string"}},"url":"/orgs/:org"},"getHook":{"method":"GET","params":{"hook_id":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org/hooks/:hook_id"},"getMembership":{"method":"GET","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/memberships/:username"},"getMembershipForAuthenticatedUser":{"method":"GET","params":{"org":{"required":true,"type":"string"}},"url":"/user/memberships/orgs/:org"},"list":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"since":{"type":"string"}},"url":"/organizations"},"listBlockedUsers":{"method":"GET","params":{"org":{"required":true,"type":"string"}},"url":"/orgs/:org/blocks"},"listForAuthenticatedUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/orgs"},"listForUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/orgs"},"listHooks":{"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/orgs/:org/hooks"},"listInstallations":{"headers":{"accept":"application/vnd.github.machine-man-preview+json"},"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/orgs/:org/installations"},"listInvitationTeams":{"method":"GET","params":{"invitation_id":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/orgs/:org/invitations/:invitation_id/teams"},"listMembers":{"method":"GET","params":{"filter":{"enum":["2fa_disabled","all"],"type":"string"},"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"role":{"enum":["all","admin","member"],"type":"string"}},"url":"/orgs/:org/members"},"listMemberships":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"state":{"enum":["active","pending"],"type":"string"}},"url":"/user/memberships/orgs"},"listOutsideCollaborators":{"method":"GET","params":{"filter":{"enum":["2fa_disabled","all"],"type":"string"},"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/orgs/:org/outside_collaborators"},"listPendingInvitations":{"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/orgs/:org/invitations"},"listPublicMembers":{"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/orgs/:org/public_members"},"pingHook":{"method":"POST","params":{"hook_id":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org/hooks/:hook_id/pings"},"publicizeMembership":{"method":"PUT","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/public_members/:username"},"removeMember":{"method":"DELETE","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/members/:username"},"removeMembership":{"method":"DELETE","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/memberships/:username"},"removeOutsideCollaborator":{"method":"DELETE","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/outside_collaborators/:username"},"unblockUser":{"method":"DELETE","params":{"org":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/blocks/:username"},"update":{"method":"PATCH","params":{"billing_email":{"type":"string"},"company":{"type":"string"},"default_repository_permission":{"enum":["read","write","admin","none"],"type":"string"},"description":{"type":"string"},"email":{"type":"string"},"has_organization_projects":{"type":"boolean"},"has_repository_projects":{"type":"boolean"},"location":{"type":"string"},"members_allowed_repository_creation_type":{"enum":["all","private","none"],"type":"string"},"members_can_create_internal_repositories":{"type":"boolean"},"members_can_create_private_repositories":{"type":"boolean"},"members_can_create_public_repositories":{"type":"boolean"},"members_can_create_repositories":{"type":"boolean"},"name":{"type":"string"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org"},"updateHook":{"method":"PATCH","params":{"active":{"type":"boolean"},"config":{"type":"object"},"config.content_type":{"type":"string"},"config.insecure_ssl":{"type":"string"},"config.secret":{"type":"string"},"config.url":{"required":true,"type":"string"},"events":{"type":"string[]"},"hook_id":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org/hooks/:hook_id"},"updateMembership":{"method":"PATCH","params":{"org":{"required":true,"type":"string"},"state":{"enum":["active"],"required":true,"type":"string"}},"url":"/user/memberships/orgs/:org"}},"projects":{"addCollaborator":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"PUT","params":{"permission":{"enum":["read","write","admin"],"type":"string"},"project_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/projects/:project_id/collaborators/:username"},"createCard":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"POST","params":{"column_id":{"required":true,"type":"integer"},"content_id":{"type":"integer"},"content_type":{"type":"string"},"note":{"type":"string"}},"url":"/projects/columns/:column_id/cards"},"createColumn":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"POST","params":{"name":{"required":true,"type":"string"},"project_id":{"required":true,"type":"integer"}},"url":"/projects/:project_id/columns"},"createForAuthenticatedUser":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"POST","params":{"body":{"type":"string"},"name":{"required":true,"type":"string"}},"url":"/user/projects"},"createForOrg":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"POST","params":{"body":{"type":"string"},"name":{"required":true,"type":"string"},"org":{"required":true,"type":"string"}},"url":"/orgs/:org/projects"},"createForRepo":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"POST","params":{"body":{"type":"string"},"name":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/projects"},"delete":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"DELETE","params":{"project_id":{"required":true,"type":"integer"}},"url":"/projects/:project_id"},"deleteCard":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"DELETE","params":{"card_id":{"required":true,"type":"integer"}},"url":"/projects/columns/cards/:card_id"},"deleteColumn":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"DELETE","params":{"column_id":{"required":true,"type":"integer"}},"url":"/projects/columns/:column_id"},"get":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"project_id":{"required":true,"type":"integer"}},"url":"/projects/:project_id"},"getCard":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"card_id":{"required":true,"type":"integer"}},"url":"/projects/columns/cards/:card_id"},"getColumn":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"column_id":{"required":true,"type":"integer"}},"url":"/projects/columns/:column_id"},"listCards":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"archived_state":{"enum":["all","archived","not_archived"],"type":"string"},"column_id":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/projects/columns/:column_id/cards"},"listCollaborators":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"affiliation":{"enum":["outside","direct","all"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"project_id":{"required":true,"type":"integer"}},"url":"/projects/:project_id/collaborators"},"listColumns":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"project_id":{"required":true,"type":"integer"}},"url":"/projects/:project_id/columns"},"listForOrg":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"state":{"enum":["open","closed","all"],"type":"string"}},"url":"/orgs/:org/projects"},"listForRepo":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"},"state":{"enum":["open","closed","all"],"type":"string"}},"url":"/repos/:owner/:repo/projects"},"listForUser":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"state":{"enum":["open","closed","all"],"type":"string"},"username":{"required":true,"type":"string"}},"url":"/users/:username/projects"},"moveCard":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"POST","params":{"card_id":{"required":true,"type":"integer"},"column_id":{"type":"integer"},"position":{"required":true,"type":"string","validation":"^(top|bottom|after:\\d+)$"}},"url":"/projects/columns/cards/:card_id/moves"},"moveColumn":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"POST","params":{"column_id":{"required":true,"type":"integer"},"position":{"required":true,"type":"string","validation":"^(first|last|after:\\d+)$"}},"url":"/projects/columns/:column_id/moves"},"removeCollaborator":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"DELETE","params":{"project_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/projects/:project_id/collaborators/:username"},"reviewUserPermissionLevel":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"project_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/projects/:project_id/collaborators/:username/permission"},"update":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"PATCH","params":{"body":{"type":"string"},"name":{"type":"string"},"organization_permission":{"type":"string"},"private":{"type":"boolean"},"project_id":{"required":true,"type":"integer"},"state":{"enum":["open","closed"],"type":"string"}},"url":"/projects/:project_id"},"updateCard":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"PATCH","params":{"archived":{"type":"boolean"},"card_id":{"required":true,"type":"integer"},"note":{"type":"string"}},"url":"/projects/columns/cards/:card_id"},"updateColumn":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"PATCH","params":{"column_id":{"required":true,"type":"integer"},"name":{"required":true,"type":"string"}},"url":"/projects/columns/:column_id"}},"pulls":{"checkIfMerged":{"method":"GET","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/merge"},"create":{"method":"POST","params":{"base":{"required":true,"type":"string"},"body":{"type":"string"},"draft":{"type":"boolean"},"head":{"required":true,"type":"string"},"maintainer_can_modify":{"type":"boolean"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"title":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls"},"createComment":{"method":"POST","params":{"body":{"required":true,"type":"string"},"commit_id":{"required":true,"type":"string"},"in_reply_to":{"deprecated":true,"description":"The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.","type":"integer"},"line":{"type":"integer"},"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"path":{"required":true,"type":"string"},"position":{"type":"integer"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"side":{"enum":["LEFT","RIGHT"],"type":"string"},"start_line":{"type":"integer"},"start_side":{"enum":["LEFT","RIGHT","side"],"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/comments"},"createCommentReply":{"deprecated":"octokit.pulls.createCommentReply() has been renamed to octokit.pulls.createComment() (2019-09-09)","method":"POST","params":{"body":{"required":true,"type":"string"},"commit_id":{"required":true,"type":"string"},"in_reply_to":{"deprecated":true,"description":"The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.","type":"integer"},"line":{"type":"integer"},"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"path":{"required":true,"type":"string"},"position":{"type":"integer"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"side":{"enum":["LEFT","RIGHT"],"type":"string"},"start_line":{"type":"integer"},"start_side":{"enum":["LEFT","RIGHT","side"],"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/comments"},"createFromIssue":{"deprecated":"octokit.pulls.createFromIssue() is deprecated, see https://developer.github.com/v3/pulls/#create-a-pull-request","method":"POST","params":{"base":{"required":true,"type":"string"},"draft":{"type":"boolean"},"head":{"required":true,"type":"string"},"issue":{"required":true,"type":"integer"},"maintainer_can_modify":{"type":"boolean"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls"},"createReview":{"method":"POST","params":{"body":{"type":"string"},"comments":{"type":"object[]"},"comments[].body":{"required":true,"type":"string"},"comments[].path":{"required":true,"type":"string"},"comments[].position":{"required":true,"type":"integer"},"commit_id":{"type":"string"},"event":{"enum":["APPROVE","REQUEST_CHANGES","COMMENT"],"type":"string"},"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/reviews"},"createReviewCommentReply":{"method":"POST","params":{"body":{"required":true,"type":"string"},"comment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/comments/:comment_id/replies"},"createReviewRequest":{"method":"POST","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"reviewers":{"type":"string[]"},"team_reviewers":{"type":"string[]"}},"url":"/repos/:owner/:repo/pulls/:pull_number/requested_reviewers"},"deleteComment":{"method":"DELETE","params":{"comment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/comments/:comment_id"},"deletePendingReview":{"method":"DELETE","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"review_id":{"required":true,"type":"integer"}},"url":"/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id"},"deleteReviewRequest":{"method":"DELETE","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"reviewers":{"type":"string[]"},"team_reviewers":{"type":"string[]"}},"url":"/repos/:owner/:repo/pulls/:pull_number/requested_reviewers"},"dismissReview":{"method":"PUT","params":{"message":{"required":true,"type":"string"},"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"review_id":{"required":true,"type":"integer"}},"url":"/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/dismissals"},"get":{"method":"GET","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number"},"getComment":{"method":"GET","params":{"comment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/comments/:comment_id"},"getCommentsForReview":{"method":"GET","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"review_id":{"required":true,"type":"integer"}},"url":"/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/comments"},"getReview":{"method":"GET","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"review_id":{"required":true,"type":"integer"}},"url":"/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id"},"list":{"method":"GET","params":{"base":{"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"},"head":{"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"},"sort":{"enum":["created","updated","popularity","long-running"],"type":"string"},"state":{"enum":["open","closed","all"],"type":"string"}},"url":"/repos/:owner/:repo/pulls"},"listComments":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"since":{"type":"string"},"sort":{"enum":["created","updated"],"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/comments"},"listCommentsForRepo":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"},"since":{"type":"string"},"sort":{"enum":["created","updated"],"type":"string"}},"url":"/repos/:owner/:repo/pulls/comments"},"listCommits":{"method":"GET","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/commits"},"listFiles":{"method":"GET","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/files"},"listReviewRequests":{"method":"GET","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/requested_reviewers"},"listReviews":{"method":"GET","params":{"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/reviews"},"merge":{"method":"PUT","params":{"commit_message":{"type":"string"},"commit_title":{"type":"string"},"merge_method":{"enum":["merge","squash","rebase"],"type":"string"},"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"sha":{"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/merge"},"submitReview":{"method":"POST","params":{"body":{"type":"string"},"event":{"enum":["APPROVE","REQUEST_CHANGES","COMMENT"],"required":true,"type":"string"},"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"review_id":{"required":true,"type":"integer"}},"url":"/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/events"},"update":{"method":"PATCH","params":{"base":{"type":"string"},"body":{"type":"string"},"maintainer_can_modify":{"type":"boolean"},"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"state":{"enum":["open","closed"],"type":"string"},"title":{"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number"},"updateBranch":{"headers":{"accept":"application/vnd.github.lydian-preview+json"},"method":"PUT","params":{"expected_head_sha":{"type":"string"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/:pull_number/update-branch"},"updateComment":{"method":"PATCH","params":{"body":{"required":true,"type":"string"},"comment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/comments/:comment_id"},"updateReview":{"method":"PUT","params":{"body":{"required":true,"type":"string"},"number":{"alias":"pull_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"pull_number":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"review_id":{"required":true,"type":"integer"}},"url":"/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id"}},"rateLimit":{"get":{"method":"GET","params":{},"url":"/rate_limit"}},"reactions":{"createForCommitComment":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"POST","params":{"comment_id":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/comments/:comment_id/reactions"},"createForIssue":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"POST","params":{"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"required":true,"type":"string"},"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/reactions"},"createForIssueComment":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"POST","params":{"comment_id":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/comments/:comment_id/reactions"},"createForPullRequestReviewComment":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"POST","params":{"comment_id":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/comments/:comment_id/reactions"},"createForTeamDiscussion":{"deprecated":"octokit.reactions.createForTeamDiscussion() has been renamed to octokit.reactions.createForTeamDiscussionLegacy() (2020-01-16)","headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"POST","params":{"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"required":true,"type":"string"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/reactions"},"createForTeamDiscussionComment":{"deprecated":"octokit.reactions.createForTeamDiscussionComment() has been renamed to octokit.reactions.createForTeamDiscussionCommentLegacy() (2020-01-16)","headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"POST","params":{"comment_number":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"required":true,"type":"string"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions"},"createForTeamDiscussionCommentInOrg":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"POST","params":{"comment_number":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"required":true,"type":"string"},"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number/reactions"},"createForTeamDiscussionCommentLegacy":{"deprecated":"octokit.reactions.createForTeamDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/reactions/#create-reaction-for-a-team-discussion-comment-legacy","headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"POST","params":{"comment_number":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"required":true,"type":"string"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions"},"createForTeamDiscussionInOrg":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"POST","params":{"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"required":true,"type":"string"},"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number/reactions"},"createForTeamDiscussionLegacy":{"deprecated":"octokit.reactions.createForTeamDiscussionLegacy() is deprecated, see https://developer.github.com/v3/reactions/#create-reaction-for-a-team-discussion-legacy","headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"POST","params":{"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"required":true,"type":"string"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/reactions"},"delete":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"DELETE","params":{"reaction_id":{"required":true,"type":"integer"}},"url":"/reactions/:reaction_id"},"listForCommitComment":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"GET","params":{"comment_id":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/comments/:comment_id/reactions"},"listForIssue":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"GET","params":{"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"type":"string"},"issue_number":{"required":true,"type":"integer"},"number":{"alias":"issue_number","deprecated":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/:issue_number/reactions"},"listForIssueComment":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"GET","params":{"comment_id":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/issues/comments/:comment_id/reactions"},"listForPullRequestReviewComment":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"GET","params":{"comment_id":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pulls/comments/:comment_id/reactions"},"listForTeamDiscussion":{"deprecated":"octokit.reactions.listForTeamDiscussion() has been renamed to octokit.reactions.listForTeamDiscussionLegacy() (2020-01-16)","headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"GET","params":{"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"type":"string"},"discussion_number":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/reactions"},"listForTeamDiscussionComment":{"deprecated":"octokit.reactions.listForTeamDiscussionComment() has been renamed to octokit.reactions.listForTeamDiscussionCommentLegacy() (2020-01-16)","headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"GET","params":{"comment_number":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"type":"string"},"discussion_number":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions"},"listForTeamDiscussionCommentInOrg":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"GET","params":{"comment_number":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"type":"string"},"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number/reactions"},"listForTeamDiscussionCommentLegacy":{"deprecated":"octokit.reactions.listForTeamDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/reactions/#list-reactions-for-a-team-discussion-comment-legacy","headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"GET","params":{"comment_number":{"required":true,"type":"integer"},"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"type":"string"},"discussion_number":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions"},"listForTeamDiscussionInOrg":{"headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"GET","params":{"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"type":"string"},"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number/reactions"},"listForTeamDiscussionLegacy":{"deprecated":"octokit.reactions.listForTeamDiscussionLegacy() is deprecated, see https://developer.github.com/v3/reactions/#list-reactions-for-a-team-discussion-legacy","headers":{"accept":"application/vnd.github.squirrel-girl-preview+json"},"method":"GET","params":{"content":{"enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"],"type":"string"},"discussion_number":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/reactions"}},"repos":{"acceptInvitation":{"method":"PATCH","params":{"invitation_id":{"required":true,"type":"integer"}},"url":"/user/repository_invitations/:invitation_id"},"addCollaborator":{"method":"PUT","params":{"owner":{"required":true,"type":"string"},"permission":{"enum":["pull","push","admin"],"type":"string"},"repo":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/collaborators/:username"},"addDeployKey":{"method":"POST","params":{"key":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"read_only":{"type":"boolean"},"repo":{"required":true,"type":"string"},"title":{"type":"string"}},"url":"/repos/:owner/:repo/keys"},"addProtectedBranchAdminEnforcement":{"method":"POST","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/enforce_admins"},"addProtectedBranchAppRestrictions":{"method":"POST","params":{"apps":{"mapTo":"data","required":true,"type":"string[]"},"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"},"addProtectedBranchRequiredSignatures":{"headers":{"accept":"application/vnd.github.zzzax-preview+json"},"method":"POST","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_signatures"},"addProtectedBranchRequiredStatusChecksContexts":{"method":"POST","params":{"branch":{"required":true,"type":"string"},"contexts":{"mapTo":"data","required":true,"type":"string[]"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"},"addProtectedBranchTeamRestrictions":{"method":"POST","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"teams":{"mapTo":"data","required":true,"type":"string[]"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"},"addProtectedBranchUserRestrictions":{"method":"POST","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"users":{"mapTo":"data","required":true,"type":"string[]"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/users"},"checkCollaborator":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/collaborators/:username"},"checkVulnerabilityAlerts":{"headers":{"accept":"application/vnd.github.dorian-preview+json"},"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/vulnerability-alerts"},"compareCommits":{"method":"GET","params":{"base":{"required":true,"type":"string"},"head":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/compare/:base...:head"},"createCommitComment":{"method":"POST","params":{"body":{"required":true,"type":"string"},"commit_sha":{"required":true,"type":"string"},"line":{"type":"integer"},"owner":{"required":true,"type":"string"},"path":{"type":"string"},"position":{"type":"integer"},"repo":{"required":true,"type":"string"},"sha":{"alias":"commit_sha","deprecated":true,"type":"string"}},"url":"/repos/:owner/:repo/commits/:commit_sha/comments"},"createDeployment":{"method":"POST","params":{"auto_merge":{"type":"boolean"},"description":{"type":"string"},"environment":{"type":"string"},"owner":{"required":true,"type":"string"},"payload":{"type":"string"},"production_environment":{"type":"boolean"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"required_contexts":{"type":"string[]"},"task":{"type":"string"},"transient_environment":{"type":"boolean"}},"url":"/repos/:owner/:repo/deployments"},"createDeploymentStatus":{"method":"POST","params":{"auto_inactive":{"type":"boolean"},"deployment_id":{"required":true,"type":"integer"},"description":{"type":"string"},"environment":{"enum":["production","staging","qa"],"type":"string"},"environment_url":{"type":"string"},"log_url":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"state":{"enum":["error","failure","inactive","in_progress","queued","pending","success"],"required":true,"type":"string"},"target_url":{"type":"string"}},"url":"/repos/:owner/:repo/deployments/:deployment_id/statuses"},"createDispatchEvent":{"headers":{"accept":"application/vnd.github.everest-preview+json"},"method":"POST","params":{"client_payload":{"type":"object"},"event_type":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/dispatches"},"createFile":{"deprecated":"octokit.repos.createFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)","method":"PUT","params":{"author":{"type":"object"},"author.email":{"required":true,"type":"string"},"author.name":{"required":true,"type":"string"},"branch":{"type":"string"},"committer":{"type":"object"},"committer.email":{"required":true,"type":"string"},"committer.name":{"required":true,"type":"string"},"content":{"required":true,"type":"string"},"message":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"path":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"sha":{"type":"string"}},"url":"/repos/:owner/:repo/contents/:path"},"createForAuthenticatedUser":{"method":"POST","params":{"allow_merge_commit":{"type":"boolean"},"allow_rebase_merge":{"type":"boolean"},"allow_squash_merge":{"type":"boolean"},"auto_init":{"type":"boolean"},"delete_branch_on_merge":{"type":"boolean"},"description":{"type":"string"},"gitignore_template":{"type":"string"},"has_issues":{"type":"boolean"},"has_projects":{"type":"boolean"},"has_wiki":{"type":"boolean"},"homepage":{"type":"string"},"is_template":{"type":"boolean"},"license_template":{"type":"string"},"name":{"required":true,"type":"string"},"private":{"type":"boolean"},"team_id":{"type":"integer"},"visibility":{"enum":["public","private","visibility","internal"],"type":"string"}},"url":"/user/repos"},"createFork":{"method":"POST","params":{"organization":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/forks"},"createHook":{"method":"POST","params":{"active":{"type":"boolean"},"config":{"required":true,"type":"object"},"config.content_type":{"type":"string"},"config.insecure_ssl":{"type":"string"},"config.secret":{"type":"string"},"config.url":{"required":true,"type":"string"},"events":{"type":"string[]"},"name":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/hooks"},"createInOrg":{"method":"POST","params":{"allow_merge_commit":{"type":"boolean"},"allow_rebase_merge":{"type":"boolean"},"allow_squash_merge":{"type":"boolean"},"auto_init":{"type":"boolean"},"delete_branch_on_merge":{"type":"boolean"},"description":{"type":"string"},"gitignore_template":{"type":"string"},"has_issues":{"type":"boolean"},"has_projects":{"type":"boolean"},"has_wiki":{"type":"boolean"},"homepage":{"type":"string"},"is_template":{"type":"boolean"},"license_template":{"type":"string"},"name":{"required":true,"type":"string"},"org":{"required":true,"type":"string"},"private":{"type":"boolean"},"team_id":{"type":"integer"},"visibility":{"enum":["public","private","visibility","internal"],"type":"string"}},"url":"/orgs/:org/repos"},"createOrUpdateFile":{"method":"PUT","params":{"author":{"type":"object"},"author.email":{"required":true,"type":"string"},"author.name":{"required":true,"type":"string"},"branch":{"type":"string"},"committer":{"type":"object"},"committer.email":{"required":true,"type":"string"},"committer.name":{"required":true,"type":"string"},"content":{"required":true,"type":"string"},"message":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"path":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"sha":{"type":"string"}},"url":"/repos/:owner/:repo/contents/:path"},"createRelease":{"method":"POST","params":{"body":{"type":"string"},"draft":{"type":"boolean"},"name":{"type":"string"},"owner":{"required":true,"type":"string"},"prerelease":{"type":"boolean"},"repo":{"required":true,"type":"string"},"tag_name":{"required":true,"type":"string"},"target_commitish":{"type":"string"}},"url":"/repos/:owner/:repo/releases"},"createStatus":{"method":"POST","params":{"context":{"type":"string"},"description":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"sha":{"required":true,"type":"string"},"state":{"enum":["error","failure","pending","success"],"required":true,"type":"string"},"target_url":{"type":"string"}},"url":"/repos/:owner/:repo/statuses/:sha"},"createUsingTemplate":{"headers":{"accept":"application/vnd.github.baptiste-preview+json"},"method":"POST","params":{"description":{"type":"string"},"name":{"required":true,"type":"string"},"owner":{"type":"string"},"private":{"type":"boolean"},"template_owner":{"required":true,"type":"string"},"template_repo":{"required":true,"type":"string"}},"url":"/repos/:template_owner/:template_repo/generate"},"declineInvitation":{"method":"DELETE","params":{"invitation_id":{"required":true,"type":"integer"}},"url":"/user/repository_invitations/:invitation_id"},"delete":{"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo"},"deleteCommitComment":{"method":"DELETE","params":{"comment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/comments/:comment_id"},"deleteDownload":{"method":"DELETE","params":{"download_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/downloads/:download_id"},"deleteFile":{"method":"DELETE","params":{"author":{"type":"object"},"author.email":{"type":"string"},"author.name":{"type":"string"},"branch":{"type":"string"},"committer":{"type":"object"},"committer.email":{"type":"string"},"committer.name":{"type":"string"},"message":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"path":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"sha":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/contents/:path"},"deleteHook":{"method":"DELETE","params":{"hook_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/hooks/:hook_id"},"deleteInvitation":{"method":"DELETE","params":{"invitation_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/invitations/:invitation_id"},"deleteRelease":{"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"release_id":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/releases/:release_id"},"deleteReleaseAsset":{"method":"DELETE","params":{"asset_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/releases/assets/:asset_id"},"disableAutomatedSecurityFixes":{"headers":{"accept":"application/vnd.github.london-preview+json"},"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/automated-security-fixes"},"disablePagesSite":{"headers":{"accept":"application/vnd.github.switcheroo-preview+json"},"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pages"},"disableVulnerabilityAlerts":{"headers":{"accept":"application/vnd.github.dorian-preview+json"},"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/vulnerability-alerts"},"enableAutomatedSecurityFixes":{"headers":{"accept":"application/vnd.github.london-preview+json"},"method":"PUT","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/automated-security-fixes"},"enablePagesSite":{"headers":{"accept":"application/vnd.github.switcheroo-preview+json"},"method":"POST","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"source":{"type":"object"},"source.branch":{"enum":["master","gh-pages"],"type":"string"},"source.path":{"type":"string"}},"url":"/repos/:owner/:repo/pages"},"enableVulnerabilityAlerts":{"headers":{"accept":"application/vnd.github.dorian-preview+json"},"method":"PUT","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/vulnerability-alerts"},"get":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo"},"getAppsWithAccessToProtectedBranch":{"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"},"getArchiveLink":{"method":"GET","params":{"archive_format":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/:archive_format/:ref"},"getBranch":{"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch"},"getBranchProtection":{"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection"},"getClones":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"per":{"enum":["day","week"],"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/traffic/clones"},"getCodeFrequencyStats":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/stats/code_frequency"},"getCollaboratorPermissionLevel":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/collaborators/:username/permission"},"getCombinedStatusForRef":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/commits/:ref/status"},"getCommit":{"method":"GET","params":{"commit_sha":{"alias":"ref","deprecated":true,"type":"string"},"owner":{"required":true,"type":"string"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"sha":{"alias":"ref","deprecated":true,"type":"string"}},"url":"/repos/:owner/:repo/commits/:ref"},"getCommitActivityStats":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/stats/commit_activity"},"getCommitComment":{"method":"GET","params":{"comment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/comments/:comment_id"},"getCommitRefSha":{"deprecated":"octokit.repos.getCommitRefSha() is deprecated, see https://developer.github.com/v3/repos/commits/#get-a-single-commit","headers":{"accept":"application/vnd.github.v3.sha"},"method":"GET","params":{"owner":{"required":true,"type":"string"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/commits/:ref"},"getContents":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"path":{"required":true,"type":"string"},"ref":{"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/contents/:path"},"getContributorsStats":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/stats/contributors"},"getDeployKey":{"method":"GET","params":{"key_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/keys/:key_id"},"getDeployment":{"method":"GET","params":{"deployment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/deployments/:deployment_id"},"getDeploymentStatus":{"method":"GET","params":{"deployment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"status_id":{"required":true,"type":"integer"}},"url":"/repos/:owner/:repo/deployments/:deployment_id/statuses/:status_id"},"getDownload":{"method":"GET","params":{"download_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/downloads/:download_id"},"getHook":{"method":"GET","params":{"hook_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/hooks/:hook_id"},"getLatestPagesBuild":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pages/builds/latest"},"getLatestRelease":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/releases/latest"},"getPages":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pages"},"getPagesBuild":{"method":"GET","params":{"build_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pages/builds/:build_id"},"getParticipationStats":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/stats/participation"},"getProtectedBranchAdminEnforcement":{"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/enforce_admins"},"getProtectedBranchPullRequestReviewEnforcement":{"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews"},"getProtectedBranchRequiredSignatures":{"headers":{"accept":"application/vnd.github.zzzax-preview+json"},"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_signatures"},"getProtectedBranchRequiredStatusChecks":{"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_status_checks"},"getProtectedBranchRestrictions":{"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions"},"getPunchCardStats":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/stats/punch_card"},"getReadme":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"ref":{"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/readme"},"getRelease":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"release_id":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/releases/:release_id"},"getReleaseAsset":{"method":"GET","params":{"asset_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/releases/assets/:asset_id"},"getReleaseByTag":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"tag":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/releases/tags/:tag"},"getTeamsWithAccessToProtectedBranch":{"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"},"getTopPaths":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/traffic/popular/paths"},"getTopReferrers":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/traffic/popular/referrers"},"getUsersWithAccessToProtectedBranch":{"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/users"},"getViews":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"per":{"enum":["day","week"],"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/traffic/views"},"list":{"method":"GET","params":{"affiliation":{"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"sort":{"enum":["created","updated","pushed","full_name"],"type":"string"},"type":{"enum":["all","owner","public","private","member"],"type":"string"},"visibility":{"enum":["all","public","private"],"type":"string"}},"url":"/user/repos"},"listAppsWithAccessToProtectedBranch":{"deprecated":"octokit.repos.listAppsWithAccessToProtectedBranch() has been renamed to octokit.repos.getAppsWithAccessToProtectedBranch() (2019-09-13)","method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"},"listAssetsForRelease":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"release_id":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/releases/:release_id/assets"},"listBranches":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"protected":{"type":"boolean"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches"},"listBranchesForHeadCommit":{"headers":{"accept":"application/vnd.github.groot-preview+json"},"method":"GET","params":{"commit_sha":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/commits/:commit_sha/branches-where-head"},"listCollaborators":{"method":"GET","params":{"affiliation":{"enum":["outside","direct","all"],"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/collaborators"},"listCommentsForCommit":{"method":"GET","params":{"commit_sha":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"ref":{"alias":"commit_sha","deprecated":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/commits/:commit_sha/comments"},"listCommitComments":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/comments"},"listCommits":{"method":"GET","params":{"author":{"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"path":{"type":"string"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"},"sha":{"type":"string"},"since":{"type":"string"},"until":{"type":"string"}},"url":"/repos/:owner/:repo/commits"},"listContributors":{"method":"GET","params":{"anon":{"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/contributors"},"listDeployKeys":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/keys"},"listDeploymentStatuses":{"method":"GET","params":{"deployment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/deployments/:deployment_id/statuses"},"listDeployments":{"method":"GET","params":{"environment":{"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"ref":{"type":"string"},"repo":{"required":true,"type":"string"},"sha":{"type":"string"},"task":{"type":"string"}},"url":"/repos/:owner/:repo/deployments"},"listDownloads":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/downloads"},"listForOrg":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"sort":{"enum":["created","updated","pushed","full_name"],"type":"string"},"type":{"enum":["all","public","private","forks","sources","member","internal"],"type":"string"}},"url":"/orgs/:org/repos"},"listForUser":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"sort":{"enum":["created","updated","pushed","full_name"],"type":"string"},"type":{"enum":["all","owner","member"],"type":"string"},"username":{"required":true,"type":"string"}},"url":"/users/:username/repos"},"listForks":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"},"sort":{"enum":["newest","oldest","stargazers"],"type":"string"}},"url":"/repos/:owner/:repo/forks"},"listHooks":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/hooks"},"listInvitations":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/invitations"},"listInvitationsForAuthenticatedUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/repository_invitations"},"listLanguages":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/languages"},"listPagesBuilds":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pages/builds"},"listProtectedBranchRequiredStatusChecksContexts":{"method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"},"listProtectedBranchTeamRestrictions":{"deprecated":"octokit.repos.listProtectedBranchTeamRestrictions() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-09)","method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"},"listProtectedBranchUserRestrictions":{"deprecated":"octokit.repos.listProtectedBranchUserRestrictions() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-09)","method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/users"},"listPublic":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"since":{"type":"string"}},"url":"/repositories"},"listPullRequestsAssociatedWithCommit":{"headers":{"accept":"application/vnd.github.groot-preview+json"},"method":"GET","params":{"commit_sha":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/commits/:commit_sha/pulls"},"listReleases":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/releases"},"listStatusesForRef":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"ref":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/commits/:ref/statuses"},"listTags":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/tags"},"listTeams":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/teams"},"listTeamsWithAccessToProtectedBranch":{"deprecated":"octokit.repos.listTeamsWithAccessToProtectedBranch() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-13)","method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"},"listTopics":{"headers":{"accept":"application/vnd.github.mercy-preview+json"},"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/topics"},"listUsersWithAccessToProtectedBranch":{"deprecated":"octokit.repos.listUsersWithAccessToProtectedBranch() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-13)","method":"GET","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/users"},"merge":{"method":"POST","params":{"base":{"required":true,"type":"string"},"commit_message":{"type":"string"},"head":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/merges"},"pingHook":{"method":"POST","params":{"hook_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/hooks/:hook_id/pings"},"removeBranchProtection":{"method":"DELETE","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection"},"removeCollaborator":{"method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/collaborators/:username"},"removeDeployKey":{"method":"DELETE","params":{"key_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/keys/:key_id"},"removeProtectedBranchAdminEnforcement":{"method":"DELETE","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/enforce_admins"},"removeProtectedBranchAppRestrictions":{"method":"DELETE","params":{"apps":{"mapTo":"data","required":true,"type":"string[]"},"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"},"removeProtectedBranchPullRequestReviewEnforcement":{"method":"DELETE","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews"},"removeProtectedBranchRequiredSignatures":{"headers":{"accept":"application/vnd.github.zzzax-preview+json"},"method":"DELETE","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_signatures"},"removeProtectedBranchRequiredStatusChecks":{"method":"DELETE","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_status_checks"},"removeProtectedBranchRequiredStatusChecksContexts":{"method":"DELETE","params":{"branch":{"required":true,"type":"string"},"contexts":{"mapTo":"data","required":true,"type":"string[]"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"},"removeProtectedBranchRestrictions":{"method":"DELETE","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions"},"removeProtectedBranchTeamRestrictions":{"method":"DELETE","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"teams":{"mapTo":"data","required":true,"type":"string[]"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"},"removeProtectedBranchUserRestrictions":{"method":"DELETE","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"users":{"mapTo":"data","required":true,"type":"string[]"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/users"},"replaceProtectedBranchAppRestrictions":{"method":"PUT","params":{"apps":{"mapTo":"data","required":true,"type":"string[]"},"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"},"replaceProtectedBranchRequiredStatusChecksContexts":{"method":"PUT","params":{"branch":{"required":true,"type":"string"},"contexts":{"mapTo":"data","required":true,"type":"string[]"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"},"replaceProtectedBranchTeamRestrictions":{"method":"PUT","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"teams":{"mapTo":"data","required":true,"type":"string[]"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"},"replaceProtectedBranchUserRestrictions":{"method":"PUT","params":{"branch":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"users":{"mapTo":"data","required":true,"type":"string[]"}},"url":"/repos/:owner/:repo/branches/:branch/protection/restrictions/users"},"replaceTopics":{"headers":{"accept":"application/vnd.github.mercy-preview+json"},"method":"PUT","params":{"names":{"required":true,"type":"string[]"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/topics"},"requestPageBuild":{"method":"POST","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/pages/builds"},"retrieveCommunityProfileMetrics":{"method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/community/profile"},"testPushHook":{"method":"POST","params":{"hook_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/hooks/:hook_id/tests"},"transfer":{"method":"POST","params":{"new_owner":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"team_ids":{"type":"integer[]"}},"url":"/repos/:owner/:repo/transfer"},"update":{"method":"PATCH","params":{"allow_merge_commit":{"type":"boolean"},"allow_rebase_merge":{"type":"boolean"},"allow_squash_merge":{"type":"boolean"},"archived":{"type":"boolean"},"default_branch":{"type":"string"},"delete_branch_on_merge":{"type":"boolean"},"description":{"type":"string"},"has_issues":{"type":"boolean"},"has_projects":{"type":"boolean"},"has_wiki":{"type":"boolean"},"homepage":{"type":"string"},"is_template":{"type":"boolean"},"name":{"type":"string"},"owner":{"required":true,"type":"string"},"private":{"type":"boolean"},"repo":{"required":true,"type":"string"},"visibility":{"enum":["public","private","visibility","internal"],"type":"string"}},"url":"/repos/:owner/:repo"},"updateBranchProtection":{"method":"PUT","params":{"allow_deletions":{"type":"boolean"},"allow_force_pushes":{"allowNull":true,"type":"boolean"},"branch":{"required":true,"type":"string"},"enforce_admins":{"allowNull":true,"required":true,"type":"boolean"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"required_linear_history":{"type":"boolean"},"required_pull_request_reviews":{"allowNull":true,"required":true,"type":"object"},"required_pull_request_reviews.dismiss_stale_reviews":{"type":"boolean"},"required_pull_request_reviews.dismissal_restrictions":{"type":"object"},"required_pull_request_reviews.dismissal_restrictions.teams":{"type":"string[]"},"required_pull_request_reviews.dismissal_restrictions.users":{"type":"string[]"},"required_pull_request_reviews.require_code_owner_reviews":{"type":"boolean"},"required_pull_request_reviews.required_approving_review_count":{"type":"integer"},"required_status_checks":{"allowNull":true,"required":true,"type":"object"},"required_status_checks.contexts":{"required":true,"type":"string[]"},"required_status_checks.strict":{"required":true,"type":"boolean"},"restrictions":{"allowNull":true,"required":true,"type":"object"},"restrictions.apps":{"type":"string[]"},"restrictions.teams":{"required":true,"type":"string[]"},"restrictions.users":{"required":true,"type":"string[]"}},"url":"/repos/:owner/:repo/branches/:branch/protection"},"updateCommitComment":{"method":"PATCH","params":{"body":{"required":true,"type":"string"},"comment_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/comments/:comment_id"},"updateFile":{"deprecated":"octokit.repos.updateFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)","method":"PUT","params":{"author":{"type":"object"},"author.email":{"required":true,"type":"string"},"author.name":{"required":true,"type":"string"},"branch":{"type":"string"},"committer":{"type":"object"},"committer.email":{"required":true,"type":"string"},"committer.name":{"required":true,"type":"string"},"content":{"required":true,"type":"string"},"message":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"path":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"sha":{"type":"string"}},"url":"/repos/:owner/:repo/contents/:path"},"updateHook":{"method":"PATCH","params":{"active":{"type":"boolean"},"add_events":{"type":"string[]"},"config":{"type":"object"},"config.content_type":{"type":"string"},"config.insecure_ssl":{"type":"string"},"config.secret":{"type":"string"},"config.url":{"required":true,"type":"string"},"events":{"type":"string[]"},"hook_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"remove_events":{"type":"string[]"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/hooks/:hook_id"},"updateInformationAboutPagesSite":{"method":"PUT","params":{"cname":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"source":{"enum":["\"gh-pages\"","\"master\"","\"master /docs\""],"type":"string"}},"url":"/repos/:owner/:repo/pages"},"updateInvitation":{"method":"PATCH","params":{"invitation_id":{"required":true,"type":"integer"},"owner":{"required":true,"type":"string"},"permissions":{"enum":["read","write","admin"],"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/invitations/:invitation_id"},"updateProtectedBranchPullRequestReviewEnforcement":{"method":"PATCH","params":{"branch":{"required":true,"type":"string"},"dismiss_stale_reviews":{"type":"boolean"},"dismissal_restrictions":{"type":"object"},"dismissal_restrictions.teams":{"type":"string[]"},"dismissal_restrictions.users":{"type":"string[]"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"require_code_owner_reviews":{"type":"boolean"},"required_approving_review_count":{"type":"integer"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews"},"updateProtectedBranchRequiredStatusChecks":{"method":"PATCH","params":{"branch":{"required":true,"type":"string"},"contexts":{"type":"string[]"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"strict":{"type":"boolean"}},"url":"/repos/:owner/:repo/branches/:branch/protection/required_status_checks"},"updateRelease":{"method":"PATCH","params":{"body":{"type":"string"},"draft":{"type":"boolean"},"name":{"type":"string"},"owner":{"required":true,"type":"string"},"prerelease":{"type":"boolean"},"release_id":{"required":true,"type":"integer"},"repo":{"required":true,"type":"string"},"tag_name":{"type":"string"},"target_commitish":{"type":"string"}},"url":"/repos/:owner/:repo/releases/:release_id"},"updateReleaseAsset":{"method":"PATCH","params":{"asset_id":{"required":true,"type":"integer"},"label":{"type":"string"},"name":{"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"}},"url":"/repos/:owner/:repo/releases/assets/:asset_id"},"uploadReleaseAsset":{"method":"POST","params":{"file":{"mapTo":"data","required":true,"type":"string | object"},"headers":{"required":true,"type":"object"},"headers.content-length":{"required":true,"type":"integer"},"headers.content-type":{"required":true,"type":"string"},"label":{"type":"string"},"name":{"required":true,"type":"string"},"url":{"required":true,"type":"string"}},"url":":url"}},"search":{"code":{"method":"GET","params":{"order":{"enum":["desc","asc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"q":{"required":true,"type":"string"},"sort":{"enum":["indexed"],"type":"string"}},"url":"/search/code"},"commits":{"headers":{"accept":"application/vnd.github.cloak-preview+json"},"method":"GET","params":{"order":{"enum":["desc","asc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"q":{"required":true,"type":"string"},"sort":{"enum":["author-date","committer-date"],"type":"string"}},"url":"/search/commits"},"issues":{"deprecated":"octokit.search.issues() has been renamed to octokit.search.issuesAndPullRequests() (2018-12-27)","method":"GET","params":{"order":{"enum":["desc","asc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"q":{"required":true,"type":"string"},"sort":{"enum":["comments","reactions","reactions-+1","reactions--1","reactions-smile","reactions-thinking_face","reactions-heart","reactions-tada","interactions","created","updated"],"type":"string"}},"url":"/search/issues"},"issuesAndPullRequests":{"method":"GET","params":{"order":{"enum":["desc","asc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"q":{"required":true,"type":"string"},"sort":{"enum":["comments","reactions","reactions-+1","reactions--1","reactions-smile","reactions-thinking_face","reactions-heart","reactions-tada","interactions","created","updated"],"type":"string"}},"url":"/search/issues"},"labels":{"method":"GET","params":{"order":{"enum":["desc","asc"],"type":"string"},"q":{"required":true,"type":"string"},"repository_id":{"required":true,"type":"integer"},"sort":{"enum":["created","updated"],"type":"string"}},"url":"/search/labels"},"repos":{"method":"GET","params":{"order":{"enum":["desc","asc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"q":{"required":true,"type":"string"},"sort":{"enum":["stars","forks","help-wanted-issues","updated"],"type":"string"}},"url":"/search/repositories"},"topics":{"method":"GET","params":{"q":{"required":true,"type":"string"}},"url":"/search/topics"},"users":{"method":"GET","params":{"order":{"enum":["desc","asc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"q":{"required":true,"type":"string"},"sort":{"enum":["followers","repositories","joined"],"type":"string"}},"url":"/search/users"}},"teams":{"addMember":{"deprecated":"octokit.teams.addMember() has been renamed to octokit.teams.addMemberLegacy() (2020-01-16)","method":"PUT","params":{"team_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/teams/:team_id/members/:username"},"addMemberLegacy":{"deprecated":"octokit.teams.addMemberLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#add-team-member-legacy","method":"PUT","params":{"team_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/teams/:team_id/members/:username"},"addOrUpdateMembership":{"deprecated":"octokit.teams.addOrUpdateMembership() has been renamed to octokit.teams.addOrUpdateMembershipLegacy() (2020-01-16)","method":"PUT","params":{"role":{"enum":["member","maintainer"],"type":"string"},"team_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/teams/:team_id/memberships/:username"},"addOrUpdateMembershipInOrg":{"method":"PUT","params":{"org":{"required":true,"type":"string"},"role":{"enum":["member","maintainer"],"type":"string"},"team_slug":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/memberships/:username"},"addOrUpdateMembershipLegacy":{"deprecated":"octokit.teams.addOrUpdateMembershipLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#add-or-update-team-membership-legacy","method":"PUT","params":{"role":{"enum":["member","maintainer"],"type":"string"},"team_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/teams/:team_id/memberships/:username"},"addOrUpdateProject":{"deprecated":"octokit.teams.addOrUpdateProject() has been renamed to octokit.teams.addOrUpdateProjectLegacy() (2020-01-16)","headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"PUT","params":{"permission":{"enum":["read","write","admin"],"type":"string"},"project_id":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/projects/:project_id"},"addOrUpdateProjectInOrg":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"PUT","params":{"org":{"required":true,"type":"string"},"permission":{"enum":["read","write","admin"],"type":"string"},"project_id":{"required":true,"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/projects/:project_id"},"addOrUpdateProjectLegacy":{"deprecated":"octokit.teams.addOrUpdateProjectLegacy() is deprecated, see https://developer.github.com/v3/teams/#add-or-update-team-project-legacy","headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"PUT","params":{"permission":{"enum":["read","write","admin"],"type":"string"},"project_id":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/projects/:project_id"},"addOrUpdateRepo":{"deprecated":"octokit.teams.addOrUpdateRepo() has been renamed to octokit.teams.addOrUpdateRepoLegacy() (2020-01-16)","method":"PUT","params":{"owner":{"required":true,"type":"string"},"permission":{"enum":["pull","push","admin"],"type":"string"},"repo":{"required":true,"type":"string"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/repos/:owner/:repo"},"addOrUpdateRepoInOrg":{"method":"PUT","params":{"org":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"permission":{"enum":["pull","push","admin"],"type":"string"},"repo":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/repos/:owner/:repo"},"addOrUpdateRepoLegacy":{"deprecated":"octokit.teams.addOrUpdateRepoLegacy() is deprecated, see https://developer.github.com/v3/teams/#add-or-update-team-repository-legacy","method":"PUT","params":{"owner":{"required":true,"type":"string"},"permission":{"enum":["pull","push","admin"],"type":"string"},"repo":{"required":true,"type":"string"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/repos/:owner/:repo"},"checkManagesRepo":{"deprecated":"octokit.teams.checkManagesRepo() has been renamed to octokit.teams.checkManagesRepoLegacy() (2020-01-16)","method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/repos/:owner/:repo"},"checkManagesRepoInOrg":{"method":"GET","params":{"org":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/repos/:owner/:repo"},"checkManagesRepoLegacy":{"deprecated":"octokit.teams.checkManagesRepoLegacy() is deprecated, see https://developer.github.com/v3/teams/#check-if-a-team-manages-a-repository-legacy","method":"GET","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/repos/:owner/:repo"},"create":{"method":"POST","params":{"description":{"type":"string"},"maintainers":{"type":"string[]"},"name":{"required":true,"type":"string"},"org":{"required":true,"type":"string"},"parent_team_id":{"type":"integer"},"permission":{"enum":["pull","push","admin"],"type":"string"},"privacy":{"enum":["secret","closed"],"type":"string"},"repo_names":{"type":"string[]"}},"url":"/orgs/:org/teams"},"createDiscussion":{"deprecated":"octokit.teams.createDiscussion() has been renamed to octokit.teams.createDiscussionLegacy() (2020-01-16)","method":"POST","params":{"body":{"required":true,"type":"string"},"private":{"type":"boolean"},"team_id":{"required":true,"type":"integer"},"title":{"required":true,"type":"string"}},"url":"/teams/:team_id/discussions"},"createDiscussionComment":{"deprecated":"octokit.teams.createDiscussionComment() has been renamed to octokit.teams.createDiscussionCommentLegacy() (2020-01-16)","method":"POST","params":{"body":{"required":true,"type":"string"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments"},"createDiscussionCommentInOrg":{"method":"POST","params":{"body":{"required":true,"type":"string"},"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments"},"createDiscussionCommentLegacy":{"deprecated":"octokit.teams.createDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#create-a-comment-legacy","method":"POST","params":{"body":{"required":true,"type":"string"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments"},"createDiscussionInOrg":{"method":"POST","params":{"body":{"required":true,"type":"string"},"org":{"required":true,"type":"string"},"private":{"type":"boolean"},"team_slug":{"required":true,"type":"string"},"title":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions"},"createDiscussionLegacy":{"deprecated":"octokit.teams.createDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#create-a-discussion-legacy","method":"POST","params":{"body":{"required":true,"type":"string"},"private":{"type":"boolean"},"team_id":{"required":true,"type":"integer"},"title":{"required":true,"type":"string"}},"url":"/teams/:team_id/discussions"},"delete":{"deprecated":"octokit.teams.delete() has been renamed to octokit.teams.deleteLegacy() (2020-01-16)","method":"DELETE","params":{"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id"},"deleteDiscussion":{"deprecated":"octokit.teams.deleteDiscussion() has been renamed to octokit.teams.deleteDiscussionLegacy() (2020-01-16)","method":"DELETE","params":{"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number"},"deleteDiscussionComment":{"deprecated":"octokit.teams.deleteDiscussionComment() has been renamed to octokit.teams.deleteDiscussionCommentLegacy() (2020-01-16)","method":"DELETE","params":{"comment_number":{"required":true,"type":"integer"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments/:comment_number"},"deleteDiscussionCommentInOrg":{"method":"DELETE","params":{"comment_number":{"required":true,"type":"integer"},"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number"},"deleteDiscussionCommentLegacy":{"deprecated":"octokit.teams.deleteDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#delete-a-comment-legacy","method":"DELETE","params":{"comment_number":{"required":true,"type":"integer"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments/:comment_number"},"deleteDiscussionInOrg":{"method":"DELETE","params":{"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number"},"deleteDiscussionLegacy":{"deprecated":"octokit.teams.deleteDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#delete-a-discussion-legacy","method":"DELETE","params":{"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number"},"deleteInOrg":{"method":"DELETE","params":{"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug"},"deleteLegacy":{"deprecated":"octokit.teams.deleteLegacy() is deprecated, see https://developer.github.com/v3/teams/#delete-team-legacy","method":"DELETE","params":{"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id"},"get":{"deprecated":"octokit.teams.get() has been renamed to octokit.teams.getLegacy() (2020-01-16)","method":"GET","params":{"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id"},"getByName":{"method":"GET","params":{"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug"},"getDiscussion":{"deprecated":"octokit.teams.getDiscussion() has been renamed to octokit.teams.getDiscussionLegacy() (2020-01-16)","method":"GET","params":{"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number"},"getDiscussionComment":{"deprecated":"octokit.teams.getDiscussionComment() has been renamed to octokit.teams.getDiscussionCommentLegacy() (2020-01-16)","method":"GET","params":{"comment_number":{"required":true,"type":"integer"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments/:comment_number"},"getDiscussionCommentInOrg":{"method":"GET","params":{"comment_number":{"required":true,"type":"integer"},"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number"},"getDiscussionCommentLegacy":{"deprecated":"octokit.teams.getDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#get-a-single-comment-legacy","method":"GET","params":{"comment_number":{"required":true,"type":"integer"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments/:comment_number"},"getDiscussionInOrg":{"method":"GET","params":{"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number"},"getDiscussionLegacy":{"deprecated":"octokit.teams.getDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#get-a-single-discussion-legacy","method":"GET","params":{"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number"},"getLegacy":{"deprecated":"octokit.teams.getLegacy() is deprecated, see https://developer.github.com/v3/teams/#get-team-legacy","method":"GET","params":{"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id"},"getMember":{"deprecated":"octokit.teams.getMember() has been renamed to octokit.teams.getMemberLegacy() (2020-01-16)","method":"GET","params":{"team_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/teams/:team_id/members/:username"},"getMemberLegacy":{"deprecated":"octokit.teams.getMemberLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#get-team-member-legacy","method":"GET","params":{"team_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/teams/:team_id/members/:username"},"getMembership":{"deprecated":"octokit.teams.getMembership() has been renamed to octokit.teams.getMembershipLegacy() (2020-01-16)","method":"GET","params":{"team_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/teams/:team_id/memberships/:username"},"getMembershipInOrg":{"method":"GET","params":{"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/memberships/:username"},"getMembershipLegacy":{"deprecated":"octokit.teams.getMembershipLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#get-team-membership-legacy","method":"GET","params":{"team_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/teams/:team_id/memberships/:username"},"list":{"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/orgs/:org/teams"},"listChild":{"deprecated":"octokit.teams.listChild() has been renamed to octokit.teams.listChildLegacy() (2020-01-16)","method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/teams"},"listChildInOrg":{"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/teams"},"listChildLegacy":{"deprecated":"octokit.teams.listChildLegacy() is deprecated, see https://developer.github.com/v3/teams/#list-child-teams-legacy","method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/teams"},"listDiscussionComments":{"deprecated":"octokit.teams.listDiscussionComments() has been renamed to octokit.teams.listDiscussionCommentsLegacy() (2020-01-16)","method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"discussion_number":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments"},"listDiscussionCommentsInOrg":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments"},"listDiscussionCommentsLegacy":{"deprecated":"octokit.teams.listDiscussionCommentsLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#list-comments-legacy","method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"discussion_number":{"required":true,"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments"},"listDiscussions":{"deprecated":"octokit.teams.listDiscussions() has been renamed to octokit.teams.listDiscussionsLegacy() (2020-01-16)","method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions"},"listDiscussionsInOrg":{"method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions"},"listDiscussionsLegacy":{"deprecated":"octokit.teams.listDiscussionsLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#list-discussions-legacy","method":"GET","params":{"direction":{"enum":["asc","desc"],"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions"},"listForAuthenticatedUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/teams"},"listMembers":{"deprecated":"octokit.teams.listMembers() has been renamed to octokit.teams.listMembersLegacy() (2020-01-16)","method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"role":{"enum":["member","maintainer","all"],"type":"string"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/members"},"listMembersInOrg":{"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"role":{"enum":["member","maintainer","all"],"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/members"},"listMembersLegacy":{"deprecated":"octokit.teams.listMembersLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#list-team-members-legacy","method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"role":{"enum":["member","maintainer","all"],"type":"string"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/members"},"listPendingInvitations":{"deprecated":"octokit.teams.listPendingInvitations() has been renamed to octokit.teams.listPendingInvitationsLegacy() (2020-01-16)","method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/invitations"},"listPendingInvitationsInOrg":{"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/invitations"},"listPendingInvitationsLegacy":{"deprecated":"octokit.teams.listPendingInvitationsLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#list-pending-team-invitations-legacy","method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/invitations"},"listProjects":{"deprecated":"octokit.teams.listProjects() has been renamed to octokit.teams.listProjectsLegacy() (2020-01-16)","headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/projects"},"listProjectsInOrg":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/projects"},"listProjectsLegacy":{"deprecated":"octokit.teams.listProjectsLegacy() is deprecated, see https://developer.github.com/v3/teams/#list-team-projects-legacy","headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/projects"},"listRepos":{"deprecated":"octokit.teams.listRepos() has been renamed to octokit.teams.listReposLegacy() (2020-01-16)","method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/repos"},"listReposInOrg":{"method":"GET","params":{"org":{"required":true,"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/repos"},"listReposLegacy":{"deprecated":"octokit.teams.listReposLegacy() is deprecated, see https://developer.github.com/v3/teams/#list-team-repos-legacy","method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/repos"},"removeMemberLegacy":{"deprecated":"octokit.teams.removeMemberLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#remove-team-member-legacy","method":"DELETE","params":{"team_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/teams/:team_id/members/:username"},"removeMembershipInOrg":{"method":"DELETE","params":{"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/memberships/:username"},"removeMembershipLegacy":{"deprecated":"octokit.teams.removeMembershipLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#remove-team-membership-legacy","method":"DELETE","params":{"team_id":{"required":true,"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/teams/:team_id/memberships/:username"},"removeProject":{"deprecated":"octokit.teams.removeProject() has been renamed to octokit.teams.removeProjectLegacy() (2020-01-16)","method":"DELETE","params":{"project_id":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/projects/:project_id"},"removeProjectInOrg":{"method":"DELETE","params":{"org":{"required":true,"type":"string"},"project_id":{"required":true,"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/projects/:project_id"},"removeProjectLegacy":{"deprecated":"octokit.teams.removeProjectLegacy() is deprecated, see https://developer.github.com/v3/teams/#remove-team-project-legacy","method":"DELETE","params":{"project_id":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/projects/:project_id"},"removeRepo":{"deprecated":"octokit.teams.removeRepo() has been renamed to octokit.teams.removeRepoLegacy() (2020-01-16)","method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/repos/:owner/:repo"},"removeRepoInOrg":{"method":"DELETE","params":{"org":{"required":true,"type":"string"},"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/repos/:owner/:repo"},"removeRepoLegacy":{"deprecated":"octokit.teams.removeRepoLegacy() is deprecated, see https://developer.github.com/v3/teams/#remove-team-repository-legacy","method":"DELETE","params":{"owner":{"required":true,"type":"string"},"repo":{"required":true,"type":"string"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/repos/:owner/:repo"},"reviewProject":{"deprecated":"octokit.teams.reviewProject() has been renamed to octokit.teams.reviewProjectLegacy() (2020-01-16)","headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"project_id":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/projects/:project_id"},"reviewProjectInOrg":{"headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"org":{"required":true,"type":"string"},"project_id":{"required":true,"type":"integer"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/projects/:project_id"},"reviewProjectLegacy":{"deprecated":"octokit.teams.reviewProjectLegacy() is deprecated, see https://developer.github.com/v3/teams/#review-a-team-project-legacy","headers":{"accept":"application/vnd.github.inertia-preview+json"},"method":"GET","params":{"project_id":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/projects/:project_id"},"update":{"deprecated":"octokit.teams.update() has been renamed to octokit.teams.updateLegacy() (2020-01-16)","method":"PATCH","params":{"description":{"type":"string"},"name":{"required":true,"type":"string"},"parent_team_id":{"type":"integer"},"permission":{"enum":["pull","push","admin"],"type":"string"},"privacy":{"enum":["secret","closed"],"type":"string"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id"},"updateDiscussion":{"deprecated":"octokit.teams.updateDiscussion() has been renamed to octokit.teams.updateDiscussionLegacy() (2020-01-16)","method":"PATCH","params":{"body":{"type":"string"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"},"title":{"type":"string"}},"url":"/teams/:team_id/discussions/:discussion_number"},"updateDiscussionComment":{"deprecated":"octokit.teams.updateDiscussionComment() has been renamed to octokit.teams.updateDiscussionCommentLegacy() (2020-01-16)","method":"PATCH","params":{"body":{"required":true,"type":"string"},"comment_number":{"required":true,"type":"integer"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments/:comment_number"},"updateDiscussionCommentInOrg":{"method":"PATCH","params":{"body":{"required":true,"type":"string"},"comment_number":{"required":true,"type":"integer"},"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number"},"updateDiscussionCommentLegacy":{"deprecated":"octokit.teams.updateDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#edit-a-comment-legacy","method":"PATCH","params":{"body":{"required":true,"type":"string"},"comment_number":{"required":true,"type":"integer"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id/discussions/:discussion_number/comments/:comment_number"},"updateDiscussionInOrg":{"method":"PATCH","params":{"body":{"type":"string"},"discussion_number":{"required":true,"type":"integer"},"org":{"required":true,"type":"string"},"team_slug":{"required":true,"type":"string"},"title":{"type":"string"}},"url":"/orgs/:org/teams/:team_slug/discussions/:discussion_number"},"updateDiscussionLegacy":{"deprecated":"octokit.teams.updateDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#edit-a-discussion-legacy","method":"PATCH","params":{"body":{"type":"string"},"discussion_number":{"required":true,"type":"integer"},"team_id":{"required":true,"type":"integer"},"title":{"type":"string"}},"url":"/teams/:team_id/discussions/:discussion_number"},"updateInOrg":{"method":"PATCH","params":{"description":{"type":"string"},"name":{"required":true,"type":"string"},"org":{"required":true,"type":"string"},"parent_team_id":{"type":"integer"},"permission":{"enum":["pull","push","admin"],"type":"string"},"privacy":{"enum":["secret","closed"],"type":"string"},"team_slug":{"required":true,"type":"string"}},"url":"/orgs/:org/teams/:team_slug"},"updateLegacy":{"deprecated":"octokit.teams.updateLegacy() is deprecated, see https://developer.github.com/v3/teams/#edit-team-legacy","method":"PATCH","params":{"description":{"type":"string"},"name":{"required":true,"type":"string"},"parent_team_id":{"type":"integer"},"permission":{"enum":["pull","push","admin"],"type":"string"},"privacy":{"enum":["secret","closed"],"type":"string"},"team_id":{"required":true,"type":"integer"}},"url":"/teams/:team_id"}},"users":{"addEmails":{"method":"POST","params":{"emails":{"required":true,"type":"string[]"}},"url":"/user/emails"},"block":{"method":"PUT","params":{"username":{"required":true,"type":"string"}},"url":"/user/blocks/:username"},"checkBlocked":{"method":"GET","params":{"username":{"required":true,"type":"string"}},"url":"/user/blocks/:username"},"checkFollowing":{"method":"GET","params":{"username":{"required":true,"type":"string"}},"url":"/user/following/:username"},"checkFollowingForUser":{"method":"GET","params":{"target_user":{"required":true,"type":"string"},"username":{"required":true,"type":"string"}},"url":"/users/:username/following/:target_user"},"createGpgKey":{"method":"POST","params":{"armored_public_key":{"type":"string"}},"url":"/user/gpg_keys"},"createPublicKey":{"method":"POST","params":{"key":{"type":"string"},"title":{"type":"string"}},"url":"/user/keys"},"deleteEmails":{"method":"DELETE","params":{"emails":{"required":true,"type":"string[]"}},"url":"/user/emails"},"deleteGpgKey":{"method":"DELETE","params":{"gpg_key_id":{"required":true,"type":"integer"}},"url":"/user/gpg_keys/:gpg_key_id"},"deletePublicKey":{"method":"DELETE","params":{"key_id":{"required":true,"type":"integer"}},"url":"/user/keys/:key_id"},"follow":{"method":"PUT","params":{"username":{"required":true,"type":"string"}},"url":"/user/following/:username"},"getAuthenticated":{"method":"GET","params":{},"url":"/user"},"getByUsername":{"method":"GET","params":{"username":{"required":true,"type":"string"}},"url":"/users/:username"},"getContextForUser":{"method":"GET","params":{"subject_id":{"type":"string"},"subject_type":{"enum":["organization","repository","issue","pull_request"],"type":"string"},"username":{"required":true,"type":"string"}},"url":"/users/:username/hovercard"},"getGpgKey":{"method":"GET","params":{"gpg_key_id":{"required":true,"type":"integer"}},"url":"/user/gpg_keys/:gpg_key_id"},"getPublicKey":{"method":"GET","params":{"key_id":{"required":true,"type":"integer"}},"url":"/user/keys/:key_id"},"list":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"since":{"type":"string"}},"url":"/users"},"listBlocked":{"method":"GET","params":{},"url":"/user/blocks"},"listEmails":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/emails"},"listFollowersForAuthenticatedUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/followers"},"listFollowersForUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/followers"},"listFollowingForAuthenticatedUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/following"},"listFollowingForUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/following"},"listGpgKeys":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/gpg_keys"},"listGpgKeysForUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/gpg_keys"},"listPublicEmails":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/public_emails"},"listPublicKeys":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"}},"url":"/user/keys"},"listPublicKeysForUser":{"method":"GET","params":{"page":{"type":"integer"},"per_page":{"type":"integer"},"username":{"required":true,"type":"string"}},"url":"/users/:username/keys"},"togglePrimaryEmailVisibility":{"method":"PATCH","params":{"email":{"required":true,"type":"string"},"visibility":{"required":true,"type":"string"}},"url":"/user/email/visibility"},"unblock":{"method":"DELETE","params":{"username":{"required":true,"type":"string"}},"url":"/user/blocks/:username"},"unfollow":{"method":"DELETE","params":{"username":{"required":true,"type":"string"}},"url":"/user/following/:username"},"updateAuthenticated":{"method":"PATCH","params":{"bio":{"type":"string"},"blog":{"type":"string"},"company":{"type":"string"},"email":{"type":"string"},"hireable":{"type":"boolean"},"location":{"type":"string"},"name":{"type":"string"}},"url":"/user"}}};
|
||
|
||
/***/ }),
|
||
/* 706 */,
|
||
/* 707 */,
|
||
/* 708 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLCharacterData, XMLText,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLCharacterData = __webpack_require__(639);
|
||
|
||
module.exports = XMLText = (function(superClass) {
|
||
extend(XMLText, superClass);
|
||
|
||
function XMLText(parent, text) {
|
||
XMLText.__super__.constructor.call(this, parent);
|
||
if (text == null) {
|
||
throw new Error("Missing element text. " + this.debugInfo());
|
||
}
|
||
this.name = "#text";
|
||
this.type = NodeType.Text;
|
||
this.value = this.stringify.text(text);
|
||
}
|
||
|
||
Object.defineProperty(XMLText.prototype, 'isElementContentWhitespace', {
|
||
get: function() {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLText.prototype, 'wholeText', {
|
||
get: function() {
|
||
var next, prev, str;
|
||
str = '';
|
||
prev = this.previousSibling;
|
||
while (prev) {
|
||
str = prev.data + str;
|
||
prev = prev.previousSibling;
|
||
}
|
||
str += this.data;
|
||
next = this.nextSibling;
|
||
while (next) {
|
||
str = str + next.data;
|
||
next = next.nextSibling;
|
||
}
|
||
return str;
|
||
}
|
||
});
|
||
|
||
XMLText.prototype.clone = function() {
|
||
return Object.create(this);
|
||
};
|
||
|
||
XMLText.prototype.toString = function(options) {
|
||
return this.options.writer.text(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
XMLText.prototype.splitText = function(offset) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLText.prototype.replaceWholeText = function(content) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
return XMLText;
|
||
|
||
})(XMLCharacterData);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 709 */,
|
||
/* 710 */,
|
||
/* 711 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
__webpack_require__(71);
|
||
|
||
|
||
/***/ }),
|
||
/* 712 */,
|
||
/* 713 */,
|
||
/* 714 */,
|
||
/* 715 */,
|
||
/* 716 */,
|
||
/* 717 */,
|
||
/* 718 */,
|
||
/* 719 */,
|
||
/* 720 */,
|
||
/* 721 */,
|
||
/* 722 */
|
||
/***/ (function(module) {
|
||
|
||
/**
|
||
* Convert array of 16 byte values to UUID string format of the form:
|
||
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|
||
*/
|
||
var byteToHex = [];
|
||
for (var i = 0; i < 256; ++i) {
|
||
byteToHex[i] = (i + 0x100).toString(16).substr(1);
|
||
}
|
||
|
||
function bytesToUuid(buf, offset) {
|
||
var i = offset || 0;
|
||
var bth = byteToHex;
|
||
// join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
|
||
return ([bth[buf[i++]], bth[buf[i++]],
|
||
bth[buf[i++]], bth[buf[i++]], '-',
|
||
bth[buf[i++]], bth[buf[i++]], '-',
|
||
bth[buf[i++]], bth[buf[i++]], '-',
|
||
bth[buf[i++]], bth[buf[i++]], '-',
|
||
bth[buf[i++]], bth[buf[i++]],
|
||
bth[buf[i++]], bth[buf[i++]],
|
||
bth[buf[i++]], bth[buf[i++]]]).join('');
|
||
}
|
||
|
||
module.exports = bytesToUuid;
|
||
|
||
|
||
/***/ }),
|
||
/* 723 */,
|
||
/* 724 */
|
||
/***/ (function(module) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var XMLDOMErrorHandler;
|
||
|
||
module.exports = XMLDOMErrorHandler = (function() {
|
||
function XMLDOMErrorHandler() {}
|
||
|
||
XMLDOMErrorHandler.prototype.handleError = function(error) {
|
||
throw new Error(error);
|
||
};
|
||
|
||
return XMLDOMErrorHandler;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 725 */
|
||
/***/ (function(module) {
|
||
|
||
/*! *****************************************************************************
|
||
Copyright (c) Microsoft Corporation.
|
||
|
||
Permission to use, copy, modify, and/or distribute this software for any
|
||
purpose with or without fee is hereby granted.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||
PERFORMANCE OF THIS SOFTWARE.
|
||
***************************************************************************** */
|
||
/* global global, define, System, Reflect, Promise */
|
||
var __extends;
|
||
var __assign;
|
||
var __rest;
|
||
var __decorate;
|
||
var __param;
|
||
var __metadata;
|
||
var __awaiter;
|
||
var __generator;
|
||
var __exportStar;
|
||
var __values;
|
||
var __read;
|
||
var __spread;
|
||
var __spreadArrays;
|
||
var __spreadArray;
|
||
var __await;
|
||
var __asyncGenerator;
|
||
var __asyncDelegator;
|
||
var __asyncValues;
|
||
var __makeTemplateObject;
|
||
var __importStar;
|
||
var __importDefault;
|
||
var __classPrivateFieldGet;
|
||
var __classPrivateFieldSet;
|
||
var __createBinding;
|
||
(function (factory) {
|
||
var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
|
||
if (typeof define === "function" && define.amd) {
|
||
define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
|
||
}
|
||
else if ( true && typeof module.exports === "object") {
|
||
factory(createExporter(root, createExporter(module.exports)));
|
||
}
|
||
else {
|
||
factory(createExporter(root));
|
||
}
|
||
function createExporter(exports, previous) {
|
||
if (exports !== root) {
|
||
if (typeof Object.create === "function") {
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
}
|
||
else {
|
||
exports.__esModule = true;
|
||
}
|
||
}
|
||
return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
|
||
}
|
||
})
|
||
(function (exporter) {
|
||
var extendStatics = Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
|
||
__extends = function (d, b) {
|
||
if (typeof b !== "function" && b !== null)
|
||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||
extendStatics(d, b);
|
||
function __() { this.constructor = d; }
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
|
||
__assign = Object.assign || function (t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__rest = function (s, e) {
|
||
var t = {};
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||
t[p] = s[p];
|
||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||
t[p[i]] = s[p[i]];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__decorate = function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
|
||
__param = function (paramIndex, decorator) {
|
||
return function (target, key) { decorator(target, key, paramIndex); }
|
||
};
|
||
|
||
__metadata = function (metadataKey, metadataValue) {
|
||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
|
||
};
|
||
|
||
__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());
|
||
});
|
||
};
|
||
|
||
__generator = function (thisArg, body) {
|
||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||
function step(op) {
|
||
if (f) throw new TypeError("Generator is already executing.");
|
||
while (_) try {
|
||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||
switch (op[0]) {
|
||
case 0: case 1: t = op; break;
|
||
case 4: _.label++; return { value: op[1], done: false };
|
||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||
default:
|
||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||
if (t[2]) _.ops.pop();
|
||
_.trys.pop(); continue;
|
||
}
|
||
op = body.call(thisArg, _);
|
||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||
}
|
||
};
|
||
|
||
__exportStar = function(m, o) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
|
||
};
|
||
|
||
__createBinding = Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
|
||
__values = function (o) {
|
||
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
||
if (m) return m.call(o);
|
||
if (o && typeof o.length === "number") return {
|
||
next: function () {
|
||
if (o && i >= o.length) o = void 0;
|
||
return { value: o && o[i++], done: !o };
|
||
}
|
||
};
|
||
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
||
};
|
||
|
||
__read = function (o, n) {
|
||
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
||
if (!m) return o;
|
||
var i = m.call(o), r, ar = [], e;
|
||
try {
|
||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
||
}
|
||
catch (error) { e = { error: error }; }
|
||
finally {
|
||
try {
|
||
if (r && !r.done && (m = i["return"])) m.call(i);
|
||
}
|
||
finally { if (e) throw e.error; }
|
||
}
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spread = function () {
|
||
for (var ar = [], i = 0; i < arguments.length; i++)
|
||
ar = ar.concat(__read(arguments[i]));
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spreadArrays = function () {
|
||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||
r[k] = a[j];
|
||
return r;
|
||
};
|
||
|
||
__spreadArray = function (to, from, pack) {
|
||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||
if (ar || !(i in from)) {
|
||
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||
ar[i] = from[i];
|
||
}
|
||
}
|
||
return to.concat(ar || from);
|
||
};
|
||
|
||
__await = function (v) {
|
||
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
||
};
|
||
|
||
__asyncGenerator = function (thisArg, _arguments, generator) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
||
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
||
function fulfill(value) { resume("next", value); }
|
||
function reject(value) { resume("throw", value); }
|
||
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
||
};
|
||
|
||
__asyncDelegator = function (o) {
|
||
var i, p;
|
||
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
||
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
||
};
|
||
|
||
__asyncValues = function (o) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||
};
|
||
|
||
__makeTemplateObject = function (cooked, raw) {
|
||
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
||
return cooked;
|
||
};
|
||
|
||
var __setModuleDefault = Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
};
|
||
|
||
__importStar = function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
|
||
__importDefault = function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
|
||
__classPrivateFieldGet = function (receiver, state, kind, f) {
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
||
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
||
};
|
||
|
||
__classPrivateFieldSet = function (receiver, state, value, kind, f) {
|
||
if (kind === "m") throw new TypeError("Private method is not writable");
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
||
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
||
};
|
||
|
||
exporter("__extends", __extends);
|
||
exporter("__assign", __assign);
|
||
exporter("__rest", __rest);
|
||
exporter("__decorate", __decorate);
|
||
exporter("__param", __param);
|
||
exporter("__metadata", __metadata);
|
||
exporter("__awaiter", __awaiter);
|
||
exporter("__generator", __generator);
|
||
exporter("__exportStar", __exportStar);
|
||
exporter("__createBinding", __createBinding);
|
||
exporter("__values", __values);
|
||
exporter("__read", __read);
|
||
exporter("__spread", __spread);
|
||
exporter("__spreadArrays", __spreadArrays);
|
||
exporter("__spreadArray", __spreadArray);
|
||
exporter("__await", __await);
|
||
exporter("__asyncGenerator", __asyncGenerator);
|
||
exporter("__asyncDelegator", __asyncDelegator);
|
||
exporter("__asyncValues", __asyncValues);
|
||
exporter("__makeTemplateObject", __makeTemplateObject);
|
||
exporter("__importStar", __importStar);
|
||
exporter("__importDefault", __importDefault);
|
||
exporter("__classPrivateFieldGet", __classPrivateFieldGet);
|
||
exporter("__classPrivateFieldSet", __classPrivateFieldSet);
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
/* 726 */,
|
||
/* 727 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=Event.js.map
|
||
|
||
/***/ }),
|
||
/* 728 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.SearchState = void 0;
|
||
class SearchState {
|
||
constructor(path, level) {
|
||
this.path = path;
|
||
this.level = level;
|
||
}
|
||
}
|
||
exports.SearchState = SearchState;
|
||
//# sourceMappingURL=internal-search-state.js.map
|
||
|
||
/***/ }),
|
||
/* 729 */,
|
||
/* 730 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
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 __asyncValues = (this && this.__asyncValues) || function (o) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.hashFiles = void 0;
|
||
const crypto = __importStar(__webpack_require__(417));
|
||
const core = __importStar(__webpack_require__(470));
|
||
const fs = __importStar(__webpack_require__(747));
|
||
const stream = __importStar(__webpack_require__(794));
|
||
const util = __importStar(__webpack_require__(669));
|
||
const path = __importStar(__webpack_require__(622));
|
||
function hashFiles(globber) {
|
||
var e_1, _a;
|
||
var _b;
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let hasMatch = false;
|
||
const githubWorkspace = (_b = process.env['GITHUB_WORKSPACE']) !== null && _b !== void 0 ? _b : process.cwd();
|
||
const result = crypto.createHash('sha256');
|
||
let count = 0;
|
||
try {
|
||
for (var _c = __asyncValues(globber.globGenerator()), _d; _d = yield _c.next(), !_d.done;) {
|
||
const file = _d.value;
|
||
core.debug(file);
|
||
if (!file.startsWith(`${githubWorkspace}${path.sep}`)) {
|
||
core.debug(`Ignore '${file}' since it is not under GITHUB_WORKSPACE.`);
|
||
continue;
|
||
}
|
||
if (fs.statSync(file).isDirectory()) {
|
||
core.debug(`Skip directory '${file}'.`);
|
||
continue;
|
||
}
|
||
const hash = crypto.createHash('sha256');
|
||
const pipeline = util.promisify(stream.pipeline);
|
||
yield pipeline(fs.createReadStream(file), hash);
|
||
result.write(hash.digest());
|
||
count++;
|
||
if (!hasMatch) {
|
||
hasMatch = true;
|
||
}
|
||
}
|
||
}
|
||
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
||
finally {
|
||
try {
|
||
if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);
|
||
}
|
||
finally { if (e_1) throw e_1.error; }
|
||
}
|
||
result.end();
|
||
if (hasMatch) {
|
||
core.debug(`Found ${count} files to hash.`);
|
||
return result.digest('hex');
|
||
}
|
||
else {
|
||
core.debug(`No matches found for glob`);
|
||
return '';
|
||
}
|
||
});
|
||
}
|
||
exports.hashFiles = hashFiles;
|
||
//# sourceMappingURL=internal-hash-files.js.map
|
||
|
||
/***/ }),
|
||
/* 731 */,
|
||
/* 732 */,
|
||
/* 733 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
class BasicCredentialHandler {
|
||
constructor(username, password) {
|
||
this.username = username;
|
||
this.password = password;
|
||
}
|
||
prepareRequest(options) {
|
||
options.headers['Authorization'] =
|
||
'Basic ' +
|
||
Buffer.from(this.username + ':' + this.password).toString('base64');
|
||
}
|
||
// This handler cannot handle 401
|
||
canHandleAuthentication(response) {
|
||
return false;
|
||
}
|
||
handleAuthentication(httpClient, requestInfo, objs) {
|
||
return null;
|
||
}
|
||
}
|
||
exports.BasicCredentialHandler = BasicCredentialHandler;
|
||
class BearerCredentialHandler {
|
||
constructor(token) {
|
||
this.token = token;
|
||
}
|
||
// currently implements pre-authorization
|
||
// TODO: support preAuth = false where it hooks on 401
|
||
prepareRequest(options) {
|
||
options.headers['Authorization'] = 'Bearer ' + this.token;
|
||
}
|
||
// This handler cannot handle 401
|
||
canHandleAuthentication(response) {
|
||
return false;
|
||
}
|
||
handleAuthentication(httpClient, requestInfo, objs) {
|
||
return null;
|
||
}
|
||
}
|
||
exports.BearerCredentialHandler = BearerCredentialHandler;
|
||
class PersonalAccessTokenCredentialHandler {
|
||
constructor(token) {
|
||
this.token = token;
|
||
}
|
||
// currently implements pre-authorization
|
||
// TODO: support preAuth = false where it hooks on 401
|
||
prepareRequest(options) {
|
||
options.headers['Authorization'] =
|
||
'Basic ' + Buffer.from('PAT:' + this.token).toString('base64');
|
||
}
|
||
// This handler cannot handle 401
|
||
canHandleAuthentication(response) {
|
||
return false;
|
||
}
|
||
handleAuthentication(httpClient, requestInfo, objs) {
|
||
return null;
|
||
}
|
||
}
|
||
exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;
|
||
|
||
|
||
/***/ }),
|
||
/* 734 */,
|
||
/* 735 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNamedNodeMap, XMLNode, isObject,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
isObject = __webpack_require__(582).isObject;
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLDTDAttList = __webpack_require__(801);
|
||
|
||
XMLDTDEntity = __webpack_require__(661);
|
||
|
||
XMLDTDElement = __webpack_require__(597);
|
||
|
||
XMLDTDNotation = __webpack_require__(891);
|
||
|
||
XMLNamedNodeMap = __webpack_require__(451);
|
||
|
||
module.exports = XMLDocType = (function(superClass) {
|
||
extend(XMLDocType, superClass);
|
||
|
||
function XMLDocType(parent, pubID, sysID) {
|
||
var child, i, len, ref, ref1, ref2;
|
||
XMLDocType.__super__.constructor.call(this, parent);
|
||
this.type = NodeType.DocType;
|
||
if (parent.children) {
|
||
ref = parent.children;
|
||
for (i = 0, len = ref.length; i < len; i++) {
|
||
child = ref[i];
|
||
if (child.type === NodeType.Element) {
|
||
this.name = child.name;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
this.documentObject = parent;
|
||
if (isObject(pubID)) {
|
||
ref1 = pubID, pubID = ref1.pubID, sysID = ref1.sysID;
|
||
}
|
||
if (sysID == null) {
|
||
ref2 = [pubID, sysID], sysID = ref2[0], pubID = ref2[1];
|
||
}
|
||
if (pubID != null) {
|
||
this.pubID = this.stringify.dtdPubID(pubID);
|
||
}
|
||
if (sysID != null) {
|
||
this.sysID = this.stringify.dtdSysID(sysID);
|
||
}
|
||
}
|
||
|
||
Object.defineProperty(XMLDocType.prototype, 'entities', {
|
||
get: function() {
|
||
var child, i, len, nodes, ref;
|
||
nodes = {};
|
||
ref = this.children;
|
||
for (i = 0, len = ref.length; i < len; i++) {
|
||
child = ref[i];
|
||
if ((child.type === NodeType.EntityDeclaration) && !child.pe) {
|
||
nodes[child.name] = child;
|
||
}
|
||
}
|
||
return new XMLNamedNodeMap(nodes);
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocType.prototype, 'notations', {
|
||
get: function() {
|
||
var child, i, len, nodes, ref;
|
||
nodes = {};
|
||
ref = this.children;
|
||
for (i = 0, len = ref.length; i < len; i++) {
|
||
child = ref[i];
|
||
if (child.type === NodeType.NotationDeclaration) {
|
||
nodes[child.name] = child;
|
||
}
|
||
}
|
||
return new XMLNamedNodeMap(nodes);
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocType.prototype, 'publicId', {
|
||
get: function() {
|
||
return this.pubID;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocType.prototype, 'systemId', {
|
||
get: function() {
|
||
return this.sysID;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDocType.prototype, 'internalSubset', {
|
||
get: function() {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
}
|
||
});
|
||
|
||
XMLDocType.prototype.element = function(name, value) {
|
||
var child;
|
||
child = new XMLDTDElement(this, name, value);
|
||
this.children.push(child);
|
||
return this;
|
||
};
|
||
|
||
XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {
|
||
var child;
|
||
child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);
|
||
this.children.push(child);
|
||
return this;
|
||
};
|
||
|
||
XMLDocType.prototype.entity = function(name, value) {
|
||
var child;
|
||
child = new XMLDTDEntity(this, false, name, value);
|
||
this.children.push(child);
|
||
return this;
|
||
};
|
||
|
||
XMLDocType.prototype.pEntity = function(name, value) {
|
||
var child;
|
||
child = new XMLDTDEntity(this, true, name, value);
|
||
this.children.push(child);
|
||
return this;
|
||
};
|
||
|
||
XMLDocType.prototype.notation = function(name, value) {
|
||
var child;
|
||
child = new XMLDTDNotation(this, name, value);
|
||
this.children.push(child);
|
||
return this;
|
||
};
|
||
|
||
XMLDocType.prototype.toString = function(options) {
|
||
return this.options.writer.docType(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
XMLDocType.prototype.ele = function(name, value) {
|
||
return this.element(name, value);
|
||
};
|
||
|
||
XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {
|
||
return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);
|
||
};
|
||
|
||
XMLDocType.prototype.ent = function(name, value) {
|
||
return this.entity(name, value);
|
||
};
|
||
|
||
XMLDocType.prototype.pent = function(name, value) {
|
||
return this.pEntity(name, value);
|
||
};
|
||
|
||
XMLDocType.prototype.not = function(name, value) {
|
||
return this.notation(name, value);
|
||
};
|
||
|
||
XMLDocType.prototype.up = function() {
|
||
return this.root() || this.documentObject;
|
||
};
|
||
|
||
XMLDocType.prototype.isEqualNode = function(node) {
|
||
if (!XMLDocType.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {
|
||
return false;
|
||
}
|
||
if (node.name !== this.name) {
|
||
return false;
|
||
}
|
||
if (node.publicId !== this.publicId) {
|
||
return false;
|
||
}
|
||
if (node.systemId !== this.systemId) {
|
||
return false;
|
||
}
|
||
return true;
|
||
};
|
||
|
||
return XMLDocType;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 736 */,
|
||
/* 737 */,
|
||
/* 738 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLDeclaration, XMLNode, isObject,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
isObject = __webpack_require__(582).isObject;
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
module.exports = XMLDeclaration = (function(superClass) {
|
||
extend(XMLDeclaration, superClass);
|
||
|
||
function XMLDeclaration(parent, version, encoding, standalone) {
|
||
var ref;
|
||
XMLDeclaration.__super__.constructor.call(this, parent);
|
||
if (isObject(version)) {
|
||
ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;
|
||
}
|
||
if (!version) {
|
||
version = '1.0';
|
||
}
|
||
this.type = NodeType.Declaration;
|
||
this.version = this.stringify.xmlVersion(version);
|
||
if (encoding != null) {
|
||
this.encoding = this.stringify.xmlEncoding(encoding);
|
||
}
|
||
if (standalone != null) {
|
||
this.standalone = this.stringify.xmlStandalone(standalone);
|
||
}
|
||
}
|
||
|
||
XMLDeclaration.prototype.toString = function(options) {
|
||
return this.options.writer.declaration(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
return XMLDeclaration;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 739 */,
|
||
/* 740 */,
|
||
/* 741 */,
|
||
/* 742 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var fs = __webpack_require__(747)
|
||
var core
|
||
if (process.platform === 'win32' || global.TESTING_WINDOWS) {
|
||
core = __webpack_require__(818)
|
||
} else {
|
||
core = __webpack_require__(197)
|
||
}
|
||
|
||
module.exports = isexe
|
||
isexe.sync = sync
|
||
|
||
function isexe (path, options, cb) {
|
||
if (typeof options === 'function') {
|
||
cb = options
|
||
options = {}
|
||
}
|
||
|
||
if (!cb) {
|
||
if (typeof Promise !== 'function') {
|
||
throw new TypeError('callback not provided')
|
||
}
|
||
|
||
return new Promise(function (resolve, reject) {
|
||
isexe(path, options || {}, function (er, is) {
|
||
if (er) {
|
||
reject(er)
|
||
} else {
|
||
resolve(is)
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
core(path, options || {}, function (er, is) {
|
||
// ignore EACCES because that just means we aren't allowed to run it
|
||
if (er) {
|
||
if (er.code === 'EACCES' || options && options.ignoreErrors) {
|
||
er = null
|
||
is = false
|
||
}
|
||
}
|
||
cb(er, is)
|
||
})
|
||
}
|
||
|
||
function sync (path, options) {
|
||
// my kingdom for a filtered catch
|
||
try {
|
||
return core.sync(path, options || {})
|
||
} catch (er) {
|
||
if (options && options.ignoreErrors || er.code === 'EACCES') {
|
||
return false
|
||
} else {
|
||
throw er
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 743 */,
|
||
/* 744 */,
|
||
/* 745 */,
|
||
/* 746 */,
|
||
/* 747 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("fs");
|
||
|
||
/***/ }),
|
||
/* 748 */
|
||
/***/ (function(module) {
|
||
|
||
/*! *****************************************************************************
|
||
Copyright (c) Microsoft Corporation.
|
||
|
||
Permission to use, copy, modify, and/or distribute this software for any
|
||
purpose with or without fee is hereby granted.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||
PERFORMANCE OF THIS SOFTWARE.
|
||
***************************************************************************** */
|
||
/* global global, define, System, Reflect, Promise */
|
||
var __extends;
|
||
var __assign;
|
||
var __rest;
|
||
var __decorate;
|
||
var __param;
|
||
var __metadata;
|
||
var __awaiter;
|
||
var __generator;
|
||
var __exportStar;
|
||
var __values;
|
||
var __read;
|
||
var __spread;
|
||
var __spreadArrays;
|
||
var __spreadArray;
|
||
var __await;
|
||
var __asyncGenerator;
|
||
var __asyncDelegator;
|
||
var __asyncValues;
|
||
var __makeTemplateObject;
|
||
var __importStar;
|
||
var __importDefault;
|
||
var __classPrivateFieldGet;
|
||
var __classPrivateFieldSet;
|
||
var __createBinding;
|
||
(function (factory) {
|
||
var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
|
||
if (typeof define === "function" && define.amd) {
|
||
define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
|
||
}
|
||
else if ( true && typeof module.exports === "object") {
|
||
factory(createExporter(root, createExporter(module.exports)));
|
||
}
|
||
else {
|
||
factory(createExporter(root));
|
||
}
|
||
function createExporter(exports, previous) {
|
||
if (exports !== root) {
|
||
if (typeof Object.create === "function") {
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
}
|
||
else {
|
||
exports.__esModule = true;
|
||
}
|
||
}
|
||
return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
|
||
}
|
||
})
|
||
(function (exporter) {
|
||
var extendStatics = Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
|
||
__extends = function (d, b) {
|
||
if (typeof b !== "function" && b !== null)
|
||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||
extendStatics(d, b);
|
||
function __() { this.constructor = d; }
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
|
||
__assign = Object.assign || function (t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__rest = function (s, e) {
|
||
var t = {};
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||
t[p] = s[p];
|
||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||
t[p[i]] = s[p[i]];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__decorate = function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
|
||
__param = function (paramIndex, decorator) {
|
||
return function (target, key) { decorator(target, key, paramIndex); }
|
||
};
|
||
|
||
__metadata = function (metadataKey, metadataValue) {
|
||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
|
||
};
|
||
|
||
__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());
|
||
});
|
||
};
|
||
|
||
__generator = function (thisArg, body) {
|
||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||
function step(op) {
|
||
if (f) throw new TypeError("Generator is already executing.");
|
||
while (_) try {
|
||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||
switch (op[0]) {
|
||
case 0: case 1: t = op; break;
|
||
case 4: _.label++; return { value: op[1], done: false };
|
||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||
default:
|
||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||
if (t[2]) _.ops.pop();
|
||
_.trys.pop(); continue;
|
||
}
|
||
op = body.call(thisArg, _);
|
||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||
}
|
||
};
|
||
|
||
__exportStar = function(m, o) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
|
||
};
|
||
|
||
__createBinding = Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
|
||
__values = function (o) {
|
||
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
||
if (m) return m.call(o);
|
||
if (o && typeof o.length === "number") return {
|
||
next: function () {
|
||
if (o && i >= o.length) o = void 0;
|
||
return { value: o && o[i++], done: !o };
|
||
}
|
||
};
|
||
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
||
};
|
||
|
||
__read = function (o, n) {
|
||
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
||
if (!m) return o;
|
||
var i = m.call(o), r, ar = [], e;
|
||
try {
|
||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
||
}
|
||
catch (error) { e = { error: error }; }
|
||
finally {
|
||
try {
|
||
if (r && !r.done && (m = i["return"])) m.call(i);
|
||
}
|
||
finally { if (e) throw e.error; }
|
||
}
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spread = function () {
|
||
for (var ar = [], i = 0; i < arguments.length; i++)
|
||
ar = ar.concat(__read(arguments[i]));
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spreadArrays = function () {
|
||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||
r[k] = a[j];
|
||
return r;
|
||
};
|
||
|
||
__spreadArray = function (to, from, pack) {
|
||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||
if (ar || !(i in from)) {
|
||
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||
ar[i] = from[i];
|
||
}
|
||
}
|
||
return to.concat(ar || from);
|
||
};
|
||
|
||
__await = function (v) {
|
||
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
||
};
|
||
|
||
__asyncGenerator = function (thisArg, _arguments, generator) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
||
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
||
function fulfill(value) { resume("next", value); }
|
||
function reject(value) { resume("throw", value); }
|
||
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
||
};
|
||
|
||
__asyncDelegator = function (o) {
|
||
var i, p;
|
||
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
||
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
||
};
|
||
|
||
__asyncValues = function (o) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||
};
|
||
|
||
__makeTemplateObject = function (cooked, raw) {
|
||
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
||
return cooked;
|
||
};
|
||
|
||
var __setModuleDefault = Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
};
|
||
|
||
__importStar = function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
|
||
__importDefault = function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
|
||
__classPrivateFieldGet = function (receiver, state, kind, f) {
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
||
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
||
};
|
||
|
||
__classPrivateFieldSet = function (receiver, state, value, kind, f) {
|
||
if (kind === "m") throw new TypeError("Private method is not writable");
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
||
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
||
};
|
||
|
||
exporter("__extends", __extends);
|
||
exporter("__assign", __assign);
|
||
exporter("__rest", __rest);
|
||
exporter("__decorate", __decorate);
|
||
exporter("__param", __param);
|
||
exporter("__metadata", __metadata);
|
||
exporter("__awaiter", __awaiter);
|
||
exporter("__generator", __generator);
|
||
exporter("__exportStar", __exportStar);
|
||
exporter("__createBinding", __createBinding);
|
||
exporter("__values", __values);
|
||
exporter("__read", __read);
|
||
exporter("__spread", __spread);
|
||
exporter("__spreadArrays", __spreadArrays);
|
||
exporter("__spreadArray", __spreadArray);
|
||
exporter("__await", __await);
|
||
exporter("__asyncGenerator", __asyncGenerator);
|
||
exporter("__asyncDelegator", __asyncDelegator);
|
||
exporter("__asyncValues", __asyncValues);
|
||
exporter("__makeTemplateObject", __makeTemplateObject);
|
||
exporter("__importStar", __importStar);
|
||
exporter("__importDefault", __importDefault);
|
||
exporter("__classPrivateFieldGet", __classPrivateFieldGet);
|
||
exporter("__classPrivateFieldSet", __classPrivateFieldSet);
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
/* 749 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
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 fs = __importStar(__webpack_require__(747));
|
||
const os = __importStar(__webpack_require__(87));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const core = __importStar(__webpack_require__(470));
|
||
const github = __importStar(__webpack_require__(469));
|
||
function configAuthentication(registryUrl, alwaysAuth) {
|
||
const npmrc = path.resolve(process.env['RUNNER_TEMP'] || process.cwd(), '.npmrc');
|
||
if (!registryUrl.endsWith('/')) {
|
||
registryUrl += '/';
|
||
}
|
||
writeRegistryToFile(registryUrl, npmrc, alwaysAuth);
|
||
}
|
||
exports.configAuthentication = configAuthentication;
|
||
function writeRegistryToFile(registryUrl, fileLocation, alwaysAuth) {
|
||
let scope = core.getInput('scope');
|
||
if (!scope && registryUrl.indexOf('npm.pkg.github.com') > -1) {
|
||
scope = github.context.repo.owner;
|
||
}
|
||
if (scope && scope[0] != '@') {
|
||
scope = '@' + scope;
|
||
}
|
||
if (scope) {
|
||
scope = scope.toLowerCase();
|
||
}
|
||
core.debug(`Setting auth in ${fileLocation}`);
|
||
let newContents = '';
|
||
if (fs.existsSync(fileLocation)) {
|
||
const curContents = fs.readFileSync(fileLocation, 'utf8');
|
||
curContents.split(os.EOL).forEach((line) => {
|
||
// Add current contents unless they are setting the registry
|
||
if (!line.toLowerCase().startsWith('registry')) {
|
||
newContents += line + os.EOL;
|
||
}
|
||
});
|
||
}
|
||
// Remove http: or https: from front of registry.
|
||
const authString = registryUrl.replace(/(^\w+:|^)/, '') + ':_authToken=${NODE_AUTH_TOKEN}';
|
||
const registryString = scope
|
||
? `${scope}:registry=${registryUrl}`
|
||
: `registry=${registryUrl}`;
|
||
const alwaysAuthString = `always-auth=${alwaysAuth}`;
|
||
newContents += `${authString}${os.EOL}${registryString}${os.EOL}${alwaysAuthString}`;
|
||
fs.writeFileSync(fileLocation, newContents);
|
||
core.exportVariable('NPM_CONFIG_USERCONFIG', fileLocation);
|
||
// Export empty node_auth_token if didn't exist so npm doesn't complain about not being able to find it
|
||
core.exportVariable('NODE_AUTH_TOKEN', process.env.NODE_AUTH_TOKEN || 'XXXXX-XXXXX-XXXXX-XXXXX');
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 750 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
/*eslint no-var:0, prefer-arrow-callback: 0, object-shorthand: 0 */
|
||
|
||
|
||
|
||
var Punycode = __webpack_require__(815);
|
||
|
||
|
||
var internals = {};
|
||
|
||
|
||
//
|
||
// Read rules from file.
|
||
//
|
||
internals.rules = __webpack_require__(50).map(function (rule) {
|
||
|
||
return {
|
||
rule: rule,
|
||
suffix: rule.replace(/^(\*\.|\!)/, ''),
|
||
punySuffix: -1,
|
||
wildcard: rule.charAt(0) === '*',
|
||
exception: rule.charAt(0) === '!'
|
||
};
|
||
});
|
||
|
||
|
||
//
|
||
// Check is given string ends with `suffix`.
|
||
//
|
||
internals.endsWith = function (str, suffix) {
|
||
|
||
return str.indexOf(suffix, str.length - suffix.length) !== -1;
|
||
};
|
||
|
||
|
||
//
|
||
// Find rule for a given domain.
|
||
//
|
||
internals.findRule = function (domain) {
|
||
|
||
var punyDomain = Punycode.toASCII(domain);
|
||
return internals.rules.reduce(function (memo, rule) {
|
||
|
||
if (rule.punySuffix === -1){
|
||
rule.punySuffix = Punycode.toASCII(rule.suffix);
|
||
}
|
||
if (!internals.endsWith(punyDomain, '.' + rule.punySuffix) && punyDomain !== rule.punySuffix) {
|
||
return memo;
|
||
}
|
||
// This has been commented out as it never seems to run. This is because
|
||
// sub tlds always appear after their parents and we never find a shorter
|
||
// match.
|
||
//if (memo) {
|
||
// var memoSuffix = Punycode.toASCII(memo.suffix);
|
||
// if (memoSuffix.length >= punySuffix.length) {
|
||
// return memo;
|
||
// }
|
||
//}
|
||
return rule;
|
||
}, null);
|
||
};
|
||
|
||
|
||
//
|
||
// Error codes and messages.
|
||
//
|
||
exports.errorCodes = {
|
||
DOMAIN_TOO_SHORT: 'Domain name too short.',
|
||
DOMAIN_TOO_LONG: 'Domain name too long. It should be no more than 255 chars.',
|
||
LABEL_STARTS_WITH_DASH: 'Domain name label can not start with a dash.',
|
||
LABEL_ENDS_WITH_DASH: 'Domain name label can not end with a dash.',
|
||
LABEL_TOO_LONG: 'Domain name label should be at most 63 chars long.',
|
||
LABEL_TOO_SHORT: 'Domain name label should be at least 1 character long.',
|
||
LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.'
|
||
};
|
||
|
||
|
||
//
|
||
// Validate domain name and throw if not valid.
|
||
//
|
||
// From wikipedia:
|
||
//
|
||
// Hostnames are composed of series of labels concatenated with dots, as are all
|
||
// domain names. Each label must be between 1 and 63 characters long, and the
|
||
// entire hostname (including the delimiting dots) has a maximum of 255 chars.
|
||
//
|
||
// Allowed chars:
|
||
//
|
||
// * `a-z`
|
||
// * `0-9`
|
||
// * `-` but not as a starting or ending character
|
||
// * `.` as a separator for the textual portions of a domain name
|
||
//
|
||
// * http://en.wikipedia.org/wiki/Domain_name
|
||
// * http://en.wikipedia.org/wiki/Hostname
|
||
//
|
||
internals.validate = function (input) {
|
||
|
||
// Before we can validate we need to take care of IDNs with unicode chars.
|
||
var ascii = Punycode.toASCII(input);
|
||
|
||
if (ascii.length < 1) {
|
||
return 'DOMAIN_TOO_SHORT';
|
||
}
|
||
if (ascii.length > 255) {
|
||
return 'DOMAIN_TOO_LONG';
|
||
}
|
||
|
||
// Check each part's length and allowed chars.
|
||
var labels = ascii.split('.');
|
||
var label;
|
||
|
||
for (var i = 0; i < labels.length; ++i) {
|
||
label = labels[i];
|
||
if (!label.length) {
|
||
return 'LABEL_TOO_SHORT';
|
||
}
|
||
if (label.length > 63) {
|
||
return 'LABEL_TOO_LONG';
|
||
}
|
||
if (label.charAt(0) === '-') {
|
||
return 'LABEL_STARTS_WITH_DASH';
|
||
}
|
||
if (label.charAt(label.length - 1) === '-') {
|
||
return 'LABEL_ENDS_WITH_DASH';
|
||
}
|
||
if (!/^[a-z0-9\-]+$/.test(label)) {
|
||
return 'LABEL_INVALID_CHARS';
|
||
}
|
||
}
|
||
};
|
||
|
||
|
||
//
|
||
// Public API
|
||
//
|
||
|
||
|
||
//
|
||
// Parse domain.
|
||
//
|
||
exports.parse = function (input) {
|
||
|
||
if (typeof input !== 'string') {
|
||
throw new TypeError('Domain name must be a string.');
|
||
}
|
||
|
||
// Force domain to lowercase.
|
||
var domain = input.slice(0).toLowerCase();
|
||
|
||
// Handle FQDN.
|
||
// TODO: Simply remove trailing dot?
|
||
if (domain.charAt(domain.length - 1) === '.') {
|
||
domain = domain.slice(0, domain.length - 1);
|
||
}
|
||
|
||
// Validate and sanitise input.
|
||
var error = internals.validate(domain);
|
||
if (error) {
|
||
return {
|
||
input: input,
|
||
error: {
|
||
message: exports.errorCodes[error],
|
||
code: error
|
||
}
|
||
};
|
||
}
|
||
|
||
var parsed = {
|
||
input: input,
|
||
tld: null,
|
||
sld: null,
|
||
domain: null,
|
||
subdomain: null,
|
||
listed: false
|
||
};
|
||
|
||
var domainParts = domain.split('.');
|
||
|
||
// Non-Internet TLD
|
||
if (domainParts[domainParts.length - 1] === 'local') {
|
||
return parsed;
|
||
}
|
||
|
||
var handlePunycode = function () {
|
||
|
||
if (!/xn--/.test(domain)) {
|
||
return parsed;
|
||
}
|
||
if (parsed.domain) {
|
||
parsed.domain = Punycode.toASCII(parsed.domain);
|
||
}
|
||
if (parsed.subdomain) {
|
||
parsed.subdomain = Punycode.toASCII(parsed.subdomain);
|
||
}
|
||
return parsed;
|
||
};
|
||
|
||
var rule = internals.findRule(domain);
|
||
|
||
// Unlisted tld.
|
||
if (!rule) {
|
||
if (domainParts.length < 2) {
|
||
return parsed;
|
||
}
|
||
parsed.tld = domainParts.pop();
|
||
parsed.sld = domainParts.pop();
|
||
parsed.domain = [parsed.sld, parsed.tld].join('.');
|
||
if (domainParts.length) {
|
||
parsed.subdomain = domainParts.pop();
|
||
}
|
||
return handlePunycode();
|
||
}
|
||
|
||
// At this point we know the public suffix is listed.
|
||
parsed.listed = true;
|
||
|
||
var tldParts = rule.suffix.split('.');
|
||
var privateParts = domainParts.slice(0, domainParts.length - tldParts.length);
|
||
|
||
if (rule.exception) {
|
||
privateParts.push(tldParts.shift());
|
||
}
|
||
|
||
parsed.tld = tldParts.join('.');
|
||
|
||
if (!privateParts.length) {
|
||
return handlePunycode();
|
||
}
|
||
|
||
if (rule.wildcard) {
|
||
tldParts.unshift(privateParts.pop());
|
||
parsed.tld = tldParts.join('.');
|
||
}
|
||
|
||
if (!privateParts.length) {
|
||
return handlePunycode();
|
||
}
|
||
|
||
parsed.sld = privateParts.pop();
|
||
parsed.domain = [parsed.sld, parsed.tld].join('.');
|
||
|
||
if (privateParts.length) {
|
||
parsed.subdomain = privateParts.join('.');
|
||
}
|
||
|
||
return handlePunycode();
|
||
};
|
||
|
||
|
||
//
|
||
// Get domain.
|
||
//
|
||
exports.get = function (domain) {
|
||
|
||
if (!domain) {
|
||
return null;
|
||
}
|
||
return exports.parse(domain).domain || null;
|
||
};
|
||
|
||
|
||
//
|
||
// Check whether domain belongs to a known public suffix.
|
||
//
|
||
exports.isValid = function (domain) {
|
||
|
||
var parsed = exports.parse(domain);
|
||
return Boolean(parsed.domain && parsed.listed);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 751 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var defer = __webpack_require__(504);
|
||
|
||
// API
|
||
module.exports = async;
|
||
|
||
/**
|
||
* Runs provided callback asynchronously
|
||
* even if callback itself is not
|
||
*
|
||
* @param {function} callback - callback to invoke
|
||
* @returns {function} - augmented callback
|
||
*/
|
||
function async(callback)
|
||
{
|
||
var isAsync = false;
|
||
|
||
// check if async happened
|
||
defer(function() { isAsync = true; });
|
||
|
||
return function async_callback(err, result)
|
||
{
|
||
if (isAsync)
|
||
{
|
||
callback(err, result);
|
||
}
|
||
else
|
||
{
|
||
defer(function nextTick_callback()
|
||
{
|
||
callback(err, result);
|
||
});
|
||
}
|
||
};
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 752 */,
|
||
/* 753 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||
|
||
var endpoint = __webpack_require__(385);
|
||
var universalUserAgent = __webpack_require__(392);
|
||
var isPlainObject = _interopDefault(__webpack_require__(548));
|
||
var nodeFetch = _interopDefault(__webpack_require__(454));
|
||
var requestError = __webpack_require__(463);
|
||
|
||
const VERSION = "5.3.1";
|
||
|
||
function getBufferResponse(response) {
|
||
return response.arrayBuffer();
|
||
}
|
||
|
||
function fetchWrapper(requestOptions) {
|
||
if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
|
||
requestOptions.body = JSON.stringify(requestOptions.body);
|
||
}
|
||
|
||
let headers = {};
|
||
let status;
|
||
let url;
|
||
const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;
|
||
return fetch(requestOptions.url, Object.assign({
|
||
method: requestOptions.method,
|
||
body: requestOptions.body,
|
||
headers: requestOptions.headers,
|
||
redirect: requestOptions.redirect
|
||
}, requestOptions.request)).then(response => {
|
||
url = response.url;
|
||
status = response.status;
|
||
|
||
for (const keyAndValue of response.headers) {
|
||
headers[keyAndValue[0]] = keyAndValue[1];
|
||
}
|
||
|
||
if (status === 204 || status === 205) {
|
||
return;
|
||
} // GitHub API returns 200 for HEAD requsets
|
||
|
||
|
||
if (requestOptions.method === "HEAD") {
|
||
if (status < 400) {
|
||
return;
|
||
}
|
||
|
||
throw new requestError.RequestError(response.statusText, status, {
|
||
headers,
|
||
request: requestOptions
|
||
});
|
||
}
|
||
|
||
if (status === 304) {
|
||
throw new requestError.RequestError("Not modified", status, {
|
||
headers,
|
||
request: requestOptions
|
||
});
|
||
}
|
||
|
||
if (status >= 400) {
|
||
return response.text().then(message => {
|
||
const error = new requestError.RequestError(message, status, {
|
||
headers,
|
||
request: requestOptions
|
||
});
|
||
|
||
try {
|
||
let responseBody = JSON.parse(error.message);
|
||
Object.assign(error, responseBody);
|
||
let errors = responseBody.errors; // Assumption `errors` would always be in Array Fotmat
|
||
|
||
error.message = error.message + ": " + errors.map(JSON.stringify).join(", ");
|
||
} catch (e) {// ignore, see octokit/rest.js#684
|
||
}
|
||
|
||
throw error;
|
||
});
|
||
}
|
||
|
||
const contentType = response.headers.get("content-type");
|
||
|
||
if (/application\/json/.test(contentType)) {
|
||
return response.json();
|
||
}
|
||
|
||
if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
|
||
return response.text();
|
||
}
|
||
|
||
return getBufferResponse(response);
|
||
}).then(data => {
|
||
return {
|
||
status,
|
||
url,
|
||
headers,
|
||
data
|
||
};
|
||
}).catch(error => {
|
||
if (error instanceof requestError.RequestError) {
|
||
throw error;
|
||
}
|
||
|
||
throw new requestError.RequestError(error.message, 500, {
|
||
headers,
|
||
request: requestOptions
|
||
});
|
||
});
|
||
}
|
||
|
||
function withDefaults(oldEndpoint, newDefaults) {
|
||
const endpoint = oldEndpoint.defaults(newDefaults);
|
||
|
||
const newApi = function (route, parameters) {
|
||
const endpointOptions = endpoint.merge(route, parameters);
|
||
|
||
if (!endpointOptions.request || !endpointOptions.request.hook) {
|
||
return fetchWrapper(endpoint.parse(endpointOptions));
|
||
}
|
||
|
||
const request = (route, parameters) => {
|
||
return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));
|
||
};
|
||
|
||
Object.assign(request, {
|
||
endpoint,
|
||
defaults: withDefaults.bind(null, endpoint)
|
||
});
|
||
return endpointOptions.request.hook(request, endpointOptions);
|
||
};
|
||
|
||
return Object.assign(newApi, {
|
||
endpoint,
|
||
defaults: withDefaults.bind(null, endpoint)
|
||
});
|
||
}
|
||
|
||
const request = withDefaults(endpoint.endpoint, {
|
||
headers: {
|
||
"user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}`
|
||
}
|
||
});
|
||
|
||
exports.request = request;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 754 */,
|
||
/* 755 */,
|
||
/* 756 */,
|
||
/* 757 */,
|
||
/* 758 */,
|
||
/* 759 */,
|
||
/* 760 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
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 __asyncValues = (this && this.__asyncValues) || function (o) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||
};
|
||
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
||
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
||
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
||
function fulfill(value) { resume("next", value); }
|
||
function reject(value) { resume("throw", value); }
|
||
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.DefaultGlobber = void 0;
|
||
const core = __importStar(__webpack_require__(470));
|
||
const fs = __importStar(__webpack_require__(747));
|
||
const globOptionsHelper = __importStar(__webpack_require__(601));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const patternHelper = __importStar(__webpack_require__(386));
|
||
const internal_match_kind_1 = __webpack_require__(327);
|
||
const internal_pattern_1 = __webpack_require__(223);
|
||
const internal_search_state_1 = __webpack_require__(728);
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
class DefaultGlobber {
|
||
constructor(options) {
|
||
this.patterns = [];
|
||
this.searchPaths = [];
|
||
this.options = globOptionsHelper.getOptions(options);
|
||
}
|
||
getSearchPaths() {
|
||
// Return a copy
|
||
return this.searchPaths.slice();
|
||
}
|
||
glob() {
|
||
var e_1, _a;
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const result = [];
|
||
try {
|
||
for (var _b = __asyncValues(this.globGenerator()), _c; _c = yield _b.next(), !_c.done;) {
|
||
const itemPath = _c.value;
|
||
result.push(itemPath);
|
||
}
|
||
}
|
||
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
||
finally {
|
||
try {
|
||
if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);
|
||
}
|
||
finally { if (e_1) throw e_1.error; }
|
||
}
|
||
return result;
|
||
});
|
||
}
|
||
globGenerator() {
|
||
return __asyncGenerator(this, arguments, function* globGenerator_1() {
|
||
// Fill in defaults options
|
||
const options = globOptionsHelper.getOptions(this.options);
|
||
// Implicit descendants?
|
||
const patterns = [];
|
||
for (const pattern of this.patterns) {
|
||
patterns.push(pattern);
|
||
if (options.implicitDescendants &&
|
||
(pattern.trailingSeparator ||
|
||
pattern.segments[pattern.segments.length - 1] !== '**')) {
|
||
patterns.push(new internal_pattern_1.Pattern(pattern.negate, true, pattern.segments.concat('**')));
|
||
}
|
||
}
|
||
// Push the search paths
|
||
const stack = [];
|
||
for (const searchPath of patternHelper.getSearchPaths(patterns)) {
|
||
core.debug(`Search path '${searchPath}'`);
|
||
// Exists?
|
||
try {
|
||
// Intentionally using lstat. Detection for broken symlink
|
||
// will be performed later (if following symlinks).
|
||
yield __await(fs.promises.lstat(searchPath));
|
||
}
|
||
catch (err) {
|
||
if (err.code === 'ENOENT') {
|
||
continue;
|
||
}
|
||
throw err;
|
||
}
|
||
stack.unshift(new internal_search_state_1.SearchState(searchPath, 1));
|
||
}
|
||
// Search
|
||
const traversalChain = []; // used to detect cycles
|
||
while (stack.length) {
|
||
// Pop
|
||
const item = stack.pop();
|
||
// Match?
|
||
const match = patternHelper.match(patterns, item.path);
|
||
const partialMatch = !!match || patternHelper.partialMatch(patterns, item.path);
|
||
if (!match && !partialMatch) {
|
||
continue;
|
||
}
|
||
// Stat
|
||
const stats = yield __await(DefaultGlobber.stat(item, options, traversalChain)
|
||
// Broken symlink, or symlink cycle detected, or no longer exists
|
||
);
|
||
// Broken symlink, or symlink cycle detected, or no longer exists
|
||
if (!stats) {
|
||
continue;
|
||
}
|
||
// Directory
|
||
if (stats.isDirectory()) {
|
||
// Matched
|
||
if (match & internal_match_kind_1.MatchKind.Directory && options.matchDirectories) {
|
||
yield yield __await(item.path);
|
||
}
|
||
// Descend?
|
||
else if (!partialMatch) {
|
||
continue;
|
||
}
|
||
// Push the child items in reverse
|
||
const childLevel = item.level + 1;
|
||
const childItems = (yield __await(fs.promises.readdir(item.path))).map(x => new internal_search_state_1.SearchState(path.join(item.path, x), childLevel));
|
||
stack.push(...childItems.reverse());
|
||
}
|
||
// File
|
||
else if (match & internal_match_kind_1.MatchKind.File) {
|
||
yield yield __await(item.path);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
/**
|
||
* Constructs a DefaultGlobber
|
||
*/
|
||
static create(patterns, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const result = new DefaultGlobber(options);
|
||
if (IS_WINDOWS) {
|
||
patterns = patterns.replace(/\r\n/g, '\n');
|
||
patterns = patterns.replace(/\r/g, '\n');
|
||
}
|
||
const lines = patterns.split('\n').map(x => x.trim());
|
||
for (const line of lines) {
|
||
// Empty or comment
|
||
if (!line || line.startsWith('#')) {
|
||
continue;
|
||
}
|
||
// Pattern
|
||
else {
|
||
result.patterns.push(new internal_pattern_1.Pattern(line));
|
||
}
|
||
}
|
||
result.searchPaths.push(...patternHelper.getSearchPaths(result.patterns));
|
||
return result;
|
||
});
|
||
}
|
||
static stat(item, options, traversalChain) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// Note:
|
||
// `stat` returns info about the target of a symlink (or symlink chain)
|
||
// `lstat` returns info about a symlink itself
|
||
let stats;
|
||
if (options.followSymbolicLinks) {
|
||
try {
|
||
// Use `stat` (following symlinks)
|
||
stats = yield fs.promises.stat(item.path);
|
||
}
|
||
catch (err) {
|
||
if (err.code === 'ENOENT') {
|
||
if (options.omitBrokenSymbolicLinks) {
|
||
core.debug(`Broken symlink '${item.path}'`);
|
||
return undefined;
|
||
}
|
||
throw new Error(`No information found for the path '${item.path}'. This may indicate a broken symbolic link.`);
|
||
}
|
||
throw err;
|
||
}
|
||
}
|
||
else {
|
||
// Use `lstat` (not following symlinks)
|
||
stats = yield fs.promises.lstat(item.path);
|
||
}
|
||
// Note, isDirectory() returns false for the lstat of a symlink
|
||
if (stats.isDirectory() && options.followSymbolicLinks) {
|
||
// Get the realpath
|
||
const realPath = yield fs.promises.realpath(item.path);
|
||
// Fixup the traversal chain to match the item level
|
||
while (traversalChain.length >= item.level) {
|
||
traversalChain.pop();
|
||
}
|
||
// Test for a cycle
|
||
if (traversalChain.some((x) => x === realPath)) {
|
||
core.debug(`Symlink cycle detected for path '${item.path}' and realpath '${realPath}'`);
|
||
return undefined;
|
||
}
|
||
// Update the traversal chain
|
||
traversalChain.push(realPath);
|
||
}
|
||
return stats;
|
||
});
|
||
}
|
||
}
|
||
exports.DefaultGlobber = DefaultGlobber;
|
||
//# sourceMappingURL=internal-globber.js.map
|
||
|
||
/***/ }),
|
||
/* 761 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("zlib");
|
||
|
||
/***/ }),
|
||
/* 762 */,
|
||
/* 763 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = removeHook
|
||
|
||
function removeHook (state, name, method) {
|
||
if (!state.registry[name]) {
|
||
return
|
||
}
|
||
|
||
var index = state.registry[name]
|
||
.map(function (registered) { return registered.orig })
|
||
.indexOf(method)
|
||
|
||
if (index === -1) {
|
||
return
|
||
}
|
||
|
||
state.registry[name].splice(index, 1)
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 764 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
__exportStar(__webpack_require__(461), exports);
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
/***/ }),
|
||
/* 765 */,
|
||
/* 766 */
|
||
/***/ (function(module) {
|
||
|
||
// populates missing values
|
||
module.exports = function(dst, src) {
|
||
|
||
Object.keys(src).forEach(function(prop)
|
||
{
|
||
dst[prop] = dst[prop] || src[prop];
|
||
});
|
||
|
||
return dst;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 767 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.NoopSpan = void 0;
|
||
var spancontext_utils_1 = __webpack_require__(629);
|
||
/**
|
||
* The NoopSpan is the default {@link Span} that is used when no Span
|
||
* implementation is available. All operations are no-op including context
|
||
* propagation.
|
||
*/
|
||
var NoopSpan = /** @class */ (function () {
|
||
function NoopSpan(_spanContext) {
|
||
if (_spanContext === void 0) { _spanContext = spancontext_utils_1.INVALID_SPAN_CONTEXT; }
|
||
this._spanContext = _spanContext;
|
||
}
|
||
// Returns a SpanContext.
|
||
NoopSpan.prototype.context = function () {
|
||
return this._spanContext;
|
||
};
|
||
// By default does nothing
|
||
NoopSpan.prototype.setAttribute = function (_key, _value) {
|
||
return this;
|
||
};
|
||
// By default does nothing
|
||
NoopSpan.prototype.setAttributes = function (_attributes) {
|
||
return this;
|
||
};
|
||
// By default does nothing
|
||
NoopSpan.prototype.addEvent = function (_name, _attributes) {
|
||
return this;
|
||
};
|
||
// By default does nothing
|
||
NoopSpan.prototype.setStatus = function (_status) {
|
||
return this;
|
||
};
|
||
// By default does nothing
|
||
NoopSpan.prototype.updateName = function (_name) {
|
||
return this;
|
||
};
|
||
// By default does nothing
|
||
NoopSpan.prototype.end = function (_endTime) { };
|
||
// isRecording always returns false for noopSpan.
|
||
NoopSpan.prototype.isRecording = function () {
|
||
return false;
|
||
};
|
||
// By default does nothing
|
||
NoopSpan.prototype.recordException = function (_exception, _time) { };
|
||
return NoopSpan;
|
||
}());
|
||
exports.NoopSpan = NoopSpan;
|
||
//# sourceMappingURL=NoopSpan.js.map
|
||
|
||
/***/ }),
|
||
/* 768 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
module.exports = function (x) {
|
||
var lf = typeof x === 'string' ? '\n' : '\n'.charCodeAt();
|
||
var cr = typeof x === 'string' ? '\r' : '\r'.charCodeAt();
|
||
|
||
if (x[x.length - 1] === lf) {
|
||
x = x.slice(0, x.length - 1);
|
||
}
|
||
|
||
if (x[x.length - 1] === cr) {
|
||
x = x.slice(0, x.length - 1);
|
||
}
|
||
|
||
return x;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 769 */,
|
||
/* 770 */,
|
||
/* 771 */,
|
||
/* 772 */,
|
||
/* 773 */,
|
||
/* 774 */,
|
||
/* 775 */,
|
||
/* 776 */,
|
||
/* 777 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = getFirstPage
|
||
|
||
const getPage = __webpack_require__(265)
|
||
|
||
function getFirstPage (octokit, link, headers) {
|
||
return getPage(octokit, link, 'first', headers)
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 778 */,
|
||
/* 779 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
/*!
|
||
* mime-types
|
||
* Copyright(c) 2014 Jonathan Ong
|
||
* Copyright(c) 2015 Douglas Christopher Wilson
|
||
* MIT Licensed
|
||
*/
|
||
|
||
|
||
|
||
/**
|
||
* Module dependencies.
|
||
* @private
|
||
*/
|
||
|
||
var db = __webpack_require__(852)
|
||
var extname = __webpack_require__(622).extname
|
||
|
||
/**
|
||
* Module variables.
|
||
* @private
|
||
*/
|
||
|
||
var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/
|
||
var TEXT_TYPE_REGEXP = /^text\//i
|
||
|
||
/**
|
||
* Module exports.
|
||
* @public
|
||
*/
|
||
|
||
exports.charset = charset
|
||
exports.charsets = { lookup: charset }
|
||
exports.contentType = contentType
|
||
exports.extension = extension
|
||
exports.extensions = Object.create(null)
|
||
exports.lookup = lookup
|
||
exports.types = Object.create(null)
|
||
|
||
// Populate the extensions/types maps
|
||
populateMaps(exports.extensions, exports.types)
|
||
|
||
/**
|
||
* Get the default charset for a MIME type.
|
||
*
|
||
* @param {string} type
|
||
* @return {boolean|string}
|
||
*/
|
||
|
||
function charset (type) {
|
||
if (!type || typeof type !== 'string') {
|
||
return false
|
||
}
|
||
|
||
// TODO: use media-typer
|
||
var match = EXTRACT_TYPE_REGEXP.exec(type)
|
||
var mime = match && db[match[1].toLowerCase()]
|
||
|
||
if (mime && mime.charset) {
|
||
return mime.charset
|
||
}
|
||
|
||
// default text/* to utf-8
|
||
if (match && TEXT_TYPE_REGEXP.test(match[1])) {
|
||
return 'UTF-8'
|
||
}
|
||
|
||
return false
|
||
}
|
||
|
||
/**
|
||
* Create a full Content-Type header given a MIME type or extension.
|
||
*
|
||
* @param {string} str
|
||
* @return {boolean|string}
|
||
*/
|
||
|
||
function contentType (str) {
|
||
// TODO: should this even be in this module?
|
||
if (!str || typeof str !== 'string') {
|
||
return false
|
||
}
|
||
|
||
var mime = str.indexOf('/') === -1
|
||
? exports.lookup(str)
|
||
: str
|
||
|
||
if (!mime) {
|
||
return false
|
||
}
|
||
|
||
// TODO: use content-type or other module
|
||
if (mime.indexOf('charset') === -1) {
|
||
var charset = exports.charset(mime)
|
||
if (charset) mime += '; charset=' + charset.toLowerCase()
|
||
}
|
||
|
||
return mime
|
||
}
|
||
|
||
/**
|
||
* Get the default extension for a MIME type.
|
||
*
|
||
* @param {string} type
|
||
* @return {boolean|string}
|
||
*/
|
||
|
||
function extension (type) {
|
||
if (!type || typeof type !== 'string') {
|
||
return false
|
||
}
|
||
|
||
// TODO: use media-typer
|
||
var match = EXTRACT_TYPE_REGEXP.exec(type)
|
||
|
||
// get extensions
|
||
var exts = match && exports.extensions[match[1].toLowerCase()]
|
||
|
||
if (!exts || !exts.length) {
|
||
return false
|
||
}
|
||
|
||
return exts[0]
|
||
}
|
||
|
||
/**
|
||
* Lookup the MIME type for a file path/extension.
|
||
*
|
||
* @param {string} path
|
||
* @return {boolean|string}
|
||
*/
|
||
|
||
function lookup (path) {
|
||
if (!path || typeof path !== 'string') {
|
||
return false
|
||
}
|
||
|
||
// get the extension ("ext" or ".ext" or full path)
|
||
var extension = extname('x.' + path)
|
||
.toLowerCase()
|
||
.substr(1)
|
||
|
||
if (!extension) {
|
||
return false
|
||
}
|
||
|
||
return exports.types[extension] || false
|
||
}
|
||
|
||
/**
|
||
* Populate the extensions and types maps.
|
||
* @private
|
||
*/
|
||
|
||
function populateMaps (extensions, types) {
|
||
// source preference (least -> most)
|
||
var preference = ['nginx', 'apache', undefined, 'iana']
|
||
|
||
Object.keys(db).forEach(function forEachMimeType (type) {
|
||
var mime = db[type]
|
||
var exts = mime.extensions
|
||
|
||
if (!exts || !exts.length) {
|
||
return
|
||
}
|
||
|
||
// mime -> extensions
|
||
extensions[type] = exts
|
||
|
||
// extension -> mime
|
||
for (var i = 0; i < exts.length; i++) {
|
||
var extension = exts[i]
|
||
|
||
if (types[extension]) {
|
||
var from = preference.indexOf(db[types[extension]].source)
|
||
var to = preference.indexOf(mime.source)
|
||
|
||
if (types[extension] !== 'application/octet-stream' &&
|
||
(from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {
|
||
// skip the remapping
|
||
continue
|
||
}
|
||
}
|
||
|
||
// set the extension -> mime
|
||
types[extension] = type
|
||
}
|
||
})
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 780 */,
|
||
/* 781 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=Sampler.js.map
|
||
|
||
/***/ }),
|
||
/* 782 */,
|
||
/* 783 */,
|
||
/* 784 */,
|
||
/* 785 */,
|
||
/* 786 */,
|
||
/* 787 */,
|
||
/* 788 */,
|
||
/* 789 */,
|
||
/* 790 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var CombinedStream = __webpack_require__(547);
|
||
var util = __webpack_require__(669);
|
||
var path = __webpack_require__(622);
|
||
var http = __webpack_require__(605);
|
||
var https = __webpack_require__(211);
|
||
var parseUrl = __webpack_require__(835).parse;
|
||
var fs = __webpack_require__(747);
|
||
var mime = __webpack_require__(779);
|
||
var asynckit = __webpack_require__(334);
|
||
var populate = __webpack_require__(766);
|
||
|
||
// Public API
|
||
module.exports = FormData;
|
||
|
||
// make it a Stream
|
||
util.inherits(FormData, CombinedStream);
|
||
|
||
/**
|
||
* Create readable "multipart/form-data" streams.
|
||
* Can be used to submit forms
|
||
* and file uploads to other web applications.
|
||
*
|
||
* @constructor
|
||
* @param {Object} options - Properties to be added/overriden for FormData and CombinedStream
|
||
*/
|
||
function FormData(options) {
|
||
if (!(this instanceof FormData)) {
|
||
return new FormData(options);
|
||
}
|
||
|
||
this._overheadLength = 0;
|
||
this._valueLength = 0;
|
||
this._valuesToMeasure = [];
|
||
|
||
CombinedStream.call(this);
|
||
|
||
options = options || {};
|
||
for (var option in options) {
|
||
this[option] = options[option];
|
||
}
|
||
}
|
||
|
||
FormData.LINE_BREAK = '\r\n';
|
||
FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';
|
||
|
||
FormData.prototype.append = function(field, value, options) {
|
||
|
||
options = options || {};
|
||
|
||
// allow filename as single option
|
||
if (typeof options == 'string') {
|
||
options = {filename: options};
|
||
}
|
||
|
||
var append = CombinedStream.prototype.append.bind(this);
|
||
|
||
// all that streamy business can't handle numbers
|
||
if (typeof value == 'number') {
|
||
value = '' + value;
|
||
}
|
||
|
||
// https://github.com/felixge/node-form-data/issues/38
|
||
if (util.isArray(value)) {
|
||
// Please convert your array into string
|
||
// the way web server expects it
|
||
this._error(new Error('Arrays are not supported.'));
|
||
return;
|
||
}
|
||
|
||
var header = this._multiPartHeader(field, value, options);
|
||
var footer = this._multiPartFooter();
|
||
|
||
append(header);
|
||
append(value);
|
||
append(footer);
|
||
|
||
// pass along options.knownLength
|
||
this._trackLength(header, value, options);
|
||
};
|
||
|
||
FormData.prototype._trackLength = function(header, value, options) {
|
||
var valueLength = 0;
|
||
|
||
// used w/ getLengthSync(), when length is known.
|
||
// e.g. for streaming directly from a remote server,
|
||
// w/ a known file a size, and not wanting to wait for
|
||
// incoming file to finish to get its size.
|
||
if (options.knownLength != null) {
|
||
valueLength += +options.knownLength;
|
||
} else if (Buffer.isBuffer(value)) {
|
||
valueLength = value.length;
|
||
} else if (typeof value === 'string') {
|
||
valueLength = Buffer.byteLength(value);
|
||
}
|
||
|
||
this._valueLength += valueLength;
|
||
|
||
// @check why add CRLF? does this account for custom/multiple CRLFs?
|
||
this._overheadLength +=
|
||
Buffer.byteLength(header) +
|
||
FormData.LINE_BREAK.length;
|
||
|
||
// empty or either doesn't have path or not an http response
|
||
if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) {
|
||
return;
|
||
}
|
||
|
||
// no need to bother with the length
|
||
if (!options.knownLength) {
|
||
this._valuesToMeasure.push(value);
|
||
}
|
||
};
|
||
|
||
FormData.prototype._lengthRetriever = function(value, callback) {
|
||
|
||
if (value.hasOwnProperty('fd')) {
|
||
|
||
// take read range into a account
|
||
// `end` = Infinity –> read file till the end
|
||
//
|
||
// TODO: Looks like there is bug in Node fs.createReadStream
|
||
// it doesn't respect `end` options without `start` options
|
||
// Fix it when node fixes it.
|
||
// https://github.com/joyent/node/issues/7819
|
||
if (value.end != undefined && value.end != Infinity && value.start != undefined) {
|
||
|
||
// when end specified
|
||
// no need to calculate range
|
||
// inclusive, starts with 0
|
||
callback(null, value.end + 1 - (value.start ? value.start : 0));
|
||
|
||
// not that fast snoopy
|
||
} else {
|
||
// still need to fetch file size from fs
|
||
fs.stat(value.path, function(err, stat) {
|
||
|
||
var fileSize;
|
||
|
||
if (err) {
|
||
callback(err);
|
||
return;
|
||
}
|
||
|
||
// update final size based on the range options
|
||
fileSize = stat.size - (value.start ? value.start : 0);
|
||
callback(null, fileSize);
|
||
});
|
||
}
|
||
|
||
// or http response
|
||
} else if (value.hasOwnProperty('httpVersion')) {
|
||
callback(null, +value.headers['content-length']);
|
||
|
||
// or request stream http://github.com/mikeal/request
|
||
} else if (value.hasOwnProperty('httpModule')) {
|
||
// wait till response come back
|
||
value.on('response', function(response) {
|
||
value.pause();
|
||
callback(null, +response.headers['content-length']);
|
||
});
|
||
value.resume();
|
||
|
||
// something else
|
||
} else {
|
||
callback('Unknown stream');
|
||
}
|
||
};
|
||
|
||
FormData.prototype._multiPartHeader = function(field, value, options) {
|
||
// custom header specified (as string)?
|
||
// it becomes responsible for boundary
|
||
// (e.g. to handle extra CRLFs on .NET servers)
|
||
if (typeof options.header == 'string') {
|
||
return options.header;
|
||
}
|
||
|
||
var contentDisposition = this._getContentDisposition(value, options);
|
||
var contentType = this._getContentType(value, options);
|
||
|
||
var contents = '';
|
||
var headers = {
|
||
// add custom disposition as third element or keep it two elements if not
|
||
'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []),
|
||
// if no content type. allow it to be empty array
|
||
'Content-Type': [].concat(contentType || [])
|
||
};
|
||
|
||
// allow custom headers.
|
||
if (typeof options.header == 'object') {
|
||
populate(headers, options.header);
|
||
}
|
||
|
||
var header;
|
||
for (var prop in headers) {
|
||
if (!headers.hasOwnProperty(prop)) continue;
|
||
header = headers[prop];
|
||
|
||
// skip nullish headers.
|
||
if (header == null) {
|
||
continue;
|
||
}
|
||
|
||
// convert all headers to arrays.
|
||
if (!Array.isArray(header)) {
|
||
header = [header];
|
||
}
|
||
|
||
// add non-empty headers.
|
||
if (header.length) {
|
||
contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;
|
||
}
|
||
}
|
||
|
||
return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;
|
||
};
|
||
|
||
FormData.prototype._getContentDisposition = function(value, options) {
|
||
|
||
var filename
|
||
, contentDisposition
|
||
;
|
||
|
||
if (typeof options.filepath === 'string') {
|
||
// custom filepath for relative paths
|
||
filename = path.normalize(options.filepath).replace(/\\/g, '/');
|
||
} else if (options.filename || value.name || value.path) {
|
||
// custom filename take precedence
|
||
// formidable and the browser add a name property
|
||
// fs- and request- streams have path property
|
||
filename = path.basename(options.filename || value.name || value.path);
|
||
} else if (value.readable && value.hasOwnProperty('httpVersion')) {
|
||
// or try http response
|
||
filename = path.basename(value.client._httpMessage.path || '');
|
||
}
|
||
|
||
if (filename) {
|
||
contentDisposition = 'filename="' + filename + '"';
|
||
}
|
||
|
||
return contentDisposition;
|
||
};
|
||
|
||
FormData.prototype._getContentType = function(value, options) {
|
||
|
||
// use custom content-type above all
|
||
var contentType = options.contentType;
|
||
|
||
// or try `name` from formidable, browser
|
||
if (!contentType && value.name) {
|
||
contentType = mime.lookup(value.name);
|
||
}
|
||
|
||
// or try `path` from fs-, request- streams
|
||
if (!contentType && value.path) {
|
||
contentType = mime.lookup(value.path);
|
||
}
|
||
|
||
// or if it's http-reponse
|
||
if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {
|
||
contentType = value.headers['content-type'];
|
||
}
|
||
|
||
// or guess it from the filepath or filename
|
||
if (!contentType && (options.filepath || options.filename)) {
|
||
contentType = mime.lookup(options.filepath || options.filename);
|
||
}
|
||
|
||
// fallback to the default content type if `value` is not simple value
|
||
if (!contentType && typeof value == 'object') {
|
||
contentType = FormData.DEFAULT_CONTENT_TYPE;
|
||
}
|
||
|
||
return contentType;
|
||
};
|
||
|
||
FormData.prototype._multiPartFooter = function() {
|
||
return function(next) {
|
||
var footer = FormData.LINE_BREAK;
|
||
|
||
var lastPart = (this._streams.length === 0);
|
||
if (lastPart) {
|
||
footer += this._lastBoundary();
|
||
}
|
||
|
||
next(footer);
|
||
}.bind(this);
|
||
};
|
||
|
||
FormData.prototype._lastBoundary = function() {
|
||
return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;
|
||
};
|
||
|
||
FormData.prototype.getHeaders = function(userHeaders) {
|
||
var header;
|
||
var formHeaders = {
|
||
'content-type': 'multipart/form-data; boundary=' + this.getBoundary()
|
||
};
|
||
|
||
for (header in userHeaders) {
|
||
if (userHeaders.hasOwnProperty(header)) {
|
||
formHeaders[header.toLowerCase()] = userHeaders[header];
|
||
}
|
||
}
|
||
|
||
return formHeaders;
|
||
};
|
||
|
||
FormData.prototype.setBoundary = function(boundary) {
|
||
this._boundary = boundary;
|
||
};
|
||
|
||
FormData.prototype.getBoundary = function() {
|
||
if (!this._boundary) {
|
||
this._generateBoundary();
|
||
}
|
||
|
||
return this._boundary;
|
||
};
|
||
|
||
FormData.prototype.getBuffer = function() {
|
||
var dataBuffer = new Buffer.alloc( 0 );
|
||
var boundary = this.getBoundary();
|
||
|
||
// Create the form content. Add Line breaks to the end of data.
|
||
for (var i = 0, len = this._streams.length; i < len; i++) {
|
||
if (typeof this._streams[i] !== 'function') {
|
||
|
||
// Add content to the buffer.
|
||
if(Buffer.isBuffer(this._streams[i])) {
|
||
dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]);
|
||
}else {
|
||
dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]);
|
||
}
|
||
|
||
// Add break after content.
|
||
if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) {
|
||
dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] );
|
||
}
|
||
}
|
||
}
|
||
|
||
// Add the footer and return the Buffer object.
|
||
return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] );
|
||
};
|
||
|
||
FormData.prototype._generateBoundary = function() {
|
||
// This generates a 50 character boundary similar to those used by Firefox.
|
||
// They are optimized for boyer-moore parsing.
|
||
var boundary = '--------------------------';
|
||
for (var i = 0; i < 24; i++) {
|
||
boundary += Math.floor(Math.random() * 10).toString(16);
|
||
}
|
||
|
||
this._boundary = boundary;
|
||
};
|
||
|
||
// Note: getLengthSync DOESN'T calculate streams length
|
||
// As workaround one can calculate file size manually
|
||
// and add it as knownLength option
|
||
FormData.prototype.getLengthSync = function() {
|
||
var knownLength = this._overheadLength + this._valueLength;
|
||
|
||
// Don't get confused, there are 3 "internal" streams for each keyval pair
|
||
// so it basically checks if there is any value added to the form
|
||
if (this._streams.length) {
|
||
knownLength += this._lastBoundary().length;
|
||
}
|
||
|
||
// https://github.com/form-data/form-data/issues/40
|
||
if (!this.hasKnownLength()) {
|
||
// Some async length retrievers are present
|
||
// therefore synchronous length calculation is false.
|
||
// Please use getLength(callback) to get proper length
|
||
this._error(new Error('Cannot calculate proper length in synchronous way.'));
|
||
}
|
||
|
||
return knownLength;
|
||
};
|
||
|
||
// Public API to check if length of added values is known
|
||
// https://github.com/form-data/form-data/issues/196
|
||
// https://github.com/form-data/form-data/issues/262
|
||
FormData.prototype.hasKnownLength = function() {
|
||
var hasKnownLength = true;
|
||
|
||
if (this._valuesToMeasure.length) {
|
||
hasKnownLength = false;
|
||
}
|
||
|
||
return hasKnownLength;
|
||
};
|
||
|
||
FormData.prototype.getLength = function(cb) {
|
||
var knownLength = this._overheadLength + this._valueLength;
|
||
|
||
if (this._streams.length) {
|
||
knownLength += this._lastBoundary().length;
|
||
}
|
||
|
||
if (!this._valuesToMeasure.length) {
|
||
process.nextTick(cb.bind(this, null, knownLength));
|
||
return;
|
||
}
|
||
|
||
asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {
|
||
if (err) {
|
||
cb(err);
|
||
return;
|
||
}
|
||
|
||
values.forEach(function(length) {
|
||
knownLength += length;
|
||
});
|
||
|
||
cb(null, knownLength);
|
||
});
|
||
};
|
||
|
||
FormData.prototype.submit = function(params, cb) {
|
||
var request
|
||
, options
|
||
, defaults = {method: 'post'}
|
||
;
|
||
|
||
// parse provided url if it's string
|
||
// or treat it as options object
|
||
if (typeof params == 'string') {
|
||
|
||
params = parseUrl(params);
|
||
options = populate({
|
||
port: params.port,
|
||
path: params.pathname,
|
||
host: params.hostname,
|
||
protocol: params.protocol
|
||
}, defaults);
|
||
|
||
// use custom params
|
||
} else {
|
||
|
||
options = populate(params, defaults);
|
||
// if no port provided use default one
|
||
if (!options.port) {
|
||
options.port = options.protocol == 'https:' ? 443 : 80;
|
||
}
|
||
}
|
||
|
||
// put that good code in getHeaders to some use
|
||
options.headers = this.getHeaders(params.headers);
|
||
|
||
// https if specified, fallback to http in any other case
|
||
if (options.protocol == 'https:') {
|
||
request = https.request(options);
|
||
} else {
|
||
request = http.request(options);
|
||
}
|
||
|
||
// get content length and fire away
|
||
this.getLength(function(err, length) {
|
||
if (err) {
|
||
this._error(err);
|
||
return;
|
||
}
|
||
|
||
// add content length
|
||
request.setHeader('Content-Length', length);
|
||
|
||
this.pipe(request);
|
||
if (cb) {
|
||
var onResponse;
|
||
|
||
var callback = function (error, responce) {
|
||
request.removeListener('error', callback);
|
||
request.removeListener('response', onResponse);
|
||
|
||
return cb.call(this, error, responce);
|
||
};
|
||
|
||
onResponse = callback.bind(this, null);
|
||
|
||
request.on('error', callback);
|
||
request.on('response', onResponse);
|
||
}
|
||
}.bind(this));
|
||
|
||
return request;
|
||
};
|
||
|
||
FormData.prototype._error = function(err) {
|
||
if (!this.error) {
|
||
this.error = err;
|
||
this.pause();
|
||
this.emit('error', err);
|
||
}
|
||
};
|
||
|
||
FormData.prototype.toString = function () {
|
||
return '[object FormData]';
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 791 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
exports.defaults = {
|
||
"0.1": {
|
||
explicitCharkey: false,
|
||
trim: true,
|
||
normalize: true,
|
||
normalizeTags: false,
|
||
attrkey: "@",
|
||
charkey: "#",
|
||
explicitArray: false,
|
||
ignoreAttrs: false,
|
||
mergeAttrs: false,
|
||
explicitRoot: false,
|
||
validator: null,
|
||
xmlns: false,
|
||
explicitChildren: false,
|
||
childkey: '@@',
|
||
charsAsChildren: false,
|
||
includeWhiteChars: false,
|
||
async: false,
|
||
strict: true,
|
||
attrNameProcessors: null,
|
||
attrValueProcessors: null,
|
||
tagNameProcessors: null,
|
||
valueProcessors: null,
|
||
emptyTag: ''
|
||
},
|
||
"0.2": {
|
||
explicitCharkey: false,
|
||
trim: false,
|
||
normalize: false,
|
||
normalizeTags: false,
|
||
attrkey: "$",
|
||
charkey: "_",
|
||
explicitArray: true,
|
||
ignoreAttrs: false,
|
||
mergeAttrs: false,
|
||
explicitRoot: true,
|
||
validator: null,
|
||
xmlns: false,
|
||
explicitChildren: false,
|
||
preserveChildrenOrder: false,
|
||
childkey: '$$',
|
||
charsAsChildren: false,
|
||
includeWhiteChars: false,
|
||
async: false,
|
||
strict: true,
|
||
attrNameProcessors: null,
|
||
attrValueProcessors: null,
|
||
tagNameProcessors: null,
|
||
valueProcessors: null,
|
||
rootName: 'root',
|
||
xmldec: {
|
||
'version': '1.0',
|
||
'encoding': 'UTF-8',
|
||
'standalone': true
|
||
},
|
||
doctype: null,
|
||
renderOpts: {
|
||
'pretty': true,
|
||
'indent': ' ',
|
||
'newline': '\n'
|
||
},
|
||
headless: false,
|
||
chunkSize: 10000,
|
||
emptyTag: '',
|
||
cdata: false
|
||
}
|
||
};
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 792 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.baggageEntryMetadataFromString = exports.createBaggage = void 0;
|
||
var baggage_1 = __webpack_require__(599);
|
||
var symbol_1 = __webpack_require__(561);
|
||
__exportStar(__webpack_require__(938), exports);
|
||
__exportStar(__webpack_require__(646), exports);
|
||
/**
|
||
* Create a new Baggage with optional entries
|
||
*
|
||
* @param entries An array of baggage entries the new baggage should contain
|
||
*/
|
||
function createBaggage(entries) {
|
||
if (entries === void 0) { entries = {}; }
|
||
return new baggage_1.BaggageImpl(new Map(Object.entries(entries)));
|
||
}
|
||
exports.createBaggage = createBaggage;
|
||
/**
|
||
* Create a serializable BaggageEntryMetadata object from a string.
|
||
*
|
||
* @param str string metadata. Format is currently not defined by the spec and has no special meaning.
|
||
*
|
||
*/
|
||
function baggageEntryMetadataFromString(str) {
|
||
if (typeof str !== 'string') {
|
||
// @TODO log diagnostic
|
||
str = '';
|
||
}
|
||
return {
|
||
__TYPE__: symbol_1.baggageEntryMetadataSymbol,
|
||
toString: function () {
|
||
return str;
|
||
},
|
||
};
|
||
}
|
||
exports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
/***/ }),
|
||
/* 793 */,
|
||
/* 794 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("stream");
|
||
|
||
/***/ }),
|
||
/* 795 */,
|
||
/* 796 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLAttribute, XMLElement, XMLNamedNodeMap, XMLNode, getValue, isFunction, isObject, ref,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
ref = __webpack_require__(582), isObject = ref.isObject, isFunction = ref.isFunction, getValue = ref.getValue;
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLAttribute = __webpack_require__(884);
|
||
|
||
XMLNamedNodeMap = __webpack_require__(451);
|
||
|
||
module.exports = XMLElement = (function(superClass) {
|
||
extend(XMLElement, superClass);
|
||
|
||
function XMLElement(parent, name, attributes) {
|
||
var child, j, len, ref1;
|
||
XMLElement.__super__.constructor.call(this, parent);
|
||
if (name == null) {
|
||
throw new Error("Missing element name. " + this.debugInfo());
|
||
}
|
||
this.name = this.stringify.name(name);
|
||
this.type = NodeType.Element;
|
||
this.attribs = {};
|
||
this.schemaTypeInfo = null;
|
||
if (attributes != null) {
|
||
this.attribute(attributes);
|
||
}
|
||
if (parent.type === NodeType.Document) {
|
||
this.isRoot = true;
|
||
this.documentObject = parent;
|
||
parent.rootObject = this;
|
||
if (parent.children) {
|
||
ref1 = parent.children;
|
||
for (j = 0, len = ref1.length; j < len; j++) {
|
||
child = ref1[j];
|
||
if (child.type === NodeType.DocType) {
|
||
child.name = this.name;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
Object.defineProperty(XMLElement.prototype, 'tagName', {
|
||
get: function() {
|
||
return this.name;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLElement.prototype, 'namespaceURI', {
|
||
get: function() {
|
||
return '';
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLElement.prototype, 'prefix', {
|
||
get: function() {
|
||
return '';
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLElement.prototype, 'localName', {
|
||
get: function() {
|
||
return this.name;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLElement.prototype, 'id', {
|
||
get: function() {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLElement.prototype, 'className', {
|
||
get: function() {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLElement.prototype, 'classList', {
|
||
get: function() {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLElement.prototype, 'attributes', {
|
||
get: function() {
|
||
if (!this.attributeMap || !this.attributeMap.nodes) {
|
||
this.attributeMap = new XMLNamedNodeMap(this.attribs);
|
||
}
|
||
return this.attributeMap;
|
||
}
|
||
});
|
||
|
||
XMLElement.prototype.clone = function() {
|
||
var att, attName, clonedSelf, ref1;
|
||
clonedSelf = Object.create(this);
|
||
if (clonedSelf.isRoot) {
|
||
clonedSelf.documentObject = null;
|
||
}
|
||
clonedSelf.attribs = {};
|
||
ref1 = this.attribs;
|
||
for (attName in ref1) {
|
||
if (!hasProp.call(ref1, attName)) continue;
|
||
att = ref1[attName];
|
||
clonedSelf.attribs[attName] = att.clone();
|
||
}
|
||
clonedSelf.children = [];
|
||
this.children.forEach(function(child) {
|
||
var clonedChild;
|
||
clonedChild = child.clone();
|
||
clonedChild.parent = clonedSelf;
|
||
return clonedSelf.children.push(clonedChild);
|
||
});
|
||
return clonedSelf;
|
||
};
|
||
|
||
XMLElement.prototype.attribute = function(name, value) {
|
||
var attName, attValue;
|
||
if (name != null) {
|
||
name = getValue(name);
|
||
}
|
||
if (isObject(name)) {
|
||
for (attName in name) {
|
||
if (!hasProp.call(name, attName)) continue;
|
||
attValue = name[attName];
|
||
this.attribute(attName, attValue);
|
||
}
|
||
} else {
|
||
if (isFunction(value)) {
|
||
value = value.apply();
|
||
}
|
||
if (this.options.keepNullAttributes && (value == null)) {
|
||
this.attribs[name] = new XMLAttribute(this, name, "");
|
||
} else if (value != null) {
|
||
this.attribs[name] = new XMLAttribute(this, name, value);
|
||
}
|
||
}
|
||
return this;
|
||
};
|
||
|
||
XMLElement.prototype.removeAttribute = function(name) {
|
||
var attName, j, len;
|
||
if (name == null) {
|
||
throw new Error("Missing attribute name. " + this.debugInfo());
|
||
}
|
||
name = getValue(name);
|
||
if (Array.isArray(name)) {
|
||
for (j = 0, len = name.length; j < len; j++) {
|
||
attName = name[j];
|
||
delete this.attribs[attName];
|
||
}
|
||
} else {
|
||
delete this.attribs[name];
|
||
}
|
||
return this;
|
||
};
|
||
|
||
XMLElement.prototype.toString = function(options) {
|
||
return this.options.writer.element(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
XMLElement.prototype.att = function(name, value) {
|
||
return this.attribute(name, value);
|
||
};
|
||
|
||
XMLElement.prototype.a = function(name, value) {
|
||
return this.attribute(name, value);
|
||
};
|
||
|
||
XMLElement.prototype.getAttribute = function(name) {
|
||
if (this.attribs.hasOwnProperty(name)) {
|
||
return this.attribs[name].value;
|
||
} else {
|
||
return null;
|
||
}
|
||
};
|
||
|
||
XMLElement.prototype.setAttribute = function(name, value) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.getAttributeNode = function(name) {
|
||
if (this.attribs.hasOwnProperty(name)) {
|
||
return this.attribs[name];
|
||
} else {
|
||
return null;
|
||
}
|
||
};
|
||
|
||
XMLElement.prototype.setAttributeNode = function(newAttr) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.removeAttributeNode = function(oldAttr) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.getElementsByTagName = function(name) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.getAttributeNS = function(namespaceURI, localName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.setAttributeNS = function(namespaceURI, qualifiedName, value) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.removeAttributeNS = function(namespaceURI, localName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.getAttributeNodeNS = function(namespaceURI, localName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.setAttributeNodeNS = function(newAttr) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.hasAttribute = function(name) {
|
||
return this.attribs.hasOwnProperty(name);
|
||
};
|
||
|
||
XMLElement.prototype.hasAttributeNS = function(namespaceURI, localName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.setIdAttribute = function(name, isId) {
|
||
if (this.attribs.hasOwnProperty(name)) {
|
||
return this.attribs[name].isId;
|
||
} else {
|
||
return isId;
|
||
}
|
||
};
|
||
|
||
XMLElement.prototype.setIdAttributeNS = function(namespaceURI, localName, isId) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.setIdAttributeNode = function(idAttr, isId) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.getElementsByTagName = function(tagname) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.getElementsByClassName = function(classNames) {
|
||
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||
};
|
||
|
||
XMLElement.prototype.isEqualNode = function(node) {
|
||
var i, j, ref1;
|
||
if (!XMLElement.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {
|
||
return false;
|
||
}
|
||
if (node.namespaceURI !== this.namespaceURI) {
|
||
return false;
|
||
}
|
||
if (node.prefix !== this.prefix) {
|
||
return false;
|
||
}
|
||
if (node.localName !== this.localName) {
|
||
return false;
|
||
}
|
||
if (node.attribs.length !== this.attribs.length) {
|
||
return false;
|
||
}
|
||
for (i = j = 0, ref1 = this.attribs.length - 1; 0 <= ref1 ? j <= ref1 : j >= ref1; i = 0 <= ref1 ? ++j : --j) {
|
||
if (!this.attribs[i].isEqualNode(node.attribs[i])) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
};
|
||
|
||
return XMLElement;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 797 */,
|
||
/* 798 */,
|
||
/* 799 */,
|
||
/* 800 */,
|
||
/* 801 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLDTDAttList, XMLNode,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
module.exports = XMLDTDAttList = (function(superClass) {
|
||
extend(XMLDTDAttList, superClass);
|
||
|
||
function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {
|
||
XMLDTDAttList.__super__.constructor.call(this, parent);
|
||
if (elementName == null) {
|
||
throw new Error("Missing DTD element name. " + this.debugInfo());
|
||
}
|
||
if (attributeName == null) {
|
||
throw new Error("Missing DTD attribute name. " + this.debugInfo(elementName));
|
||
}
|
||
if (!attributeType) {
|
||
throw new Error("Missing DTD attribute type. " + this.debugInfo(elementName));
|
||
}
|
||
if (!defaultValueType) {
|
||
throw new Error("Missing DTD attribute default. " + this.debugInfo(elementName));
|
||
}
|
||
if (defaultValueType.indexOf('#') !== 0) {
|
||
defaultValueType = '#' + defaultValueType;
|
||
}
|
||
if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {
|
||
throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. " + this.debugInfo(elementName));
|
||
}
|
||
if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {
|
||
throw new Error("Default value only applies to #FIXED or #DEFAULT. " + this.debugInfo(elementName));
|
||
}
|
||
this.elementName = this.stringify.name(elementName);
|
||
this.type = NodeType.AttributeDeclaration;
|
||
this.attributeName = this.stringify.name(attributeName);
|
||
this.attributeType = this.stringify.dtdAttType(attributeType);
|
||
if (defaultValue) {
|
||
this.defaultValue = this.stringify.dtdAttDefault(defaultValue);
|
||
}
|
||
this.defaultValueType = defaultValueType;
|
||
}
|
||
|
||
XMLDTDAttList.prototype.toString = function(options) {
|
||
return this.options.writer.dtdAttList(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
return XMLDTDAttList;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 802 */,
|
||
/* 803 */,
|
||
/* 804 */,
|
||
/* 805 */,
|
||
/* 806 */,
|
||
/* 807 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = paginate;
|
||
|
||
const iterator = __webpack_require__(8);
|
||
|
||
function paginate(octokit, route, options, mapFn) {
|
||
if (typeof options === "function") {
|
||
mapFn = options;
|
||
options = undefined;
|
||
}
|
||
options = octokit.request.endpoint.merge(route, options);
|
||
return gather(
|
||
octokit,
|
||
[],
|
||
iterator(octokit, options)[Symbol.asyncIterator](),
|
||
mapFn
|
||
);
|
||
}
|
||
|
||
function gather(octokit, results, iterator, mapFn) {
|
||
return iterator.next().then(result => {
|
||
if (result.done) {
|
||
return results;
|
||
}
|
||
|
||
let earlyExit = false;
|
||
function done() {
|
||
earlyExit = true;
|
||
}
|
||
|
||
results = results.concat(
|
||
mapFn ? mapFn(result.value, done) : result.value.data
|
||
);
|
||
|
||
if (earlyExit) {
|
||
return results;
|
||
}
|
||
|
||
return gather(octokit, results, iterator, mapFn);
|
||
});
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 808 */,
|
||
/* 809 */,
|
||
/* 810 */,
|
||
/* 811 */,
|
||
/* 812 */,
|
||
/* 813 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
async function auth(token) {
|
||
const tokenType = token.split(/\./).length === 3 ? "app" : /^v\d+\./.test(token) ? "installation" : "oauth";
|
||
return {
|
||
type: "token",
|
||
token: token,
|
||
tokenType
|
||
};
|
||
}
|
||
|
||
/**
|
||
* Prefix token for usage in the Authorization header
|
||
*
|
||
* @param token OAuth token or JSON Web Token
|
||
*/
|
||
function withAuthorizationPrefix(token) {
|
||
if (token.split(/\./).length === 3) {
|
||
return `bearer ${token}`;
|
||
}
|
||
|
||
return `token ${token}`;
|
||
}
|
||
|
||
async function hook(token, request, route, parameters) {
|
||
const endpoint = request.endpoint.merge(route, parameters);
|
||
endpoint.headers.authorization = withAuthorizationPrefix(token);
|
||
return request(endpoint);
|
||
}
|
||
|
||
const createTokenAuth = function createTokenAuth(token) {
|
||
if (!token) {
|
||
throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
|
||
}
|
||
|
||
if (typeof token !== "string") {
|
||
throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");
|
||
}
|
||
|
||
token = token.replace(/^(token|bearer) +/i, "");
|
||
return Object.assign(auth.bind(null, token), {
|
||
hook: hook.bind(null, token)
|
||
});
|
||
};
|
||
|
||
exports.createTokenAuth = createTokenAuth;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 814 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = which
|
||
which.sync = whichSync
|
||
|
||
var isWindows = process.platform === 'win32' ||
|
||
process.env.OSTYPE === 'cygwin' ||
|
||
process.env.OSTYPE === 'msys'
|
||
|
||
var path = __webpack_require__(622)
|
||
var COLON = isWindows ? ';' : ':'
|
||
var isexe = __webpack_require__(742)
|
||
|
||
function getNotFoundError (cmd) {
|
||
var er = new Error('not found: ' + cmd)
|
||
er.code = 'ENOENT'
|
||
|
||
return er
|
||
}
|
||
|
||
function getPathInfo (cmd, opt) {
|
||
var colon = opt.colon || COLON
|
||
var pathEnv = opt.path || process.env.PATH || ''
|
||
var pathExt = ['']
|
||
|
||
pathEnv = pathEnv.split(colon)
|
||
|
||
var pathExtExe = ''
|
||
if (isWindows) {
|
||
pathEnv.unshift(process.cwd())
|
||
pathExtExe = (opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM')
|
||
pathExt = pathExtExe.split(colon)
|
||
|
||
|
||
// Always test the cmd itself first. isexe will check to make sure
|
||
// it's found in the pathExt set.
|
||
if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')
|
||
pathExt.unshift('')
|
||
}
|
||
|
||
// If it has a slash, then we don't bother searching the pathenv.
|
||
// just check the file itself, and that's it.
|
||
if (cmd.match(/\//) || isWindows && cmd.match(/\\/))
|
||
pathEnv = ['']
|
||
|
||
return {
|
||
env: pathEnv,
|
||
ext: pathExt,
|
||
extExe: pathExtExe
|
||
}
|
||
}
|
||
|
||
function which (cmd, opt, cb) {
|
||
if (typeof opt === 'function') {
|
||
cb = opt
|
||
opt = {}
|
||
}
|
||
|
||
var info = getPathInfo(cmd, opt)
|
||
var pathEnv = info.env
|
||
var pathExt = info.ext
|
||
var pathExtExe = info.extExe
|
||
var found = []
|
||
|
||
;(function F (i, l) {
|
||
if (i === l) {
|
||
if (opt.all && found.length)
|
||
return cb(null, found)
|
||
else
|
||
return cb(getNotFoundError(cmd))
|
||
}
|
||
|
||
var pathPart = pathEnv[i]
|
||
if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
|
||
pathPart = pathPart.slice(1, -1)
|
||
|
||
var p = path.join(pathPart, cmd)
|
||
if (!pathPart && (/^\.[\\\/]/).test(cmd)) {
|
||
p = cmd.slice(0, 2) + p
|
||
}
|
||
;(function E (ii, ll) {
|
||
if (ii === ll) return F(i + 1, l)
|
||
var ext = pathExt[ii]
|
||
isexe(p + ext, { pathExt: pathExtExe }, function (er, is) {
|
||
if (!er && is) {
|
||
if (opt.all)
|
||
found.push(p + ext)
|
||
else
|
||
return cb(null, p + ext)
|
||
}
|
||
return E(ii + 1, ll)
|
||
})
|
||
})(0, pathExt.length)
|
||
})(0, pathEnv.length)
|
||
}
|
||
|
||
function whichSync (cmd, opt) {
|
||
opt = opt || {}
|
||
|
||
var info = getPathInfo(cmd, opt)
|
||
var pathEnv = info.env
|
||
var pathExt = info.ext
|
||
var pathExtExe = info.extExe
|
||
var found = []
|
||
|
||
for (var i = 0, l = pathEnv.length; i < l; i ++) {
|
||
var pathPart = pathEnv[i]
|
||
if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
|
||
pathPart = pathPart.slice(1, -1)
|
||
|
||
var p = path.join(pathPart, cmd)
|
||
if (!pathPart && /^\.[\\\/]/.test(cmd)) {
|
||
p = cmd.slice(0, 2) + p
|
||
}
|
||
for (var j = 0, ll = pathExt.length; j < ll; j ++) {
|
||
var cur = p + pathExt[j]
|
||
var is
|
||
try {
|
||
is = isexe.sync(cur, { pathExt: pathExtExe })
|
||
if (is) {
|
||
if (opt.all)
|
||
found.push(cur)
|
||
else
|
||
return cur
|
||
}
|
||
} catch (ex) {}
|
||
}
|
||
}
|
||
|
||
if (opt.all && found.length)
|
||
return found
|
||
|
||
if (opt.nothrow)
|
||
return null
|
||
|
||
throw getNotFoundError(cmd)
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 815 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("punycode");
|
||
|
||
/***/ }),
|
||
/* 816 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
module.exports = /^#!.*/;
|
||
|
||
|
||
/***/ }),
|
||
/* 817 */,
|
||
/* 818 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = isexe
|
||
isexe.sync = sync
|
||
|
||
var fs = __webpack_require__(747)
|
||
|
||
function checkPathExt (path, options) {
|
||
var pathext = options.pathExt !== undefined ?
|
||
options.pathExt : process.env.PATHEXT
|
||
|
||
if (!pathext) {
|
||
return true
|
||
}
|
||
|
||
pathext = pathext.split(';')
|
||
if (pathext.indexOf('') !== -1) {
|
||
return true
|
||
}
|
||
for (var i = 0; i < pathext.length; i++) {
|
||
var p = pathext[i].toLowerCase()
|
||
if (p && path.substr(-p.length).toLowerCase() === p) {
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
|
||
function checkStat (stat, path, options) {
|
||
if (!stat.isSymbolicLink() && !stat.isFile()) {
|
||
return false
|
||
}
|
||
return checkPathExt(path, options)
|
||
}
|
||
|
||
function isexe (path, options, cb) {
|
||
fs.stat(path, function (er, stat) {
|
||
cb(er, er ? false : checkStat(stat, path, options))
|
||
})
|
||
}
|
||
|
||
function sync (path, options) {
|
||
return checkStat(fs.statSync(path), path, options)
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 819 */,
|
||
/* 820 */,
|
||
/* 821 */,
|
||
/* 822 */,
|
||
/* 823 */,
|
||
/* 824 */,
|
||
/* 825 */,
|
||
/* 826 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var rng = __webpack_require__(139);
|
||
var bytesToUuid = __webpack_require__(722);
|
||
|
||
function v4(options, buf, offset) {
|
||
var i = buf && offset || 0;
|
||
|
||
if (typeof(options) == 'string') {
|
||
buf = options === 'binary' ? new Array(16) : null;
|
||
options = null;
|
||
}
|
||
options = options || {};
|
||
|
||
var rnds = options.random || (options.rng || rng)();
|
||
|
||
// Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
|
||
rnds[6] = (rnds[6] & 0x0f) | 0x40;
|
||
rnds[8] = (rnds[8] & 0x3f) | 0x80;
|
||
|
||
// Copy bytes to buffer, if provided
|
||
if (buf) {
|
||
for (var ii = 0; ii < 16; ++ii) {
|
||
buf[i + ii] = rnds[ii];
|
||
}
|
||
}
|
||
|
||
return buf || bytesToUuid(rnds);
|
||
}
|
||
|
||
module.exports = v4;
|
||
|
||
|
||
/***/ }),
|
||
/* 827 */,
|
||
/* 828 */,
|
||
/* 829 */,
|
||
/* 830 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.VERSION = void 0;
|
||
// this is autogenerated file, see scripts/version-update.js
|
||
exports.VERSION = '1.0.0-rc.0';
|
||
//# sourceMappingURL=version.js.map
|
||
|
||
/***/ }),
|
||
/* 831 */,
|
||
/* 832 */,
|
||
/* 833 */,
|
||
/* 834 */,
|
||
/* 835 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = require("url");
|
||
|
||
/***/ }),
|
||
/* 836 */,
|
||
/* 837 */,
|
||
/* 838 */,
|
||
/* 839 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=TimedEvent.js.map
|
||
|
||
/***/ }),
|
||
/* 840 */,
|
||
/* 841 */,
|
||
/* 842 */,
|
||
/* 843 */,
|
||
/* 844 */,
|
||
/* 845 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=types.js.map
|
||
|
||
/***/ }),
|
||
/* 846 */,
|
||
/* 847 */,
|
||
/* 848 */,
|
||
/* 849 */,
|
||
/* 850 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = paginationMethodsPlugin
|
||
|
||
function paginationMethodsPlugin (octokit) {
|
||
octokit.getFirstPage = __webpack_require__(777).bind(null, octokit)
|
||
octokit.getLastPage = __webpack_require__(649).bind(null, octokit)
|
||
octokit.getNextPage = __webpack_require__(550).bind(null, octokit)
|
||
octokit.getPreviousPage = __webpack_require__(563).bind(null, octokit)
|
||
octokit.hasFirstPage = __webpack_require__(536)
|
||
octokit.hasLastPage = __webpack_require__(336)
|
||
octokit.hasNextPage = __webpack_require__(929)
|
||
octokit.hasPreviousPage = __webpack_require__(558)
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 851 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=link_context.js.map
|
||
|
||
/***/ }),
|
||
/* 852 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
/*!
|
||
* mime-db
|
||
* Copyright(c) 2014 Jonathan Ong
|
||
* MIT Licensed
|
||
*/
|
||
|
||
/**
|
||
* Module exports.
|
||
*/
|
||
|
||
module.exports = __webpack_require__(512)
|
||
|
||
|
||
/***/ }),
|
||
/* 853 */,
|
||
/* 854 */
|
||
/***/ (function(module) {
|
||
|
||
/**
|
||
* lodash (Custom Build) <https://lodash.com/>
|
||
* Build: `lodash modularize exports="npm" -o ./`
|
||
* Copyright jQuery Foundation and other contributors <https://jquery.org/>
|
||
* Released under MIT license <https://lodash.com/license>
|
||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||
*/
|
||
|
||
/** Used as the `TypeError` message for "Functions" methods. */
|
||
var FUNC_ERROR_TEXT = 'Expected a function';
|
||
|
||
/** Used to stand-in for `undefined` hash values. */
|
||
var HASH_UNDEFINED = '__lodash_hash_undefined__';
|
||
|
||
/** Used as references for various `Number` constants. */
|
||
var INFINITY = 1 / 0;
|
||
|
||
/** `Object#toString` result references. */
|
||
var funcTag = '[object Function]',
|
||
genTag = '[object GeneratorFunction]',
|
||
symbolTag = '[object Symbol]';
|
||
|
||
/** Used to match property names within property paths. */
|
||
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
|
||
reIsPlainProp = /^\w*$/,
|
||
reLeadingDot = /^\./,
|
||
rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
|
||
|
||
/**
|
||
* Used to match `RegExp`
|
||
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
|
||
*/
|
||
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
||
|
||
/** Used to match backslashes in property paths. */
|
||
var reEscapeChar = /\\(\\)?/g;
|
||
|
||
/** Used to detect host constructors (Safari). */
|
||
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
||
|
||
/** Detect free variable `global` from Node.js. */
|
||
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
|
||
|
||
/** Detect free variable `self`. */
|
||
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
|
||
|
||
/** Used as a reference to the global object. */
|
||
var root = freeGlobal || freeSelf || Function('return this')();
|
||
|
||
/**
|
||
* Gets the value at `key` of `object`.
|
||
*
|
||
* @private
|
||
* @param {Object} [object] The object to query.
|
||
* @param {string} key The key of the property to get.
|
||
* @returns {*} Returns the property value.
|
||
*/
|
||
function getValue(object, key) {
|
||
return object == null ? undefined : object[key];
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is a host object in IE < 9.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a host object, else `false`.
|
||
*/
|
||
function isHostObject(value) {
|
||
// Many host objects are `Object` objects that can coerce to strings
|
||
// despite having improperly defined `toString` methods.
|
||
var result = false;
|
||
if (value != null && typeof value.toString != 'function') {
|
||
try {
|
||
result = !!(value + '');
|
||
} catch (e) {}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
/** Used for built-in method references. */
|
||
var arrayProto = Array.prototype,
|
||
funcProto = Function.prototype,
|
||
objectProto = Object.prototype;
|
||
|
||
/** Used to detect overreaching core-js shims. */
|
||
var coreJsData = root['__core-js_shared__'];
|
||
|
||
/** Used to detect methods masquerading as native. */
|
||
var maskSrcKey = (function() {
|
||
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
|
||
return uid ? ('Symbol(src)_1.' + uid) : '';
|
||
}());
|
||
|
||
/** Used to resolve the decompiled source of functions. */
|
||
var funcToString = funcProto.toString;
|
||
|
||
/** Used to check objects for own properties. */
|
||
var hasOwnProperty = objectProto.hasOwnProperty;
|
||
|
||
/**
|
||
* Used to resolve the
|
||
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
||
* of values.
|
||
*/
|
||
var objectToString = objectProto.toString;
|
||
|
||
/** Used to detect if a method is native. */
|
||
var reIsNative = RegExp('^' +
|
||
funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
|
||
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
|
||
);
|
||
|
||
/** Built-in value references. */
|
||
var Symbol = root.Symbol,
|
||
splice = arrayProto.splice;
|
||
|
||
/* Built-in method references that are verified to be native. */
|
||
var Map = getNative(root, 'Map'),
|
||
nativeCreate = getNative(Object, 'create');
|
||
|
||
/** Used to convert symbols to primitives and strings. */
|
||
var symbolProto = Symbol ? Symbol.prototype : undefined,
|
||
symbolToString = symbolProto ? symbolProto.toString : undefined;
|
||
|
||
/**
|
||
* Creates a hash object.
|
||
*
|
||
* @private
|
||
* @constructor
|
||
* @param {Array} [entries] The key-value pairs to cache.
|
||
*/
|
||
function Hash(entries) {
|
||
var index = -1,
|
||
length = entries ? entries.length : 0;
|
||
|
||
this.clear();
|
||
while (++index < length) {
|
||
var entry = entries[index];
|
||
this.set(entry[0], entry[1]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Removes all key-value entries from the hash.
|
||
*
|
||
* @private
|
||
* @name clear
|
||
* @memberOf Hash
|
||
*/
|
||
function hashClear() {
|
||
this.__data__ = nativeCreate ? nativeCreate(null) : {};
|
||
}
|
||
|
||
/**
|
||
* Removes `key` and its value from the hash.
|
||
*
|
||
* @private
|
||
* @name delete
|
||
* @memberOf Hash
|
||
* @param {Object} hash The hash to modify.
|
||
* @param {string} key The key of the value to remove.
|
||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||
*/
|
||
function hashDelete(key) {
|
||
return this.has(key) && delete this.__data__[key];
|
||
}
|
||
|
||
/**
|
||
* Gets the hash value for `key`.
|
||
*
|
||
* @private
|
||
* @name get
|
||
* @memberOf Hash
|
||
* @param {string} key The key of the value to get.
|
||
* @returns {*} Returns the entry value.
|
||
*/
|
||
function hashGet(key) {
|
||
var data = this.__data__;
|
||
if (nativeCreate) {
|
||
var result = data[key];
|
||
return result === HASH_UNDEFINED ? undefined : result;
|
||
}
|
||
return hasOwnProperty.call(data, key) ? data[key] : undefined;
|
||
}
|
||
|
||
/**
|
||
* Checks if a hash value for `key` exists.
|
||
*
|
||
* @private
|
||
* @name has
|
||
* @memberOf Hash
|
||
* @param {string} key The key of the entry to check.
|
||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||
*/
|
||
function hashHas(key) {
|
||
var data = this.__data__;
|
||
return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
|
||
}
|
||
|
||
/**
|
||
* Sets the hash `key` to `value`.
|
||
*
|
||
* @private
|
||
* @name set
|
||
* @memberOf Hash
|
||
* @param {string} key The key of the value to set.
|
||
* @param {*} value The value to set.
|
||
* @returns {Object} Returns the hash instance.
|
||
*/
|
||
function hashSet(key, value) {
|
||
var data = this.__data__;
|
||
data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
|
||
return this;
|
||
}
|
||
|
||
// Add methods to `Hash`.
|
||
Hash.prototype.clear = hashClear;
|
||
Hash.prototype['delete'] = hashDelete;
|
||
Hash.prototype.get = hashGet;
|
||
Hash.prototype.has = hashHas;
|
||
Hash.prototype.set = hashSet;
|
||
|
||
/**
|
||
* Creates an list cache object.
|
||
*
|
||
* @private
|
||
* @constructor
|
||
* @param {Array} [entries] The key-value pairs to cache.
|
||
*/
|
||
function ListCache(entries) {
|
||
var index = -1,
|
||
length = entries ? entries.length : 0;
|
||
|
||
this.clear();
|
||
while (++index < length) {
|
||
var entry = entries[index];
|
||
this.set(entry[0], entry[1]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Removes all key-value entries from the list cache.
|
||
*
|
||
* @private
|
||
* @name clear
|
||
* @memberOf ListCache
|
||
*/
|
||
function listCacheClear() {
|
||
this.__data__ = [];
|
||
}
|
||
|
||
/**
|
||
* Removes `key` and its value from the list cache.
|
||
*
|
||
* @private
|
||
* @name delete
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the value to remove.
|
||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||
*/
|
||
function listCacheDelete(key) {
|
||
var data = this.__data__,
|
||
index = assocIndexOf(data, key);
|
||
|
||
if (index < 0) {
|
||
return false;
|
||
}
|
||
var lastIndex = data.length - 1;
|
||
if (index == lastIndex) {
|
||
data.pop();
|
||
} else {
|
||
splice.call(data, index, 1);
|
||
}
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* Gets the list cache value for `key`.
|
||
*
|
||
* @private
|
||
* @name get
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the value to get.
|
||
* @returns {*} Returns the entry value.
|
||
*/
|
||
function listCacheGet(key) {
|
||
var data = this.__data__,
|
||
index = assocIndexOf(data, key);
|
||
|
||
return index < 0 ? undefined : data[index][1];
|
||
}
|
||
|
||
/**
|
||
* Checks if a list cache value for `key` exists.
|
||
*
|
||
* @private
|
||
* @name has
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the entry to check.
|
||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||
*/
|
||
function listCacheHas(key) {
|
||
return assocIndexOf(this.__data__, key) > -1;
|
||
}
|
||
|
||
/**
|
||
* Sets the list cache `key` to `value`.
|
||
*
|
||
* @private
|
||
* @name set
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the value to set.
|
||
* @param {*} value The value to set.
|
||
* @returns {Object} Returns the list cache instance.
|
||
*/
|
||
function listCacheSet(key, value) {
|
||
var data = this.__data__,
|
||
index = assocIndexOf(data, key);
|
||
|
||
if (index < 0) {
|
||
data.push([key, value]);
|
||
} else {
|
||
data[index][1] = value;
|
||
}
|
||
return this;
|
||
}
|
||
|
||
// Add methods to `ListCache`.
|
||
ListCache.prototype.clear = listCacheClear;
|
||
ListCache.prototype['delete'] = listCacheDelete;
|
||
ListCache.prototype.get = listCacheGet;
|
||
ListCache.prototype.has = listCacheHas;
|
||
ListCache.prototype.set = listCacheSet;
|
||
|
||
/**
|
||
* Creates a map cache object to store key-value pairs.
|
||
*
|
||
* @private
|
||
* @constructor
|
||
* @param {Array} [entries] The key-value pairs to cache.
|
||
*/
|
||
function MapCache(entries) {
|
||
var index = -1,
|
||
length = entries ? entries.length : 0;
|
||
|
||
this.clear();
|
||
while (++index < length) {
|
||
var entry = entries[index];
|
||
this.set(entry[0], entry[1]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Removes all key-value entries from the map.
|
||
*
|
||
* @private
|
||
* @name clear
|
||
* @memberOf MapCache
|
||
*/
|
||
function mapCacheClear() {
|
||
this.__data__ = {
|
||
'hash': new Hash,
|
||
'map': new (Map || ListCache),
|
||
'string': new Hash
|
||
};
|
||
}
|
||
|
||
/**
|
||
* Removes `key` and its value from the map.
|
||
*
|
||
* @private
|
||
* @name delete
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the value to remove.
|
||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||
*/
|
||
function mapCacheDelete(key) {
|
||
return getMapData(this, key)['delete'](key);
|
||
}
|
||
|
||
/**
|
||
* Gets the map value for `key`.
|
||
*
|
||
* @private
|
||
* @name get
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the value to get.
|
||
* @returns {*} Returns the entry value.
|
||
*/
|
||
function mapCacheGet(key) {
|
||
return getMapData(this, key).get(key);
|
||
}
|
||
|
||
/**
|
||
* Checks if a map value for `key` exists.
|
||
*
|
||
* @private
|
||
* @name has
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the entry to check.
|
||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||
*/
|
||
function mapCacheHas(key) {
|
||
return getMapData(this, key).has(key);
|
||
}
|
||
|
||
/**
|
||
* Sets the map `key` to `value`.
|
||
*
|
||
* @private
|
||
* @name set
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the value to set.
|
||
* @param {*} value The value to set.
|
||
* @returns {Object} Returns the map cache instance.
|
||
*/
|
||
function mapCacheSet(key, value) {
|
||
getMapData(this, key).set(key, value);
|
||
return this;
|
||
}
|
||
|
||
// Add methods to `MapCache`.
|
||
MapCache.prototype.clear = mapCacheClear;
|
||
MapCache.prototype['delete'] = mapCacheDelete;
|
||
MapCache.prototype.get = mapCacheGet;
|
||
MapCache.prototype.has = mapCacheHas;
|
||
MapCache.prototype.set = mapCacheSet;
|
||
|
||
/**
|
||
* Gets the index at which the `key` is found in `array` of key-value pairs.
|
||
*
|
||
* @private
|
||
* @param {Array} array The array to inspect.
|
||
* @param {*} key The key to search for.
|
||
* @returns {number} Returns the index of the matched value, else `-1`.
|
||
*/
|
||
function assocIndexOf(array, key) {
|
||
var length = array.length;
|
||
while (length--) {
|
||
if (eq(array[length][0], key)) {
|
||
return length;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.get` without support for default values.
|
||
*
|
||
* @private
|
||
* @param {Object} object The object to query.
|
||
* @param {Array|string} path The path of the property to get.
|
||
* @returns {*} Returns the resolved value.
|
||
*/
|
||
function baseGet(object, path) {
|
||
path = isKey(path, object) ? [path] : castPath(path);
|
||
|
||
var index = 0,
|
||
length = path.length;
|
||
|
||
while (object != null && index < length) {
|
||
object = object[toKey(path[index++])];
|
||
}
|
||
return (index && index == length) ? object : undefined;
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.isNative` without bad shim checks.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a native function,
|
||
* else `false`.
|
||
*/
|
||
function baseIsNative(value) {
|
||
if (!isObject(value) || isMasked(value)) {
|
||
return false;
|
||
}
|
||
var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
|
||
return pattern.test(toSource(value));
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.toString` which doesn't convert nullish
|
||
* values to empty strings.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to process.
|
||
* @returns {string} Returns the string.
|
||
*/
|
||
function baseToString(value) {
|
||
// Exit early for strings to avoid a performance hit in some environments.
|
||
if (typeof value == 'string') {
|
||
return value;
|
||
}
|
||
if (isSymbol(value)) {
|
||
return symbolToString ? symbolToString.call(value) : '';
|
||
}
|
||
var result = (value + '');
|
||
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
|
||
}
|
||
|
||
/**
|
||
* Casts `value` to a path array if it's not one.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to inspect.
|
||
* @returns {Array} Returns the cast property path array.
|
||
*/
|
||
function castPath(value) {
|
||
return isArray(value) ? value : stringToPath(value);
|
||
}
|
||
|
||
/**
|
||
* Gets the data for `map`.
|
||
*
|
||
* @private
|
||
* @param {Object} map The map to query.
|
||
* @param {string} key The reference key.
|
||
* @returns {*} Returns the map data.
|
||
*/
|
||
function getMapData(map, key) {
|
||
var data = map.__data__;
|
||
return isKeyable(key)
|
||
? data[typeof key == 'string' ? 'string' : 'hash']
|
||
: data.map;
|
||
}
|
||
|
||
/**
|
||
* Gets the native function at `key` of `object`.
|
||
*
|
||
* @private
|
||
* @param {Object} object The object to query.
|
||
* @param {string} key The key of the method to get.
|
||
* @returns {*} Returns the function if it's native, else `undefined`.
|
||
*/
|
||
function getNative(object, key) {
|
||
var value = getValue(object, key);
|
||
return baseIsNative(value) ? value : undefined;
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is a property name and not a property path.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @param {Object} [object] The object to query keys on.
|
||
* @returns {boolean} Returns `true` if `value` is a property name, else `false`.
|
||
*/
|
||
function isKey(value, object) {
|
||
if (isArray(value)) {
|
||
return false;
|
||
}
|
||
var type = typeof value;
|
||
if (type == 'number' || type == 'symbol' || type == 'boolean' ||
|
||
value == null || isSymbol(value)) {
|
||
return true;
|
||
}
|
||
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
|
||
(object != null && value in Object(object));
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is suitable for use as unique object key.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is suitable, else `false`.
|
||
*/
|
||
function isKeyable(value) {
|
||
var type = typeof value;
|
||
return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
|
||
? (value !== '__proto__')
|
||
: (value === null);
|
||
}
|
||
|
||
/**
|
||
* Checks if `func` has its source masked.
|
||
*
|
||
* @private
|
||
* @param {Function} func The function to check.
|
||
* @returns {boolean} Returns `true` if `func` is masked, else `false`.
|
||
*/
|
||
function isMasked(func) {
|
||
return !!maskSrcKey && (maskSrcKey in func);
|
||
}
|
||
|
||
/**
|
||
* Converts `string` to a property path array.
|
||
*
|
||
* @private
|
||
* @param {string} string The string to convert.
|
||
* @returns {Array} Returns the property path array.
|
||
*/
|
||
var stringToPath = memoize(function(string) {
|
||
string = toString(string);
|
||
|
||
var result = [];
|
||
if (reLeadingDot.test(string)) {
|
||
result.push('');
|
||
}
|
||
string.replace(rePropName, function(match, number, quote, string) {
|
||
result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
|
||
});
|
||
return result;
|
||
});
|
||
|
||
/**
|
||
* Converts `value` to a string key if it's not a string or symbol.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to inspect.
|
||
* @returns {string|symbol} Returns the key.
|
||
*/
|
||
function toKey(value) {
|
||
if (typeof value == 'string' || isSymbol(value)) {
|
||
return value;
|
||
}
|
||
var result = (value + '');
|
||
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
|
||
}
|
||
|
||
/**
|
||
* Converts `func` to its source code.
|
||
*
|
||
* @private
|
||
* @param {Function} func The function to process.
|
||
* @returns {string} Returns the source code.
|
||
*/
|
||
function toSource(func) {
|
||
if (func != null) {
|
||
try {
|
||
return funcToString.call(func);
|
||
} catch (e) {}
|
||
try {
|
||
return (func + '');
|
||
} catch (e) {}
|
||
}
|
||
return '';
|
||
}
|
||
|
||
/**
|
||
* Creates a function that memoizes the result of `func`. If `resolver` is
|
||
* provided, it determines the cache key for storing the result based on the
|
||
* arguments provided to the memoized function. By default, the first argument
|
||
* provided to the memoized function is used as the map cache key. The `func`
|
||
* is invoked with the `this` binding of the memoized function.
|
||
*
|
||
* **Note:** The cache is exposed as the `cache` property on the memoized
|
||
* function. Its creation may be customized by replacing the `_.memoize.Cache`
|
||
* constructor with one whose instances implement the
|
||
* [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
|
||
* method interface of `delete`, `get`, `has`, and `set`.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Function
|
||
* @param {Function} func The function to have its output memoized.
|
||
* @param {Function} [resolver] The function to resolve the cache key.
|
||
* @returns {Function} Returns the new memoized function.
|
||
* @example
|
||
*
|
||
* var object = { 'a': 1, 'b': 2 };
|
||
* var other = { 'c': 3, 'd': 4 };
|
||
*
|
||
* var values = _.memoize(_.values);
|
||
* values(object);
|
||
* // => [1, 2]
|
||
*
|
||
* values(other);
|
||
* // => [3, 4]
|
||
*
|
||
* object.a = 2;
|
||
* values(object);
|
||
* // => [1, 2]
|
||
*
|
||
* // Modify the result cache.
|
||
* values.cache.set(object, ['a', 'b']);
|
||
* values(object);
|
||
* // => ['a', 'b']
|
||
*
|
||
* // Replace `_.memoize.Cache`.
|
||
* _.memoize.Cache = WeakMap;
|
||
*/
|
||
function memoize(func, resolver) {
|
||
if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
|
||
throw new TypeError(FUNC_ERROR_TEXT);
|
||
}
|
||
var memoized = function() {
|
||
var args = arguments,
|
||
key = resolver ? resolver.apply(this, args) : args[0],
|
||
cache = memoized.cache;
|
||
|
||
if (cache.has(key)) {
|
||
return cache.get(key);
|
||
}
|
||
var result = func.apply(this, args);
|
||
memoized.cache = cache.set(key, result);
|
||
return result;
|
||
};
|
||
memoized.cache = new (memoize.Cache || MapCache);
|
||
return memoized;
|
||
}
|
||
|
||
// Assign cache to `_.memoize`.
|
||
memoize.Cache = MapCache;
|
||
|
||
/**
|
||
* Performs a
|
||
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
|
||
* comparison between two values to determine if they are equivalent.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to compare.
|
||
* @param {*} other The other value to compare.
|
||
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
||
* @example
|
||
*
|
||
* var object = { 'a': 1 };
|
||
* var other = { 'a': 1 };
|
||
*
|
||
* _.eq(object, object);
|
||
* // => true
|
||
*
|
||
* _.eq(object, other);
|
||
* // => false
|
||
*
|
||
* _.eq('a', 'a');
|
||
* // => true
|
||
*
|
||
* _.eq('a', Object('a'));
|
||
* // => false
|
||
*
|
||
* _.eq(NaN, NaN);
|
||
* // => true
|
||
*/
|
||
function eq(value, other) {
|
||
return value === other || (value !== value && other !== other);
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is classified as an `Array` object.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
|
||
* @example
|
||
*
|
||
* _.isArray([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isArray(document.body.children);
|
||
* // => false
|
||
*
|
||
* _.isArray('abc');
|
||
* // => false
|
||
*
|
||
* _.isArray(_.noop);
|
||
* // => false
|
||
*/
|
||
var isArray = Array.isArray;
|
||
|
||
/**
|
||
* Checks if `value` is classified as a `Function` object.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
|
||
* @example
|
||
*
|
||
* _.isFunction(_);
|
||
* // => true
|
||
*
|
||
* _.isFunction(/abc/);
|
||
* // => false
|
||
*/
|
||
function isFunction(value) {
|
||
// The use of `Object#toString` avoids issues with the `typeof` operator
|
||
// in Safari 8-9 which returns 'object' for typed array and other constructors.
|
||
var tag = isObject(value) ? objectToString.call(value) : '';
|
||
return tag == funcTag || tag == genTag;
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is the
|
||
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
|
||
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
|
||
* @example
|
||
*
|
||
* _.isObject({});
|
||
* // => true
|
||
*
|
||
* _.isObject([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isObject(_.noop);
|
||
* // => true
|
||
*
|
||
* _.isObject(null);
|
||
* // => false
|
||
*/
|
||
function isObject(value) {
|
||
var type = typeof value;
|
||
return !!value && (type == 'object' || type == 'function');
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is object-like. A value is object-like if it's not `null`
|
||
* and has a `typeof` result of "object".
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
|
||
* @example
|
||
*
|
||
* _.isObjectLike({});
|
||
* // => true
|
||
*
|
||
* _.isObjectLike([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isObjectLike(_.noop);
|
||
* // => false
|
||
*
|
||
* _.isObjectLike(null);
|
||
* // => false
|
||
*/
|
||
function isObjectLike(value) {
|
||
return !!value && typeof value == 'object';
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is classified as a `Symbol` primitive or object.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
|
||
* @example
|
||
*
|
||
* _.isSymbol(Symbol.iterator);
|
||
* // => true
|
||
*
|
||
* _.isSymbol('abc');
|
||
* // => false
|
||
*/
|
||
function isSymbol(value) {
|
||
return typeof value == 'symbol' ||
|
||
(isObjectLike(value) && objectToString.call(value) == symbolTag);
|
||
}
|
||
|
||
/**
|
||
* Converts `value` to a string. An empty string is returned for `null`
|
||
* and `undefined` values. The sign of `-0` is preserved.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to process.
|
||
* @returns {string} Returns the string.
|
||
* @example
|
||
*
|
||
* _.toString(null);
|
||
* // => ''
|
||
*
|
||
* _.toString(-0);
|
||
* // => '-0'
|
||
*
|
||
* _.toString([1, 2, 3]);
|
||
* // => '1,2,3'
|
||
*/
|
||
function toString(value) {
|
||
return value == null ? '' : baseToString(value);
|
||
}
|
||
|
||
/**
|
||
* Gets the value at `path` of `object`. If the resolved value is
|
||
* `undefined`, the `defaultValue` is returned in its place.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 3.7.0
|
||
* @category Object
|
||
* @param {Object} object The object to query.
|
||
* @param {Array|string} path The path of the property to get.
|
||
* @param {*} [defaultValue] The value returned for `undefined` resolved values.
|
||
* @returns {*} Returns the resolved value.
|
||
* @example
|
||
*
|
||
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
|
||
*
|
||
* _.get(object, 'a[0].b.c');
|
||
* // => 3
|
||
*
|
||
* _.get(object, ['a', '0', 'b', 'c']);
|
||
* // => 3
|
||
*
|
||
* _.get(object, 'a.b.c', 'default');
|
||
* // => 'default'
|
||
*/
|
||
function get(object, path, defaultValue) {
|
||
var result = object == null ? undefined : baseGet(object, path);
|
||
return result === undefined ? defaultValue : result;
|
||
}
|
||
|
||
module.exports = get;
|
||
|
||
|
||
/***/ }),
|
||
/* 855 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = registerPlugin;
|
||
|
||
const factory = __webpack_require__(47);
|
||
|
||
function registerPlugin(plugins, pluginFunction) {
|
||
return factory(
|
||
plugins.includes(pluginFunction) ? plugins : plugins.concat(pluginFunction)
|
||
);
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 856 */,
|
||
/* 857 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
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 __asyncValues = (this && this.__asyncValues) || function (o) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||
};
|
||
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
||
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
||
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
||
function fulfill(value) { resume("next", value); }
|
||
function reject(value) { resume("throw", value); }
|
||
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.DefaultGlobber = void 0;
|
||
const core = __importStar(__webpack_require__(470));
|
||
const fs = __importStar(__webpack_require__(747));
|
||
const globOptionsHelper = __importStar(__webpack_require__(287));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const patternHelper = __importStar(__webpack_require__(98));
|
||
const internal_match_kind_1 = __webpack_require__(957);
|
||
const internal_pattern_1 = __webpack_require__(982);
|
||
const internal_search_state_1 = __webpack_require__(384);
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
class DefaultGlobber {
|
||
constructor(options) {
|
||
this.patterns = [];
|
||
this.searchPaths = [];
|
||
this.options = globOptionsHelper.getOptions(options);
|
||
}
|
||
getSearchPaths() {
|
||
// Return a copy
|
||
return this.searchPaths.slice();
|
||
}
|
||
glob() {
|
||
var e_1, _a;
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const result = [];
|
||
try {
|
||
for (var _b = __asyncValues(this.globGenerator()), _c; _c = yield _b.next(), !_c.done;) {
|
||
const itemPath = _c.value;
|
||
result.push(itemPath);
|
||
}
|
||
}
|
||
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
||
finally {
|
||
try {
|
||
if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);
|
||
}
|
||
finally { if (e_1) throw e_1.error; }
|
||
}
|
||
return result;
|
||
});
|
||
}
|
||
globGenerator() {
|
||
return __asyncGenerator(this, arguments, function* globGenerator_1() {
|
||
// Fill in defaults options
|
||
const options = globOptionsHelper.getOptions(this.options);
|
||
// Implicit descendants?
|
||
const patterns = [];
|
||
for (const pattern of this.patterns) {
|
||
patterns.push(pattern);
|
||
if (options.implicitDescendants &&
|
||
(pattern.trailingSeparator ||
|
||
pattern.segments[pattern.segments.length - 1] !== '**')) {
|
||
patterns.push(new internal_pattern_1.Pattern(pattern.negate, true, pattern.segments.concat('**')));
|
||
}
|
||
}
|
||
// Push the search paths
|
||
const stack = [];
|
||
for (const searchPath of patternHelper.getSearchPaths(patterns)) {
|
||
core.debug(`Search path '${searchPath}'`);
|
||
// Exists?
|
||
try {
|
||
// Intentionally using lstat. Detection for broken symlink
|
||
// will be performed later (if following symlinks).
|
||
yield __await(fs.promises.lstat(searchPath));
|
||
}
|
||
catch (err) {
|
||
if (err.code === 'ENOENT') {
|
||
continue;
|
||
}
|
||
throw err;
|
||
}
|
||
stack.unshift(new internal_search_state_1.SearchState(searchPath, 1));
|
||
}
|
||
// Search
|
||
const traversalChain = []; // used to detect cycles
|
||
while (stack.length) {
|
||
// Pop
|
||
const item = stack.pop();
|
||
// Match?
|
||
const match = patternHelper.match(patterns, item.path);
|
||
const partialMatch = !!match || patternHelper.partialMatch(patterns, item.path);
|
||
if (!match && !partialMatch) {
|
||
continue;
|
||
}
|
||
// Stat
|
||
const stats = yield __await(DefaultGlobber.stat(item, options, traversalChain)
|
||
// Broken symlink, or symlink cycle detected, or no longer exists
|
||
);
|
||
// Broken symlink, or symlink cycle detected, or no longer exists
|
||
if (!stats) {
|
||
continue;
|
||
}
|
||
// Directory
|
||
if (stats.isDirectory()) {
|
||
// Matched
|
||
if (match & internal_match_kind_1.MatchKind.Directory) {
|
||
yield yield __await(item.path);
|
||
}
|
||
// Descend?
|
||
else if (!partialMatch) {
|
||
continue;
|
||
}
|
||
// Push the child items in reverse
|
||
const childLevel = item.level + 1;
|
||
const childItems = (yield __await(fs.promises.readdir(item.path))).map(x => new internal_search_state_1.SearchState(path.join(item.path, x), childLevel));
|
||
stack.push(...childItems.reverse());
|
||
}
|
||
// File
|
||
else if (match & internal_match_kind_1.MatchKind.File) {
|
||
yield yield __await(item.path);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
/**
|
||
* Constructs a DefaultGlobber
|
||
*/
|
||
static create(patterns, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const result = new DefaultGlobber(options);
|
||
if (IS_WINDOWS) {
|
||
patterns = patterns.replace(/\r\n/g, '\n');
|
||
patterns = patterns.replace(/\r/g, '\n');
|
||
}
|
||
const lines = patterns.split('\n').map(x => x.trim());
|
||
for (const line of lines) {
|
||
// Empty or comment
|
||
if (!line || line.startsWith('#')) {
|
||
continue;
|
||
}
|
||
// Pattern
|
||
else {
|
||
result.patterns.push(new internal_pattern_1.Pattern(line));
|
||
}
|
||
}
|
||
result.searchPaths.push(...patternHelper.getSearchPaths(result.patterns));
|
||
return result;
|
||
});
|
||
}
|
||
static stat(item, options, traversalChain) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// Note:
|
||
// `stat` returns info about the target of a symlink (or symlink chain)
|
||
// `lstat` returns info about a symlink itself
|
||
let stats;
|
||
if (options.followSymbolicLinks) {
|
||
try {
|
||
// Use `stat` (following symlinks)
|
||
stats = yield fs.promises.stat(item.path);
|
||
}
|
||
catch (err) {
|
||
if (err.code === 'ENOENT') {
|
||
if (options.omitBrokenSymbolicLinks) {
|
||
core.debug(`Broken symlink '${item.path}'`);
|
||
return undefined;
|
||
}
|
||
throw new Error(`No information found for the path '${item.path}'. This may indicate a broken symbolic link.`);
|
||
}
|
||
throw err;
|
||
}
|
||
}
|
||
else {
|
||
// Use `lstat` (not following symlinks)
|
||
stats = yield fs.promises.lstat(item.path);
|
||
}
|
||
// Note, isDirectory() returns false for the lstat of a symlink
|
||
if (stats.isDirectory() && options.followSymbolicLinks) {
|
||
// Get the realpath
|
||
const realPath = yield fs.promises.realpath(item.path);
|
||
// Fixup the traversal chain to match the item level
|
||
while (traversalChain.length >= item.level) {
|
||
traversalChain.pop();
|
||
}
|
||
// Test for a cycle
|
||
if (traversalChain.some((x) => x === realPath)) {
|
||
core.debug(`Symlink cycle detected for path '${item.path}' and realpath '${realPath}'`);
|
||
return undefined;
|
||
}
|
||
// Update the traversal chain
|
||
traversalChain.push(realPath);
|
||
}
|
||
return stats;
|
||
});
|
||
}
|
||
}
|
||
exports.DefaultGlobber = DefaultGlobber;
|
||
//# sourceMappingURL=internal-globber.js.map
|
||
|
||
/***/ }),
|
||
/* 858 */,
|
||
/* 859 */,
|
||
/* 860 */,
|
||
/* 861 */,
|
||
/* 862 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = class GraphqlError extends Error {
|
||
constructor (request, response) {
|
||
const message = response.data.errors[0].message
|
||
super(message)
|
||
|
||
Object.assign(this, response.data)
|
||
this.name = 'GraphqlError'
|
||
this.request = request
|
||
|
||
// Maintains proper stack trace (only available on V8)
|
||
/* istanbul ignore next */
|
||
if (Error.captureStackTrace) {
|
||
Error.captureStackTrace(this, this.constructor)
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 863 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = authenticationBeforeRequest;
|
||
|
||
const btoa = __webpack_require__(675);
|
||
|
||
const withAuthorizationPrefix = __webpack_require__(143);
|
||
|
||
function authenticationBeforeRequest(state, options) {
|
||
if (typeof state.auth === "string") {
|
||
options.headers.authorization = withAuthorizationPrefix(state.auth);
|
||
return;
|
||
}
|
||
|
||
if (state.auth.username) {
|
||
const hash = btoa(`${state.auth.username}:${state.auth.password}`);
|
||
options.headers.authorization = `Basic ${hash}`;
|
||
if (state.otp) {
|
||
options.headers["x-github-otp"] = state.otp;
|
||
}
|
||
return;
|
||
}
|
||
|
||
if (state.auth.clientId) {
|
||
// There is a special case for OAuth applications, when `clientId` and `clientSecret` is passed as
|
||
// Basic Authorization instead of query parameters. The only routes where that applies share the same
|
||
// URL though: `/applications/:client_id/tokens/:access_token`.
|
||
//
|
||
// 1. [Check an authorization](https://developer.github.com/v3/oauth_authorizations/#check-an-authorization)
|
||
// 2. [Reset an authorization](https://developer.github.com/v3/oauth_authorizations/#reset-an-authorization)
|
||
// 3. [Revoke an authorization for an application](https://developer.github.com/v3/oauth_authorizations/#revoke-an-authorization-for-an-application)
|
||
//
|
||
// We identify by checking the URL. It must merge both "/applications/:client_id/tokens/:access_token"
|
||
// as well as "/applications/123/tokens/token456"
|
||
if (/\/applications\/:?[\w_]+\/tokens\/:?[\w_]+($|\?)/.test(options.url)) {
|
||
const hash = btoa(`${state.auth.clientId}:${state.auth.clientSecret}`);
|
||
options.headers.authorization = `Basic ${hash}`;
|
||
return;
|
||
}
|
||
|
||
options.url += options.url.indexOf("?") === -1 ? "?" : "&";
|
||
options.url += `client_id=${state.auth.clientId}&client_secret=${state.auth.clientSecret}`;
|
||
return;
|
||
}
|
||
|
||
return Promise.resolve()
|
||
|
||
.then(() => {
|
||
return state.auth();
|
||
})
|
||
|
||
.then(authorization => {
|
||
options.headers.authorization = withAuthorizationPrefix(authorization);
|
||
});
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 864 */,
|
||
/* 865 */
|
||
/***/ (function(module) {
|
||
|
||
/*! *****************************************************************************
|
||
Copyright (c) Microsoft Corporation.
|
||
|
||
Permission to use, copy, modify, and/or distribute this software for any
|
||
purpose with or without fee is hereby granted.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||
PERFORMANCE OF THIS SOFTWARE.
|
||
***************************************************************************** */
|
||
/* global global, define, System, Reflect, Promise */
|
||
var __extends;
|
||
var __assign;
|
||
var __rest;
|
||
var __decorate;
|
||
var __param;
|
||
var __metadata;
|
||
var __awaiter;
|
||
var __generator;
|
||
var __exportStar;
|
||
var __values;
|
||
var __read;
|
||
var __spread;
|
||
var __spreadArrays;
|
||
var __spreadArray;
|
||
var __await;
|
||
var __asyncGenerator;
|
||
var __asyncDelegator;
|
||
var __asyncValues;
|
||
var __makeTemplateObject;
|
||
var __importStar;
|
||
var __importDefault;
|
||
var __classPrivateFieldGet;
|
||
var __classPrivateFieldSet;
|
||
var __createBinding;
|
||
(function (factory) {
|
||
var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
|
||
if (typeof define === "function" && define.amd) {
|
||
define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
|
||
}
|
||
else if ( true && typeof module.exports === "object") {
|
||
factory(createExporter(root, createExporter(module.exports)));
|
||
}
|
||
else {
|
||
factory(createExporter(root));
|
||
}
|
||
function createExporter(exports, previous) {
|
||
if (exports !== root) {
|
||
if (typeof Object.create === "function") {
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
}
|
||
else {
|
||
exports.__esModule = true;
|
||
}
|
||
}
|
||
return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
|
||
}
|
||
})
|
||
(function (exporter) {
|
||
var extendStatics = Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
|
||
__extends = function (d, b) {
|
||
if (typeof b !== "function" && b !== null)
|
||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||
extendStatics(d, b);
|
||
function __() { this.constructor = d; }
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
|
||
__assign = Object.assign || function (t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__rest = function (s, e) {
|
||
var t = {};
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||
t[p] = s[p];
|
||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||
t[p[i]] = s[p[i]];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
__decorate = function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
|
||
__param = function (paramIndex, decorator) {
|
||
return function (target, key) { decorator(target, key, paramIndex); }
|
||
};
|
||
|
||
__metadata = function (metadataKey, metadataValue) {
|
||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
|
||
};
|
||
|
||
__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());
|
||
});
|
||
};
|
||
|
||
__generator = function (thisArg, body) {
|
||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||
function step(op) {
|
||
if (f) throw new TypeError("Generator is already executing.");
|
||
while (_) try {
|
||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||
switch (op[0]) {
|
||
case 0: case 1: t = op; break;
|
||
case 4: _.label++; return { value: op[1], done: false };
|
||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||
default:
|
||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||
if (t[2]) _.ops.pop();
|
||
_.trys.pop(); continue;
|
||
}
|
||
op = body.call(thisArg, _);
|
||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||
}
|
||
};
|
||
|
||
__exportStar = function(m, o) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
|
||
};
|
||
|
||
__createBinding = Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
|
||
__values = function (o) {
|
||
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
||
if (m) return m.call(o);
|
||
if (o && typeof o.length === "number") return {
|
||
next: function () {
|
||
if (o && i >= o.length) o = void 0;
|
||
return { value: o && o[i++], done: !o };
|
||
}
|
||
};
|
||
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
||
};
|
||
|
||
__read = function (o, n) {
|
||
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
||
if (!m) return o;
|
||
var i = m.call(o), r, ar = [], e;
|
||
try {
|
||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
||
}
|
||
catch (error) { e = { error: error }; }
|
||
finally {
|
||
try {
|
||
if (r && !r.done && (m = i["return"])) m.call(i);
|
||
}
|
||
finally { if (e) throw e.error; }
|
||
}
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spread = function () {
|
||
for (var ar = [], i = 0; i < arguments.length; i++)
|
||
ar = ar.concat(__read(arguments[i]));
|
||
return ar;
|
||
};
|
||
|
||
/** @deprecated */
|
||
__spreadArrays = function () {
|
||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||
r[k] = a[j];
|
||
return r;
|
||
};
|
||
|
||
__spreadArray = function (to, from, pack) {
|
||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||
if (ar || !(i in from)) {
|
||
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||
ar[i] = from[i];
|
||
}
|
||
}
|
||
return to.concat(ar || from);
|
||
};
|
||
|
||
__await = function (v) {
|
||
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
||
};
|
||
|
||
__asyncGenerator = function (thisArg, _arguments, generator) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
||
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
||
function fulfill(value) { resume("next", value); }
|
||
function reject(value) { resume("throw", value); }
|
||
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
||
};
|
||
|
||
__asyncDelegator = function (o) {
|
||
var i, p;
|
||
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
||
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
||
};
|
||
|
||
__asyncValues = function (o) {
|
||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||
};
|
||
|
||
__makeTemplateObject = function (cooked, raw) {
|
||
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
||
return cooked;
|
||
};
|
||
|
||
var __setModuleDefault = Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
};
|
||
|
||
__importStar = function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
|
||
__importDefault = function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
|
||
__classPrivateFieldGet = function (receiver, state, kind, f) {
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
||
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
||
};
|
||
|
||
__classPrivateFieldSet = function (receiver, state, value, kind, f) {
|
||
if (kind === "m") throw new TypeError("Private method is not writable");
|
||
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
||
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
||
};
|
||
|
||
exporter("__extends", __extends);
|
||
exporter("__assign", __assign);
|
||
exporter("__rest", __rest);
|
||
exporter("__decorate", __decorate);
|
||
exporter("__param", __param);
|
||
exporter("__metadata", __metadata);
|
||
exporter("__awaiter", __awaiter);
|
||
exporter("__generator", __generator);
|
||
exporter("__exportStar", __exportStar);
|
||
exporter("__createBinding", __createBinding);
|
||
exporter("__values", __values);
|
||
exporter("__read", __read);
|
||
exporter("__spread", __spread);
|
||
exporter("__spreadArrays", __spreadArrays);
|
||
exporter("__spreadArray", __spreadArray);
|
||
exporter("__await", __await);
|
||
exporter("__asyncGenerator", __asyncGenerator);
|
||
exporter("__asyncDelegator", __asyncDelegator);
|
||
exporter("__asyncValues", __asyncValues);
|
||
exporter("__makeTemplateObject", __makeTemplateObject);
|
||
exporter("__importStar", __importStar);
|
||
exporter("__importDefault", __importDefault);
|
||
exporter("__classPrivateFieldGet", __classPrivateFieldGet);
|
||
exporter("__classPrivateFieldSet", __classPrivateFieldSet);
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
/* 866 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var shebangRegex = __webpack_require__(816);
|
||
|
||
module.exports = function (str) {
|
||
var match = str.match(shebangRegex);
|
||
|
||
if (!match) {
|
||
return null;
|
||
}
|
||
|
||
var arr = match[0].replace(/#! ?/, '').split(' ');
|
||
var bin = arr[0].split('/').pop();
|
||
var arg = arr[1];
|
||
|
||
return (bin === 'env' ?
|
||
arg :
|
||
bin + (arg ? ' ' + arg : '')
|
||
);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 867 */,
|
||
/* 868 */,
|
||
/* 869 */,
|
||
/* 870 */,
|
||
/* 871 */,
|
||
/* 872 */,
|
||
/* 873 */,
|
||
/* 874 */,
|
||
/* 875 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.defaultTextMapSetter = exports.defaultTextMapGetter = void 0;
|
||
exports.defaultTextMapGetter = {
|
||
get: function (carrier, key) {
|
||
if (carrier == null) {
|
||
return undefined;
|
||
}
|
||
return carrier[key];
|
||
},
|
||
keys: function (carrier) {
|
||
if (carrier == null) {
|
||
return [];
|
||
}
|
||
return Object.keys(carrier);
|
||
},
|
||
};
|
||
exports.defaultTextMapSetter = {
|
||
set: function (carrier, key, value) {
|
||
if (carrier == null) {
|
||
return;
|
||
}
|
||
carrier[key] = value;
|
||
},
|
||
};
|
||
//# sourceMappingURL=TextMapPropagator.js.map
|
||
|
||
/***/ }),
|
||
/* 876 */,
|
||
/* 877 */,
|
||
/* 878 */,
|
||
/* 879 */,
|
||
/* 880 */,
|
||
/* 881 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
|
||
const isWin = process.platform === 'win32';
|
||
|
||
function notFoundError(original, syscall) {
|
||
return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {
|
||
code: 'ENOENT',
|
||
errno: 'ENOENT',
|
||
syscall: `${syscall} ${original.command}`,
|
||
path: original.command,
|
||
spawnargs: original.args,
|
||
});
|
||
}
|
||
|
||
function hookChildProcess(cp, parsed) {
|
||
if (!isWin) {
|
||
return;
|
||
}
|
||
|
||
const originalEmit = cp.emit;
|
||
|
||
cp.emit = function (name, arg1) {
|
||
// If emitting "exit" event and exit code is 1, we need to check if
|
||
// the command exists and emit an "error" instead
|
||
// See https://github.com/IndigoUnited/node-cross-spawn/issues/16
|
||
if (name === 'exit') {
|
||
const err = verifyENOENT(arg1, parsed, 'spawn');
|
||
|
||
if (err) {
|
||
return originalEmit.call(cp, 'error', err);
|
||
}
|
||
}
|
||
|
||
return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params
|
||
};
|
||
}
|
||
|
||
function verifyENOENT(status, parsed) {
|
||
if (isWin && status === 1 && !parsed.file) {
|
||
return notFoundError(parsed.original, 'spawn');
|
||
}
|
||
|
||
return null;
|
||
}
|
||
|
||
function verifyENOENTSync(status, parsed) {
|
||
if (isWin && status === 1 && !parsed.file) {
|
||
return notFoundError(parsed.original, 'spawnSync');
|
||
}
|
||
|
||
return null;
|
||
}
|
||
|
||
module.exports = {
|
||
hookChildProcess,
|
||
verifyENOENT,
|
||
verifyENOENTSync,
|
||
notFoundError,
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 882 */,
|
||
/* 883 */
|
||
/***/ (function(module) {
|
||
|
||
/**
|
||
* lodash (Custom Build) <https://lodash.com/>
|
||
* Build: `lodash modularize exports="npm" -o ./`
|
||
* Copyright jQuery Foundation and other contributors <https://jquery.org/>
|
||
* Released under MIT license <https://lodash.com/license>
|
||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||
*/
|
||
|
||
/** Used as the `TypeError` message for "Functions" methods. */
|
||
var FUNC_ERROR_TEXT = 'Expected a function';
|
||
|
||
/** Used to stand-in for `undefined` hash values. */
|
||
var HASH_UNDEFINED = '__lodash_hash_undefined__';
|
||
|
||
/** Used as references for various `Number` constants. */
|
||
var INFINITY = 1 / 0,
|
||
MAX_SAFE_INTEGER = 9007199254740991;
|
||
|
||
/** `Object#toString` result references. */
|
||
var funcTag = '[object Function]',
|
||
genTag = '[object GeneratorFunction]',
|
||
symbolTag = '[object Symbol]';
|
||
|
||
/** Used to match property names within property paths. */
|
||
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
|
||
reIsPlainProp = /^\w*$/,
|
||
reLeadingDot = /^\./,
|
||
rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
|
||
|
||
/**
|
||
* Used to match `RegExp`
|
||
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
|
||
*/
|
||
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
||
|
||
/** Used to match backslashes in property paths. */
|
||
var reEscapeChar = /\\(\\)?/g;
|
||
|
||
/** Used to detect host constructors (Safari). */
|
||
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
||
|
||
/** Used to detect unsigned integer values. */
|
||
var reIsUint = /^(?:0|[1-9]\d*)$/;
|
||
|
||
/** Detect free variable `global` from Node.js. */
|
||
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
|
||
|
||
/** Detect free variable `self`. */
|
||
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
|
||
|
||
/** Used as a reference to the global object. */
|
||
var root = freeGlobal || freeSelf || Function('return this')();
|
||
|
||
/**
|
||
* Gets the value at `key` of `object`.
|
||
*
|
||
* @private
|
||
* @param {Object} [object] The object to query.
|
||
* @param {string} key The key of the property to get.
|
||
* @returns {*} Returns the property value.
|
||
*/
|
||
function getValue(object, key) {
|
||
return object == null ? undefined : object[key];
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is a host object in IE < 9.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a host object, else `false`.
|
||
*/
|
||
function isHostObject(value) {
|
||
// Many host objects are `Object` objects that can coerce to strings
|
||
// despite having improperly defined `toString` methods.
|
||
var result = false;
|
||
if (value != null && typeof value.toString != 'function') {
|
||
try {
|
||
result = !!(value + '');
|
||
} catch (e) {}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
/** Used for built-in method references. */
|
||
var arrayProto = Array.prototype,
|
||
funcProto = Function.prototype,
|
||
objectProto = Object.prototype;
|
||
|
||
/** Used to detect overreaching core-js shims. */
|
||
var coreJsData = root['__core-js_shared__'];
|
||
|
||
/** Used to detect methods masquerading as native. */
|
||
var maskSrcKey = (function() {
|
||
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
|
||
return uid ? ('Symbol(src)_1.' + uid) : '';
|
||
}());
|
||
|
||
/** Used to resolve the decompiled source of functions. */
|
||
var funcToString = funcProto.toString;
|
||
|
||
/** Used to check objects for own properties. */
|
||
var hasOwnProperty = objectProto.hasOwnProperty;
|
||
|
||
/**
|
||
* Used to resolve the
|
||
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
||
* of values.
|
||
*/
|
||
var objectToString = objectProto.toString;
|
||
|
||
/** Used to detect if a method is native. */
|
||
var reIsNative = RegExp('^' +
|
||
funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
|
||
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
|
||
);
|
||
|
||
/** Built-in value references. */
|
||
var Symbol = root.Symbol,
|
||
splice = arrayProto.splice;
|
||
|
||
/* Built-in method references that are verified to be native. */
|
||
var Map = getNative(root, 'Map'),
|
||
nativeCreate = getNative(Object, 'create');
|
||
|
||
/** Used to convert symbols to primitives and strings. */
|
||
var symbolProto = Symbol ? Symbol.prototype : undefined,
|
||
symbolToString = symbolProto ? symbolProto.toString : undefined;
|
||
|
||
/**
|
||
* Creates a hash object.
|
||
*
|
||
* @private
|
||
* @constructor
|
||
* @param {Array} [entries] The key-value pairs to cache.
|
||
*/
|
||
function Hash(entries) {
|
||
var index = -1,
|
||
length = entries ? entries.length : 0;
|
||
|
||
this.clear();
|
||
while (++index < length) {
|
||
var entry = entries[index];
|
||
this.set(entry[0], entry[1]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Removes all key-value entries from the hash.
|
||
*
|
||
* @private
|
||
* @name clear
|
||
* @memberOf Hash
|
||
*/
|
||
function hashClear() {
|
||
this.__data__ = nativeCreate ? nativeCreate(null) : {};
|
||
}
|
||
|
||
/**
|
||
* Removes `key` and its value from the hash.
|
||
*
|
||
* @private
|
||
* @name delete
|
||
* @memberOf Hash
|
||
* @param {Object} hash The hash to modify.
|
||
* @param {string} key The key of the value to remove.
|
||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||
*/
|
||
function hashDelete(key) {
|
||
return this.has(key) && delete this.__data__[key];
|
||
}
|
||
|
||
/**
|
||
* Gets the hash value for `key`.
|
||
*
|
||
* @private
|
||
* @name get
|
||
* @memberOf Hash
|
||
* @param {string} key The key of the value to get.
|
||
* @returns {*} Returns the entry value.
|
||
*/
|
||
function hashGet(key) {
|
||
var data = this.__data__;
|
||
if (nativeCreate) {
|
||
var result = data[key];
|
||
return result === HASH_UNDEFINED ? undefined : result;
|
||
}
|
||
return hasOwnProperty.call(data, key) ? data[key] : undefined;
|
||
}
|
||
|
||
/**
|
||
* Checks if a hash value for `key` exists.
|
||
*
|
||
* @private
|
||
* @name has
|
||
* @memberOf Hash
|
||
* @param {string} key The key of the entry to check.
|
||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||
*/
|
||
function hashHas(key) {
|
||
var data = this.__data__;
|
||
return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
|
||
}
|
||
|
||
/**
|
||
* Sets the hash `key` to `value`.
|
||
*
|
||
* @private
|
||
* @name set
|
||
* @memberOf Hash
|
||
* @param {string} key The key of the value to set.
|
||
* @param {*} value The value to set.
|
||
* @returns {Object} Returns the hash instance.
|
||
*/
|
||
function hashSet(key, value) {
|
||
var data = this.__data__;
|
||
data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
|
||
return this;
|
||
}
|
||
|
||
// Add methods to `Hash`.
|
||
Hash.prototype.clear = hashClear;
|
||
Hash.prototype['delete'] = hashDelete;
|
||
Hash.prototype.get = hashGet;
|
||
Hash.prototype.has = hashHas;
|
||
Hash.prototype.set = hashSet;
|
||
|
||
/**
|
||
* Creates an list cache object.
|
||
*
|
||
* @private
|
||
* @constructor
|
||
* @param {Array} [entries] The key-value pairs to cache.
|
||
*/
|
||
function ListCache(entries) {
|
||
var index = -1,
|
||
length = entries ? entries.length : 0;
|
||
|
||
this.clear();
|
||
while (++index < length) {
|
||
var entry = entries[index];
|
||
this.set(entry[0], entry[1]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Removes all key-value entries from the list cache.
|
||
*
|
||
* @private
|
||
* @name clear
|
||
* @memberOf ListCache
|
||
*/
|
||
function listCacheClear() {
|
||
this.__data__ = [];
|
||
}
|
||
|
||
/**
|
||
* Removes `key` and its value from the list cache.
|
||
*
|
||
* @private
|
||
* @name delete
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the value to remove.
|
||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||
*/
|
||
function listCacheDelete(key) {
|
||
var data = this.__data__,
|
||
index = assocIndexOf(data, key);
|
||
|
||
if (index < 0) {
|
||
return false;
|
||
}
|
||
var lastIndex = data.length - 1;
|
||
if (index == lastIndex) {
|
||
data.pop();
|
||
} else {
|
||
splice.call(data, index, 1);
|
||
}
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* Gets the list cache value for `key`.
|
||
*
|
||
* @private
|
||
* @name get
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the value to get.
|
||
* @returns {*} Returns the entry value.
|
||
*/
|
||
function listCacheGet(key) {
|
||
var data = this.__data__,
|
||
index = assocIndexOf(data, key);
|
||
|
||
return index < 0 ? undefined : data[index][1];
|
||
}
|
||
|
||
/**
|
||
* Checks if a list cache value for `key` exists.
|
||
*
|
||
* @private
|
||
* @name has
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the entry to check.
|
||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||
*/
|
||
function listCacheHas(key) {
|
||
return assocIndexOf(this.__data__, key) > -1;
|
||
}
|
||
|
||
/**
|
||
* Sets the list cache `key` to `value`.
|
||
*
|
||
* @private
|
||
* @name set
|
||
* @memberOf ListCache
|
||
* @param {string} key The key of the value to set.
|
||
* @param {*} value The value to set.
|
||
* @returns {Object} Returns the list cache instance.
|
||
*/
|
||
function listCacheSet(key, value) {
|
||
var data = this.__data__,
|
||
index = assocIndexOf(data, key);
|
||
|
||
if (index < 0) {
|
||
data.push([key, value]);
|
||
} else {
|
||
data[index][1] = value;
|
||
}
|
||
return this;
|
||
}
|
||
|
||
// Add methods to `ListCache`.
|
||
ListCache.prototype.clear = listCacheClear;
|
||
ListCache.prototype['delete'] = listCacheDelete;
|
||
ListCache.prototype.get = listCacheGet;
|
||
ListCache.prototype.has = listCacheHas;
|
||
ListCache.prototype.set = listCacheSet;
|
||
|
||
/**
|
||
* Creates a map cache object to store key-value pairs.
|
||
*
|
||
* @private
|
||
* @constructor
|
||
* @param {Array} [entries] The key-value pairs to cache.
|
||
*/
|
||
function MapCache(entries) {
|
||
var index = -1,
|
||
length = entries ? entries.length : 0;
|
||
|
||
this.clear();
|
||
while (++index < length) {
|
||
var entry = entries[index];
|
||
this.set(entry[0], entry[1]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Removes all key-value entries from the map.
|
||
*
|
||
* @private
|
||
* @name clear
|
||
* @memberOf MapCache
|
||
*/
|
||
function mapCacheClear() {
|
||
this.__data__ = {
|
||
'hash': new Hash,
|
||
'map': new (Map || ListCache),
|
||
'string': new Hash
|
||
};
|
||
}
|
||
|
||
/**
|
||
* Removes `key` and its value from the map.
|
||
*
|
||
* @private
|
||
* @name delete
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the value to remove.
|
||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||
*/
|
||
function mapCacheDelete(key) {
|
||
return getMapData(this, key)['delete'](key);
|
||
}
|
||
|
||
/**
|
||
* Gets the map value for `key`.
|
||
*
|
||
* @private
|
||
* @name get
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the value to get.
|
||
* @returns {*} Returns the entry value.
|
||
*/
|
||
function mapCacheGet(key) {
|
||
return getMapData(this, key).get(key);
|
||
}
|
||
|
||
/**
|
||
* Checks if a map value for `key` exists.
|
||
*
|
||
* @private
|
||
* @name has
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the entry to check.
|
||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||
*/
|
||
function mapCacheHas(key) {
|
||
return getMapData(this, key).has(key);
|
||
}
|
||
|
||
/**
|
||
* Sets the map `key` to `value`.
|
||
*
|
||
* @private
|
||
* @name set
|
||
* @memberOf MapCache
|
||
* @param {string} key The key of the value to set.
|
||
* @param {*} value The value to set.
|
||
* @returns {Object} Returns the map cache instance.
|
||
*/
|
||
function mapCacheSet(key, value) {
|
||
getMapData(this, key).set(key, value);
|
||
return this;
|
||
}
|
||
|
||
// Add methods to `MapCache`.
|
||
MapCache.prototype.clear = mapCacheClear;
|
||
MapCache.prototype['delete'] = mapCacheDelete;
|
||
MapCache.prototype.get = mapCacheGet;
|
||
MapCache.prototype.has = mapCacheHas;
|
||
MapCache.prototype.set = mapCacheSet;
|
||
|
||
/**
|
||
* Assigns `value` to `key` of `object` if the existing value is not equivalent
|
||
* using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
|
||
* for equality comparisons.
|
||
*
|
||
* @private
|
||
* @param {Object} object The object to modify.
|
||
* @param {string} key The key of the property to assign.
|
||
* @param {*} value The value to assign.
|
||
*/
|
||
function assignValue(object, key, value) {
|
||
var objValue = object[key];
|
||
if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
|
||
(value === undefined && !(key in object))) {
|
||
object[key] = value;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Gets the index at which the `key` is found in `array` of key-value pairs.
|
||
*
|
||
* @private
|
||
* @param {Array} array The array to inspect.
|
||
* @param {*} key The key to search for.
|
||
* @returns {number} Returns the index of the matched value, else `-1`.
|
||
*/
|
||
function assocIndexOf(array, key) {
|
||
var length = array.length;
|
||
while (length--) {
|
||
if (eq(array[length][0], key)) {
|
||
return length;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.isNative` without bad shim checks.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a native function,
|
||
* else `false`.
|
||
*/
|
||
function baseIsNative(value) {
|
||
if (!isObject(value) || isMasked(value)) {
|
||
return false;
|
||
}
|
||
var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
|
||
return pattern.test(toSource(value));
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.set`.
|
||
*
|
||
* @private
|
||
* @param {Object} object The object to modify.
|
||
* @param {Array|string} path The path of the property to set.
|
||
* @param {*} value The value to set.
|
||
* @param {Function} [customizer] The function to customize path creation.
|
||
* @returns {Object} Returns `object`.
|
||
*/
|
||
function baseSet(object, path, value, customizer) {
|
||
if (!isObject(object)) {
|
||
return object;
|
||
}
|
||
path = isKey(path, object) ? [path] : castPath(path);
|
||
|
||
var index = -1,
|
||
length = path.length,
|
||
lastIndex = length - 1,
|
||
nested = object;
|
||
|
||
while (nested != null && ++index < length) {
|
||
var key = toKey(path[index]),
|
||
newValue = value;
|
||
|
||
if (index != lastIndex) {
|
||
var objValue = nested[key];
|
||
newValue = customizer ? customizer(objValue, key, nested) : undefined;
|
||
if (newValue === undefined) {
|
||
newValue = isObject(objValue)
|
||
? objValue
|
||
: (isIndex(path[index + 1]) ? [] : {});
|
||
}
|
||
}
|
||
assignValue(nested, key, newValue);
|
||
nested = nested[key];
|
||
}
|
||
return object;
|
||
}
|
||
|
||
/**
|
||
* The base implementation of `_.toString` which doesn't convert nullish
|
||
* values to empty strings.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to process.
|
||
* @returns {string} Returns the string.
|
||
*/
|
||
function baseToString(value) {
|
||
// Exit early for strings to avoid a performance hit in some environments.
|
||
if (typeof value == 'string') {
|
||
return value;
|
||
}
|
||
if (isSymbol(value)) {
|
||
return symbolToString ? symbolToString.call(value) : '';
|
||
}
|
||
var result = (value + '');
|
||
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
|
||
}
|
||
|
||
/**
|
||
* Casts `value` to a path array if it's not one.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to inspect.
|
||
* @returns {Array} Returns the cast property path array.
|
||
*/
|
||
function castPath(value) {
|
||
return isArray(value) ? value : stringToPath(value);
|
||
}
|
||
|
||
/**
|
||
* Gets the data for `map`.
|
||
*
|
||
* @private
|
||
* @param {Object} map The map to query.
|
||
* @param {string} key The reference key.
|
||
* @returns {*} Returns the map data.
|
||
*/
|
||
function getMapData(map, key) {
|
||
var data = map.__data__;
|
||
return isKeyable(key)
|
||
? data[typeof key == 'string' ? 'string' : 'hash']
|
||
: data.map;
|
||
}
|
||
|
||
/**
|
||
* Gets the native function at `key` of `object`.
|
||
*
|
||
* @private
|
||
* @param {Object} object The object to query.
|
||
* @param {string} key The key of the method to get.
|
||
* @returns {*} Returns the function if it's native, else `undefined`.
|
||
*/
|
||
function getNative(object, key) {
|
||
var value = getValue(object, key);
|
||
return baseIsNative(value) ? value : undefined;
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is a valid array-like index.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
|
||
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
|
||
*/
|
||
function isIndex(value, length) {
|
||
length = length == null ? MAX_SAFE_INTEGER : length;
|
||
return !!length &&
|
||
(typeof value == 'number' || reIsUint.test(value)) &&
|
||
(value > -1 && value % 1 == 0 && value < length);
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is a property name and not a property path.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @param {Object} [object] The object to query keys on.
|
||
* @returns {boolean} Returns `true` if `value` is a property name, else `false`.
|
||
*/
|
||
function isKey(value, object) {
|
||
if (isArray(value)) {
|
||
return false;
|
||
}
|
||
var type = typeof value;
|
||
if (type == 'number' || type == 'symbol' || type == 'boolean' ||
|
||
value == null || isSymbol(value)) {
|
||
return true;
|
||
}
|
||
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
|
||
(object != null && value in Object(object));
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is suitable for use as unique object key.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is suitable, else `false`.
|
||
*/
|
||
function isKeyable(value) {
|
||
var type = typeof value;
|
||
return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
|
||
? (value !== '__proto__')
|
||
: (value === null);
|
||
}
|
||
|
||
/**
|
||
* Checks if `func` has its source masked.
|
||
*
|
||
* @private
|
||
* @param {Function} func The function to check.
|
||
* @returns {boolean} Returns `true` if `func` is masked, else `false`.
|
||
*/
|
||
function isMasked(func) {
|
||
return !!maskSrcKey && (maskSrcKey in func);
|
||
}
|
||
|
||
/**
|
||
* Converts `string` to a property path array.
|
||
*
|
||
* @private
|
||
* @param {string} string The string to convert.
|
||
* @returns {Array} Returns the property path array.
|
||
*/
|
||
var stringToPath = memoize(function(string) {
|
||
string = toString(string);
|
||
|
||
var result = [];
|
||
if (reLeadingDot.test(string)) {
|
||
result.push('');
|
||
}
|
||
string.replace(rePropName, function(match, number, quote, string) {
|
||
result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
|
||
});
|
||
return result;
|
||
});
|
||
|
||
/**
|
||
* Converts `value` to a string key if it's not a string or symbol.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to inspect.
|
||
* @returns {string|symbol} Returns the key.
|
||
*/
|
||
function toKey(value) {
|
||
if (typeof value == 'string' || isSymbol(value)) {
|
||
return value;
|
||
}
|
||
var result = (value + '');
|
||
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
|
||
}
|
||
|
||
/**
|
||
* Converts `func` to its source code.
|
||
*
|
||
* @private
|
||
* @param {Function} func The function to process.
|
||
* @returns {string} Returns the source code.
|
||
*/
|
||
function toSource(func) {
|
||
if (func != null) {
|
||
try {
|
||
return funcToString.call(func);
|
||
} catch (e) {}
|
||
try {
|
||
return (func + '');
|
||
} catch (e) {}
|
||
}
|
||
return '';
|
||
}
|
||
|
||
/**
|
||
* Creates a function that memoizes the result of `func`. If `resolver` is
|
||
* provided, it determines the cache key for storing the result based on the
|
||
* arguments provided to the memoized function. By default, the first argument
|
||
* provided to the memoized function is used as the map cache key. The `func`
|
||
* is invoked with the `this` binding of the memoized function.
|
||
*
|
||
* **Note:** The cache is exposed as the `cache` property on the memoized
|
||
* function. Its creation may be customized by replacing the `_.memoize.Cache`
|
||
* constructor with one whose instances implement the
|
||
* [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
|
||
* method interface of `delete`, `get`, `has`, and `set`.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Function
|
||
* @param {Function} func The function to have its output memoized.
|
||
* @param {Function} [resolver] The function to resolve the cache key.
|
||
* @returns {Function} Returns the new memoized function.
|
||
* @example
|
||
*
|
||
* var object = { 'a': 1, 'b': 2 };
|
||
* var other = { 'c': 3, 'd': 4 };
|
||
*
|
||
* var values = _.memoize(_.values);
|
||
* values(object);
|
||
* // => [1, 2]
|
||
*
|
||
* values(other);
|
||
* // => [3, 4]
|
||
*
|
||
* object.a = 2;
|
||
* values(object);
|
||
* // => [1, 2]
|
||
*
|
||
* // Modify the result cache.
|
||
* values.cache.set(object, ['a', 'b']);
|
||
* values(object);
|
||
* // => ['a', 'b']
|
||
*
|
||
* // Replace `_.memoize.Cache`.
|
||
* _.memoize.Cache = WeakMap;
|
||
*/
|
||
function memoize(func, resolver) {
|
||
if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
|
||
throw new TypeError(FUNC_ERROR_TEXT);
|
||
}
|
||
var memoized = function() {
|
||
var args = arguments,
|
||
key = resolver ? resolver.apply(this, args) : args[0],
|
||
cache = memoized.cache;
|
||
|
||
if (cache.has(key)) {
|
||
return cache.get(key);
|
||
}
|
||
var result = func.apply(this, args);
|
||
memoized.cache = cache.set(key, result);
|
||
return result;
|
||
};
|
||
memoized.cache = new (memoize.Cache || MapCache);
|
||
return memoized;
|
||
}
|
||
|
||
// Assign cache to `_.memoize`.
|
||
memoize.Cache = MapCache;
|
||
|
||
/**
|
||
* Performs a
|
||
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
|
||
* comparison between two values to determine if they are equivalent.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to compare.
|
||
* @param {*} other The other value to compare.
|
||
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
||
* @example
|
||
*
|
||
* var object = { 'a': 1 };
|
||
* var other = { 'a': 1 };
|
||
*
|
||
* _.eq(object, object);
|
||
* // => true
|
||
*
|
||
* _.eq(object, other);
|
||
* // => false
|
||
*
|
||
* _.eq('a', 'a');
|
||
* // => true
|
||
*
|
||
* _.eq('a', Object('a'));
|
||
* // => false
|
||
*
|
||
* _.eq(NaN, NaN);
|
||
* // => true
|
||
*/
|
||
function eq(value, other) {
|
||
return value === other || (value !== value && other !== other);
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is classified as an `Array` object.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
|
||
* @example
|
||
*
|
||
* _.isArray([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isArray(document.body.children);
|
||
* // => false
|
||
*
|
||
* _.isArray('abc');
|
||
* // => false
|
||
*
|
||
* _.isArray(_.noop);
|
||
* // => false
|
||
*/
|
||
var isArray = Array.isArray;
|
||
|
||
/**
|
||
* Checks if `value` is classified as a `Function` object.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
|
||
* @example
|
||
*
|
||
* _.isFunction(_);
|
||
* // => true
|
||
*
|
||
* _.isFunction(/abc/);
|
||
* // => false
|
||
*/
|
||
function isFunction(value) {
|
||
// The use of `Object#toString` avoids issues with the `typeof` operator
|
||
// in Safari 8-9 which returns 'object' for typed array and other constructors.
|
||
var tag = isObject(value) ? objectToString.call(value) : '';
|
||
return tag == funcTag || tag == genTag;
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is the
|
||
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
|
||
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
|
||
* @example
|
||
*
|
||
* _.isObject({});
|
||
* // => true
|
||
*
|
||
* _.isObject([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isObject(_.noop);
|
||
* // => true
|
||
*
|
||
* _.isObject(null);
|
||
* // => false
|
||
*/
|
||
function isObject(value) {
|
||
var type = typeof value;
|
||
return !!value && (type == 'object' || type == 'function');
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is object-like. A value is object-like if it's not `null`
|
||
* and has a `typeof` result of "object".
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
|
||
* @example
|
||
*
|
||
* _.isObjectLike({});
|
||
* // => true
|
||
*
|
||
* _.isObjectLike([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isObjectLike(_.noop);
|
||
* // => false
|
||
*
|
||
* _.isObjectLike(null);
|
||
* // => false
|
||
*/
|
||
function isObjectLike(value) {
|
||
return !!value && typeof value == 'object';
|
||
}
|
||
|
||
/**
|
||
* Checks if `value` is classified as a `Symbol` primitive or object.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
|
||
* @example
|
||
*
|
||
* _.isSymbol(Symbol.iterator);
|
||
* // => true
|
||
*
|
||
* _.isSymbol('abc');
|
||
* // => false
|
||
*/
|
||
function isSymbol(value) {
|
||
return typeof value == 'symbol' ||
|
||
(isObjectLike(value) && objectToString.call(value) == symbolTag);
|
||
}
|
||
|
||
/**
|
||
* Converts `value` to a string. An empty string is returned for `null`
|
||
* and `undefined` values. The sign of `-0` is preserved.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to process.
|
||
* @returns {string} Returns the string.
|
||
* @example
|
||
*
|
||
* _.toString(null);
|
||
* // => ''
|
||
*
|
||
* _.toString(-0);
|
||
* // => '-0'
|
||
*
|
||
* _.toString([1, 2, 3]);
|
||
* // => '1,2,3'
|
||
*/
|
||
function toString(value) {
|
||
return value == null ? '' : baseToString(value);
|
||
}
|
||
|
||
/**
|
||
* Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
|
||
* it's created. Arrays are created for missing index properties while objects
|
||
* are created for all other missing properties. Use `_.setWith` to customize
|
||
* `path` creation.
|
||
*
|
||
* **Note:** This method mutates `object`.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 3.7.0
|
||
* @category Object
|
||
* @param {Object} object The object to modify.
|
||
* @param {Array|string} path The path of the property to set.
|
||
* @param {*} value The value to set.
|
||
* @returns {Object} Returns `object`.
|
||
* @example
|
||
*
|
||
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
|
||
*
|
||
* _.set(object, 'a[0].b.c', 4);
|
||
* console.log(object.a[0].b.c);
|
||
* // => 4
|
||
*
|
||
* _.set(object, ['x', '0', 'y', 'z'], 5);
|
||
* console.log(object.x[0].y.z);
|
||
* // => 5
|
||
*/
|
||
function set(object, path, value) {
|
||
return object == null ? object : baseSet(object, path, value);
|
||
}
|
||
|
||
module.exports = set;
|
||
|
||
|
||
/***/ }),
|
||
/* 884 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLAttribute, XMLNode;
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
module.exports = XMLAttribute = (function() {
|
||
function XMLAttribute(parent, name, value) {
|
||
this.parent = parent;
|
||
if (this.parent) {
|
||
this.options = this.parent.options;
|
||
this.stringify = this.parent.stringify;
|
||
}
|
||
if (name == null) {
|
||
throw new Error("Missing attribute name. " + this.debugInfo(name));
|
||
}
|
||
this.name = this.stringify.name(name);
|
||
this.value = this.stringify.attValue(value);
|
||
this.type = NodeType.Attribute;
|
||
this.isId = false;
|
||
this.schemaTypeInfo = null;
|
||
}
|
||
|
||
Object.defineProperty(XMLAttribute.prototype, 'nodeType', {
|
||
get: function() {
|
||
return this.type;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLAttribute.prototype, 'ownerElement', {
|
||
get: function() {
|
||
return this.parent;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLAttribute.prototype, 'textContent', {
|
||
get: function() {
|
||
return this.value;
|
||
},
|
||
set: function(value) {
|
||
return this.value = value || '';
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLAttribute.prototype, 'namespaceURI', {
|
||
get: function() {
|
||
return '';
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLAttribute.prototype, 'prefix', {
|
||
get: function() {
|
||
return '';
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLAttribute.prototype, 'localName', {
|
||
get: function() {
|
||
return this.name;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLAttribute.prototype, 'specified', {
|
||
get: function() {
|
||
return true;
|
||
}
|
||
});
|
||
|
||
XMLAttribute.prototype.clone = function() {
|
||
return Object.create(this);
|
||
};
|
||
|
||
XMLAttribute.prototype.toString = function(options) {
|
||
return this.options.writer.attribute(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
XMLAttribute.prototype.debugInfo = function(name) {
|
||
name = name || this.name;
|
||
if (name == null) {
|
||
return "parent: <" + this.parent.name + ">";
|
||
} else {
|
||
return "attribute: {" + name + "}, parent: <" + this.parent.name + ">";
|
||
}
|
||
};
|
||
|
||
XMLAttribute.prototype.isEqualNode = function(node) {
|
||
if (node.namespaceURI !== this.namespaceURI) {
|
||
return false;
|
||
}
|
||
if (node.prefix !== this.prefix) {
|
||
return false;
|
||
}
|
||
if (node.localName !== this.localName) {
|
||
return false;
|
||
}
|
||
if (node.value !== this.value) {
|
||
return false;
|
||
}
|
||
return true;
|
||
};
|
||
|
||
return XMLAttribute;
|
||
|
||
})();
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 885 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
"use strict";
|
||
var bom, defaults, events, isEmpty, processItem, processors, sax, setImmediate,
|
||
bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
sax = __webpack_require__(645);
|
||
|
||
events = __webpack_require__(614);
|
||
|
||
bom = __webpack_require__(210);
|
||
|
||
processors = __webpack_require__(350);
|
||
|
||
setImmediate = __webpack_require__(213).setImmediate;
|
||
|
||
defaults = __webpack_require__(791).defaults;
|
||
|
||
isEmpty = function(thing) {
|
||
return typeof thing === "object" && (thing != null) && Object.keys(thing).length === 0;
|
||
};
|
||
|
||
processItem = function(processors, item, key) {
|
||
var i, len, process;
|
||
for (i = 0, len = processors.length; i < len; i++) {
|
||
process = processors[i];
|
||
item = process(item, key);
|
||
}
|
||
return item;
|
||
};
|
||
|
||
exports.Parser = (function(superClass) {
|
||
extend(Parser, superClass);
|
||
|
||
function Parser(opts) {
|
||
this.parseStringPromise = bind(this.parseStringPromise, this);
|
||
this.parseString = bind(this.parseString, this);
|
||
this.reset = bind(this.reset, this);
|
||
this.assignOrPush = bind(this.assignOrPush, this);
|
||
this.processAsync = bind(this.processAsync, this);
|
||
var key, ref, value;
|
||
if (!(this instanceof exports.Parser)) {
|
||
return new exports.Parser(opts);
|
||
}
|
||
this.options = {};
|
||
ref = defaults["0.2"];
|
||
for (key in ref) {
|
||
if (!hasProp.call(ref, key)) continue;
|
||
value = ref[key];
|
||
this.options[key] = value;
|
||
}
|
||
for (key in opts) {
|
||
if (!hasProp.call(opts, key)) continue;
|
||
value = opts[key];
|
||
this.options[key] = value;
|
||
}
|
||
if (this.options.xmlns) {
|
||
this.options.xmlnskey = this.options.attrkey + "ns";
|
||
}
|
||
if (this.options.normalizeTags) {
|
||
if (!this.options.tagNameProcessors) {
|
||
this.options.tagNameProcessors = [];
|
||
}
|
||
this.options.tagNameProcessors.unshift(processors.normalize);
|
||
}
|
||
this.reset();
|
||
}
|
||
|
||
Parser.prototype.processAsync = function() {
|
||
var chunk, err;
|
||
try {
|
||
if (this.remaining.length <= this.options.chunkSize) {
|
||
chunk = this.remaining;
|
||
this.remaining = '';
|
||
this.saxParser = this.saxParser.write(chunk);
|
||
return this.saxParser.close();
|
||
} else {
|
||
chunk = this.remaining.substr(0, this.options.chunkSize);
|
||
this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length);
|
||
this.saxParser = this.saxParser.write(chunk);
|
||
return setImmediate(this.processAsync);
|
||
}
|
||
} catch (error1) {
|
||
err = error1;
|
||
if (!this.saxParser.errThrown) {
|
||
this.saxParser.errThrown = true;
|
||
return this.emit(err);
|
||
}
|
||
}
|
||
};
|
||
|
||
Parser.prototype.assignOrPush = function(obj, key, newValue) {
|
||
if (!(key in obj)) {
|
||
if (!this.options.explicitArray) {
|
||
return obj[key] = newValue;
|
||
} else {
|
||
return obj[key] = [newValue];
|
||
}
|
||
} else {
|
||
if (!(obj[key] instanceof Array)) {
|
||
obj[key] = [obj[key]];
|
||
}
|
||
return obj[key].push(newValue);
|
||
}
|
||
};
|
||
|
||
Parser.prototype.reset = function() {
|
||
var attrkey, charkey, ontext, stack;
|
||
this.removeAllListeners();
|
||
this.saxParser = sax.parser(this.options.strict, {
|
||
trim: false,
|
||
normalize: false,
|
||
xmlns: this.options.xmlns
|
||
});
|
||
this.saxParser.errThrown = false;
|
||
this.saxParser.onerror = (function(_this) {
|
||
return function(error) {
|
||
_this.saxParser.resume();
|
||
if (!_this.saxParser.errThrown) {
|
||
_this.saxParser.errThrown = true;
|
||
return _this.emit("error", error);
|
||
}
|
||
};
|
||
})(this);
|
||
this.saxParser.onend = (function(_this) {
|
||
return function() {
|
||
if (!_this.saxParser.ended) {
|
||
_this.saxParser.ended = true;
|
||
return _this.emit("end", _this.resultObject);
|
||
}
|
||
};
|
||
})(this);
|
||
this.saxParser.ended = false;
|
||
this.EXPLICIT_CHARKEY = this.options.explicitCharkey;
|
||
this.resultObject = null;
|
||
stack = [];
|
||
attrkey = this.options.attrkey;
|
||
charkey = this.options.charkey;
|
||
this.saxParser.onopentag = (function(_this) {
|
||
return function(node) {
|
||
var key, newValue, obj, processedKey, ref;
|
||
obj = {};
|
||
obj[charkey] = "";
|
||
if (!_this.options.ignoreAttrs) {
|
||
ref = node.attributes;
|
||
for (key in ref) {
|
||
if (!hasProp.call(ref, key)) continue;
|
||
if (!(attrkey in obj) && !_this.options.mergeAttrs) {
|
||
obj[attrkey] = {};
|
||
}
|
||
newValue = _this.options.attrValueProcessors ? processItem(_this.options.attrValueProcessors, node.attributes[key], key) : node.attributes[key];
|
||
processedKey = _this.options.attrNameProcessors ? processItem(_this.options.attrNameProcessors, key) : key;
|
||
if (_this.options.mergeAttrs) {
|
||
_this.assignOrPush(obj, processedKey, newValue);
|
||
} else {
|
||
obj[attrkey][processedKey] = newValue;
|
||
}
|
||
}
|
||
}
|
||
obj["#name"] = _this.options.tagNameProcessors ? processItem(_this.options.tagNameProcessors, node.name) : node.name;
|
||
if (_this.options.xmlns) {
|
||
obj[_this.options.xmlnskey] = {
|
||
uri: node.uri,
|
||
local: node.local
|
||
};
|
||
}
|
||
return stack.push(obj);
|
||
};
|
||
})(this);
|
||
this.saxParser.onclosetag = (function(_this) {
|
||
return function() {
|
||
var cdata, emptyStr, key, node, nodeName, obj, objClone, old, s, xpath;
|
||
obj = stack.pop();
|
||
nodeName = obj["#name"];
|
||
if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) {
|
||
delete obj["#name"];
|
||
}
|
||
if (obj.cdata === true) {
|
||
cdata = obj.cdata;
|
||
delete obj.cdata;
|
||
}
|
||
s = stack[stack.length - 1];
|
||
if (obj[charkey].match(/^\s*$/) && !cdata) {
|
||
emptyStr = obj[charkey];
|
||
delete obj[charkey];
|
||
} else {
|
||
if (_this.options.trim) {
|
||
obj[charkey] = obj[charkey].trim();
|
||
}
|
||
if (_this.options.normalize) {
|
||
obj[charkey] = obj[charkey].replace(/\s{2,}/g, " ").trim();
|
||
}
|
||
obj[charkey] = _this.options.valueProcessors ? processItem(_this.options.valueProcessors, obj[charkey], nodeName) : obj[charkey];
|
||
if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {
|
||
obj = obj[charkey];
|
||
}
|
||
}
|
||
if (isEmpty(obj)) {
|
||
obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr;
|
||
}
|
||
if (_this.options.validator != null) {
|
||
xpath = "/" + ((function() {
|
||
var i, len, results;
|
||
results = [];
|
||
for (i = 0, len = stack.length; i < len; i++) {
|
||
node = stack[i];
|
||
results.push(node["#name"]);
|
||
}
|
||
return results;
|
||
})()).concat(nodeName).join("/");
|
||
(function() {
|
||
var err;
|
||
try {
|
||
return obj = _this.options.validator(xpath, s && s[nodeName], obj);
|
||
} catch (error1) {
|
||
err = error1;
|
||
return _this.emit("error", err);
|
||
}
|
||
})();
|
||
}
|
||
if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') {
|
||
if (!_this.options.preserveChildrenOrder) {
|
||
node = {};
|
||
if (_this.options.attrkey in obj) {
|
||
node[_this.options.attrkey] = obj[_this.options.attrkey];
|
||
delete obj[_this.options.attrkey];
|
||
}
|
||
if (!_this.options.charsAsChildren && _this.options.charkey in obj) {
|
||
node[_this.options.charkey] = obj[_this.options.charkey];
|
||
delete obj[_this.options.charkey];
|
||
}
|
||
if (Object.getOwnPropertyNames(obj).length > 0) {
|
||
node[_this.options.childkey] = obj;
|
||
}
|
||
obj = node;
|
||
} else if (s) {
|
||
s[_this.options.childkey] = s[_this.options.childkey] || [];
|
||
objClone = {};
|
||
for (key in obj) {
|
||
if (!hasProp.call(obj, key)) continue;
|
||
objClone[key] = obj[key];
|
||
}
|
||
s[_this.options.childkey].push(objClone);
|
||
delete obj["#name"];
|
||
if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {
|
||
obj = obj[charkey];
|
||
}
|
||
}
|
||
}
|
||
if (stack.length > 0) {
|
||
return _this.assignOrPush(s, nodeName, obj);
|
||
} else {
|
||
if (_this.options.explicitRoot) {
|
||
old = obj;
|
||
obj = {};
|
||
obj[nodeName] = old;
|
||
}
|
||
_this.resultObject = obj;
|
||
_this.saxParser.ended = true;
|
||
return _this.emit("end", _this.resultObject);
|
||
}
|
||
};
|
||
})(this);
|
||
ontext = (function(_this) {
|
||
return function(text) {
|
||
var charChild, s;
|
||
s = stack[stack.length - 1];
|
||
if (s) {
|
||
s[charkey] += text;
|
||
if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && (_this.options.includeWhiteChars || text.replace(/\\n/g, '').trim() !== '')) {
|
||
s[_this.options.childkey] = s[_this.options.childkey] || [];
|
||
charChild = {
|
||
'#name': '__text__'
|
||
};
|
||
charChild[charkey] = text;
|
||
if (_this.options.normalize) {
|
||
charChild[charkey] = charChild[charkey].replace(/\s{2,}/g, " ").trim();
|
||
}
|
||
s[_this.options.childkey].push(charChild);
|
||
}
|
||
return s;
|
||
}
|
||
};
|
||
})(this);
|
||
this.saxParser.ontext = ontext;
|
||
return this.saxParser.oncdata = (function(_this) {
|
||
return function(text) {
|
||
var s;
|
||
s = ontext(text);
|
||
if (s) {
|
||
return s.cdata = true;
|
||
}
|
||
};
|
||
})(this);
|
||
};
|
||
|
||
Parser.prototype.parseString = function(str, cb) {
|
||
var err;
|
||
if ((cb != null) && typeof cb === "function") {
|
||
this.on("end", function(result) {
|
||
this.reset();
|
||
return cb(null, result);
|
||
});
|
||
this.on("error", function(err) {
|
||
this.reset();
|
||
return cb(err);
|
||
});
|
||
}
|
||
try {
|
||
str = str.toString();
|
||
if (str.trim() === '') {
|
||
this.emit("end", null);
|
||
return true;
|
||
}
|
||
str = bom.stripBOM(str);
|
||
if (this.options.async) {
|
||
this.remaining = str;
|
||
setImmediate(this.processAsync);
|
||
return this.saxParser;
|
||
}
|
||
return this.saxParser.write(str).close();
|
||
} catch (error1) {
|
||
err = error1;
|
||
if (!(this.saxParser.errThrown || this.saxParser.ended)) {
|
||
this.emit('error', err);
|
||
return this.saxParser.errThrown = true;
|
||
} else if (this.saxParser.ended) {
|
||
throw err;
|
||
}
|
||
}
|
||
};
|
||
|
||
Parser.prototype.parseStringPromise = function(str) {
|
||
return new Promise((function(_this) {
|
||
return function(resolve, reject) {
|
||
return _this.parseString(str, function(err, value) {
|
||
if (err) {
|
||
return reject(err);
|
||
} else {
|
||
return resolve(value);
|
||
}
|
||
});
|
||
};
|
||
})(this));
|
||
};
|
||
|
||
return Parser;
|
||
|
||
})(events);
|
||
|
||
exports.parseString = function(str, a, b) {
|
||
var cb, options, parser;
|
||
if (b != null) {
|
||
if (typeof b === 'function') {
|
||
cb = b;
|
||
}
|
||
if (typeof a === 'object') {
|
||
options = a;
|
||
}
|
||
} else {
|
||
if (typeof a === 'function') {
|
||
cb = a;
|
||
}
|
||
options = {};
|
||
}
|
||
parser = new exports.Parser(options);
|
||
return parser.parseString(str, cb);
|
||
};
|
||
|
||
exports.parseStringPromise = function(str, a) {
|
||
var options, parser;
|
||
if (typeof a === 'object') {
|
||
options = a;
|
||
}
|
||
parser = new exports.Parser(options);
|
||
return parser.parseStringPromise(str);
|
||
};
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 886 */,
|
||
/* 887 */,
|
||
/* 888 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
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 os = __importStar(__webpack_require__(87));
|
||
/**
|
||
* Commands
|
||
*
|
||
* Command Format:
|
||
* ::name key=value,key=value::message
|
||
*
|
||
* Examples:
|
||
* ::warning::This is the message
|
||
* ::set-env name=MY_VAR::some value
|
||
*/
|
||
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 += ' ';
|
||
let first = true;
|
||
for (const key in this.properties) {
|
||
if (this.properties.hasOwnProperty(key)) {
|
||
const val = this.properties[key];
|
||
if (val) {
|
||
if (first) {
|
||
first = false;
|
||
}
|
||
else {
|
||
cmdStr += ',';
|
||
}
|
||
cmdStr += `${key}=${escapeProperty(val)}`;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
|
||
return cmdStr;
|
||
}
|
||
}
|
||
/**
|
||
* Sanitizes an input into a string so it can be passed into issueCommand safely
|
||
* @param input input to sanitize into a string
|
||
*/
|
||
function toCommandValue(input) {
|
||
if (input === null || input === undefined) {
|
||
return '';
|
||
}
|
||
else if (typeof input === 'string' || input instanceof String) {
|
||
return input;
|
||
}
|
||
return JSON.stringify(input);
|
||
}
|
||
exports.toCommandValue = toCommandValue;
|
||
function escapeData(s) {
|
||
return toCommandValue(s)
|
||
.replace(/%/g, '%25')
|
||
.replace(/\r/g, '%0D')
|
||
.replace(/\n/g, '%0A');
|
||
}
|
||
function escapeProperty(s) {
|
||
return toCommandValue(s)
|
||
.replace(/%/g, '%25')
|
||
.replace(/\r/g, '%0D')
|
||
.replace(/\n/g, '%0A')
|
||
.replace(/:/g, '%3A')
|
||
.replace(/,/g, '%2C');
|
||
}
|
||
//# sourceMappingURL=command.js.map
|
||
|
||
/***/ }),
|
||
/* 889 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
/*!
|
||
* Copyright (c) Microsoft and contributors. All rights reserved.
|
||
* Licensed under the MIT License. See License.txt in the project root for
|
||
* license information.
|
||
*
|
||
* Azure Core LRO SDK for JavaScript - 1.0.5
|
||
*/
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
var tslib = __webpack_require__(725);
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* When a poller is manually stopped through the `stopPolling` method,
|
||
* the poller will be rejected with an instance of the PollerStoppedError.
|
||
*/
|
||
var PollerStoppedError = /** @class */ (function (_super) {
|
||
tslib.__extends(PollerStoppedError, _super);
|
||
function PollerStoppedError(message) {
|
||
var _this = _super.call(this, message) || this;
|
||
_this.name = "PollerStoppedError";
|
||
Object.setPrototypeOf(_this, PollerStoppedError.prototype);
|
||
return _this;
|
||
}
|
||
return PollerStoppedError;
|
||
}(Error));
|
||
/**
|
||
* When a poller is cancelled through the `cancelOperation` method,
|
||
* the poller will be rejected with an instance of the PollerCancelledError.
|
||
*/
|
||
var PollerCancelledError = /** @class */ (function (_super) {
|
||
tslib.__extends(PollerCancelledError, _super);
|
||
function PollerCancelledError(message) {
|
||
var _this = _super.call(this, message) || this;
|
||
_this.name = "PollerCancelledError";
|
||
Object.setPrototypeOf(_this, PollerCancelledError.prototype);
|
||
return _this;
|
||
}
|
||
return PollerCancelledError;
|
||
}(Error));
|
||
/**
|
||
* A class that represents the definition of a program that polls through consecutive requests
|
||
* until it reaches a state of completion.
|
||
*
|
||
* A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.
|
||
* It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.
|
||
* Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.
|
||
*
|
||
* ```ts
|
||
* const poller = new MyPoller();
|
||
*
|
||
* // Polling just once:
|
||
* await poller.poll();
|
||
*
|
||
* // We can try to cancel the request here, by calling:
|
||
* //
|
||
* // await poller.cancelOperation();
|
||
* //
|
||
*
|
||
* // Getting the final result:
|
||
* const result = await poller.pollUntilDone();
|
||
* ```
|
||
*
|
||
* The Poller is defined by two types, a type representing the state of the poller, which
|
||
* must include a basic set of properties from `PollOperationState<TResult>`,
|
||
* and a return type defined by `TResult`, which can be anything.
|
||
*
|
||
* The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having
|
||
* to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.
|
||
*
|
||
* ```ts
|
||
* class Client {
|
||
* public async makePoller: PollerLike<MyOperationState, MyResult> {
|
||
* const poller = new MyPoller({});
|
||
* // It might be preferred to return the poller after the first request is made,
|
||
* // so that some information can be obtained right away.
|
||
* await poller.poll();
|
||
* return poller;
|
||
* }
|
||
* }
|
||
*
|
||
* const poller: PollerLike<MyOperationState, MyResult> = myClient.makePoller();
|
||
* ```
|
||
*
|
||
* A poller can be created through its constructor, then it can be polled until it's completed.
|
||
* At any point in time, the state of the poller can be obtained without delay through the getOperationState method.
|
||
* At any point in time, the intermediate forms of the result type can be requested without delay.
|
||
* Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.
|
||
*
|
||
* ```ts
|
||
* const poller = myClient.makePoller();
|
||
* const state: MyOperationState = poller.getOperationState();
|
||
*
|
||
* // The intermediate result can be obtained at any time.
|
||
* const result: MyResult | undefined = poller.getResult();
|
||
*
|
||
* // The final result can only be obtained after the poller finishes.
|
||
* const result: MyResult = await poller.pollUntilDone();
|
||
* ```
|
||
*
|
||
*/
|
||
// eslint-disable-next-line no-use-before-define
|
||
var Poller = /** @class */ (function () {
|
||
/**
|
||
* A poller needs to be initialized by passing in at least the basic properties of the `PollOperation<TState, TResult>`.
|
||
*
|
||
* When writing an implementation of a Poller, this implementation needs to deal with the initialization
|
||
* of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's
|
||
* operation has already been defined, at least its basic properties. The code below shows how to approach
|
||
* the definition of the constructor of a new custom poller.
|
||
*
|
||
* ```ts
|
||
* export class MyPoller extends Poller<MyOperationState, string> {
|
||
* constructor({
|
||
* // Anything you might need outside of the basics
|
||
* }) {
|
||
* let state: MyOperationState = {
|
||
* privateProperty: private,
|
||
* publicProperty: public,
|
||
* };
|
||
*
|
||
* const operation = {
|
||
* state,
|
||
* update,
|
||
* cancel,
|
||
* toString
|
||
* }
|
||
*
|
||
* // Sending the operation to the parent's constructor.
|
||
* super(operation);
|
||
*
|
||
* // You can assign more local properties here.
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* Inside of this constructor, a new promise is created. This will be used to
|
||
* tell the user when the poller finishes (see `pollUntilDone()`). The promise's
|
||
* resolve and reject methods are also used internally to control when to resolve
|
||
* or reject anyone waiting for the poller to finish.
|
||
*
|
||
* The constructor of a custom implementation of a poller is where any serialized version of
|
||
* a previous poller's operation should be deserialized into the operation sent to the
|
||
* base constructor. For example:
|
||
*
|
||
* ```ts
|
||
* export class MyPoller extends Poller<MyOperationState, string> {
|
||
* constructor(
|
||
* baseOperation: string | undefined
|
||
* ) {
|
||
* let state: MyOperationState = {};
|
||
* if (baseOperation) {
|
||
* state = {
|
||
* ...JSON.parse(baseOperation).state,
|
||
* ...state
|
||
* };
|
||
* }
|
||
* const operation = {
|
||
* state,
|
||
* // ...
|
||
* }
|
||
* super(operation);
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* @param operation - Must contain the basic properties of `PollOperation<State, TResult>`.
|
||
*/
|
||
function Poller(operation) {
|
||
var _this = this;
|
||
this.stopped = true;
|
||
this.pollProgressCallbacks = [];
|
||
this.operation = operation;
|
||
this.promise = new Promise(function (resolve, reject) {
|
||
_this.resolve = resolve;
|
||
_this.reject = reject;
|
||
});
|
||
// This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.
|
||
// The above warning would get thrown if `poller.poll` is called, it returns an error,
|
||
// and pullUntilDone did not have a .catch or await try/catch on it's return value.
|
||
this.promise.catch(function () {
|
||
/* intentionally blank */
|
||
});
|
||
}
|
||
/**
|
||
* @internal
|
||
* Starts a loop that will break only if the poller is done
|
||
* or if the poller is stopped.
|
||
*/
|
||
Poller.prototype.startPolling = function () {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
if (this.stopped) {
|
||
this.stopped = false;
|
||
}
|
||
_a.label = 1;
|
||
case 1:
|
||
if (!(!this.isStopped() && !this.isDone())) return [3 /*break*/, 4];
|
||
return [4 /*yield*/, this.poll()];
|
||
case 2:
|
||
_a.sent();
|
||
return [4 /*yield*/, this.delay()];
|
||
case 3:
|
||
_a.sent();
|
||
return [3 /*break*/, 1];
|
||
case 4: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* @internal
|
||
* pollOnce does one polling, by calling to the update method of the underlying
|
||
* poll operation to make any relevant change effective.
|
||
*
|
||
* It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike.
|
||
*
|
||
* @param options - Optional properties passed to the operation's update method.
|
||
*/
|
||
Poller.prototype.pollOnce = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, e_1;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_b.trys.push([0, 3, , 4]);
|
||
if (!!this.isDone()) return [3 /*break*/, 2];
|
||
_a = this;
|
||
return [4 /*yield*/, this.operation.update({
|
||
abortSignal: options.abortSignal,
|
||
fireProgress: this.fireProgress.bind(this)
|
||
})];
|
||
case 1:
|
||
_a.operation = _b.sent();
|
||
if (this.isDone() && this.resolve) {
|
||
// If the poller has finished polling, this means we now have a result.
|
||
// However, it can be the case that TResult is instantiated to void, so
|
||
// we are not expecting a result anyway. To assert that we might not
|
||
// have a result eventually after finishing polling, we cast the result
|
||
// to TResult.
|
||
this.resolve(this.operation.state.result);
|
||
}
|
||
_b.label = 2;
|
||
case 2: return [3 /*break*/, 4];
|
||
case 3:
|
||
e_1 = _b.sent();
|
||
this.operation.state.error = e_1;
|
||
if (this.reject) {
|
||
this.reject(e_1);
|
||
}
|
||
throw e_1;
|
||
case 4: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* @internal
|
||
* fireProgress calls the functions passed in via onProgress the method of the poller.
|
||
*
|
||
* It loops over all of the callbacks received from onProgress, and executes them, sending them
|
||
* the current operation state.
|
||
*
|
||
* @param state - The current operation state.
|
||
*/
|
||
Poller.prototype.fireProgress = function (state) {
|
||
for (var _i = 0, _a = this.pollProgressCallbacks; _i < _a.length; _i++) {
|
||
var callback = _a[_i];
|
||
callback(state);
|
||
}
|
||
};
|
||
/**
|
||
* @internal
|
||
* Invokes the underlying operation's cancel method, and rejects the
|
||
* pollUntilDone promise.
|
||
*/
|
||
Poller.prototype.cancelOnce = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
_a = this;
|
||
return [4 /*yield*/, this.operation.cancel(options)];
|
||
case 1:
|
||
_a.operation = _b.sent();
|
||
if (this.reject) {
|
||
this.reject(new PollerCancelledError("Poller cancelled"));
|
||
}
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Returns a promise that will resolve once a single polling request finishes.
|
||
* It does this by calling the update method of the Poller's operation.
|
||
*
|
||
* It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike.
|
||
*
|
||
* @param options - Optional properties passed to the operation's update method.
|
||
*/
|
||
Poller.prototype.poll = function (options) {
|
||
var _this = this;
|
||
if (options === void 0) { options = {}; }
|
||
if (!this.pollOncePromise) {
|
||
this.pollOncePromise = this.pollOnce(options);
|
||
var clearPollOncePromise = function () {
|
||
_this.pollOncePromise = undefined;
|
||
};
|
||
this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);
|
||
}
|
||
return this.pollOncePromise;
|
||
};
|
||
/**
|
||
* Returns a promise that will resolve once the underlying operation is completed.
|
||
*/
|
||
Poller.prototype.pollUntilDone = function () {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
if (this.stopped) {
|
||
this.startPolling().catch(this.reject);
|
||
}
|
||
return [2 /*return*/, this.promise];
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Invokes the provided callback after each polling is completed,
|
||
* sending the current state of the poller's operation.
|
||
*
|
||
* It returns a method that can be used to stop receiving updates on the given callback function.
|
||
*/
|
||
Poller.prototype.onProgress = function (callback) {
|
||
var _this = this;
|
||
this.pollProgressCallbacks.push(callback);
|
||
return function () {
|
||
_this.pollProgressCallbacks = _this.pollProgressCallbacks.filter(function (c) { return c !== callback; });
|
||
};
|
||
};
|
||
/**
|
||
* Returns true if the poller has finished polling.
|
||
*/
|
||
Poller.prototype.isDone = function () {
|
||
var state = this.operation.state;
|
||
return Boolean(state.isCompleted || state.isCancelled || state.error);
|
||
};
|
||
/**
|
||
* Stops the poller from continuing to poll.
|
||
*/
|
||
Poller.prototype.stopPolling = function () {
|
||
if (!this.stopped) {
|
||
this.stopped = true;
|
||
if (this.reject) {
|
||
this.reject(new PollerStoppedError("This poller is already stopped"));
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* Returns true if the poller is stopped.
|
||
*/
|
||
Poller.prototype.isStopped = function () {
|
||
return this.stopped;
|
||
};
|
||
/**
|
||
* Attempts to cancel the underlying operation.
|
||
*
|
||
* It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike.
|
||
*
|
||
* If it's called again before it finishes, it will throw an error.
|
||
*
|
||
* @param options - Optional properties passed to the operation's update method.
|
||
*/
|
||
Poller.prototype.cancelOperation = function (options) {
|
||
if (options === void 0) { options = {}; }
|
||
if (!this.stopped) {
|
||
this.stopped = true;
|
||
}
|
||
if (!this.cancelPromise) {
|
||
this.cancelPromise = this.cancelOnce(options);
|
||
}
|
||
else if (options.abortSignal) {
|
||
throw new Error("A cancel request is currently pending");
|
||
}
|
||
return this.cancelPromise;
|
||
};
|
||
/**
|
||
* Returns the state of the operation.
|
||
*
|
||
* Even though TState will be the same type inside any of the methods of any extension of the Poller class,
|
||
* implementations of the pollers can customize what's shared with the public by writing their own
|
||
* version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller
|
||
* and a public type representing a safe to share subset of the properties of the internal state.
|
||
* Their definition of getOperationState can then return their public type.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```ts
|
||
* // Let's say we have our poller's operation state defined as:
|
||
* interface MyOperationState extends PollOperationState<ResultType> {
|
||
* privateProperty?: string;
|
||
* publicProperty?: string;
|
||
* }
|
||
*
|
||
* // To allow us to have a true separation of public and private state, we have to define another interface:
|
||
* interface PublicState extends PollOperationState<ResultType> {
|
||
* publicProperty?: string;
|
||
* }
|
||
*
|
||
* // Then, we define our Poller as follows:
|
||
* export class MyPoller extends Poller<MyOperationState, ResultType> {
|
||
* // ... More content is needed here ...
|
||
*
|
||
* public getOperationState(): PublicState {
|
||
* const state: PublicState = this.operation.state;
|
||
* return {
|
||
* // Properties from PollOperationState<TResult>
|
||
* isStarted: state.isStarted,
|
||
* isCompleted: state.isCompleted,
|
||
* isCancelled: state.isCancelled,
|
||
* error: state.error,
|
||
* result: state.result,
|
||
*
|
||
* // The only other property needed by PublicState.
|
||
* publicProperty: state.publicProperty
|
||
* }
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* You can see this in the tests of this repository, go to the file:
|
||
* `../test/utils/testPoller.ts`
|
||
* and look for the getOperationState implementation.
|
||
*/
|
||
Poller.prototype.getOperationState = function () {
|
||
return this.operation.state;
|
||
};
|
||
/**
|
||
* Returns the result value of the operation,
|
||
* regardless of the state of the poller.
|
||
* It can return undefined or an incomplete form of the final TResult value
|
||
* depending on the implementation.
|
||
*/
|
||
Poller.prototype.getResult = function () {
|
||
var state = this.operation.state;
|
||
return state.result;
|
||
};
|
||
/**
|
||
* Returns a serialized version of the poller's operation
|
||
* by invoking the operation's toString method.
|
||
*/
|
||
Poller.prototype.toString = function () {
|
||
return this.operation.toString();
|
||
};
|
||
return Poller;
|
||
}());
|
||
|
||
exports.Poller = Poller;
|
||
exports.PollerCancelledError = PollerCancelledError;
|
||
exports.PollerStoppedError = PollerStoppedError;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 890 */,
|
||
/* 891 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLDTDNotation, XMLNode,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
module.exports = XMLDTDNotation = (function(superClass) {
|
||
extend(XMLDTDNotation, superClass);
|
||
|
||
function XMLDTDNotation(parent, name, value) {
|
||
XMLDTDNotation.__super__.constructor.call(this, parent);
|
||
if (name == null) {
|
||
throw new Error("Missing DTD notation name. " + this.debugInfo(name));
|
||
}
|
||
if (!value.pubID && !value.sysID) {
|
||
throw new Error("Public or system identifiers are required for an external entity. " + this.debugInfo(name));
|
||
}
|
||
this.name = this.stringify.name(name);
|
||
this.type = NodeType.NotationDeclaration;
|
||
if (value.pubID != null) {
|
||
this.pubID = this.stringify.dtdPubID(value.pubID);
|
||
}
|
||
if (value.sysID != null) {
|
||
this.sysID = this.stringify.dtdSysID(value.sysID);
|
||
}
|
||
}
|
||
|
||
Object.defineProperty(XMLDTDNotation.prototype, 'publicId', {
|
||
get: function() {
|
||
return this.pubID;
|
||
}
|
||
});
|
||
|
||
Object.defineProperty(XMLDTDNotation.prototype, 'systemId', {
|
||
get: function() {
|
||
return this.sysID;
|
||
}
|
||
});
|
||
|
||
XMLDTDNotation.prototype.toString = function(options) {
|
||
return this.options.writer.dtdNotation(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
return XMLDTDNotation;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 892 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var iterate = __webpack_require__(157)
|
||
, initState = __webpack_require__(903)
|
||
, terminator = __webpack_require__(939)
|
||
;
|
||
|
||
// Public API
|
||
module.exports = serialOrdered;
|
||
// sorting helpers
|
||
module.exports.ascending = ascending;
|
||
module.exports.descending = descending;
|
||
|
||
/**
|
||
* Runs iterator over provided sorted array elements in series
|
||
*
|
||
* @param {array|object} list - array or object (named list) to iterate over
|
||
* @param {function} iterator - iterator to run
|
||
* @param {function} sortMethod - custom sort function
|
||
* @param {function} callback - invoked when all elements processed
|
||
* @returns {function} - jobs terminator
|
||
*/
|
||
function serialOrdered(list, iterator, sortMethod, callback)
|
||
{
|
||
var state = initState(list, sortMethod);
|
||
|
||
iterate(list, iterator, state, function iteratorHandler(error, result)
|
||
{
|
||
if (error)
|
||
{
|
||
callback(error, result);
|
||
return;
|
||
}
|
||
|
||
state.index++;
|
||
|
||
// are we there yet?
|
||
if (state.index < (state['keyedList'] || list).length)
|
||
{
|
||
iterate(list, iterator, state, iteratorHandler);
|
||
return;
|
||
}
|
||
|
||
// done here
|
||
callback(null, state.results);
|
||
});
|
||
|
||
return terminator.bind(state, callback);
|
||
}
|
||
|
||
/*
|
||
* -- Sort methods
|
||
*/
|
||
|
||
/**
|
||
* sort helper to sort array elements in ascending order
|
||
*
|
||
* @param {mixed} a - an item to compare
|
||
* @param {mixed} b - an item to compare
|
||
* @returns {number} - comparison result
|
||
*/
|
||
function ascending(a, b)
|
||
{
|
||
return a < b ? -1 : a > b ? 1 : 0;
|
||
}
|
||
|
||
/**
|
||
* sort helper to sort array elements in descending order
|
||
*
|
||
* @param {mixed} a - an item to compare
|
||
* @param {mixed} b - an item to compare
|
||
* @returns {number} - comparison result
|
||
*/
|
||
function descending(a, b)
|
||
{
|
||
return -1 * ascending(a, b);
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 893 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
__exportStar(__webpack_require__(237), exports);
|
||
__exportStar(__webpack_require__(545), exports);
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
/***/ }),
|
||
/* 894 */,
|
||
/* 895 */,
|
||
/* 896 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = function (xs, fn) {
|
||
var res = [];
|
||
for (var i = 0; i < xs.length; i++) {
|
||
var x = fn(xs[i], i);
|
||
if (isArray(x)) res.push.apply(res, x);
|
||
else res.push(x);
|
||
}
|
||
return res;
|
||
};
|
||
|
||
var isArray = Array.isArray || function (xs) {
|
||
return Object.prototype.toString.call(xs) === '[object Array]';
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 897 */,
|
||
/* 898 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
/*!
|
||
* Copyright (c) 2015, Salesforce.com, Inc.
|
||
* All rights reserved.
|
||
*
|
||
* Redistribution and use in source and binary forms, with or without
|
||
* modification, are permitted provided that the following conditions are met:
|
||
*
|
||
* 1. Redistributions of source code must retain the above copyright notice,
|
||
* this list of conditions and the following disclaimer.
|
||
*
|
||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||
* this list of conditions and the following disclaimer in the documentation
|
||
* and/or other materials provided with the distribution.
|
||
*
|
||
* 3. Neither the name of Salesforce.com nor the names of its contributors may
|
||
* be used to endorse or promote products derived from this software without
|
||
* specific prior written permission.
|
||
*
|
||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
* POSSIBILITY OF SUCH DAMAGE.
|
||
*/
|
||
|
||
const pubsuffix = __webpack_require__(324);
|
||
|
||
// Gives the permutation of all possible domainMatch()es of a given domain. The
|
||
// array is in shortest-to-longest order. Handy for indexing.
|
||
const SPECIAL_USE_DOMAINS = ["local"]; // RFC 6761
|
||
function permuteDomain(domain, allowSpecialUseDomain) {
|
||
let pubSuf = null;
|
||
if (allowSpecialUseDomain) {
|
||
const domainParts = domain.split(".");
|
||
if (SPECIAL_USE_DOMAINS.includes(domainParts[domainParts.length - 1])) {
|
||
pubSuf = `${domainParts[domainParts.length - 2]}.${
|
||
domainParts[domainParts.length - 1]
|
||
}`;
|
||
} else {
|
||
pubSuf = pubsuffix.getPublicSuffix(domain);
|
||
}
|
||
} else {
|
||
pubSuf = pubsuffix.getPublicSuffix(domain);
|
||
}
|
||
|
||
if (!pubSuf) {
|
||
return null;
|
||
}
|
||
if (pubSuf == domain) {
|
||
return [domain];
|
||
}
|
||
|
||
const prefix = domain.slice(0, -(pubSuf.length + 1)); // ".example.com"
|
||
const parts = prefix.split(".").reverse();
|
||
let cur = pubSuf;
|
||
const permutations = [cur];
|
||
while (parts.length) {
|
||
cur = `${parts.shift()}.${cur}`;
|
||
permutations.push(cur);
|
||
}
|
||
return permutations;
|
||
}
|
||
|
||
exports.permuteDomain = permuteDomain;
|
||
|
||
|
||
/***/ }),
|
||
/* 899 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = registerEndpoints;
|
||
|
||
const { Deprecation } = __webpack_require__(692);
|
||
|
||
function registerEndpoints(octokit, routes) {
|
||
Object.keys(routes).forEach(namespaceName => {
|
||
if (!octokit[namespaceName]) {
|
||
octokit[namespaceName] = {};
|
||
}
|
||
|
||
Object.keys(routes[namespaceName]).forEach(apiName => {
|
||
const apiOptions = routes[namespaceName][apiName];
|
||
|
||
const endpointDefaults = ["method", "url", "headers"].reduce(
|
||
(map, key) => {
|
||
if (typeof apiOptions[key] !== "undefined") {
|
||
map[key] = apiOptions[key];
|
||
}
|
||
|
||
return map;
|
||
},
|
||
{}
|
||
);
|
||
|
||
endpointDefaults.request = {
|
||
validate: apiOptions.params
|
||
};
|
||
|
||
let request = octokit.request.defaults(endpointDefaults);
|
||
|
||
// patch request & endpoint methods to support deprecated parameters.
|
||
// Not the most elegant solution, but we don’t want to move deprecation
|
||
// logic into octokit/endpoint.js as it’s out of scope
|
||
const hasDeprecatedParam = Object.keys(apiOptions.params || {}).find(
|
||
key => apiOptions.params[key].deprecated
|
||
);
|
||
if (hasDeprecatedParam) {
|
||
const patch = patchForDeprecation.bind(null, octokit, apiOptions);
|
||
request = patch(
|
||
octokit.request.defaults(endpointDefaults),
|
||
`.${namespaceName}.${apiName}()`
|
||
);
|
||
request.endpoint = patch(
|
||
request.endpoint,
|
||
`.${namespaceName}.${apiName}.endpoint()`
|
||
);
|
||
request.endpoint.merge = patch(
|
||
request.endpoint.merge,
|
||
`.${namespaceName}.${apiName}.endpoint.merge()`
|
||
);
|
||
}
|
||
|
||
if (apiOptions.deprecated) {
|
||
octokit[namespaceName][apiName] = function deprecatedEndpointMethod() {
|
||
octokit.log.warn(
|
||
new Deprecation(`[@octokit/rest] ${apiOptions.deprecated}`)
|
||
);
|
||
octokit[namespaceName][apiName] = request;
|
||
return request.apply(null, arguments);
|
||
};
|
||
|
||
return;
|
||
}
|
||
|
||
octokit[namespaceName][apiName] = request;
|
||
});
|
||
});
|
||
}
|
||
|
||
function patchForDeprecation(octokit, apiOptions, method, methodName) {
|
||
const patchedMethod = options => {
|
||
options = Object.assign({}, options);
|
||
|
||
Object.keys(options).forEach(key => {
|
||
if (apiOptions.params[key] && apiOptions.params[key].deprecated) {
|
||
const aliasKey = apiOptions.params[key].alias;
|
||
|
||
octokit.log.warn(
|
||
new Deprecation(
|
||
`[@octokit/rest] "${key}" parameter is deprecated for "${methodName}". Use "${aliasKey}" instead`
|
||
)
|
||
);
|
||
|
||
if (!(aliasKey in options)) {
|
||
options[aliasKey] = options[key];
|
||
}
|
||
delete options[key];
|
||
}
|
||
});
|
||
|
||
return method(options);
|
||
};
|
||
Object.keys(method).forEach(key => {
|
||
patchedMethod[key] = method[key];
|
||
});
|
||
|
||
return patchedMethod;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 900 */,
|
||
/* 901 */,
|
||
/* 902 */
|
||
/***/ (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 command_1 = __webpack_require__(888);
|
||
const os = __importStar(__webpack_require__(87));
|
||
const path = __importStar(__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. Non-string values will be converted to a string via JSON.stringify
|
||
*/
|
||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
function exportVariable(name, val) {
|
||
const convertedVal = command_1.toCommandValue(val);
|
||
process.env[name] = convertedVal;
|
||
command_1.issueCommand('set-env', { name }, convertedVal);
|
||
}
|
||
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. Non-string values will be converted to a string via JSON.stringify
|
||
*/
|
||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
function setOutput(name, value) {
|
||
command_1.issueCommand('set-output', { name }, value);
|
||
}
|
||
exports.setOutput = setOutput;
|
||
/**
|
||
* Enables or disables the echoing of commands into stdout for the rest of the step.
|
||
* Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
|
||
*
|
||
*/
|
||
function setCommandEcho(enabled) {
|
||
command_1.issue('echo', enabled ? 'on' : 'off');
|
||
}
|
||
exports.setCommandEcho = setCommandEcho;
|
||
//-----------------------------------------------------------------------
|
||
// 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
|
||
//-----------------------------------------------------------------------
|
||
/**
|
||
* Gets whether Actions Step Debug is on or not
|
||
*/
|
||
function isDebug() {
|
||
return process.env['RUNNER_DEBUG'] === '1';
|
||
}
|
||
exports.isDebug = isDebug;
|
||
/**
|
||
* 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. Errors will be converted to string via toString()
|
||
*/
|
||
function error(message) {
|
||
command_1.issue('error', message instanceof Error ? message.toString() : message);
|
||
}
|
||
exports.error = error;
|
||
/**
|
||
* Adds an warning issue
|
||
* @param message warning issue message. Errors will be converted to string via toString()
|
||
*/
|
||
function warning(message) {
|
||
command_1.issue('warning', message instanceof Error ? message.toString() : 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. Non-string values will be converted to a string via JSON.stringify
|
||
*/
|
||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
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
|
||
|
||
/***/ }),
|
||
/* 903 */
|
||
/***/ (function(module) {
|
||
|
||
// API
|
||
module.exports = state;
|
||
|
||
/**
|
||
* Creates initial state object
|
||
* for iteration over list
|
||
*
|
||
* @param {array|object} list - list to iterate over
|
||
* @param {function|null} sortMethod - function to use for keys sort,
|
||
* or `null` to keep them as is
|
||
* @returns {object} - initial state object
|
||
*/
|
||
function state(list, sortMethod)
|
||
{
|
||
var isNamedList = !Array.isArray(list)
|
||
, initState =
|
||
{
|
||
index : 0,
|
||
keyedList: isNamedList || sortMethod ? Object.keys(list) : null,
|
||
jobs : {},
|
||
results : isNamedList ? {} : [],
|
||
size : isNamedList ? Object.keys(list).length : list.length
|
||
}
|
||
;
|
||
|
||
if (sortMethod)
|
||
{
|
||
// sort array keys based on it's values
|
||
// sort object's keys just on own merit
|
||
initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)
|
||
{
|
||
return sortMethod(list[a], list[b]);
|
||
});
|
||
}
|
||
|
||
return initState;
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 904 */,
|
||
/* 905 */,
|
||
/* 906 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=attributes.js.map
|
||
|
||
/***/ }),
|
||
/* 907 */,
|
||
/* 908 */,
|
||
/* 909 */,
|
||
/* 910 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
__exportStar(__webpack_require__(764), exports);
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
/***/ }),
|
||
/* 911 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.TraceAPI = void 0;
|
||
var ProxyTracerProvider_1 = __webpack_require__(394);
|
||
var spancontext_utils_1 = __webpack_require__(629);
|
||
var global_utils_1 = __webpack_require__(525);
|
||
var API_NAME = 'trace';
|
||
/**
|
||
* Singleton object which represents the entry point to the OpenTelemetry Tracing API
|
||
*/
|
||
var TraceAPI = /** @class */ (function () {
|
||
/** Empty private constructor prevents end users from constructing a new instance of the API */
|
||
function TraceAPI() {
|
||
this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
|
||
this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;
|
||
}
|
||
/** Get the singleton instance of the Trace API */
|
||
TraceAPI.getInstance = function () {
|
||
if (!this._instance) {
|
||
this._instance = new TraceAPI();
|
||
}
|
||
return this._instance;
|
||
};
|
||
/**
|
||
* Set the current global tracer. Returns the initialized global tracer provider
|
||
*/
|
||
TraceAPI.prototype.setGlobalTracerProvider = function (provider) {
|
||
this._proxyTracerProvider.setDelegate(provider);
|
||
global_utils_1.registerGlobal(API_NAME, this._proxyTracerProvider);
|
||
return this._proxyTracerProvider;
|
||
};
|
||
/**
|
||
* Returns the global tracer provider.
|
||
*/
|
||
TraceAPI.prototype.getTracerProvider = function () {
|
||
return global_utils_1.getGlobal(API_NAME) || this._proxyTracerProvider;
|
||
};
|
||
/**
|
||
* Returns a tracer from the global tracer provider.
|
||
*/
|
||
TraceAPI.prototype.getTracer = function (name, version) {
|
||
return this.getTracerProvider().getTracer(name, version);
|
||
};
|
||
/** Remove the global tracer provider */
|
||
TraceAPI.prototype.disable = function () {
|
||
global_utils_1.unregisterGlobal(API_NAME);
|
||
this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
|
||
};
|
||
return TraceAPI;
|
||
}());
|
||
exports.TraceAPI = TraceAPI;
|
||
//# sourceMappingURL=trace.js.map
|
||
|
||
/***/ }),
|
||
/* 912 */,
|
||
/* 913 */,
|
||
/* 914 */,
|
||
/* 915 */,
|
||
/* 916 */,
|
||
/* 917 */,
|
||
/* 918 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.NOOP_TEXT_MAP_PROPAGATOR = exports.NoopTextMapPropagator = void 0;
|
||
/**
|
||
* No-op implementations of {@link TextMapPropagator}.
|
||
*/
|
||
var NoopTextMapPropagator = /** @class */ (function () {
|
||
function NoopTextMapPropagator() {
|
||
}
|
||
/** Noop inject function does nothing */
|
||
NoopTextMapPropagator.prototype.inject = function (_context, _carrier) { };
|
||
/** Noop extract function does nothing and returns the input context */
|
||
NoopTextMapPropagator.prototype.extract = function (context, _carrier) {
|
||
return context;
|
||
};
|
||
NoopTextMapPropagator.prototype.fields = function () {
|
||
return [];
|
||
};
|
||
return NoopTextMapPropagator;
|
||
}());
|
||
exports.NoopTextMapPropagator = NoopTextMapPropagator;
|
||
exports.NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();
|
||
//# sourceMappingURL=NoopTextMapPropagator.js.map
|
||
|
||
/***/ }),
|
||
/* 919 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLCharacterData, XMLComment,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
XMLCharacterData = __webpack_require__(639);
|
||
|
||
module.exports = XMLComment = (function(superClass) {
|
||
extend(XMLComment, superClass);
|
||
|
||
function XMLComment(parent, text) {
|
||
XMLComment.__super__.constructor.call(this, parent);
|
||
if (text == null) {
|
||
throw new Error("Missing comment text. " + this.debugInfo());
|
||
}
|
||
this.name = "#comment";
|
||
this.type = NodeType.Comment;
|
||
this.value = this.stringify.comment(text);
|
||
}
|
||
|
||
XMLComment.prototype.clone = function() {
|
||
return Object.create(this);
|
||
};
|
||
|
||
XMLComment.prototype.toString = function(options) {
|
||
return this.options.writer.comment(this, this.options.writer.filterOptions(options));
|
||
};
|
||
|
||
return XMLComment;
|
||
|
||
})(XMLCharacterData);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 920 */,
|
||
/* 921 */,
|
||
/* 922 */,
|
||
/* 923 */
|
||
/***/ (function(module, 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 os = __webpack_require__(87);
|
||
const assert = __importStar(__webpack_require__(357));
|
||
const core = __importStar(__webpack_require__(470));
|
||
const hc = __importStar(__webpack_require__(539));
|
||
const io = __importStar(__webpack_require__(1));
|
||
const tc = __importStar(__webpack_require__(533));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const semver = __importStar(__webpack_require__(280));
|
||
const fs = __webpack_require__(747);
|
||
function getNode(versionSpec, stable, checkLatest, auth, arch = os.arch()) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
// Store manifest data to avoid multiple calls
|
||
let manifest;
|
||
let osPlat = os.platform();
|
||
let osArch = translateArchToDistUrl(arch);
|
||
if (isLtsAlias(versionSpec)) {
|
||
core.info('Attempt to resolve LTS alias from manifest...');
|
||
// No try-catch since it's not possible to resolve LTS alias without manifest
|
||
manifest = yield getManifest(auth);
|
||
versionSpec = resolveLtsAliasFromManifest(versionSpec, stable, manifest);
|
||
}
|
||
if (checkLatest) {
|
||
core.info('Attempt to resolve the latest version from manifest...');
|
||
const resolvedVersion = yield resolveVersionFromManifest(versionSpec, stable, auth, osArch, manifest);
|
||
if (resolvedVersion) {
|
||
versionSpec = resolvedVersion;
|
||
core.info(`Resolved as '${versionSpec}'`);
|
||
}
|
||
else {
|
||
core.info(`Failed to resolve version ${versionSpec} from manifest`);
|
||
}
|
||
}
|
||
// check cache
|
||
let toolPath;
|
||
toolPath = tc.find('node', versionSpec, osArch);
|
||
// If not found in cache, download
|
||
if (toolPath) {
|
||
core.info(`Found in cache @ ${toolPath}`);
|
||
}
|
||
else {
|
||
core.info(`Attempting to download ${versionSpec}...`);
|
||
let downloadPath = '';
|
||
let info = null;
|
||
//
|
||
// Try download from internal distribution (popular versions only)
|
||
//
|
||
try {
|
||
info = yield getInfoFromManifest(versionSpec, stable, auth, osArch, manifest);
|
||
if (info) {
|
||
core.info(`Acquiring ${info.resolvedVersion} - ${info.arch} from ${info.downloadUrl}`);
|
||
downloadPath = yield tc.downloadTool(info.downloadUrl, undefined, auth);
|
||
}
|
||
else {
|
||
core.info('Not found in manifest. Falling back to download directly from Node');
|
||
}
|
||
}
|
||
catch (err) {
|
||
// Rate limit?
|
||
if (err instanceof tc.HTTPError &&
|
||
(err.httpStatusCode === 403 || err.httpStatusCode === 429)) {
|
||
core.info(`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`);
|
||
}
|
||
else {
|
||
core.info(err.message);
|
||
}
|
||
core.debug(err.stack);
|
||
core.info('Falling back to download directly from Node');
|
||
}
|
||
//
|
||
// Download from nodejs.org
|
||
//
|
||
if (!downloadPath) {
|
||
info = yield getInfoFromDist(versionSpec, arch);
|
||
if (!info) {
|
||
throw new Error(`Unable to find Node version '${versionSpec}' for platform ${osPlat} and architecture ${osArch}.`);
|
||
}
|
||
core.info(`Acquiring ${info.resolvedVersion} - ${info.arch} from ${info.downloadUrl}`);
|
||
try {
|
||
downloadPath = yield tc.downloadTool(info.downloadUrl);
|
||
}
|
||
catch (err) {
|
||
if (err instanceof tc.HTTPError && err.httpStatusCode == 404) {
|
||
return yield acquireNodeFromFallbackLocation(info.resolvedVersion, info.arch);
|
||
}
|
||
throw err;
|
||
}
|
||
}
|
||
//
|
||
// Extract
|
||
//
|
||
core.info('Extracting ...');
|
||
let extPath;
|
||
info = info || {}; // satisfy compiler, never null when reaches here
|
||
if (osPlat == 'win32') {
|
||
let _7zPath = path.join(__dirname, '../..', 'externals', '7zr.exe');
|
||
extPath = yield tc.extract7z(downloadPath, undefined, _7zPath);
|
||
// 7z extracts to folder matching file name
|
||
let nestedPath = path.join(extPath, path.basename(info.fileName, '.7z'));
|
||
if (fs.existsSync(nestedPath)) {
|
||
extPath = nestedPath;
|
||
}
|
||
}
|
||
else {
|
||
extPath = yield tc.extractTar(downloadPath, undefined, [
|
||
'xz',
|
||
'--strip',
|
||
'1'
|
||
]);
|
||
}
|
||
//
|
||
// Install into the local tool cache - node extracts with a root folder that matches the fileName downloaded
|
||
//
|
||
core.info('Adding to the cache ...');
|
||
toolPath = yield tc.cacheDir(extPath, 'node', info.resolvedVersion, info.arch);
|
||
core.info('Done');
|
||
}
|
||
//
|
||
// a tool installer initimately knows details about the layout of that tool
|
||
// for example, node binary is in the bin folder after the extract on Mac/Linux.
|
||
// layouts could change by version, by platform etc... but that's the tool installers job
|
||
//
|
||
if (osPlat != 'win32') {
|
||
toolPath = path.join(toolPath, 'bin');
|
||
}
|
||
//
|
||
// prepend the tools path. instructs the agent to prepend for future tasks
|
||
core.addPath(toolPath);
|
||
});
|
||
}
|
||
exports.getNode = getNode;
|
||
function isLtsAlias(versionSpec) {
|
||
return versionSpec.startsWith('lts/');
|
||
}
|
||
function getManifest(auth) {
|
||
core.debug('Getting manifest from actions/node-versions@main');
|
||
return tc.getManifestFromRepo('actions', 'node-versions', auth, 'main');
|
||
}
|
||
function resolveLtsAliasFromManifest(versionSpec, stable, manifest) {
|
||
var _a;
|
||
const alias = (_a = versionSpec.split('lts/')[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
||
if (!alias) {
|
||
throw new Error(`Unable to parse LTS alias for Node version '${versionSpec}'`);
|
||
}
|
||
core.debug(`LTS alias '${alias}' for Node version '${versionSpec}'`);
|
||
// Supported formats are `lts/<alias>` and `lts/*`. Where asterisk means highest possible LTS.
|
||
const release = alias === '*'
|
||
? manifest.find(x => !!x.lts && x.stable === stable)
|
||
: manifest.find(x => { var _a; return ((_a = x.lts) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === alias && x.stable === stable; });
|
||
if (!release) {
|
||
throw new Error(`Unable to find LTS release '${alias}' for Node version '${versionSpec}'.`);
|
||
}
|
||
core.debug(`Found LTS release '${release.version}' for Node version '${versionSpec}'`);
|
||
return release.version.split('.')[0];
|
||
}
|
||
function getInfoFromManifest(versionSpec, stable, auth, osArch = translateArchToDistUrl(os.arch()), manifest) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let info = null;
|
||
if (!manifest) {
|
||
core.debug('No manifest cached');
|
||
manifest = yield getManifest(auth);
|
||
}
|
||
const rel = yield tc.findFromManifest(versionSpec, stable, manifest, osArch);
|
||
if (rel && rel.files.length > 0) {
|
||
info = {};
|
||
info.resolvedVersion = rel.version;
|
||
info.arch = rel.files[0].arch;
|
||
info.downloadUrl = rel.files[0].download_url;
|
||
info.fileName = rel.files[0].filename;
|
||
}
|
||
return info;
|
||
});
|
||
}
|
||
function getInfoFromDist(versionSpec, arch = os.arch()) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let osPlat = os.platform();
|
||
let osArch = translateArchToDistUrl(arch);
|
||
let version;
|
||
version = yield queryDistForMatch(versionSpec, arch);
|
||
if (!version) {
|
||
return null;
|
||
}
|
||
//
|
||
// Download - a tool installer intimately knows how to get the tool (and construct urls)
|
||
//
|
||
version = semver.clean(version) || '';
|
||
let fileName = osPlat == 'win32'
|
||
? `node-v${version}-win-${osArch}`
|
||
: `node-v${version}-${osPlat}-${osArch}`;
|
||
let urlFileName = osPlat == 'win32' ? `${fileName}.7z` : `${fileName}.tar.gz`;
|
||
let url = `https://nodejs.org/dist/v${version}/${urlFileName}`;
|
||
return {
|
||
downloadUrl: url,
|
||
resolvedVersion: version,
|
||
arch: arch,
|
||
fileName: fileName
|
||
};
|
||
});
|
||
}
|
||
function resolveVersionFromManifest(versionSpec, stable, auth, osArch = translateArchToDistUrl(os.arch()), manifest) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
try {
|
||
const info = yield getInfoFromManifest(versionSpec, stable, auth, osArch, manifest);
|
||
return info === null || info === void 0 ? void 0 : info.resolvedVersion;
|
||
}
|
||
catch (err) {
|
||
core.info('Unable to resolve version from manifest...');
|
||
core.debug(err.message);
|
||
}
|
||
});
|
||
}
|
||
// TODO - should we just export this from @actions/tool-cache? Lifted directly from there
|
||
function evaluateVersions(versions, versionSpec) {
|
||
let version = '';
|
||
core.debug(`evaluating ${versions.length} versions`);
|
||
versions = versions.sort((a, b) => {
|
||
if (semver.gt(a, b)) {
|
||
return 1;
|
||
}
|
||
return -1;
|
||
});
|
||
for (let i = versions.length - 1; i >= 0; i--) {
|
||
const potential = versions[i];
|
||
const satisfied = semver.satisfies(potential, versionSpec);
|
||
if (satisfied) {
|
||
version = potential;
|
||
break;
|
||
}
|
||
}
|
||
if (version) {
|
||
core.debug(`matched: ${version}`);
|
||
}
|
||
else {
|
||
core.debug('match not found');
|
||
}
|
||
return version;
|
||
}
|
||
function queryDistForMatch(versionSpec, arch = os.arch()) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let osPlat = os.platform();
|
||
let osArch = translateArchToDistUrl(arch);
|
||
// node offers a json list of versions
|
||
let dataFileName;
|
||
switch (osPlat) {
|
||
case 'linux':
|
||
dataFileName = `linux-${osArch}`;
|
||
break;
|
||
case 'darwin':
|
||
dataFileName = `osx-${osArch}-tar`;
|
||
break;
|
||
case 'win32':
|
||
dataFileName = `win-${osArch}-exe`;
|
||
break;
|
||
default:
|
||
throw new Error(`Unexpected OS '${osPlat}'`);
|
||
}
|
||
let versions = [];
|
||
let nodeVersions = yield module.exports.getVersionsFromDist();
|
||
nodeVersions.forEach((nodeVersion) => {
|
||
// ensure this version supports your os and platform
|
||
if (nodeVersion.files.indexOf(dataFileName) >= 0) {
|
||
versions.push(nodeVersion.version);
|
||
}
|
||
});
|
||
// get the latest version that matches the version spec
|
||
let version = evaluateVersions(versions, versionSpec);
|
||
return version;
|
||
});
|
||
}
|
||
function getVersionsFromDist() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let dataUrl = 'https://nodejs.org/dist/index.json';
|
||
let httpClient = new hc.HttpClient('setup-node', [], {
|
||
allowRetries: true,
|
||
maxRetries: 3
|
||
});
|
||
let response = yield httpClient.getJson(dataUrl);
|
||
return response.result || [];
|
||
});
|
||
}
|
||
exports.getVersionsFromDist = getVersionsFromDist;
|
||
// For non LTS versions of Node, the files we need (for Windows) are sometimes located
|
||
// in a different folder than they normally are for other versions.
|
||
// Normally the format is similar to: https://nodejs.org/dist/v5.10.1/node-v5.10.1-win-x64.7z
|
||
// In this case, there will be two files located at:
|
||
// /dist/v5.10.1/win-x64/node.exe
|
||
// /dist/v5.10.1/win-x64/node.lib
|
||
// If this is not the structure, there may also be two files located at:
|
||
// /dist/v0.12.18/node.exe
|
||
// /dist/v0.12.18/node.lib
|
||
// This method attempts to download and cache the resources from these alternative locations.
|
||
// Note also that the files are normally zipped but in this case they are just an exe
|
||
// and lib file in a folder, not zipped.
|
||
function acquireNodeFromFallbackLocation(version, arch = os.arch()) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let osPlat = os.platform();
|
||
let osArch = translateArchToDistUrl(arch);
|
||
// Create temporary folder to download in to
|
||
const tempDownloadFolder = 'temp_' + Math.floor(Math.random() * 2000000000);
|
||
const tempDirectory = process.env['RUNNER_TEMP'] || '';
|
||
assert.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined');
|
||
const tempDir = path.join(tempDirectory, tempDownloadFolder);
|
||
yield io.mkdirP(tempDir);
|
||
let exeUrl;
|
||
let libUrl;
|
||
try {
|
||
exeUrl = `https://nodejs.org/dist/v${version}/win-${osArch}/node.exe`;
|
||
libUrl = `https://nodejs.org/dist/v${version}/win-${osArch}/node.lib`;
|
||
core.info(`Downloading only node binary from ${exeUrl}`);
|
||
const exePath = yield tc.downloadTool(exeUrl);
|
||
yield io.cp(exePath, path.join(tempDir, 'node.exe'));
|
||
const libPath = yield tc.downloadTool(libUrl);
|
||
yield io.cp(libPath, path.join(tempDir, 'node.lib'));
|
||
}
|
||
catch (err) {
|
||
if (err instanceof tc.HTTPError && err.httpStatusCode == 404) {
|
||
exeUrl = `https://nodejs.org/dist/v${version}/node.exe`;
|
||
libUrl = `https://nodejs.org/dist/v${version}/node.lib`;
|
||
const exePath = yield tc.downloadTool(exeUrl);
|
||
yield io.cp(exePath, path.join(tempDir, 'node.exe'));
|
||
const libPath = yield tc.downloadTool(libUrl);
|
||
yield io.cp(libPath, path.join(tempDir, 'node.lib'));
|
||
}
|
||
else {
|
||
throw err;
|
||
}
|
||
}
|
||
let toolPath = yield tc.cacheDir(tempDir, 'node', version, arch);
|
||
core.addPath(toolPath);
|
||
return toolPath;
|
||
});
|
||
}
|
||
// os.arch does not always match the relative download url, e.g.
|
||
// os.arch == 'arm' != node-v12.13.1-linux-armv7l.tar.gz
|
||
// All other currently supported architectures match, e.g.:
|
||
// os.arch = arm64 => https://nodejs.org/dist/v{VERSION}/node-v{VERSION}-{OS}-arm64.tar.gz
|
||
// os.arch = x64 => https://nodejs.org/dist/v{VERSION}/node-v{VERSION}-{OS}-x64.tar.gz
|
||
function translateArchToDistUrl(arch) {
|
||
switch (arch) {
|
||
case 'arm':
|
||
return 'armv7l';
|
||
default:
|
||
return arch;
|
||
}
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 924 */,
|
||
/* 925 */,
|
||
/* 926 */,
|
||
/* 927 */,
|
||
/* 928 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||
|
||
var tslib = __webpack_require__(748);
|
||
var util = _interopDefault(__webpack_require__(669));
|
||
var os = __webpack_require__(87);
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function log(message) {
|
||
var args = [];
|
||
for (var _i = 1; _i < arguments.length; _i++) {
|
||
args[_i - 1] = arguments[_i];
|
||
}
|
||
process.stderr.write("" + util.format.apply(util, tslib.__spread([message], args)) + os.EOL);
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var debugEnvVariable = (typeof process !== "undefined" && process.env && process.env.DEBUG) || undefined;
|
||
var enabledString;
|
||
var enabledNamespaces = [];
|
||
var skippedNamespaces = [];
|
||
var debuggers = [];
|
||
if (debugEnvVariable) {
|
||
enable(debugEnvVariable);
|
||
}
|
||
var debugObj = Object.assign(function (namespace) {
|
||
return createDebugger(namespace);
|
||
}, {
|
||
enable: enable,
|
||
enabled: enabled,
|
||
disable: disable,
|
||
log: log
|
||
});
|
||
function enable(namespaces) {
|
||
var e_1, _a, e_2, _b;
|
||
enabledString = namespaces;
|
||
enabledNamespaces = [];
|
||
skippedNamespaces = [];
|
||
var wildcard = /\*/g;
|
||
var namespaceList = namespaces.split(",").map(function (ns) { return ns.trim().replace(wildcard, ".*?"); });
|
||
try {
|
||
for (var namespaceList_1 = tslib.__values(namespaceList), namespaceList_1_1 = namespaceList_1.next(); !namespaceList_1_1.done; namespaceList_1_1 = namespaceList_1.next()) {
|
||
var ns = namespaceList_1_1.value;
|
||
if (ns.startsWith("-")) {
|
||
skippedNamespaces.push(new RegExp("^" + ns.substr(1) + "$"));
|
||
}
|
||
else {
|
||
enabledNamespaces.push(new RegExp("^" + ns + "$"));
|
||
}
|
||
}
|
||
}
|
||
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
||
finally {
|
||
try {
|
||
if (namespaceList_1_1 && !namespaceList_1_1.done && (_a = namespaceList_1.return)) _a.call(namespaceList_1);
|
||
}
|
||
finally { if (e_1) throw e_1.error; }
|
||
}
|
||
try {
|
||
for (var debuggers_1 = tslib.__values(debuggers), debuggers_1_1 = debuggers_1.next(); !debuggers_1_1.done; debuggers_1_1 = debuggers_1.next()) {
|
||
var instance = debuggers_1_1.value;
|
||
instance.enabled = enabled(instance.namespace);
|
||
}
|
||
}
|
||
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
||
finally {
|
||
try {
|
||
if (debuggers_1_1 && !debuggers_1_1.done && (_b = debuggers_1.return)) _b.call(debuggers_1);
|
||
}
|
||
finally { if (e_2) throw e_2.error; }
|
||
}
|
||
}
|
||
function enabled(namespace) {
|
||
var e_3, _a, e_4, _b;
|
||
if (namespace.endsWith("*")) {
|
||
return true;
|
||
}
|
||
try {
|
||
for (var skippedNamespaces_1 = tslib.__values(skippedNamespaces), skippedNamespaces_1_1 = skippedNamespaces_1.next(); !skippedNamespaces_1_1.done; skippedNamespaces_1_1 = skippedNamespaces_1.next()) {
|
||
var skipped = skippedNamespaces_1_1.value;
|
||
if (skipped.test(namespace)) {
|
||
return false;
|
||
}
|
||
}
|
||
}
|
||
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
||
finally {
|
||
try {
|
||
if (skippedNamespaces_1_1 && !skippedNamespaces_1_1.done && (_a = skippedNamespaces_1.return)) _a.call(skippedNamespaces_1);
|
||
}
|
||
finally { if (e_3) throw e_3.error; }
|
||
}
|
||
try {
|
||
for (var enabledNamespaces_1 = tslib.__values(enabledNamespaces), enabledNamespaces_1_1 = enabledNamespaces_1.next(); !enabledNamespaces_1_1.done; enabledNamespaces_1_1 = enabledNamespaces_1.next()) {
|
||
var enabledNamespace = enabledNamespaces_1_1.value;
|
||
if (enabledNamespace.test(namespace)) {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
||
finally {
|
||
try {
|
||
if (enabledNamespaces_1_1 && !enabledNamespaces_1_1.done && (_b = enabledNamespaces_1.return)) _b.call(enabledNamespaces_1);
|
||
}
|
||
finally { if (e_4) throw e_4.error; }
|
||
}
|
||
return false;
|
||
}
|
||
function disable() {
|
||
var result = enabledString || "";
|
||
enable("");
|
||
return result;
|
||
}
|
||
function createDebugger(namespace) {
|
||
var newDebugger = Object.assign(debug, {
|
||
enabled: enabled(namespace),
|
||
destroy: destroy,
|
||
log: debugObj.log,
|
||
namespace: namespace,
|
||
extend: extend
|
||
});
|
||
function debug() {
|
||
var args = [];
|
||
for (var _i = 0; _i < arguments.length; _i++) {
|
||
args[_i] = arguments[_i];
|
||
}
|
||
if (!newDebugger.enabled) {
|
||
return;
|
||
}
|
||
if (args.length > 0) {
|
||
args[0] = namespace + " " + args[0];
|
||
}
|
||
newDebugger.log.apply(newDebugger, tslib.__spread(args));
|
||
}
|
||
debuggers.push(newDebugger);
|
||
return newDebugger;
|
||
}
|
||
function destroy() {
|
||
var index = debuggers.indexOf(this);
|
||
if (index >= 0) {
|
||
debuggers.splice(index, 1);
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
function extend(namespace) {
|
||
var newDebugger = createDebugger(this.namespace + ":" + namespace);
|
||
newDebugger.log = this.log;
|
||
return newDebugger;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var registeredLoggers = new Set();
|
||
var logLevelFromEnv = (typeof process !== "undefined" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;
|
||
var azureLogLevel;
|
||
/**
|
||
* The AzureLogger provides a mechanism for overriding where logs are output to.
|
||
* By default, logs are sent to stderr.
|
||
* Override the `log` method to redirect logs to another location.
|
||
*/
|
||
var AzureLogger = debugObj("azure");
|
||
AzureLogger.log = function () {
|
||
var args = [];
|
||
for (var _i = 0; _i < arguments.length; _i++) {
|
||
args[_i] = arguments[_i];
|
||
}
|
||
debugObj.log.apply(debugObj, tslib.__spread(args));
|
||
};
|
||
var AZURE_LOG_LEVELS = ["verbose", "info", "warning", "error"];
|
||
if (logLevelFromEnv) {
|
||
// avoid calling setLogLevel because we don't want a mis-set environment variable to crash
|
||
if (isAzureLogLevel(logLevelFromEnv)) {
|
||
setLogLevel(logLevelFromEnv);
|
||
}
|
||
else {
|
||
console.error("AZURE_LOG_LEVEL set to unknown log level '" + logLevelFromEnv + "'; logging is not enabled. Acceptable values: " + AZURE_LOG_LEVELS.join(", ") + ".");
|
||
}
|
||
}
|
||
/**
|
||
* Immediately enables logging at the specified log level.
|
||
* @param level - The log level to enable for logging.
|
||
* Options from most verbose to least verbose are:
|
||
* - verbose
|
||
* - info
|
||
* - warning
|
||
* - error
|
||
*/
|
||
function setLogLevel(level) {
|
||
var e_1, _a;
|
||
if (level && !isAzureLogLevel(level)) {
|
||
throw new Error("Unknown log level '" + level + "'. Acceptable values: " + AZURE_LOG_LEVELS.join(","));
|
||
}
|
||
azureLogLevel = level;
|
||
var enabledNamespaces = [];
|
||
try {
|
||
for (var registeredLoggers_1 = tslib.__values(registeredLoggers), registeredLoggers_1_1 = registeredLoggers_1.next(); !registeredLoggers_1_1.done; registeredLoggers_1_1 = registeredLoggers_1.next()) {
|
||
var logger = registeredLoggers_1_1.value;
|
||
if (shouldEnable(logger)) {
|
||
enabledNamespaces.push(logger.namespace);
|
||
}
|
||
}
|
||
}
|
||
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
||
finally {
|
||
try {
|
||
if (registeredLoggers_1_1 && !registeredLoggers_1_1.done && (_a = registeredLoggers_1.return)) _a.call(registeredLoggers_1);
|
||
}
|
||
finally { if (e_1) throw e_1.error; }
|
||
}
|
||
debugObj.enable(enabledNamespaces.join(","));
|
||
}
|
||
/**
|
||
* Retrieves the currently specified log level.
|
||
*/
|
||
function getLogLevel() {
|
||
return azureLogLevel;
|
||
}
|
||
var levelMap = {
|
||
verbose: 400,
|
||
info: 300,
|
||
warning: 200,
|
||
error: 100
|
||
};
|
||
/**
|
||
* Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.
|
||
* @param namespace - The name of the SDK package.
|
||
* @hidden
|
||
*/
|
||
function createClientLogger(namespace) {
|
||
var clientRootLogger = AzureLogger.extend(namespace);
|
||
patchLogMethod(AzureLogger, clientRootLogger);
|
||
return {
|
||
error: createLogger(clientRootLogger, "error"),
|
||
warning: createLogger(clientRootLogger, "warning"),
|
||
info: createLogger(clientRootLogger, "info"),
|
||
verbose: createLogger(clientRootLogger, "verbose")
|
||
};
|
||
}
|
||
function patchLogMethod(parent, child) {
|
||
child.log = function () {
|
||
var args = [];
|
||
for (var _i = 0; _i < arguments.length; _i++) {
|
||
args[_i] = arguments[_i];
|
||
}
|
||
parent.log.apply(parent, tslib.__spread(args));
|
||
};
|
||
}
|
||
function createLogger(parent, level) {
|
||
var logger = Object.assign(parent.extend(level), {
|
||
level: level
|
||
});
|
||
patchLogMethod(parent, logger);
|
||
if (shouldEnable(logger)) {
|
||
var enabledNamespaces = debugObj.disable();
|
||
debugObj.enable(enabledNamespaces + "," + logger.namespace);
|
||
}
|
||
registeredLoggers.add(logger);
|
||
return logger;
|
||
}
|
||
function shouldEnable(logger) {
|
||
if (azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]) {
|
||
return true;
|
||
}
|
||
else {
|
||
return false;
|
||
}
|
||
}
|
||
function isAzureLogLevel(logLevel) {
|
||
return AZURE_LOG_LEVELS.includes(logLevel);
|
||
}
|
||
|
||
exports.AzureLogger = AzureLogger;
|
||
exports.createClientLogger = createClientLogger;
|
||
exports.getLogLevel = getLogLevel;
|
||
exports.setLogLevel = setLogLevel;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ }),
|
||
/* 929 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
module.exports = hasNextPage
|
||
|
||
const deprecate = __webpack_require__(370)
|
||
const getPageLinks = __webpack_require__(577)
|
||
|
||
function hasNextPage (link) {
|
||
deprecate(`octokit.hasNextPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
|
||
return getPageLinks(link).next
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 930 */,
|
||
/* 931 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var CacheFilename;
|
||
(function (CacheFilename) {
|
||
CacheFilename["Gzip"] = "cache.tgz";
|
||
CacheFilename["Zstd"] = "cache.tzst";
|
||
})(CacheFilename = exports.CacheFilename || (exports.CacheFilename = {}));
|
||
var CompressionMethod;
|
||
(function (CompressionMethod) {
|
||
CompressionMethod["Gzip"] = "gzip";
|
||
// Long range mode was added to zstd in v1.3.2.
|
||
// This enum is for earlier version of zstd that does not have --long support
|
||
CompressionMethod["ZstdWithoutLong"] = "zstd-without-long";
|
||
CompressionMethod["Zstd"] = "zstd";
|
||
})(CompressionMethod = exports.CompressionMethod || (exports.CompressionMethod = {}));
|
||
// The default number of retry attempts.
|
||
exports.DefaultRetryAttempts = 2;
|
||
// The default delay in milliseconds between retry attempts.
|
||
exports.DefaultRetryDelay = 5000;
|
||
// Socket timeout in milliseconds during download. If no traffic is received
|
||
// over the socket during this period, the socket is destroyed and the download
|
||
// is aborted.
|
||
exports.SocketTimeout = 5000;
|
||
//# sourceMappingURL=constants.js.map
|
||
|
||
/***/ }),
|
||
/* 932 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.SpanStatusCode = void 0;
|
||
/**
|
||
* An enumeration of status codes.
|
||
*/
|
||
var SpanStatusCode;
|
||
(function (SpanStatusCode) {
|
||
/**
|
||
* The default status.
|
||
*/
|
||
SpanStatusCode[SpanStatusCode["UNSET"] = 0] = "UNSET";
|
||
/**
|
||
* The operation has been validated by an Application developer or
|
||
* Operator to have completed successfully.
|
||
*/
|
||
SpanStatusCode[SpanStatusCode["OK"] = 1] = "OK";
|
||
/**
|
||
* The operation contains an error.
|
||
*/
|
||
SpanStatusCode[SpanStatusCode["ERROR"] = 2] = "ERROR";
|
||
})(SpanStatusCode = exports.SpanStatusCode || (exports.SpanStatusCode = {}));
|
||
//# sourceMappingURL=status.js.map
|
||
|
||
/***/ }),
|
||
/* 933 */,
|
||
/* 934 */,
|
||
/* 935 */,
|
||
/* 936 */,
|
||
/* 937 */,
|
||
/* 938 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
//# sourceMappingURL=Baggage.js.map
|
||
|
||
/***/ }),
|
||
/* 939 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var abort = __webpack_require__(566)
|
||
, async = __webpack_require__(751)
|
||
;
|
||
|
||
// API
|
||
module.exports = terminator;
|
||
|
||
/**
|
||
* Terminates jobs in the attached state context
|
||
*
|
||
* @this AsyncKitState#
|
||
* @param {function} callback - final callback to invoke after termination
|
||
*/
|
||
function terminator(callback)
|
||
{
|
||
if (!Object.keys(this.jobs).length)
|
||
{
|
||
return;
|
||
}
|
||
|
||
// fast forward iteration index
|
||
this.index = this.size;
|
||
|
||
// abort jobs
|
||
abort(this);
|
||
|
||
// send back results we have so far
|
||
async(callback)(null, this.results);
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 940 */,
|
||
/* 941 */,
|
||
/* 942 */,
|
||
/* 943 */,
|
||
/* 944 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.default = rng;
|
||
|
||
var _crypto = _interopRequireDefault(__webpack_require__(417));
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate
|
||
|
||
let poolPtr = rnds8Pool.length;
|
||
|
||
function rng() {
|
||
if (poolPtr > rnds8Pool.length - 16) {
|
||
_crypto.default.randomFillSync(rnds8Pool);
|
||
|
||
poolPtr = 0;
|
||
}
|
||
|
||
return rnds8Pool.slice(poolPtr, poolPtr += 16);
|
||
}
|
||
|
||
/***/ }),
|
||
/* 945 */,
|
||
/* 946 */,
|
||
/* 947 */,
|
||
/* 948 */
|
||
/***/ (function(module) {
|
||
|
||
"use strict";
|
||
|
||
|
||
/**
|
||
* Tries to execute a function and discards any error that occurs.
|
||
* @param {Function} fn - Function that might or might not throw an error.
|
||
* @returns {?*} Return-value of the function when no error occurred.
|
||
*/
|
||
module.exports = function(fn) {
|
||
|
||
try { return fn() } catch (e) {}
|
||
|
||
}
|
||
|
||
/***/ }),
|
||
/* 949 */,
|
||
/* 950 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
const url = __webpack_require__(835);
|
||
function getProxyUrl(reqUrl) {
|
||
let usingSsl = reqUrl.protocol === 'https:';
|
||
let proxyUrl;
|
||
if (checkBypass(reqUrl)) {
|
||
return proxyUrl;
|
||
}
|
||
let proxyVar;
|
||
if (usingSsl) {
|
||
proxyVar = process.env["https_proxy"] ||
|
||
process.env["HTTPS_PROXY"];
|
||
}
|
||
else {
|
||
proxyVar = process.env["http_proxy"] ||
|
||
process.env["HTTP_PROXY"];
|
||
}
|
||
if (proxyVar) {
|
||
proxyUrl = url.parse(proxyVar);
|
||
}
|
||
return proxyUrl;
|
||
}
|
||
exports.getProxyUrl = getProxyUrl;
|
||
function checkBypass(reqUrl) {
|
||
if (!reqUrl.hostname) {
|
||
return false;
|
||
}
|
||
let noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || '';
|
||
if (!noProxy) {
|
||
return false;
|
||
}
|
||
// Determine the request port
|
||
let reqPort;
|
||
if (reqUrl.port) {
|
||
reqPort = Number(reqUrl.port);
|
||
}
|
||
else if (reqUrl.protocol === 'http:') {
|
||
reqPort = 80;
|
||
}
|
||
else if (reqUrl.protocol === 'https:') {
|
||
reqPort = 443;
|
||
}
|
||
// Format the request hostname and hostname with port
|
||
let upperReqHosts = [reqUrl.hostname.toUpperCase()];
|
||
if (typeof reqPort === 'number') {
|
||
upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
|
||
}
|
||
// Compare request host against noproxy
|
||
for (let upperNoProxyItem of noProxy.split(',').map(x => x.trim().toUpperCase()).filter(x => x)) {
|
||
if (upperReqHosts.some(x => x === upperNoProxyItem)) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
exports.checkBypass = checkBypass;
|
||
|
||
|
||
/***/ }),
|
||
/* 951 */,
|
||
/* 952 */,
|
||
/* 953 */,
|
||
/* 954 */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = validateAuth;
|
||
|
||
function validateAuth(auth) {
|
||
if (typeof auth === "string") {
|
||
return;
|
||
}
|
||
|
||
if (typeof auth === "function") {
|
||
return;
|
||
}
|
||
|
||
if (auth.username && auth.password) {
|
||
return;
|
||
}
|
||
|
||
if (auth.clientId && auth.clientSecret) {
|
||
return;
|
||
}
|
||
|
||
throw new Error(`Invalid "auth" option: ${JSON.stringify(auth)}`);
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 955 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
const path = __webpack_require__(622);
|
||
const childProcess = __webpack_require__(129);
|
||
const crossSpawn = __webpack_require__(108);
|
||
const stripEof = __webpack_require__(768);
|
||
const npmRunPath = __webpack_require__(621);
|
||
const isStream = __webpack_require__(323);
|
||
const _getStream = __webpack_require__(145);
|
||
const pFinally = __webpack_require__(697);
|
||
const onExit = __webpack_require__(260);
|
||
const errname = __webpack_require__(427);
|
||
const stdio = __webpack_require__(168);
|
||
|
||
const TEN_MEGABYTES = 1000 * 1000 * 10;
|
||
|
||
function handleArgs(cmd, args, opts) {
|
||
let parsed;
|
||
|
||
opts = Object.assign({
|
||
extendEnv: true,
|
||
env: {}
|
||
}, opts);
|
||
|
||
if (opts.extendEnv) {
|
||
opts.env = Object.assign({}, process.env, opts.env);
|
||
}
|
||
|
||
if (opts.__winShell === true) {
|
||
delete opts.__winShell;
|
||
parsed = {
|
||
command: cmd,
|
||
args,
|
||
options: opts,
|
||
file: cmd,
|
||
original: {
|
||
cmd,
|
||
args
|
||
}
|
||
};
|
||
} else {
|
||
parsed = crossSpawn._parse(cmd, args, opts);
|
||
}
|
||
|
||
opts = Object.assign({
|
||
maxBuffer: TEN_MEGABYTES,
|
||
buffer: true,
|
||
stripEof: true,
|
||
preferLocal: true,
|
||
localDir: parsed.options.cwd || process.cwd(),
|
||
encoding: 'utf8',
|
||
reject: true,
|
||
cleanup: true
|
||
}, parsed.options);
|
||
|
||
opts.stdio = stdio(opts);
|
||
|
||
if (opts.preferLocal) {
|
||
opts.env = npmRunPath.env(Object.assign({}, opts, {cwd: opts.localDir}));
|
||
}
|
||
|
||
if (opts.detached) {
|
||
// #115
|
||
opts.cleanup = false;
|
||
}
|
||
|
||
if (process.platform === 'win32' && path.basename(parsed.command) === 'cmd.exe') {
|
||
// #116
|
||
parsed.args.unshift('/q');
|
||
}
|
||
|
||
return {
|
||
cmd: parsed.command,
|
||
args: parsed.args,
|
||
opts,
|
||
parsed
|
||
};
|
||
}
|
||
|
||
function handleInput(spawned, input) {
|
||
if (input === null || input === undefined) {
|
||
return;
|
||
}
|
||
|
||
if (isStream(input)) {
|
||
input.pipe(spawned.stdin);
|
||
} else {
|
||
spawned.stdin.end(input);
|
||
}
|
||
}
|
||
|
||
function handleOutput(opts, val) {
|
||
if (val && opts.stripEof) {
|
||
val = stripEof(val);
|
||
}
|
||
|
||
return val;
|
||
}
|
||
|
||
function handleShell(fn, cmd, opts) {
|
||
let file = '/bin/sh';
|
||
let args = ['-c', cmd];
|
||
|
||
opts = Object.assign({}, opts);
|
||
|
||
if (process.platform === 'win32') {
|
||
opts.__winShell = true;
|
||
file = process.env.comspec || 'cmd.exe';
|
||
args = ['/s', '/c', `"${cmd}"`];
|
||
opts.windowsVerbatimArguments = true;
|
||
}
|
||
|
||
if (opts.shell) {
|
||
file = opts.shell;
|
||
delete opts.shell;
|
||
}
|
||
|
||
return fn(file, args, opts);
|
||
}
|
||
|
||
function getStream(process, stream, {encoding, buffer, maxBuffer}) {
|
||
if (!process[stream]) {
|
||
return null;
|
||
}
|
||
|
||
let ret;
|
||
|
||
if (!buffer) {
|
||
// TODO: Use `ret = util.promisify(stream.finished)(process[stream]);` when targeting Node.js 10
|
||
ret = new Promise((resolve, reject) => {
|
||
process[stream]
|
||
.once('end', resolve)
|
||
.once('error', reject);
|
||
});
|
||
} else if (encoding) {
|
||
ret = _getStream(process[stream], {
|
||
encoding,
|
||
maxBuffer
|
||
});
|
||
} else {
|
||
ret = _getStream.buffer(process[stream], {maxBuffer});
|
||
}
|
||
|
||
return ret.catch(err => {
|
||
err.stream = stream;
|
||
err.message = `${stream} ${err.message}`;
|
||
throw err;
|
||
});
|
||
}
|
||
|
||
function makeError(result, options) {
|
||
const {stdout, stderr} = result;
|
||
|
||
let err = result.error;
|
||
const {code, signal} = result;
|
||
|
||
const {parsed, joinedCmd} = options;
|
||
const timedOut = options.timedOut || false;
|
||
|
||
if (!err) {
|
||
let output = '';
|
||
|
||
if (Array.isArray(parsed.opts.stdio)) {
|
||
if (parsed.opts.stdio[2] !== 'inherit') {
|
||
output += output.length > 0 ? stderr : `\n${stderr}`;
|
||
}
|
||
|
||
if (parsed.opts.stdio[1] !== 'inherit') {
|
||
output += `\n${stdout}`;
|
||
}
|
||
} else if (parsed.opts.stdio !== 'inherit') {
|
||
output = `\n${stderr}${stdout}`;
|
||
}
|
||
|
||
err = new Error(`Command failed: ${joinedCmd}${output}`);
|
||
err.code = code < 0 ? errname(code) : code;
|
||
}
|
||
|
||
err.stdout = stdout;
|
||
err.stderr = stderr;
|
||
err.failed = true;
|
||
err.signal = signal || null;
|
||
err.cmd = joinedCmd;
|
||
err.timedOut = timedOut;
|
||
|
||
return err;
|
||
}
|
||
|
||
function joinCmd(cmd, args) {
|
||
let joinedCmd = cmd;
|
||
|
||
if (Array.isArray(args) && args.length > 0) {
|
||
joinedCmd += ' ' + args.join(' ');
|
||
}
|
||
|
||
return joinedCmd;
|
||
}
|
||
|
||
module.exports = (cmd, args, opts) => {
|
||
const parsed = handleArgs(cmd, args, opts);
|
||
const {encoding, buffer, maxBuffer} = parsed.opts;
|
||
const joinedCmd = joinCmd(cmd, args);
|
||
|
||
let spawned;
|
||
try {
|
||
spawned = childProcess.spawn(parsed.cmd, parsed.args, parsed.opts);
|
||
} catch (err) {
|
||
return Promise.reject(err);
|
||
}
|
||
|
||
let removeExitHandler;
|
||
if (parsed.opts.cleanup) {
|
||
removeExitHandler = onExit(() => {
|
||
spawned.kill();
|
||
});
|
||
}
|
||
|
||
let timeoutId = null;
|
||
let timedOut = false;
|
||
|
||
const cleanup = () => {
|
||
if (timeoutId) {
|
||
clearTimeout(timeoutId);
|
||
timeoutId = null;
|
||
}
|
||
|
||
if (removeExitHandler) {
|
||
removeExitHandler();
|
||
}
|
||
};
|
||
|
||
if (parsed.opts.timeout > 0) {
|
||
timeoutId = setTimeout(() => {
|
||
timeoutId = null;
|
||
timedOut = true;
|
||
spawned.kill(parsed.opts.killSignal);
|
||
}, parsed.opts.timeout);
|
||
}
|
||
|
||
const processDone = new Promise(resolve => {
|
||
spawned.on('exit', (code, signal) => {
|
||
cleanup();
|
||
resolve({code, signal});
|
||
});
|
||
|
||
spawned.on('error', err => {
|
||
cleanup();
|
||
resolve({error: err});
|
||
});
|
||
|
||
if (spawned.stdin) {
|
||
spawned.stdin.on('error', err => {
|
||
cleanup();
|
||
resolve({error: err});
|
||
});
|
||
}
|
||
});
|
||
|
||
function destroy() {
|
||
if (spawned.stdout) {
|
||
spawned.stdout.destroy();
|
||
}
|
||
|
||
if (spawned.stderr) {
|
||
spawned.stderr.destroy();
|
||
}
|
||
}
|
||
|
||
const handlePromise = () => pFinally(Promise.all([
|
||
processDone,
|
||
getStream(spawned, 'stdout', {encoding, buffer, maxBuffer}),
|
||
getStream(spawned, 'stderr', {encoding, buffer, maxBuffer})
|
||
]).then(arr => {
|
||
const result = arr[0];
|
||
result.stdout = arr[1];
|
||
result.stderr = arr[2];
|
||
|
||
if (result.error || result.code !== 0 || result.signal !== null) {
|
||
const err = makeError(result, {
|
||
joinedCmd,
|
||
parsed,
|
||
timedOut
|
||
});
|
||
|
||
// TODO: missing some timeout logic for killed
|
||
// https://github.com/nodejs/node/blob/master/lib/child_process.js#L203
|
||
// err.killed = spawned.killed || killed;
|
||
err.killed = err.killed || spawned.killed;
|
||
|
||
if (!parsed.opts.reject) {
|
||
return err;
|
||
}
|
||
|
||
throw err;
|
||
}
|
||
|
||
return {
|
||
stdout: handleOutput(parsed.opts, result.stdout),
|
||
stderr: handleOutput(parsed.opts, result.stderr),
|
||
code: 0,
|
||
failed: false,
|
||
killed: false,
|
||
signal: null,
|
||
cmd: joinedCmd,
|
||
timedOut: false
|
||
};
|
||
}), destroy);
|
||
|
||
crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed);
|
||
|
||
handleInput(spawned, parsed.opts.input);
|
||
|
||
spawned.then = (onfulfilled, onrejected) => handlePromise().then(onfulfilled, onrejected);
|
||
spawned.catch = onrejected => handlePromise().catch(onrejected);
|
||
|
||
return spawned;
|
||
};
|
||
|
||
// TODO: set `stderr: 'ignore'` when that option is implemented
|
||
module.exports.stdout = (...args) => module.exports(...args).then(x => x.stdout);
|
||
|
||
// TODO: set `stdout: 'ignore'` when that option is implemented
|
||
module.exports.stderr = (...args) => module.exports(...args).then(x => x.stderr);
|
||
|
||
module.exports.shell = (cmd, opts) => handleShell(module.exports, cmd, opts);
|
||
|
||
module.exports.sync = (cmd, args, opts) => {
|
||
const parsed = handleArgs(cmd, args, opts);
|
||
const joinedCmd = joinCmd(cmd, args);
|
||
|
||
if (isStream(parsed.opts.input)) {
|
||
throw new TypeError('The `input` option cannot be a stream in sync mode');
|
||
}
|
||
|
||
const result = childProcess.spawnSync(parsed.cmd, parsed.args, parsed.opts);
|
||
result.code = result.status;
|
||
|
||
if (result.error || result.status !== 0 || result.signal !== null) {
|
||
const err = makeError(result, {
|
||
joinedCmd,
|
||
parsed
|
||
});
|
||
|
||
if (!parsed.opts.reject) {
|
||
return err;
|
||
}
|
||
|
||
throw err;
|
||
}
|
||
|
||
return {
|
||
stdout: handleOutput(parsed.opts, result.stdout),
|
||
stderr: handleOutput(parsed.opts, result.stderr),
|
||
code: 0,
|
||
failed: false,
|
||
signal: null,
|
||
cmd: joinedCmd,
|
||
timedOut: false
|
||
};
|
||
};
|
||
|
||
module.exports.shellSync = (cmd, opts) => handleShell(module.exports.sync, cmd, opts);
|
||
|
||
|
||
/***/ }),
|
||
/* 956 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
var NodeType, XMLDummy, XMLNode,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
XMLNode = __webpack_require__(257);
|
||
|
||
NodeType = __webpack_require__(683);
|
||
|
||
module.exports = XMLDummy = (function(superClass) {
|
||
extend(XMLDummy, superClass);
|
||
|
||
function XMLDummy(parent) {
|
||
XMLDummy.__super__.constructor.call(this, parent);
|
||
this.type = NodeType.Dummy;
|
||
}
|
||
|
||
XMLDummy.prototype.clone = function() {
|
||
return Object.create(this);
|
||
};
|
||
|
||
XMLDummy.prototype.toString = function(options) {
|
||
return '';
|
||
};
|
||
|
||
return XMLDummy;
|
||
|
||
})(XMLNode);
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 957 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.MatchKind = void 0;
|
||
/**
|
||
* Indicates whether a pattern matches a path
|
||
*/
|
||
var MatchKind;
|
||
(function (MatchKind) {
|
||
/** Not matched */
|
||
MatchKind[MatchKind["None"] = 0] = "None";
|
||
/** Matched if the path is a directory */
|
||
MatchKind[MatchKind["Directory"] = 1] = "Directory";
|
||
/** Matched if the path is a regular file */
|
||
MatchKind[MatchKind["File"] = 2] = "File";
|
||
/** Matched */
|
||
MatchKind[MatchKind["All"] = 3] = "All";
|
||
})(MatchKind = exports.MatchKind || (exports.MatchKind = {}));
|
||
//# sourceMappingURL=internal-match-kind.js.map
|
||
|
||
/***/ }),
|
||
/* 958 */,
|
||
/* 959 */,
|
||
/* 960 */,
|
||
/* 961 */,
|
||
/* 962 */,
|
||
/* 963 */,
|
||
/* 964 */,
|
||
/* 965 */,
|
||
/* 966 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
const {PassThrough} = __webpack_require__(794);
|
||
|
||
module.exports = options => {
|
||
options = Object.assign({}, options);
|
||
|
||
const {array} = options;
|
||
let {encoding} = options;
|
||
const buffer = encoding === 'buffer';
|
||
let objectMode = false;
|
||
|
||
if (array) {
|
||
objectMode = !(encoding || buffer);
|
||
} else {
|
||
encoding = encoding || 'utf8';
|
||
}
|
||
|
||
if (buffer) {
|
||
encoding = null;
|
||
}
|
||
|
||
let len = 0;
|
||
const ret = [];
|
||
const stream = new PassThrough({objectMode});
|
||
|
||
if (encoding) {
|
||
stream.setEncoding(encoding);
|
||
}
|
||
|
||
stream.on('data', chunk => {
|
||
ret.push(chunk);
|
||
|
||
if (objectMode) {
|
||
len = ret.length;
|
||
} else {
|
||
len += chunk.length;
|
||
}
|
||
});
|
||
|
||
stream.getBufferedValue = () => {
|
||
if (array) {
|
||
return ret;
|
||
}
|
||
|
||
return buffer ? Buffer.concat(ret, len) : ret.join('');
|
||
};
|
||
|
||
stream.getBufferedLength = () => len;
|
||
|
||
return stream;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 967 */,
|
||
/* 968 */,
|
||
/* 969 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
var wrappy = __webpack_require__(11)
|
||
module.exports = wrappy(once)
|
||
module.exports.strict = wrappy(onceStrict)
|
||
|
||
once.proto = once(function () {
|
||
Object.defineProperty(Function.prototype, 'once', {
|
||
value: function () {
|
||
return once(this)
|
||
},
|
||
configurable: true
|
||
})
|
||
|
||
Object.defineProperty(Function.prototype, 'onceStrict', {
|
||
value: function () {
|
||
return onceStrict(this)
|
||
},
|
||
configurable: true
|
||
})
|
||
})
|
||
|
||
function once (fn) {
|
||
var f = function () {
|
||
if (f.called) return f.value
|
||
f.called = true
|
||
return f.value = fn.apply(this, arguments)
|
||
}
|
||
f.called = false
|
||
return f
|
||
}
|
||
|
||
function onceStrict (fn) {
|
||
var f = function () {
|
||
if (f.called)
|
||
throw new Error(f.onceError)
|
||
f.called = true
|
||
return f.value = fn.apply(this, arguments)
|
||
}
|
||
var name = fn.name || 'Function wrapped with `once`'
|
||
f.onceError = name + " shouldn't be called more than once"
|
||
f.called = false
|
||
return f
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 970 */,
|
||
/* 971 */,
|
||
/* 972 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.safeTrimTrailingSeparator = exports.normalizeSeparators = exports.hasRoot = exports.hasAbsoluteRoot = exports.ensureAbsoluteRoot = exports.dirname = void 0;
|
||
const path = __importStar(__webpack_require__(622));
|
||
const assert_1 = __importDefault(__webpack_require__(357));
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
/**
|
||
* Similar to path.dirname except normalizes the path separators and slightly better handling for Windows UNC paths.
|
||
*
|
||
* For example, on Linux/macOS:
|
||
* - `/ => /`
|
||
* - `/hello => /`
|
||
*
|
||
* For example, on Windows:
|
||
* - `C:\ => C:\`
|
||
* - `C:\hello => C:\`
|
||
* - `C: => C:`
|
||
* - `C:hello => C:`
|
||
* - `\ => \`
|
||
* - `\hello => \`
|
||
* - `\\hello => \\hello`
|
||
* - `\\hello\world => \\hello\world`
|
||
*/
|
||
function dirname(p) {
|
||
// Normalize slashes and trim unnecessary trailing slash
|
||
p = safeTrimTrailingSeparator(p);
|
||
// Windows UNC root, e.g. \\hello or \\hello\world
|
||
if (IS_WINDOWS && /^\\\\[^\\]+(\\[^\\]+)?$/.test(p)) {
|
||
return p;
|
||
}
|
||
// Get dirname
|
||
let result = path.dirname(p);
|
||
// Trim trailing slash for Windows UNC root, e.g. \\hello\world\
|
||
if (IS_WINDOWS && /^\\\\[^\\]+\\[^\\]+\\$/.test(result)) {
|
||
result = safeTrimTrailingSeparator(result);
|
||
}
|
||
return result;
|
||
}
|
||
exports.dirname = dirname;
|
||
/**
|
||
* Roots the path if not already rooted. On Windows, relative roots like `\`
|
||
* or `C:` are expanded based on the current working directory.
|
||
*/
|
||
function ensureAbsoluteRoot(root, itemPath) {
|
||
assert_1.default(root, `ensureAbsoluteRoot parameter 'root' must not be empty`);
|
||
assert_1.default(itemPath, `ensureAbsoluteRoot parameter 'itemPath' must not be empty`);
|
||
// Already rooted
|
||
if (hasAbsoluteRoot(itemPath)) {
|
||
return itemPath;
|
||
}
|
||
// Windows
|
||
if (IS_WINDOWS) {
|
||
// Check for itemPath like C: or C:foo
|
||
if (itemPath.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)) {
|
||
let cwd = process.cwd();
|
||
assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
|
||
// Drive letter matches cwd? Expand to cwd
|
||
if (itemPath[0].toUpperCase() === cwd[0].toUpperCase()) {
|
||
// Drive only, e.g. C:
|
||
if (itemPath.length === 2) {
|
||
// Preserve specified drive letter case (upper or lower)
|
||
return `${itemPath[0]}:\\${cwd.substr(3)}`;
|
||
}
|
||
// Drive + path, e.g. C:foo
|
||
else {
|
||
if (!cwd.endsWith('\\')) {
|
||
cwd += '\\';
|
||
}
|
||
// Preserve specified drive letter case (upper or lower)
|
||
return `${itemPath[0]}:\\${cwd.substr(3)}${itemPath.substr(2)}`;
|
||
}
|
||
}
|
||
// Different drive
|
||
else {
|
||
return `${itemPath[0]}:\\${itemPath.substr(2)}`;
|
||
}
|
||
}
|
||
// Check for itemPath like \ or \foo
|
||
else if (normalizeSeparators(itemPath).match(/^\\$|^\\[^\\]/)) {
|
||
const cwd = process.cwd();
|
||
assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
|
||
return `${cwd[0]}:\\${itemPath.substr(1)}`;
|
||
}
|
||
}
|
||
assert_1.default(hasAbsoluteRoot(root), `ensureAbsoluteRoot parameter 'root' must have an absolute root`);
|
||
// Otherwise ensure root ends with a separator
|
||
if (root.endsWith('/') || (IS_WINDOWS && root.endsWith('\\'))) {
|
||
// Intentionally empty
|
||
}
|
||
else {
|
||
// Append separator
|
||
root += path.sep;
|
||
}
|
||
return root + itemPath;
|
||
}
|
||
exports.ensureAbsoluteRoot = ensureAbsoluteRoot;
|
||
/**
|
||
* On Linux/macOS, true if path starts with `/`. On Windows, true for paths like:
|
||
* `\\hello\share` and `C:\hello` (and using alternate separator).
|
||
*/
|
||
function hasAbsoluteRoot(itemPath) {
|
||
assert_1.default(itemPath, `hasAbsoluteRoot parameter 'itemPath' must not be empty`);
|
||
// Normalize separators
|
||
itemPath = normalizeSeparators(itemPath);
|
||
// Windows
|
||
if (IS_WINDOWS) {
|
||
// E.g. \\hello\share or C:\hello
|
||
return itemPath.startsWith('\\\\') || /^[A-Z]:\\/i.test(itemPath);
|
||
}
|
||
// E.g. /hello
|
||
return itemPath.startsWith('/');
|
||
}
|
||
exports.hasAbsoluteRoot = hasAbsoluteRoot;
|
||
/**
|
||
* On Linux/macOS, true if path starts with `/`. On Windows, true for paths like:
|
||
* `\`, `\hello`, `\\hello\share`, `C:`, and `C:\hello` (and using alternate separator).
|
||
*/
|
||
function hasRoot(itemPath) {
|
||
assert_1.default(itemPath, `isRooted parameter 'itemPath' must not be empty`);
|
||
// Normalize separators
|
||
itemPath = normalizeSeparators(itemPath);
|
||
// Windows
|
||
if (IS_WINDOWS) {
|
||
// E.g. \ or \hello or \\hello
|
||
// E.g. C: or C:\hello
|
||
return itemPath.startsWith('\\') || /^[A-Z]:/i.test(itemPath);
|
||
}
|
||
// E.g. /hello
|
||
return itemPath.startsWith('/');
|
||
}
|
||
exports.hasRoot = hasRoot;
|
||
/**
|
||
* Removes redundant slashes and converts `/` to `\` on Windows
|
||
*/
|
||
function normalizeSeparators(p) {
|
||
p = p || '';
|
||
// Windows
|
||
if (IS_WINDOWS) {
|
||
// Convert slashes on Windows
|
||
p = p.replace(/\//g, '\\');
|
||
// Remove redundant slashes
|
||
const isUnc = /^\\\\+[^\\]/.test(p); // e.g. \\hello
|
||
return (isUnc ? '\\' : '') + p.replace(/\\\\+/g, '\\'); // preserve leading \\ for UNC
|
||
}
|
||
// Remove redundant slashes
|
||
return p.replace(/\/\/+/g, '/');
|
||
}
|
||
exports.normalizeSeparators = normalizeSeparators;
|
||
/**
|
||
* Normalizes the path separators and trims the trailing separator (when safe).
|
||
* For example, `/foo/ => /foo` but `/ => /`
|
||
*/
|
||
function safeTrimTrailingSeparator(p) {
|
||
// Short-circuit if empty
|
||
if (!p) {
|
||
return '';
|
||
}
|
||
// Normalize separators
|
||
p = normalizeSeparators(p);
|
||
// No trailing slash
|
||
if (!p.endsWith(path.sep)) {
|
||
return p;
|
||
}
|
||
// Check '/' on Linux/macOS and '\' on Windows
|
||
if (p === path.sep) {
|
||
return p;
|
||
}
|
||
// On Windows check if drive root. E.g. C:\
|
||
if (IS_WINDOWS && /^[A-Z]:\\$/i.test(p)) {
|
||
return p;
|
||
}
|
||
// Otherwise trim trailing slash
|
||
return p.substr(0, p.length - 1);
|
||
}
|
||
exports.safeTrimTrailingSeparator = safeTrimTrailingSeparator;
|
||
//# sourceMappingURL=internal-path-helper.js.map
|
||
|
||
/***/ }),
|
||
/* 973 */,
|
||
/* 974 */,
|
||
/* 975 */
|
||
/***/ (function(__unusedmodule, exports) {
|
||
|
||
"use strict";
|
||
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.TraceFlags = void 0;
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
var TraceFlags;
|
||
(function (TraceFlags) {
|
||
/** Represents no flag set. */
|
||
TraceFlags[TraceFlags["NONE"] = 0] = "NONE";
|
||
/** Bit to represent whether trace is sampled in trace flags. */
|
||
TraceFlags[TraceFlags["SAMPLED"] = 1] = "SAMPLED";
|
||
})(TraceFlags = exports.TraceFlags || (exports.TraceFlags = {}));
|
||
//# sourceMappingURL=trace_flags.js.map
|
||
|
||
/***/ }),
|
||
/* 976 */,
|
||
/* 977 */,
|
||
/* 978 */,
|
||
/* 979 */
|
||
/***/ (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 core = __importStar(__webpack_require__(902));
|
||
/**
|
||
* Internal class for retries
|
||
*/
|
||
class RetryHelper {
|
||
constructor(maxAttempts, minSeconds, maxSeconds) {
|
||
if (maxAttempts < 1) {
|
||
throw new Error('max attempts should be greater than or equal to 1');
|
||
}
|
||
this.maxAttempts = maxAttempts;
|
||
this.minSeconds = Math.floor(minSeconds);
|
||
this.maxSeconds = Math.floor(maxSeconds);
|
||
if (this.minSeconds > this.maxSeconds) {
|
||
throw new Error('min seconds should be less than or equal to max seconds');
|
||
}
|
||
}
|
||
execute(action, isRetryable) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let attempt = 1;
|
||
while (attempt < this.maxAttempts) {
|
||
// Try
|
||
try {
|
||
return yield action();
|
||
}
|
||
catch (err) {
|
||
if (isRetryable && !isRetryable(err)) {
|
||
throw err;
|
||
}
|
||
core.info(err.message);
|
||
}
|
||
// Sleep
|
||
const seconds = this.getSleepAmount();
|
||
core.info(`Waiting ${seconds} seconds before trying again`);
|
||
yield this.sleep(seconds);
|
||
attempt++;
|
||
}
|
||
// Last attempt
|
||
return yield action();
|
||
});
|
||
}
|
||
getSleepAmount() {
|
||
return (Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) +
|
||
this.minSeconds);
|
||
}
|
||
sleep(seconds) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
return new Promise(resolve => setTimeout(resolve, seconds * 1000));
|
||
});
|
||
}
|
||
}
|
||
exports.RetryHelper = RetryHelper;
|
||
//# sourceMappingURL=retry-helper.js.map
|
||
|
||
/***/ }),
|
||
/* 980 */,
|
||
/* 981 */,
|
||
/* 982 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.Pattern = void 0;
|
||
const os = __importStar(__webpack_require__(87));
|
||
const path = __importStar(__webpack_require__(622));
|
||
const pathHelper = __importStar(__webpack_require__(653));
|
||
const assert_1 = __importDefault(__webpack_require__(357));
|
||
const minimatch_1 = __webpack_require__(93);
|
||
const internal_match_kind_1 = __webpack_require__(957);
|
||
const internal_path_1 = __webpack_require__(33);
|
||
const IS_WINDOWS = process.platform === 'win32';
|
||
class Pattern {
|
||
constructor(patternOrNegate, isImplicitPattern = false, segments, homedir) {
|
||
/**
|
||
* Indicates whether matches should be excluded from the result set
|
||
*/
|
||
this.negate = false;
|
||
// Pattern overload
|
||
let pattern;
|
||
if (typeof patternOrNegate === 'string') {
|
||
pattern = patternOrNegate.trim();
|
||
}
|
||
// Segments overload
|
||
else {
|
||
// Convert to pattern
|
||
segments = segments || [];
|
||
assert_1.default(segments.length, `Parameter 'segments' must not empty`);
|
||
const root = Pattern.getLiteral(segments[0]);
|
||
assert_1.default(root && pathHelper.hasAbsoluteRoot(root), `Parameter 'segments' first element must be a root path`);
|
||
pattern = new internal_path_1.Path(segments).toString().trim();
|
||
if (patternOrNegate) {
|
||
pattern = `!${pattern}`;
|
||
}
|
||
}
|
||
// Negate
|
||
while (pattern.startsWith('!')) {
|
||
this.negate = !this.negate;
|
||
pattern = pattern.substr(1).trim();
|
||
}
|
||
// Normalize slashes and ensures absolute root
|
||
pattern = Pattern.fixupPattern(pattern, homedir);
|
||
// Segments
|
||
this.segments = new internal_path_1.Path(pattern).segments;
|
||
// Trailing slash indicates the pattern should only match directories, not regular files
|
||
this.trailingSeparator = pathHelper
|
||
.normalizeSeparators(pattern)
|
||
.endsWith(path.sep);
|
||
pattern = pathHelper.safeTrimTrailingSeparator(pattern);
|
||
// Search path (literal path prior to the first glob segment)
|
||
let foundGlob = false;
|
||
const searchSegments = this.segments
|
||
.map(x => Pattern.getLiteral(x))
|
||
.filter(x => !foundGlob && !(foundGlob = x === ''));
|
||
this.searchPath = new internal_path_1.Path(searchSegments).toString();
|
||
// Root RegExp (required when determining partial match)
|
||
this.rootRegExp = new RegExp(Pattern.regExpEscape(searchSegments[0]), IS_WINDOWS ? 'i' : '');
|
||
this.isImplicitPattern = isImplicitPattern;
|
||
// Create minimatch
|
||
const minimatchOptions = {
|
||
dot: true,
|
||
nobrace: true,
|
||
nocase: IS_WINDOWS,
|
||
nocomment: true,
|
||
noext: true,
|
||
nonegate: true
|
||
};
|
||
pattern = IS_WINDOWS ? pattern.replace(/\\/g, '/') : pattern;
|
||
this.minimatch = new minimatch_1.Minimatch(pattern, minimatchOptions);
|
||
}
|
||
/**
|
||
* Matches the pattern against the specified path
|
||
*/
|
||
match(itemPath) {
|
||
// Last segment is globstar?
|
||
if (this.segments[this.segments.length - 1] === '**') {
|
||
// Normalize slashes
|
||
itemPath = pathHelper.normalizeSeparators(itemPath);
|
||
// Append a trailing slash. Otherwise Minimatch will not match the directory immediately
|
||
// preceding the globstar. For example, given the pattern `/foo/**`, Minimatch returns
|
||
// false for `/foo` but returns true for `/foo/`. Append a trailing slash to handle that quirk.
|
||
if (!itemPath.endsWith(path.sep) && this.isImplicitPattern === false) {
|
||
// Note, this is safe because the constructor ensures the pattern has an absolute root.
|
||
// For example, formats like C: and C:foo on Windows are resolved to an absolute root.
|
||
itemPath = `${itemPath}${path.sep}`;
|
||
}
|
||
}
|
||
else {
|
||
// Normalize slashes and trim unnecessary trailing slash
|
||
itemPath = pathHelper.safeTrimTrailingSeparator(itemPath);
|
||
}
|
||
// Match
|
||
if (this.minimatch.match(itemPath)) {
|
||
return this.trailingSeparator ? internal_match_kind_1.MatchKind.Directory : internal_match_kind_1.MatchKind.All;
|
||
}
|
||
return internal_match_kind_1.MatchKind.None;
|
||
}
|
||
/**
|
||
* Indicates whether the pattern may match descendants of the specified path
|
||
*/
|
||
partialMatch(itemPath) {
|
||
// Normalize slashes and trim unnecessary trailing slash
|
||
itemPath = pathHelper.safeTrimTrailingSeparator(itemPath);
|
||
// matchOne does not handle root path correctly
|
||
if (pathHelper.dirname(itemPath) === itemPath) {
|
||
return this.rootRegExp.test(itemPath);
|
||
}
|
||
return this.minimatch.matchOne(itemPath.split(IS_WINDOWS ? /\\+/ : /\/+/), this.minimatch.set[0], true);
|
||
}
|
||
/**
|
||
* Escapes glob patterns within a path
|
||
*/
|
||
static globEscape(s) {
|
||
return (IS_WINDOWS ? s : s.replace(/\\/g, '\\\\')) // escape '\' on Linux/macOS
|
||
.replace(/(\[)(?=[^/]+\])/g, '[[]') // escape '[' when ']' follows within the path segment
|
||
.replace(/\?/g, '[?]') // escape '?'
|
||
.replace(/\*/g, '[*]'); // escape '*'
|
||
}
|
||
/**
|
||
* Normalizes slashes and ensures absolute root
|
||
*/
|
||
static fixupPattern(pattern, homedir) {
|
||
// Empty
|
||
assert_1.default(pattern, 'pattern cannot be empty');
|
||
// Must not contain `.` segment, unless first segment
|
||
// Must not contain `..` segment
|
||
const literalSegments = new internal_path_1.Path(pattern).segments.map(x => Pattern.getLiteral(x));
|
||
assert_1.default(literalSegments.every((x, i) => (x !== '.' || i === 0) && x !== '..'), `Invalid pattern '${pattern}'. Relative pathing '.' and '..' is not allowed.`);
|
||
// Must not contain globs in root, e.g. Windows UNC path \\foo\b*r
|
||
assert_1.default(!pathHelper.hasRoot(pattern) || literalSegments[0], `Invalid pattern '${pattern}'. Root segment must not contain globs.`);
|
||
// Normalize slashes
|
||
pattern = pathHelper.normalizeSeparators(pattern);
|
||
// Replace leading `.` segment
|
||
if (pattern === '.' || pattern.startsWith(`.${path.sep}`)) {
|
||
pattern = Pattern.globEscape(process.cwd()) + pattern.substr(1);
|
||
}
|
||
// Replace leading `~` segment
|
||
else if (pattern === '~' || pattern.startsWith(`~${path.sep}`)) {
|
||
homedir = homedir || os.homedir();
|
||
assert_1.default(homedir, 'Unable to determine HOME directory');
|
||
assert_1.default(pathHelper.hasAbsoluteRoot(homedir), `Expected HOME directory to be a rooted path. Actual '${homedir}'`);
|
||
pattern = Pattern.globEscape(homedir) + pattern.substr(1);
|
||
}
|
||
// Replace relative drive root, e.g. pattern is C: or C:foo
|
||
else if (IS_WINDOWS &&
|
||
(pattern.match(/^[A-Z]:$/i) || pattern.match(/^[A-Z]:[^\\]/i))) {
|
||
let root = pathHelper.ensureAbsoluteRoot('C:\\dummy-root', pattern.substr(0, 2));
|
||
if (pattern.length > 2 && !root.endsWith('\\')) {
|
||
root += '\\';
|
||
}
|
||
pattern = Pattern.globEscape(root) + pattern.substr(2);
|
||
}
|
||
// Replace relative root, e.g. pattern is \ or \foo
|
||
else if (IS_WINDOWS && (pattern === '\\' || pattern.match(/^\\[^\\]/))) {
|
||
let root = pathHelper.ensureAbsoluteRoot('C:\\dummy-root', '\\');
|
||
if (!root.endsWith('\\')) {
|
||
root += '\\';
|
||
}
|
||
pattern = Pattern.globEscape(root) + pattern.substr(1);
|
||
}
|
||
// Otherwise ensure absolute root
|
||
else {
|
||
pattern = pathHelper.ensureAbsoluteRoot(Pattern.globEscape(process.cwd()), pattern);
|
||
}
|
||
return pathHelper.normalizeSeparators(pattern);
|
||
}
|
||
/**
|
||
* Attempts to unescape a pattern segment to create a literal path segment.
|
||
* Otherwise returns empty string.
|
||
*/
|
||
static getLiteral(segment) {
|
||
let literal = '';
|
||
for (let i = 0; i < segment.length; i++) {
|
||
const c = segment[i];
|
||
// Escape
|
||
if (c === '\\' && !IS_WINDOWS && i + 1 < segment.length) {
|
||
literal += segment[++i];
|
||
continue;
|
||
}
|
||
// Wildcard
|
||
else if (c === '*' || c === '?') {
|
||
return '';
|
||
}
|
||
// Character set
|
||
else if (c === '[' && i + 1 < segment.length) {
|
||
let set = '';
|
||
let closed = -1;
|
||
for (let i2 = i + 1; i2 < segment.length; i2++) {
|
||
const c2 = segment[i2];
|
||
// Escape
|
||
if (c2 === '\\' && !IS_WINDOWS && i2 + 1 < segment.length) {
|
||
set += segment[++i2];
|
||
continue;
|
||
}
|
||
// Closed
|
||
else if (c2 === ']') {
|
||
closed = i2;
|
||
break;
|
||
}
|
||
// Otherwise
|
||
else {
|
||
set += c2;
|
||
}
|
||
}
|
||
// Closed?
|
||
if (closed >= 0) {
|
||
// Cannot convert
|
||
if (set.length > 1) {
|
||
return '';
|
||
}
|
||
// Convert to literal
|
||
if (set) {
|
||
literal += set;
|
||
i = closed;
|
||
continue;
|
||
}
|
||
}
|
||
// Otherwise fall thru
|
||
}
|
||
// Append
|
||
literal += c;
|
||
}
|
||
return literal;
|
||
}
|
||
/**
|
||
* Escapes regexp special characters
|
||
* https://javascript.info/regexp-escaping
|
||
*/
|
||
static regExpEscape(s) {
|
||
return s.replace(/[[\\^$.|?*+()]/g, '\\$&');
|
||
}
|
||
}
|
||
exports.Pattern = Pattern;
|
||
//# sourceMappingURL=internal-pattern.js.map
|
||
|
||
/***/ }),
|
||
/* 983 */,
|
||
/* 984 */
|
||
/***/ (function(module, __unusedexports, __webpack_require__) {
|
||
|
||
// Unique ID creation requires a high quality random # generator. In node.js
|
||
// this is pretty straight-forward - we use the crypto API.
|
||
|
||
var crypto = __webpack_require__(417);
|
||
|
||
module.exports = function nodeRNG() {
|
||
return crypto.randomBytes(16);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 985 */,
|
||
/* 986 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||
}) : (function(o, m, k, k2) {
|
||
if (k2 === undefined) k2 = k;
|
||
o[k2] = m[k];
|
||
}));
|
||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
}) : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar = (this && this.__importStar) || function (mod) {
|
||
if (mod && mod.__esModule) return mod;
|
||
var result = {};
|
||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
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 });
|
||
exports.getExecOutput = exports.exec = void 0;
|
||
const string_decoder_1 = __webpack_require__(304);
|
||
const tr = __importStar(__webpack_require__(9));
|
||
/**
|
||
* Exec a command.
|
||
* Output will be streamed to the live console.
|
||
* Returns promise with return code
|
||
*
|
||
* @param commandLine command to execute (can include additional args). Must be correctly escaped.
|
||
* @param args optional arguments for tool. Escaping is handled by the lib.
|
||
* @param options optional exec options. See ExecOptions
|
||
* @returns Promise<number> exit code
|
||
*/
|
||
function exec(commandLine, args, options) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const commandArgs = tr.argStringToArray(commandLine);
|
||
if (commandArgs.length === 0) {
|
||
throw new Error(`Parameter 'commandLine' cannot be null or empty.`);
|
||
}
|
||
// Path to tool to execute should be first arg
|
||
const toolPath = commandArgs[0];
|
||
args = commandArgs.slice(1).concat(args || []);
|
||
const runner = new tr.ToolRunner(toolPath, args, options);
|
||
return runner.exec();
|
||
});
|
||
}
|
||
exports.exec = exec;
|
||
/**
|
||
* Exec a command and get the output.
|
||
* Output will be streamed to the live console.
|
||
* Returns promise with the exit code and collected stdout and stderr
|
||
*
|
||
* @param commandLine command to execute (can include additional args). Must be correctly escaped.
|
||
* @param args optional arguments for tool. Escaping is handled by the lib.
|
||
* @param options optional exec options. See ExecOptions
|
||
* @returns Promise<ExecOutput> exit code, stdout, and stderr
|
||
*/
|
||
function getExecOutput(commandLine, args, options) {
|
||
var _a, _b;
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let stdout = '';
|
||
let stderr = '';
|
||
//Using string decoder covers the case where a mult-byte character is split
|
||
const stdoutDecoder = new string_decoder_1.StringDecoder('utf8');
|
||
const stderrDecoder = new string_decoder_1.StringDecoder('utf8');
|
||
const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout;
|
||
const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr;
|
||
const stdErrListener = (data) => {
|
||
stderr += stderrDecoder.write(data);
|
||
if (originalStdErrListener) {
|
||
originalStdErrListener(data);
|
||
}
|
||
};
|
||
const stdOutListener = (data) => {
|
||
stdout += stdoutDecoder.write(data);
|
||
if (originalStdoutListener) {
|
||
originalStdoutListener(data);
|
||
}
|
||
};
|
||
const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener });
|
||
const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners }));
|
||
//flush any remaining characters
|
||
stdout += stdoutDecoder.end();
|
||
stderr += stderrDecoder.end();
|
||
return {
|
||
exitCode,
|
||
stdout,
|
||
stderr
|
||
};
|
||
});
|
||
}
|
||
exports.getExecOutput = getExecOutput;
|
||
//# sourceMappingURL=exec.js.map
|
||
|
||
/***/ }),
|
||
/* 987 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* Copyright The OpenTelemetry Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* https://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.isCompatible = exports._makeCompatibilityCheck = void 0;
|
||
var version_1 = __webpack_require__(830);
|
||
var re = /^(\d+)\.(\d+)\.(\d+)(?:-(.*))?$/;
|
||
/**
|
||
* Create a function to test an API version to see if it is compatible with the provided ownVersion.
|
||
*
|
||
* The returned function has the following semantics:
|
||
* - Exact match is always compatible
|
||
* - Major versions must match exactly
|
||
* - 1.x package cannot use global 2.x package
|
||
* - 2.x package cannot use global 1.x package
|
||
* - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API
|
||
* - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects
|
||
* - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3
|
||
* - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor
|
||
* - Patch and build tag differences are not considered at this time
|
||
*
|
||
* @param ownVersion version which should be checked against
|
||
*/
|
||
function _makeCompatibilityCheck(ownVersion) {
|
||
var acceptedVersions = new Set([ownVersion]);
|
||
var rejectedVersions = new Set();
|
||
var myVersionMatch = ownVersion.match(re);
|
||
if (!myVersionMatch) {
|
||
// we cannot guarantee compatibility so we always return noop
|
||
return function () { return false; };
|
||
}
|
||
var ownVersionParsed = {
|
||
major: +myVersionMatch[1],
|
||
minor: +myVersionMatch[2],
|
||
patch: +myVersionMatch[3],
|
||
};
|
||
function _reject(v) {
|
||
rejectedVersions.add(v);
|
||
return false;
|
||
}
|
||
function _accept(v) {
|
||
acceptedVersions.add(v);
|
||
return true;
|
||
}
|
||
return function isCompatible(globalVersion) {
|
||
if (acceptedVersions.has(globalVersion)) {
|
||
return true;
|
||
}
|
||
if (rejectedVersions.has(globalVersion)) {
|
||
return false;
|
||
}
|
||
var globalVersionMatch = globalVersion.match(re);
|
||
if (!globalVersionMatch) {
|
||
// cannot parse other version
|
||
// we cannot guarantee compatibility so we always noop
|
||
return _reject(globalVersion);
|
||
}
|
||
var globalVersionParsed = {
|
||
major: +globalVersionMatch[1],
|
||
minor: +globalVersionMatch[2],
|
||
patch: +globalVersionMatch[3],
|
||
};
|
||
// major versions must match
|
||
if (ownVersionParsed.major !== globalVersionParsed.major) {
|
||
return _reject(globalVersion);
|
||
}
|
||
if (ownVersionParsed.major === 0) {
|
||
if (ownVersionParsed.minor === globalVersionParsed.minor &&
|
||
ownVersionParsed.patch <= globalVersionParsed.patch) {
|
||
return _accept(globalVersion);
|
||
}
|
||
return _reject(globalVersion);
|
||
}
|
||
if (ownVersionParsed.minor <= globalVersionParsed.minor) {
|
||
return _accept(globalVersion);
|
||
}
|
||
return _reject(globalVersion);
|
||
};
|
||
}
|
||
exports._makeCompatibilityCheck = _makeCompatibilityCheck;
|
||
/**
|
||
* Test an API version to see if it is compatible with this API.
|
||
*
|
||
* - Exact match is always compatible
|
||
* - Major versions must match exactly
|
||
* - 1.x package cannot use global 2.x package
|
||
* - 2.x package cannot use global 1.x package
|
||
* - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API
|
||
* - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects
|
||
* - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3
|
||
* - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor
|
||
* - Patch and build tag differences are not considered at this time
|
||
*
|
||
* @param version version of the API requesting an instance of the global API
|
||
*/
|
||
exports.isCompatible = _makeCompatibilityCheck(version_1.VERSION);
|
||
//# sourceMappingURL=semver.js.map
|
||
|
||
/***/ }),
|
||
/* 988 */,
|
||
/* 989 */,
|
||
/* 990 */,
|
||
/* 991 */,
|
||
/* 992 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
// Generated by CoffeeScript 1.12.7
|
||
(function() {
|
||
"use strict";
|
||
var builder, defaults, parser, processors,
|
||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||
hasProp = {}.hasOwnProperty;
|
||
|
||
defaults = __webpack_require__(791);
|
||
|
||
builder = __webpack_require__(476);
|
||
|
||
parser = __webpack_require__(885);
|
||
|
||
processors = __webpack_require__(350);
|
||
|
||
exports.defaults = defaults.defaults;
|
||
|
||
exports.processors = processors;
|
||
|
||
exports.ValidationError = (function(superClass) {
|
||
extend(ValidationError, superClass);
|
||
|
||
function ValidationError(message) {
|
||
this.message = message;
|
||
}
|
||
|
||
return ValidationError;
|
||
|
||
})(Error);
|
||
|
||
exports.Builder = builder.Builder;
|
||
|
||
exports.Parser = parser.Parser;
|
||
|
||
exports.parseString = parser.parseString;
|
||
|
||
exports.parseStringPromise = parser.parseStringPromise;
|
||
|
||
}).call(this);
|
||
|
||
|
||
/***/ }),
|
||
/* 993 */,
|
||
/* 994 */,
|
||
/* 995 */,
|
||
/* 996 */,
|
||
/* 997 */,
|
||
/* 998 */,
|
||
/* 999 */
|
||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||
|
||
var tslib = __webpack_require__(865);
|
||
var uuid = __webpack_require__(585);
|
||
var tough = __webpack_require__(393);
|
||
var http = __webpack_require__(605);
|
||
var https = __webpack_require__(211);
|
||
var node_fetch = _interopDefault(__webpack_require__(454));
|
||
var abortController = __webpack_require__(106);
|
||
var FormData = _interopDefault(__webpack_require__(790));
|
||
var util = __webpack_require__(669);
|
||
var url = __webpack_require__(835);
|
||
var stream = __webpack_require__(794);
|
||
var logger$1 = __webpack_require__(928);
|
||
var tunnel = __webpack_require__(413);
|
||
var coreAuth = __webpack_require__(229);
|
||
var xml2js = __webpack_require__(992);
|
||
var os = __webpack_require__(87);
|
||
var coreTracing = __webpack_require__(263);
|
||
__webpack_require__(71);
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* A collection of HttpHeaders that can be sent with a HTTP request.
|
||
*/
|
||
function getHeaderKey(headerName) {
|
||
return headerName.toLowerCase();
|
||
}
|
||
function isHttpHeadersLike(object) {
|
||
if (object && typeof object === "object") {
|
||
var castObject = object;
|
||
if (typeof castObject.rawHeaders === "function" &&
|
||
typeof castObject.clone === "function" &&
|
||
typeof castObject.get === "function" &&
|
||
typeof castObject.set === "function" &&
|
||
typeof castObject.contains === "function" &&
|
||
typeof castObject.remove === "function" &&
|
||
typeof castObject.headersArray === "function" &&
|
||
typeof castObject.headerValues === "function" &&
|
||
typeof castObject.headerNames === "function" &&
|
||
typeof castObject.toJson === "function") {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
/**
|
||
* A collection of HTTP header key/value pairs.
|
||
*/
|
||
var HttpHeaders = /** @class */ (function () {
|
||
function HttpHeaders(rawHeaders) {
|
||
this._headersMap = {};
|
||
if (rawHeaders) {
|
||
for (var headerName in rawHeaders) {
|
||
this.set(headerName, rawHeaders[headerName]);
|
||
}
|
||
}
|
||
}
|
||
/**
|
||
* Set a header in this collection with the provided name and value. The name is
|
||
* case-insensitive.
|
||
* @param headerName - The name of the header to set. This value is case-insensitive.
|
||
* @param headerValue - The value of the header to set.
|
||
*/
|
||
HttpHeaders.prototype.set = function (headerName, headerValue) {
|
||
this._headersMap[getHeaderKey(headerName)] = {
|
||
name: headerName,
|
||
value: headerValue.toString()
|
||
};
|
||
};
|
||
/**
|
||
* Get the header value for the provided header name, or undefined if no header exists in this
|
||
* collection with the provided name.
|
||
* @param headerName - The name of the header.
|
||
*/
|
||
HttpHeaders.prototype.get = function (headerName) {
|
||
var header = this._headersMap[getHeaderKey(headerName)];
|
||
return !header ? undefined : header.value;
|
||
};
|
||
/**
|
||
* Get whether or not this header collection contains a header entry for the provided header name.
|
||
*/
|
||
HttpHeaders.prototype.contains = function (headerName) {
|
||
return !!this._headersMap[getHeaderKey(headerName)];
|
||
};
|
||
/**
|
||
* Remove the header with the provided headerName. Return whether or not the header existed and
|
||
* was removed.
|
||
* @param headerName - The name of the header to remove.
|
||
*/
|
||
HttpHeaders.prototype.remove = function (headerName) {
|
||
var result = this.contains(headerName);
|
||
delete this._headersMap[getHeaderKey(headerName)];
|
||
return result;
|
||
};
|
||
/**
|
||
* Get the headers that are contained this collection as an object.
|
||
*/
|
||
HttpHeaders.prototype.rawHeaders = function () {
|
||
var result = {};
|
||
for (var headerKey in this._headersMap) {
|
||
var header = this._headersMap[headerKey];
|
||
result[header.name.toLowerCase()] = header.value;
|
||
}
|
||
return result;
|
||
};
|
||
/**
|
||
* Get the headers that are contained in this collection as an array.
|
||
*/
|
||
HttpHeaders.prototype.headersArray = function () {
|
||
var headers = [];
|
||
for (var headerKey in this._headersMap) {
|
||
headers.push(this._headersMap[headerKey]);
|
||
}
|
||
return headers;
|
||
};
|
||
/**
|
||
* Get the header names that are contained in this collection.
|
||
*/
|
||
HttpHeaders.prototype.headerNames = function () {
|
||
var headerNames = [];
|
||
var headers = this.headersArray();
|
||
for (var i = 0; i < headers.length; ++i) {
|
||
headerNames.push(headers[i].name);
|
||
}
|
||
return headerNames;
|
||
};
|
||
/**
|
||
* Get the header values that are contained in this collection.
|
||
*/
|
||
HttpHeaders.prototype.headerValues = function () {
|
||
var headerValues = [];
|
||
var headers = this.headersArray();
|
||
for (var i = 0; i < headers.length; ++i) {
|
||
headerValues.push(headers[i].value);
|
||
}
|
||
return headerValues;
|
||
};
|
||
/**
|
||
* Get the JSON object representation of this HTTP header collection.
|
||
*/
|
||
HttpHeaders.prototype.toJson = function () {
|
||
return this.rawHeaders();
|
||
};
|
||
/**
|
||
* Get the string representation of this HTTP header collection.
|
||
*/
|
||
HttpHeaders.prototype.toString = function () {
|
||
return JSON.stringify(this.toJson());
|
||
};
|
||
/**
|
||
* Create a deep clone/copy of this HttpHeaders collection.
|
||
*/
|
||
HttpHeaders.prototype.clone = function () {
|
||
return new HttpHeaders(this.rawHeaders());
|
||
};
|
||
return HttpHeaders;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* Encodes a string in base64 format.
|
||
* @param value - The string to encode
|
||
*/
|
||
function encodeString(value) {
|
||
return Buffer.from(value).toString("base64");
|
||
}
|
||
/**
|
||
* Encodes a byte array in base64 format.
|
||
* @param value - The Uint8Aray to encode
|
||
*/
|
||
function encodeByteArray(value) {
|
||
// Buffer.from accepts <ArrayBuffer> | <SharedArrayBuffer>-- the TypeScript definition is off here
|
||
// https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length
|
||
var bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);
|
||
return bufferValue.toString("base64");
|
||
}
|
||
/**
|
||
* Decodes a base64 string into a byte array.
|
||
* @param value - The base64 string to decode
|
||
*/
|
||
function decodeString(value) {
|
||
return Buffer.from(value, "base64");
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
var Constants = {
|
||
/**
|
||
* The core-http version
|
||
*/
|
||
coreHttpVersion: "1.2.6",
|
||
/**
|
||
* Specifies HTTP.
|
||
*/
|
||
HTTP: "http:",
|
||
/**
|
||
* Specifies HTTPS.
|
||
*/
|
||
HTTPS: "https:",
|
||
/**
|
||
* Specifies HTTP Proxy.
|
||
*/
|
||
HTTP_PROXY: "HTTP_PROXY",
|
||
/**
|
||
* Specifies HTTPS Proxy.
|
||
*/
|
||
HTTPS_PROXY: "HTTPS_PROXY",
|
||
/**
|
||
* Specifies NO Proxy.
|
||
*/
|
||
NO_PROXY: "NO_PROXY",
|
||
/**
|
||
* Specifies ALL Proxy.
|
||
*/
|
||
ALL_PROXY: "ALL_PROXY",
|
||
HttpConstants: {
|
||
/**
|
||
* Http Verbs
|
||
*/
|
||
HttpVerbs: {
|
||
PUT: "PUT",
|
||
GET: "GET",
|
||
DELETE: "DELETE",
|
||
POST: "POST",
|
||
MERGE: "MERGE",
|
||
HEAD: "HEAD",
|
||
PATCH: "PATCH"
|
||
},
|
||
StatusCodes: {
|
||
TooManyRequests: 429
|
||
}
|
||
},
|
||
/**
|
||
* Defines constants for use with HTTP headers.
|
||
*/
|
||
HeaderConstants: {
|
||
/**
|
||
* The Authorization header.
|
||
*/
|
||
AUTHORIZATION: "authorization",
|
||
AUTHORIZATION_SCHEME: "Bearer",
|
||
/**
|
||
* The Retry-After response-header field can be used with a 503 (Service
|
||
* Unavailable) or 349 (Too Many Requests) responses to indicate how long
|
||
* the service is expected to be unavailable to the requesting client.
|
||
*/
|
||
RETRY_AFTER: "Retry-After",
|
||
/**
|
||
* The UserAgent header.
|
||
*/
|
||
USER_AGENT: "User-Agent"
|
||
}
|
||
};
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* Default key used to access the XML attributes.
|
||
*/
|
||
var XML_ATTRKEY = "$";
|
||
/**
|
||
* Default key used to access the XML value content.
|
||
*/
|
||
var XML_CHARKEY = "_";
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;
|
||
/**
|
||
* A constant that indicates whether the environment is node.js or browser based.
|
||
*/
|
||
var isNode = typeof process !== "undefined" &&
|
||
!!process.version &&
|
||
!!process.versions &&
|
||
!!process.versions.node;
|
||
/**
|
||
* Encodes an URI.
|
||
*
|
||
* @param uri - The URI to be encoded.
|
||
* @returns The encoded URI.
|
||
*/
|
||
function encodeUri(uri) {
|
||
return encodeURIComponent(uri)
|
||
.replace(/!/g, "%21")
|
||
.replace(/"/g, "%27")
|
||
.replace(/\(/g, "%28")
|
||
.replace(/\)/g, "%29")
|
||
.replace(/\*/g, "%2A");
|
||
}
|
||
/**
|
||
* Returns a stripped version of the Http Response which only contains body,
|
||
* headers and the status.
|
||
*
|
||
* @param response - The Http Response
|
||
* @returns The stripped version of Http Response.
|
||
*/
|
||
function stripResponse(response) {
|
||
var strippedResponse = {};
|
||
strippedResponse.body = response.bodyAsText;
|
||
strippedResponse.headers = response.headers;
|
||
strippedResponse.status = response.status;
|
||
return strippedResponse;
|
||
}
|
||
/**
|
||
* Returns a stripped version of the Http Request that does not contain the
|
||
* Authorization header.
|
||
*
|
||
* @param request - The Http Request object
|
||
* @returns The stripped version of Http Request.
|
||
*/
|
||
function stripRequest(request) {
|
||
var strippedRequest = request.clone();
|
||
if (strippedRequest.headers) {
|
||
strippedRequest.headers.remove("authorization");
|
||
}
|
||
return strippedRequest;
|
||
}
|
||
/**
|
||
* Validates the given uuid as a string
|
||
*
|
||
* @param uuid - The uuid as a string that needs to be validated
|
||
* @returns True if the uuid is valid; false otherwise.
|
||
*/
|
||
function isValidUuid(uuid) {
|
||
return validUuidRegex.test(uuid);
|
||
}
|
||
/**
|
||
* Generated UUID
|
||
*
|
||
* @returns RFC4122 v4 UUID.
|
||
*/
|
||
function generateUuid() {
|
||
return uuid.v4();
|
||
}
|
||
/**
|
||
* Executes an array of promises sequentially. Inspiration of this method is here:
|
||
* https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html. An awesome blog on promises!
|
||
*
|
||
* @param promiseFactories - An array of promise factories(A function that return a promise)
|
||
* @param kickstart - Input to the first promise that is used to kickstart the promise chain.
|
||
* If not provided then the promise chain starts with undefined.
|
||
* @returns A chain of resolved or rejected promises
|
||
*/
|
||
function executePromisesSequentially(promiseFactories, kickstart) {
|
||
var result = Promise.resolve(kickstart);
|
||
promiseFactories.forEach(function (promiseFactory) {
|
||
result = result.then(promiseFactory);
|
||
});
|
||
return result;
|
||
}
|
||
/**
|
||
* A wrapper for setTimeout that resolves a promise after t milliseconds.
|
||
* @param t - The number of milliseconds to be delayed.
|
||
* @param value - The value to be resolved with after a timeout of t milliseconds.
|
||
* @returns Resolved promise
|
||
*/
|
||
function delay(t, value) {
|
||
return new Promise(function (resolve) { return setTimeout(function () { return resolve(value); }, t); });
|
||
}
|
||
/**
|
||
* Converts a Promise to a callback.
|
||
* @param promise - The Promise to be converted to a callback
|
||
* @returns A function that takes the callback `(cb: Function) => void`
|
||
* @deprecated generated code should instead depend on responseToBody
|
||
*/
|
||
// eslint-disable-next-line @typescript-eslint/ban-types
|
||
function promiseToCallback(promise) {
|
||
if (typeof promise.then !== "function") {
|
||
throw new Error("The provided input is not a Promise.");
|
||
}
|
||
// eslint-disable-next-line @typescript-eslint/ban-types
|
||
return function (cb) {
|
||
promise
|
||
.then(function (data) {
|
||
// eslint-disable-next-line promise/no-callback-in-promise
|
||
return cb(undefined, data);
|
||
})
|
||
.catch(function (err) {
|
||
// eslint-disable-next-line promise/no-callback-in-promise
|
||
cb(err);
|
||
});
|
||
};
|
||
}
|
||
/**
|
||
* Converts a Promise to a service callback.
|
||
* @param promise - The Promise of HttpOperationResponse to be converted to a service callback
|
||
* @returns A function that takes the service callback (cb: ServiceCallback<T>): void
|
||
*/
|
||
function promiseToServiceCallback(promise) {
|
||
if (typeof promise.then !== "function") {
|
||
throw new Error("The provided input is not a Promise.");
|
||
}
|
||
return function (cb) {
|
||
promise
|
||
.then(function (data) {
|
||
return process.nextTick(cb, undefined, data.parsedBody, data.request, data);
|
||
})
|
||
.catch(function (err) {
|
||
process.nextTick(cb, err);
|
||
});
|
||
};
|
||
}
|
||
function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {
|
||
var _a, _b, _c;
|
||
if (!Array.isArray(obj)) {
|
||
obj = [obj];
|
||
}
|
||
if (!xmlNamespaceKey || !xmlNamespace) {
|
||
return _a = {}, _a[elementName] = obj, _a;
|
||
}
|
||
var result = (_b = {}, _b[elementName] = obj, _b);
|
||
result[XML_ATTRKEY] = (_c = {}, _c[xmlNamespaceKey] = xmlNamespace, _c);
|
||
return result;
|
||
}
|
||
/**
|
||
* Applies the properties on the prototype of sourceCtors to the prototype of targetCtor
|
||
* @param targetCtor - The target object on which the properties need to be applied.
|
||
* @param sourceCtors - An array of source objects from which the properties need to be taken.
|
||
*/
|
||
function applyMixins(targetCtorParam, sourceCtors) {
|
||
var castTargetCtorParam = targetCtorParam;
|
||
sourceCtors.forEach(function (sourceCtor) {
|
||
Object.getOwnPropertyNames(sourceCtor.prototype).forEach(function (name) {
|
||
castTargetCtorParam.prototype[name] = sourceCtor.prototype[name];
|
||
});
|
||
});
|
||
}
|
||
var validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
|
||
/**
|
||
* Indicates whether the given string is in ISO 8601 format.
|
||
* @param value - The value to be validated for ISO 8601 duration format.
|
||
* @returns `true` if valid, `false` otherwise.
|
||
*/
|
||
function isDuration(value) {
|
||
return validateISODuration.test(value);
|
||
}
|
||
/**
|
||
* Replace all of the instances of searchValue in value with the provided replaceValue.
|
||
* @param value - The value to search and replace in.
|
||
* @param searchValue - The value to search for in the value argument.
|
||
* @param replaceValue - The value to replace searchValue with in the value argument.
|
||
* @returns The value where each instance of searchValue was replaced with replacedValue.
|
||
*/
|
||
function replaceAll(value, searchValue, replaceValue) {
|
||
return !value || !searchValue ? value : value.split(searchValue).join(replaceValue || "");
|
||
}
|
||
/**
|
||
* Determines whether the given entity is a basic/primitive type
|
||
* (string, number, boolean, null, undefined).
|
||
* @param value - Any entity
|
||
* @returns true is it is primitive type, false otherwise.
|
||
*/
|
||
function isPrimitiveType(value) {
|
||
return (typeof value !== "object" && typeof value !== "function") || value === null;
|
||
}
|
||
function getEnvironmentValue(name) {
|
||
if (process.env[name]) {
|
||
return process.env[name];
|
||
}
|
||
else if (process.env[name.toLowerCase()]) {
|
||
return process.env[name.toLowerCase()];
|
||
}
|
||
return undefined;
|
||
}
|
||
/**
|
||
* @internal
|
||
* @returns true when input is an object type that is not null, Array, RegExp, or Date.
|
||
*/
|
||
function isObject(input) {
|
||
return (typeof input === "object" &&
|
||
input !== null &&
|
||
!Array.isArray(input) &&
|
||
!(input instanceof RegExp) &&
|
||
!(input instanceof Date));
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var Serializer = /** @class */ (function () {
|
||
function Serializer(modelMappers, isXML) {
|
||
if (modelMappers === void 0) { modelMappers = {}; }
|
||
this.modelMappers = modelMappers;
|
||
this.isXML = isXML;
|
||
}
|
||
Serializer.prototype.validateConstraints = function (mapper, value, objectName) {
|
||
var failValidation = function (constraintName, constraintValue) {
|
||
throw new Error("\"" + objectName + "\" with value \"" + value + "\" should satisfy the constraint \"" + constraintName + "\": " + constraintValue + ".");
|
||
};
|
||
if (mapper.constraints && value != undefined) {
|
||
var valueAsNumber = value;
|
||
var _a = mapper.constraints, ExclusiveMaximum = _a.ExclusiveMaximum, ExclusiveMinimum = _a.ExclusiveMinimum, InclusiveMaximum = _a.InclusiveMaximum, InclusiveMinimum = _a.InclusiveMinimum, MaxItems = _a.MaxItems, MaxLength = _a.MaxLength, MinItems = _a.MinItems, MinLength = _a.MinLength, MultipleOf = _a.MultipleOf, Pattern = _a.Pattern, UniqueItems = _a.UniqueItems;
|
||
if (ExclusiveMaximum != undefined && valueAsNumber >= ExclusiveMaximum) {
|
||
failValidation("ExclusiveMaximum", ExclusiveMaximum);
|
||
}
|
||
if (ExclusiveMinimum != undefined && valueAsNumber <= ExclusiveMinimum) {
|
||
failValidation("ExclusiveMinimum", ExclusiveMinimum);
|
||
}
|
||
if (InclusiveMaximum != undefined && valueAsNumber > InclusiveMaximum) {
|
||
failValidation("InclusiveMaximum", InclusiveMaximum);
|
||
}
|
||
if (InclusiveMinimum != undefined && valueAsNumber < InclusiveMinimum) {
|
||
failValidation("InclusiveMinimum", InclusiveMinimum);
|
||
}
|
||
var valueAsArray = value;
|
||
if (MaxItems != undefined && valueAsArray.length > MaxItems) {
|
||
failValidation("MaxItems", MaxItems);
|
||
}
|
||
if (MaxLength != undefined && valueAsArray.length > MaxLength) {
|
||
failValidation("MaxLength", MaxLength);
|
||
}
|
||
if (MinItems != undefined && valueAsArray.length < MinItems) {
|
||
failValidation("MinItems", MinItems);
|
||
}
|
||
if (MinLength != undefined && valueAsArray.length < MinLength) {
|
||
failValidation("MinLength", MinLength);
|
||
}
|
||
if (MultipleOf != undefined && valueAsNumber % MultipleOf !== 0) {
|
||
failValidation("MultipleOf", MultipleOf);
|
||
}
|
||
if (Pattern) {
|
||
var pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern;
|
||
if (typeof value !== "string" || value.match(pattern) === null) {
|
||
failValidation("Pattern", Pattern);
|
||
}
|
||
}
|
||
if (UniqueItems &&
|
||
valueAsArray.some(function (item, i, ar) { return ar.indexOf(item) !== i; })) {
|
||
failValidation("UniqueItems", UniqueItems);
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* Serialize the given object based on its metadata defined in the mapper
|
||
*
|
||
* @param mapper - The mapper which defines the metadata of the serializable object
|
||
* @param object - A valid Javascript object to be serialized
|
||
* @param objectName - Name of the serialized object
|
||
* @param options - additional options to deserialization
|
||
* @returns A valid serialized Javascript object
|
||
*/
|
||
Serializer.prototype.serialize = function (mapper, object, objectName, options) {
|
||
var _a, _b, _c;
|
||
if (options === void 0) { options = {}; }
|
||
var updatedOptions = {
|
||
rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
|
||
includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
|
||
xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
|
||
};
|
||
var payload = {};
|
||
var mapperType = mapper.type.name;
|
||
if (!objectName) {
|
||
objectName = mapper.serializedName;
|
||
}
|
||
if (mapperType.match(/^Sequence$/i) !== null) {
|
||
payload = [];
|
||
}
|
||
if (mapper.isConstant) {
|
||
object = mapper.defaultValue;
|
||
}
|
||
// This table of allowed values should help explain
|
||
// the mapper.required and mapper.nullable properties.
|
||
// X means "neither undefined or null are allowed".
|
||
// || required
|
||
// || true | false
|
||
// nullable || ==========================
|
||
// true || null | undefined/null
|
||
// false || X | undefined
|
||
// undefined || X | undefined/null
|
||
var required = mapper.required, nullable = mapper.nullable;
|
||
if (required && nullable && object === undefined) {
|
||
throw new Error(objectName + " cannot be undefined.");
|
||
}
|
||
if (required && !nullable && object == undefined) {
|
||
throw new Error(objectName + " cannot be null or undefined.");
|
||
}
|
||
if (!required && nullable === false && object === null) {
|
||
throw new Error(objectName + " cannot be null.");
|
||
}
|
||
if (object == undefined) {
|
||
payload = object;
|
||
}
|
||
else {
|
||
// Validate Constraints if any
|
||
this.validateConstraints(mapper, object, objectName);
|
||
if (mapperType.match(/^any$/i) !== null) {
|
||
payload = object;
|
||
}
|
||
else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {
|
||
payload = serializeBasicTypes(mapperType, objectName, object);
|
||
}
|
||
else if (mapperType.match(/^Enum$/i) !== null) {
|
||
var enumMapper = mapper;
|
||
payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);
|
||
}
|
||
else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {
|
||
payload = serializeDateTypes(mapperType, object, objectName);
|
||
}
|
||
else if (mapperType.match(/^ByteArray$/i) !== null) {
|
||
payload = serializeByteArrayType(objectName, object);
|
||
}
|
||
else if (mapperType.match(/^Base64Url$/i) !== null) {
|
||
payload = serializeBase64UrlType(objectName, object);
|
||
}
|
||
else if (mapperType.match(/^Sequence$/i) !== null) {
|
||
payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);
|
||
}
|
||
else if (mapperType.match(/^Dictionary$/i) !== null) {
|
||
payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);
|
||
}
|
||
else if (mapperType.match(/^Composite$/i) !== null) {
|
||
payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);
|
||
}
|
||
}
|
||
return payload;
|
||
};
|
||
/**
|
||
* Deserialize the given object based on its metadata defined in the mapper
|
||
*
|
||
* @param mapper - The mapper which defines the metadata of the serializable object
|
||
* @param responseBody - A valid Javascript entity to be deserialized
|
||
* @param objectName - Name of the deserialized object
|
||
* @param options - Controls behavior of XML parser and builder.
|
||
* @returns A valid deserialized Javascript object
|
||
*/
|
||
Serializer.prototype.deserialize = function (mapper, responseBody, objectName, options) {
|
||
var _a, _b, _c;
|
||
if (options === void 0) { options = {}; }
|
||
var updatedOptions = {
|
||
rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
|
||
includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
|
||
xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
|
||
};
|
||
if (responseBody == undefined) {
|
||
if (this.isXML && mapper.type.name === "Sequence" && !mapper.xmlIsWrapped) {
|
||
// Edge case for empty XML non-wrapped lists. xml2js can't distinguish
|
||
// between the list being empty versus being missing,
|
||
// so let's do the more user-friendly thing and return an empty list.
|
||
responseBody = [];
|
||
}
|
||
// specifically check for undefined as default value can be a falsey value `0, "", false, null`
|
||
if (mapper.defaultValue !== undefined) {
|
||
responseBody = mapper.defaultValue;
|
||
}
|
||
return responseBody;
|
||
}
|
||
var payload;
|
||
var mapperType = mapper.type.name;
|
||
if (!objectName) {
|
||
objectName = mapper.serializedName;
|
||
}
|
||
if (mapperType.match(/^Composite$/i) !== null) {
|
||
payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions);
|
||
}
|
||
else {
|
||
if (this.isXML) {
|
||
var xmlCharKey = updatedOptions.xmlCharKey;
|
||
var castResponseBody = responseBody;
|
||
/**
|
||
* If the mapper specifies this as a non-composite type value but the responseBody contains
|
||
* both header ("$" i.e., XML_ATTRKEY) and body ("#" i.e., XML_CHARKEY) properties,
|
||
* then just reduce the responseBody value to the body ("#" i.e., XML_CHARKEY) property.
|
||
*/
|
||
if (castResponseBody[XML_ATTRKEY] != undefined &&
|
||
castResponseBody[xmlCharKey] != undefined) {
|
||
responseBody = castResponseBody[xmlCharKey];
|
||
}
|
||
}
|
||
if (mapperType.match(/^Number$/i) !== null) {
|
||
payload = parseFloat(responseBody);
|
||
if (isNaN(payload)) {
|
||
payload = responseBody;
|
||
}
|
||
}
|
||
else if (mapperType.match(/^Boolean$/i) !== null) {
|
||
if (responseBody === "true") {
|
||
payload = true;
|
||
}
|
||
else if (responseBody === "false") {
|
||
payload = false;
|
||
}
|
||
else {
|
||
payload = responseBody;
|
||
}
|
||
}
|
||
else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {
|
||
payload = responseBody;
|
||
}
|
||
else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {
|
||
payload = new Date(responseBody);
|
||
}
|
||
else if (mapperType.match(/^UnixTime$/i) !== null) {
|
||
payload = unixTimeToDate(responseBody);
|
||
}
|
||
else if (mapperType.match(/^ByteArray$/i) !== null) {
|
||
payload = decodeString(responseBody);
|
||
}
|
||
else if (mapperType.match(/^Base64Url$/i) !== null) {
|
||
payload = base64UrlToByteArray(responseBody);
|
||
}
|
||
else if (mapperType.match(/^Sequence$/i) !== null) {
|
||
payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions);
|
||
}
|
||
else if (mapperType.match(/^Dictionary$/i) !== null) {
|
||
payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions);
|
||
}
|
||
}
|
||
if (mapper.isConstant) {
|
||
payload = mapper.defaultValue;
|
||
}
|
||
return payload;
|
||
};
|
||
return Serializer;
|
||
}());
|
||
function trimEnd(str, ch) {
|
||
var len = str.length;
|
||
while (len - 1 >= 0 && str[len - 1] === ch) {
|
||
--len;
|
||
}
|
||
return str.substr(0, len);
|
||
}
|
||
function bufferToBase64Url(buffer) {
|
||
if (!buffer) {
|
||
return undefined;
|
||
}
|
||
if (!(buffer instanceof Uint8Array)) {
|
||
throw new Error("Please provide an input of type Uint8Array for converting to Base64Url.");
|
||
}
|
||
// Uint8Array to Base64.
|
||
var str = encodeByteArray(buffer);
|
||
// Base64 to Base64Url.
|
||
return trimEnd(str, "=")
|
||
.replace(/\+/g, "-")
|
||
.replace(/\//g, "_");
|
||
}
|
||
function base64UrlToByteArray(str) {
|
||
if (!str) {
|
||
return undefined;
|
||
}
|
||
if (str && typeof str.valueOf() !== "string") {
|
||
throw new Error("Please provide an input of type string for converting to Uint8Array");
|
||
}
|
||
// Base64Url to Base64.
|
||
str = str.replace(/-/g, "+").replace(/_/g, "/");
|
||
// Base64 to Uint8Array.
|
||
return decodeString(str);
|
||
}
|
||
function splitSerializeName(prop) {
|
||
var classes = [];
|
||
var partialclass = "";
|
||
if (prop) {
|
||
var subwords = prop.split(".");
|
||
for (var _i = 0, subwords_1 = subwords; _i < subwords_1.length; _i++) {
|
||
var item = subwords_1[_i];
|
||
if (item.charAt(item.length - 1) === "\\") {
|
||
partialclass += item.substr(0, item.length - 1) + ".";
|
||
}
|
||
else {
|
||
partialclass += item;
|
||
classes.push(partialclass);
|
||
partialclass = "";
|
||
}
|
||
}
|
||
}
|
||
return classes;
|
||
}
|
||
function dateToUnixTime(d) {
|
||
if (!d) {
|
||
return undefined;
|
||
}
|
||
if (typeof d.valueOf() === "string") {
|
||
d = new Date(d);
|
||
}
|
||
return Math.floor(d.getTime() / 1000);
|
||
}
|
||
function unixTimeToDate(n) {
|
||
if (!n) {
|
||
return undefined;
|
||
}
|
||
return new Date(n * 1000);
|
||
}
|
||
function serializeBasicTypes(typeName, objectName, value) {
|
||
if (value !== null && value !== undefined) {
|
||
if (typeName.match(/^Number$/i) !== null) {
|
||
if (typeof value !== "number") {
|
||
throw new Error(objectName + " with value " + value + " must be of type number.");
|
||
}
|
||
}
|
||
else if (typeName.match(/^String$/i) !== null) {
|
||
if (typeof value.valueOf() !== "string") {
|
||
throw new Error(objectName + " with value \"" + value + "\" must be of type string.");
|
||
}
|
||
}
|
||
else if (typeName.match(/^Uuid$/i) !== null) {
|
||
if (!(typeof value.valueOf() === "string" && isValidUuid(value))) {
|
||
throw new Error(objectName + " with value \"" + value + "\" must be of type string and a valid uuid.");
|
||
}
|
||
}
|
||
else if (typeName.match(/^Boolean$/i) !== null) {
|
||
if (typeof value !== "boolean") {
|
||
throw new Error(objectName + " with value " + value + " must be of type boolean.");
|
||
}
|
||
}
|
||
else if (typeName.match(/^Stream$/i) !== null) {
|
||
var objectType = typeof value;
|
||
if (objectType !== "string" &&
|
||
objectType !== "function" &&
|
||
!(value instanceof ArrayBuffer) &&
|
||
!ArrayBuffer.isView(value) &&
|
||
!((typeof Blob === "function" || typeof Blob === "object") && value instanceof Blob)) {
|
||
throw new Error(objectName + " must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.");
|
||
}
|
||
}
|
||
}
|
||
return value;
|
||
}
|
||
function serializeEnumType(objectName, allowedValues, value) {
|
||
if (!allowedValues) {
|
||
throw new Error("Please provide a set of allowedValues to validate " + objectName + " as an Enum Type.");
|
||
}
|
||
var isPresent = allowedValues.some(function (item) {
|
||
if (typeof item.valueOf() === "string") {
|
||
return item.toLowerCase() === value.toLowerCase();
|
||
}
|
||
return item === value;
|
||
});
|
||
if (!isPresent) {
|
||
throw new Error(value + " is not a valid value for " + objectName + ". The valid values are: " + JSON.stringify(allowedValues) + ".");
|
||
}
|
||
return value;
|
||
}
|
||
function serializeByteArrayType(objectName, value) {
|
||
var returnValue = "";
|
||
if (value != undefined) {
|
||
if (!(value instanceof Uint8Array)) {
|
||
throw new Error(objectName + " must be of type Uint8Array.");
|
||
}
|
||
returnValue = encodeByteArray(value);
|
||
}
|
||
return returnValue;
|
||
}
|
||
function serializeBase64UrlType(objectName, value) {
|
||
var returnValue = "";
|
||
if (value != undefined) {
|
||
if (!(value instanceof Uint8Array)) {
|
||
throw new Error(objectName + " must be of type Uint8Array.");
|
||
}
|
||
returnValue = bufferToBase64Url(value) || "";
|
||
}
|
||
return returnValue;
|
||
}
|
||
function serializeDateTypes(typeName, value, objectName) {
|
||
if (value != undefined) {
|
||
if (typeName.match(/^Date$/i) !== null) {
|
||
if (!(value instanceof Date ||
|
||
(typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
|
||
throw new Error(objectName + " must be an instanceof Date or a string in ISO8601 format.");
|
||
}
|
||
value =
|
||
value instanceof Date
|
||
? value.toISOString().substring(0, 10)
|
||
: new Date(value).toISOString().substring(0, 10);
|
||
}
|
||
else if (typeName.match(/^DateTime$/i) !== null) {
|
||
if (!(value instanceof Date ||
|
||
(typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
|
||
throw new Error(objectName + " must be an instanceof Date or a string in ISO8601 format.");
|
||
}
|
||
value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();
|
||
}
|
||
else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {
|
||
if (!(value instanceof Date ||
|
||
(typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
|
||
throw new Error(objectName + " must be an instanceof Date or a string in RFC-1123 format.");
|
||
}
|
||
value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();
|
||
}
|
||
else if (typeName.match(/^UnixTime$/i) !== null) {
|
||
if (!(value instanceof Date ||
|
||
(typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
|
||
throw new Error(objectName + " must be an instanceof Date or a string in RFC-1123/ISO8601 format " +
|
||
"for it to be serialized in UnixTime/Epoch format.");
|
||
}
|
||
value = dateToUnixTime(value);
|
||
}
|
||
else if (typeName.match(/^TimeSpan$/i) !== null) {
|
||
if (!isDuration(value)) {
|
||
throw new Error(objectName + " must be a string in ISO 8601 format. Instead was \"" + value + "\".");
|
||
}
|
||
}
|
||
}
|
||
return value;
|
||
}
|
||
function serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {
|
||
var _a, _b;
|
||
if (!Array.isArray(object)) {
|
||
throw new Error(objectName + " must be of type Array.");
|
||
}
|
||
var elementType = mapper.type.element;
|
||
if (!elementType || typeof elementType !== "object") {
|
||
throw new Error("element\" metadata for an Array must be defined in the " +
|
||
("mapper and it must of type \"object\" in " + objectName + "."));
|
||
}
|
||
var tempArray = [];
|
||
for (var i = 0; i < object.length; i++) {
|
||
var serializedValue = serializer.serialize(elementType, object[i], objectName, options);
|
||
if (isXml && elementType.xmlNamespace) {
|
||
var xmlnsKey = elementType.xmlNamespacePrefix
|
||
? "xmlns:" + elementType.xmlNamespacePrefix
|
||
: "xmlns";
|
||
if (elementType.type.name === "Composite") {
|
||
tempArray[i] = tslib.__assign({}, serializedValue);
|
||
tempArray[i][XML_ATTRKEY] = (_a = {}, _a[xmlnsKey] = elementType.xmlNamespace, _a);
|
||
}
|
||
else {
|
||
tempArray[i] = {};
|
||
tempArray[i][options.xmlCharKey] = serializedValue;
|
||
tempArray[i][XML_ATTRKEY] = (_b = {}, _b[xmlnsKey] = elementType.xmlNamespace, _b);
|
||
}
|
||
}
|
||
else {
|
||
tempArray[i] = serializedValue;
|
||
}
|
||
}
|
||
return tempArray;
|
||
}
|
||
function serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {
|
||
var _a;
|
||
if (typeof object !== "object") {
|
||
throw new Error(objectName + " must be of type object.");
|
||
}
|
||
var valueType = mapper.type.value;
|
||
if (!valueType || typeof valueType !== "object") {
|
||
throw new Error("\"value\" metadata for a Dictionary must be defined in the " +
|
||
("mapper and it must of type \"object\" in " + objectName + "."));
|
||
}
|
||
var tempDictionary = {};
|
||
for (var _i = 0, _b = Object.keys(object); _i < _b.length; _i++) {
|
||
var key = _b[_i];
|
||
var serializedValue = serializer.serialize(valueType, object[key], objectName, options);
|
||
// If the element needs an XML namespace we need to add it within the $ property
|
||
tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);
|
||
}
|
||
// Add the namespace to the root element if needed
|
||
if (isXml && mapper.xmlNamespace) {
|
||
var xmlnsKey = mapper.xmlNamespacePrefix ? "xmlns:" + mapper.xmlNamespacePrefix : "xmlns";
|
||
var result = tempDictionary;
|
||
result[XML_ATTRKEY] = (_a = {}, _a[xmlnsKey] = mapper.xmlNamespace, _a);
|
||
return result;
|
||
}
|
||
return tempDictionary;
|
||
}
|
||
/**
|
||
* Resolves the additionalProperties property from a referenced mapper
|
||
* @param serializer - The serializer containing the entire set of mappers
|
||
* @param mapper - The composite mapper to resolve
|
||
* @param objectName - Name of the object being serialized
|
||
*/
|
||
function resolveAdditionalProperties(serializer, mapper, objectName) {
|
||
var additionalProperties = mapper.type.additionalProperties;
|
||
if (!additionalProperties && mapper.type.className) {
|
||
var modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
|
||
return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties;
|
||
}
|
||
return additionalProperties;
|
||
}
|
||
/**
|
||
* Finds the mapper referenced by className
|
||
* @param serializer - The serializer containing the entire set of mappers
|
||
* @param mapper - The composite mapper to resolve
|
||
* @param objectName - Name of the object being serialized
|
||
*/
|
||
function resolveReferencedMapper(serializer, mapper, objectName) {
|
||
var className = mapper.type.className;
|
||
if (!className) {
|
||
throw new Error("Class name for model \"" + objectName + "\" is not provided in the mapper \"" + JSON.stringify(mapper, undefined, 2) + "\".");
|
||
}
|
||
return serializer.modelMappers[className];
|
||
}
|
||
/**
|
||
* Resolves a composite mapper's modelProperties.
|
||
* @param serializer - The serializer containing the entire set of mappers
|
||
* @param mapper - The composite mapper to resolve
|
||
*/
|
||
function resolveModelProperties(serializer, mapper, objectName) {
|
||
var modelProps = mapper.type.modelProperties;
|
||
if (!modelProps) {
|
||
var modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
|
||
if (!modelMapper) {
|
||
throw new Error("mapper() cannot be null or undefined for model \"" + mapper.type.className + "\".");
|
||
}
|
||
modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties;
|
||
if (!modelProps) {
|
||
throw new Error("modelProperties cannot be null or undefined in the " +
|
||
("mapper \"" + JSON.stringify(modelMapper) + "\" of type \"" + mapper.type.className + "\" for object \"" + objectName + "\"."));
|
||
}
|
||
}
|
||
return modelProps;
|
||
}
|
||
function serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {
|
||
var _a, _b;
|
||
if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
|
||
mapper = getPolymorphicMapper(serializer, mapper, object, "clientName");
|
||
}
|
||
if (object != undefined) {
|
||
var payload = {};
|
||
var modelProps = resolveModelProperties(serializer, mapper, objectName);
|
||
for (var _i = 0, _c = Object.keys(modelProps); _i < _c.length; _i++) {
|
||
var key = _c[_i];
|
||
var propertyMapper = modelProps[key];
|
||
if (propertyMapper.readOnly) {
|
||
continue;
|
||
}
|
||
var propName = void 0;
|
||
var parentObject = payload;
|
||
if (serializer.isXML) {
|
||
if (propertyMapper.xmlIsWrapped) {
|
||
propName = propertyMapper.xmlName;
|
||
}
|
||
else {
|
||
propName = propertyMapper.xmlElementName || propertyMapper.xmlName;
|
||
}
|
||
}
|
||
else {
|
||
var paths = splitSerializeName(propertyMapper.serializedName);
|
||
propName = paths.pop();
|
||
for (var _d = 0, paths_1 = paths; _d < paths_1.length; _d++) {
|
||
var pathName = paths_1[_d];
|
||
var childObject = parentObject[pathName];
|
||
if (childObject == undefined &&
|
||
(object[key] != undefined || propertyMapper.defaultValue !== undefined)) {
|
||
parentObject[pathName] = {};
|
||
}
|
||
parentObject = parentObject[pathName];
|
||
}
|
||
}
|
||
if (parentObject != undefined) {
|
||
if (isXml && mapper.xmlNamespace) {
|
||
var xmlnsKey = mapper.xmlNamespacePrefix
|
||
? "xmlns:" + mapper.xmlNamespacePrefix
|
||
: "xmlns";
|
||
parentObject[XML_ATTRKEY] = tslib.__assign(tslib.__assign({}, parentObject[XML_ATTRKEY]), (_a = {}, _a[xmlnsKey] = mapper.xmlNamespace, _a));
|
||
}
|
||
var propertyObjectName = propertyMapper.serializedName !== ""
|
||
? objectName + "." + propertyMapper.serializedName
|
||
: objectName;
|
||
var toSerialize = object[key];
|
||
var polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
|
||
if (polymorphicDiscriminator &&
|
||
polymorphicDiscriminator.clientName === key &&
|
||
toSerialize == undefined) {
|
||
toSerialize = mapper.serializedName;
|
||
}
|
||
var serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);
|
||
if (serializedValue !== undefined && propName != undefined) {
|
||
var value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);
|
||
if (isXml && propertyMapper.xmlIsAttribute) {
|
||
// XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.
|
||
// This keeps things simple while preventing name collision
|
||
// with names in user documents.
|
||
parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};
|
||
parentObject[XML_ATTRKEY][propName] = serializedValue;
|
||
}
|
||
else if (isXml && propertyMapper.xmlIsWrapped) {
|
||
parentObject[propName] = (_b = {}, _b[propertyMapper.xmlElementName] = value, _b);
|
||
}
|
||
else {
|
||
parentObject[propName] = value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
var additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);
|
||
if (additionalPropertiesMapper) {
|
||
var propNames = Object.keys(modelProps);
|
||
var _loop_1 = function (clientPropName) {
|
||
var isAdditionalProperty = propNames.every(function (pn) { return pn !== clientPropName; });
|
||
if (isAdditionalProperty) {
|
||
payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]', options);
|
||
}
|
||
};
|
||
for (var clientPropName in object) {
|
||
_loop_1(clientPropName);
|
||
}
|
||
}
|
||
return payload;
|
||
}
|
||
return object;
|
||
}
|
||
function getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {
|
||
var _a;
|
||
if (!isXml || !propertyMapper.xmlNamespace) {
|
||
return serializedValue;
|
||
}
|
||
var xmlnsKey = propertyMapper.xmlNamespacePrefix
|
||
? "xmlns:" + propertyMapper.xmlNamespacePrefix
|
||
: "xmlns";
|
||
var xmlNamespace = (_a = {}, _a[xmlnsKey] = propertyMapper.xmlNamespace, _a);
|
||
if (["Composite"].includes(propertyMapper.type.name)) {
|
||
if (serializedValue[XML_ATTRKEY]) {
|
||
return serializedValue;
|
||
}
|
||
else {
|
||
var result_1 = tslib.__assign({}, serializedValue);
|
||
result_1[XML_ATTRKEY] = xmlNamespace;
|
||
return result_1;
|
||
}
|
||
}
|
||
var result = {};
|
||
result[options.xmlCharKey] = serializedValue;
|
||
result[XML_ATTRKEY] = xmlNamespace;
|
||
return result;
|
||
}
|
||
function isSpecialXmlProperty(propertyName, options) {
|
||
return [XML_ATTRKEY, options.xmlCharKey].includes(propertyName);
|
||
}
|
||
function deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {
|
||
var _a;
|
||
if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
|
||
mapper = getPolymorphicMapper(serializer, mapper, responseBody, "serializedName");
|
||
}
|
||
var modelProps = resolveModelProperties(serializer, mapper, objectName);
|
||
var instance = {};
|
||
var handledPropertyNames = [];
|
||
for (var _i = 0, _b = Object.keys(modelProps); _i < _b.length; _i++) {
|
||
var key = _b[_i];
|
||
var propertyMapper = modelProps[key];
|
||
var paths = splitSerializeName(modelProps[key].serializedName);
|
||
handledPropertyNames.push(paths[0]);
|
||
var serializedName = propertyMapper.serializedName, xmlName = propertyMapper.xmlName, xmlElementName = propertyMapper.xmlElementName;
|
||
var propertyObjectName = objectName;
|
||
if (serializedName !== "" && serializedName !== undefined) {
|
||
propertyObjectName = objectName + "." + serializedName;
|
||
}
|
||
var headerCollectionPrefix = propertyMapper.headerCollectionPrefix;
|
||
if (headerCollectionPrefix) {
|
||
var dictionary = {};
|
||
for (var _c = 0, _d = Object.keys(responseBody); _c < _d.length; _c++) {
|
||
var headerKey = _d[_c];
|
||
if (headerKey.startsWith(headerCollectionPrefix)) {
|
||
dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);
|
||
}
|
||
handledPropertyNames.push(headerKey);
|
||
}
|
||
instance[key] = dictionary;
|
||
}
|
||
else if (serializer.isXML) {
|
||
if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {
|
||
instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options);
|
||
}
|
||
else {
|
||
var propertyName = xmlElementName || xmlName || serializedName;
|
||
if (propertyMapper.xmlIsWrapped) {
|
||
/* a list of <xmlElementName> wrapped by <xmlName>
|
||
For the xml example below
|
||
<Cors>
|
||
<CorsRule>...</CorsRule>
|
||
<CorsRule>...</CorsRule>
|
||
</Cors>
|
||
the responseBody has
|
||
{
|
||
Cors: {
|
||
CorsRule: [{...}, {...}]
|
||
}
|
||
}
|
||
xmlName is "Cors" and xmlElementName is"CorsRule".
|
||
*/
|
||
var wrapped = responseBody[xmlName];
|
||
var elementList = (_a = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _a !== void 0 ? _a : [];
|
||
instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);
|
||
}
|
||
else {
|
||
var property = responseBody[propertyName];
|
||
instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
// deserialize the property if it is present in the provided responseBody instance
|
||
var propertyInstance = void 0;
|
||
var res = responseBody;
|
||
// traversing the object step by step.
|
||
for (var _e = 0, paths_2 = paths; _e < paths_2.length; _e++) {
|
||
var item = paths_2[_e];
|
||
if (!res)
|
||
break;
|
||
res = res[item];
|
||
}
|
||
propertyInstance = res;
|
||
var polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;
|
||
// checking that the model property name (key)(ex: "fishtype") and the
|
||
// clientName of the polymorphicDiscriminator {metadata} (ex: "fishtype")
|
||
// instead of the serializedName of the polymorphicDiscriminator (ex: "fish.type")
|
||
// is a better approach. The generator is not consistent with escaping '\.' in the
|
||
// serializedName of the property (ex: "fish\.type") that is marked as polymorphic discriminator
|
||
// and the serializedName of the metadata polymorphicDiscriminator (ex: "fish.type"). However,
|
||
// the clientName transformation of the polymorphicDiscriminator (ex: "fishtype") and
|
||
// the transformation of model property name (ex: "fishtype") is done consistently.
|
||
// Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.
|
||
if (polymorphicDiscriminator &&
|
||
key === polymorphicDiscriminator.clientName &&
|
||
propertyInstance == undefined) {
|
||
propertyInstance = mapper.serializedName;
|
||
}
|
||
var serializedValue = void 0;
|
||
// paging
|
||
if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === "") {
|
||
propertyInstance = responseBody[key];
|
||
var arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);
|
||
// Copy over any properties that have already been added into the instance, where they do
|
||
// not exist on the newly de-serialized array
|
||
for (var _f = 0, _g = Object.entries(instance); _f < _g.length; _f++) {
|
||
var _h = _g[_f], k = _h[0], v = _h[1];
|
||
if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {
|
||
arrayInstance[k] = v;
|
||
}
|
||
}
|
||
instance = arrayInstance;
|
||
}
|
||
else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {
|
||
serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);
|
||
instance[key] = serializedValue;
|
||
}
|
||
}
|
||
}
|
||
var additionalPropertiesMapper = mapper.type.additionalProperties;
|
||
if (additionalPropertiesMapper) {
|
||
var isAdditionalProperty = function (responsePropName) {
|
||
for (var clientPropName in modelProps) {
|
||
var paths = splitSerializeName(modelProps[clientPropName].serializedName);
|
||
if (paths[0] === responsePropName) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
};
|
||
for (var responsePropName in responseBody) {
|
||
if (isAdditionalProperty(responsePropName)) {
|
||
instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]', options);
|
||
}
|
||
}
|
||
}
|
||
else if (responseBody) {
|
||
for (var _j = 0, _k = Object.keys(responseBody); _j < _k.length; _j++) {
|
||
var key = _k[_j];
|
||
if (instance[key] === undefined &&
|
||
!handledPropertyNames.includes(key) &&
|
||
!isSpecialXmlProperty(key, options)) {
|
||
instance[key] = responseBody[key];
|
||
}
|
||
}
|
||
}
|
||
return instance;
|
||
}
|
||
function deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {
|
||
var value = mapper.type.value;
|
||
if (!value || typeof value !== "object") {
|
||
throw new Error("\"value\" metadata for a Dictionary must be defined in the " +
|
||
("mapper and it must of type \"object\" in " + objectName));
|
||
}
|
||
if (responseBody) {
|
||
var tempDictionary = {};
|
||
for (var _i = 0, _a = Object.keys(responseBody); _i < _a.length; _i++) {
|
||
var key = _a[_i];
|
||
tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);
|
||
}
|
||
return tempDictionary;
|
||
}
|
||
return responseBody;
|
||
}
|
||
function deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {
|
||
var element = mapper.type.element;
|
||
if (!element || typeof element !== "object") {
|
||
throw new Error("element\" metadata for an Array must be defined in the " +
|
||
("mapper and it must of type \"object\" in " + objectName));
|
||
}
|
||
if (responseBody) {
|
||
if (!Array.isArray(responseBody)) {
|
||
// xml2js will interpret a single element array as just the element, so force it to be an array
|
||
responseBody = [responseBody];
|
||
}
|
||
var tempArray = [];
|
||
for (var i = 0; i < responseBody.length; i++) {
|
||
tempArray[i] = serializer.deserialize(element, responseBody[i], objectName + "[" + i + "]", options);
|
||
}
|
||
return tempArray;
|
||
}
|
||
return responseBody;
|
||
}
|
||
function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {
|
||
var polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
|
||
if (polymorphicDiscriminator) {
|
||
var discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
|
||
if (discriminatorName != undefined) {
|
||
var discriminatorValue = object[discriminatorName];
|
||
if (discriminatorValue != undefined) {
|
||
var typeName = mapper.type.uberParent || mapper.type.className;
|
||
var indexDiscriminator = discriminatorValue === typeName
|
||
? discriminatorValue
|
||
: typeName + "." + discriminatorValue;
|
||
var polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];
|
||
if (polymorphicMapper) {
|
||
mapper = polymorphicMapper;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return mapper;
|
||
}
|
||
function getPolymorphicDiscriminatorRecursively(serializer, mapper) {
|
||
return (mapper.type.polymorphicDiscriminator ||
|
||
getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||
|
||
getPolymorphicDiscriminatorSafely(serializer, mapper.type.className));
|
||
}
|
||
function getPolymorphicDiscriminatorSafely(serializer, typeName) {
|
||
return (typeName &&
|
||
serializer.modelMappers[typeName] &&
|
||
serializer.modelMappers[typeName].type.polymorphicDiscriminator);
|
||
}
|
||
// TODO: why is this here?
|
||
function serializeObject(toSerialize) {
|
||
var castToSerialize = toSerialize;
|
||
if (toSerialize == undefined)
|
||
return undefined;
|
||
if (toSerialize instanceof Uint8Array) {
|
||
toSerialize = encodeByteArray(toSerialize);
|
||
return toSerialize;
|
||
}
|
||
else if (toSerialize instanceof Date) {
|
||
return toSerialize.toISOString();
|
||
}
|
||
else if (Array.isArray(toSerialize)) {
|
||
var array = [];
|
||
for (var i = 0; i < toSerialize.length; i++) {
|
||
array.push(serializeObject(toSerialize[i]));
|
||
}
|
||
return array;
|
||
}
|
||
else if (typeof toSerialize === "object") {
|
||
var dictionary = {};
|
||
for (var property in toSerialize) {
|
||
dictionary[property] = serializeObject(castToSerialize[property]);
|
||
}
|
||
return dictionary;
|
||
}
|
||
return toSerialize;
|
||
}
|
||
/**
|
||
* Utility function to create a K:V from a list of strings
|
||
*/
|
||
function strEnum(o) {
|
||
var result = {};
|
||
for (var _i = 0, o_1 = o; _i < o_1.length; _i++) {
|
||
var key = o_1[_i];
|
||
result[key] = key;
|
||
}
|
||
return result;
|
||
}
|
||
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
||
var MapperType = strEnum([
|
||
"Base64Url",
|
||
"Boolean",
|
||
"ByteArray",
|
||
"Composite",
|
||
"Date",
|
||
"DateTime",
|
||
"DateTimeRfc1123",
|
||
"Dictionary",
|
||
"Enum",
|
||
"Number",
|
||
"Object",
|
||
"Sequence",
|
||
"String",
|
||
"Stream",
|
||
"TimeSpan",
|
||
"UnixTime"
|
||
]);
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function isWebResourceLike(object) {
|
||
if (object && typeof object === "object") {
|
||
var castObject = object;
|
||
if (typeof castObject.url === "string" &&
|
||
typeof castObject.method === "string" &&
|
||
typeof castObject.headers === "object" &&
|
||
isHttpHeadersLike(castObject.headers) &&
|
||
typeof castObject.validateRequestProperties === "function" &&
|
||
typeof castObject.prepare === "function" &&
|
||
typeof castObject.clone === "function") {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
/**
|
||
* Creates a new WebResource object.
|
||
*
|
||
* This class provides an abstraction over a REST call by being library / implementation agnostic and wrapping the necessary
|
||
* properties to initiate a request.
|
||
*/
|
||
var WebResource = /** @class */ (function () {
|
||
function WebResource(url, method, body, query, headers, streamResponseBody, withCredentials, abortSignal, timeout, onUploadProgress, onDownloadProgress, proxySettings, keepAlive, decompressResponse, streamResponseStatusCodes) {
|
||
this.streamResponseBody = streamResponseBody;
|
||
this.streamResponseStatusCodes = streamResponseStatusCodes;
|
||
this.url = url || "";
|
||
this.method = method || "GET";
|
||
this.headers = isHttpHeadersLike(headers) ? headers : new HttpHeaders(headers);
|
||
this.body = body;
|
||
this.query = query;
|
||
this.formData = undefined;
|
||
this.withCredentials = withCredentials || false;
|
||
this.abortSignal = abortSignal;
|
||
this.timeout = timeout || 0;
|
||
this.onUploadProgress = onUploadProgress;
|
||
this.onDownloadProgress = onDownloadProgress;
|
||
this.proxySettings = proxySettings;
|
||
this.keepAlive = keepAlive;
|
||
this.decompressResponse = decompressResponse;
|
||
this.requestId = this.headers.get("x-ms-client-request-id") || generateUuid();
|
||
}
|
||
/**
|
||
* Validates that the required properties such as method, url, headers["Content-Type"],
|
||
* headers["accept-language"] are defined. It will throw an error if one of the above
|
||
* mentioned properties are not defined.
|
||
*/
|
||
WebResource.prototype.validateRequestProperties = function () {
|
||
if (!this.method) {
|
||
throw new Error("WebResource.method is required.");
|
||
}
|
||
if (!this.url) {
|
||
throw new Error("WebResource.url is required.");
|
||
}
|
||
};
|
||
/**
|
||
* Prepares the request.
|
||
* @param options - Options to provide for preparing the request.
|
||
* @returns Returns the prepared WebResource (HTTP Request) object that needs to be given to the request pipeline.
|
||
*/
|
||
WebResource.prototype.prepare = function (options) {
|
||
if (!options) {
|
||
throw new Error("options object is required");
|
||
}
|
||
if (options.method === undefined ||
|
||
options.method === null ||
|
||
typeof options.method.valueOf() !== "string") {
|
||
throw new Error("options.method must be a string.");
|
||
}
|
||
if (options.url && options.pathTemplate) {
|
||
throw new Error("options.url and options.pathTemplate are mutually exclusive. Please provide exactly one of them.");
|
||
}
|
||
if ((options.pathTemplate === undefined ||
|
||
options.pathTemplate === null ||
|
||
typeof options.pathTemplate.valueOf() !== "string") &&
|
||
(options.url === undefined ||
|
||
options.url === null ||
|
||
typeof options.url.valueOf() !== "string")) {
|
||
throw new Error("Please provide exactly one of options.pathTemplate or options.url.");
|
||
}
|
||
// set the url if it is provided.
|
||
if (options.url) {
|
||
if (typeof options.url !== "string") {
|
||
throw new Error('options.url must be of type "string".');
|
||
}
|
||
this.url = options.url;
|
||
}
|
||
// set the method
|
||
if (options.method) {
|
||
var validMethods = ["GET", "PUT", "HEAD", "DELETE", "OPTIONS", "POST", "PATCH", "TRACE"];
|
||
if (validMethods.indexOf(options.method.toUpperCase()) === -1) {
|
||
throw new Error('The provided method "' +
|
||
options.method +
|
||
'" is invalid. Supported HTTP methods are: ' +
|
||
JSON.stringify(validMethods));
|
||
}
|
||
}
|
||
this.method = options.method.toUpperCase();
|
||
// construct the url if path template is provided
|
||
if (options.pathTemplate) {
|
||
var pathTemplate_1 = options.pathTemplate, pathParameters_1 = options.pathParameters;
|
||
if (typeof pathTemplate_1 !== "string") {
|
||
throw new Error('options.pathTemplate must be of type "string".');
|
||
}
|
||
if (!options.baseUrl) {
|
||
options.baseUrl = "https://management.azure.com";
|
||
}
|
||
var baseUrl = options.baseUrl;
|
||
var url_1 = baseUrl +
|
||
(baseUrl.endsWith("/") ? "" : "/") +
|
||
(pathTemplate_1.startsWith("/") ? pathTemplate_1.slice(1) : pathTemplate_1);
|
||
var segments = url_1.match(/({[\w-]*\s*[\w-]*})/gi);
|
||
if (segments && segments.length) {
|
||
if (!pathParameters_1) {
|
||
throw new Error("pathTemplate: " + pathTemplate_1 + " has been provided. Hence, options.pathParameters must also be provided.");
|
||
}
|
||
segments.forEach(function (item) {
|
||
var pathParamName = item.slice(1, -1);
|
||
var pathParam = pathParameters_1[pathParamName];
|
||
if (pathParam === null ||
|
||
pathParam === undefined ||
|
||
!(typeof pathParam === "string" || typeof pathParam === "object")) {
|
||
var stringifiedPathParameters = JSON.stringify(pathParameters_1, undefined, 2);
|
||
throw new Error("pathTemplate: " + pathTemplate_1 + " contains the path parameter " + pathParamName +
|
||
(" however, it is not present in parameters: " + stringifiedPathParameters + ".") +
|
||
("The value of the path parameter can either be a \"string\" of the form { " + pathParamName + ": \"some sample value\" } or ") +
|
||
("it can be an \"object\" of the form { \"" + pathParamName + "\": { value: \"some sample value\", skipUrlEncoding: true } }."));
|
||
}
|
||
if (typeof pathParam.valueOf() === "string") {
|
||
url_1 = url_1.replace(item, encodeURIComponent(pathParam));
|
||
}
|
||
if (typeof pathParam.valueOf() === "object") {
|
||
if (!pathParam.value) {
|
||
throw new Error("options.pathParameters[" + pathParamName + "] is of type \"object\" but it does not contain a \"value\" property.");
|
||
}
|
||
if (pathParam.skipUrlEncoding) {
|
||
url_1 = url_1.replace(item, pathParam.value);
|
||
}
|
||
else {
|
||
url_1 = url_1.replace(item, encodeURIComponent(pathParam.value));
|
||
}
|
||
}
|
||
});
|
||
}
|
||
this.url = url_1;
|
||
}
|
||
// append query parameters to the url if they are provided. They can be provided with pathTemplate or url option.
|
||
if (options.queryParameters) {
|
||
var queryParameters = options.queryParameters;
|
||
if (typeof queryParameters !== "object") {
|
||
throw new Error("options.queryParameters must be of type object. It should be a JSON object " +
|
||
"of \"query-parameter-name\" as the key and the \"query-parameter-value\" as the value. " +
|
||
"The \"query-parameter-value\" may be fo type \"string\" or an \"object\" of the form { value: \"query-parameter-value\", skipUrlEncoding: true }.");
|
||
}
|
||
// append question mark if it is not present in the url
|
||
if (this.url && this.url.indexOf("?") === -1) {
|
||
this.url += "?";
|
||
}
|
||
// construct queryString
|
||
var queryParams = [];
|
||
// We need to populate this.query as a dictionary if the request is being used for Sway's validateRequest().
|
||
this.query = {};
|
||
for (var queryParamName in queryParameters) {
|
||
var queryParam = queryParameters[queryParamName];
|
||
if (queryParam) {
|
||
if (typeof queryParam === "string") {
|
||
queryParams.push(queryParamName + "=" + encodeURIComponent(queryParam));
|
||
this.query[queryParamName] = encodeURIComponent(queryParam);
|
||
}
|
||
else if (typeof queryParam === "object") {
|
||
if (!queryParam.value) {
|
||
throw new Error("options.queryParameters[" + queryParamName + "] is of type \"object\" but it does not contain a \"value\" property.");
|
||
}
|
||
if (queryParam.skipUrlEncoding) {
|
||
queryParams.push(queryParamName + "=" + queryParam.value);
|
||
this.query[queryParamName] = queryParam.value;
|
||
}
|
||
else {
|
||
queryParams.push(queryParamName + "=" + encodeURIComponent(queryParam.value));
|
||
this.query[queryParamName] = encodeURIComponent(queryParam.value);
|
||
}
|
||
}
|
||
}
|
||
} // end-of-for
|
||
// append the queryString
|
||
this.url += queryParams.join("&");
|
||
}
|
||
// add headers to the request if they are provided
|
||
if (options.headers) {
|
||
var headers = options.headers;
|
||
for (var _i = 0, _a = Object.keys(options.headers); _i < _a.length; _i++) {
|
||
var headerName = _a[_i];
|
||
this.headers.set(headerName, headers[headerName]);
|
||
}
|
||
}
|
||
// ensure accept-language is set correctly
|
||
if (!this.headers.get("accept-language")) {
|
||
this.headers.set("accept-language", "en-US");
|
||
}
|
||
// ensure the request-id is set correctly
|
||
if (!this.headers.get("x-ms-client-request-id") && !options.disableClientRequestId) {
|
||
this.headers.set("x-ms-client-request-id", this.requestId);
|
||
}
|
||
// default
|
||
if (!this.headers.get("Content-Type")) {
|
||
this.headers.set("Content-Type", "application/json; charset=utf-8");
|
||
}
|
||
// set the request body. request.js automatically sets the Content-Length request header, so we need not set it explicitly
|
||
this.body = options.body;
|
||
if (options.body !== undefined && options.body !== null) {
|
||
// body as a stream special case. set the body as-is and check for some special request headers specific to sending a stream.
|
||
if (options.bodyIsStream) {
|
||
if (!this.headers.get("Transfer-Encoding")) {
|
||
this.headers.set("Transfer-Encoding", "chunked");
|
||
}
|
||
if (this.headers.get("Content-Type") !== "application/octet-stream") {
|
||
this.headers.set("Content-Type", "application/octet-stream");
|
||
}
|
||
}
|
||
else {
|
||
if (options.serializationMapper) {
|
||
this.body = new Serializer(options.mappers).serialize(options.serializationMapper, options.body, "requestBody");
|
||
}
|
||
if (!options.disableJsonStringifyOnBody) {
|
||
this.body = JSON.stringify(options.body);
|
||
}
|
||
}
|
||
}
|
||
if (options.spanOptions) {
|
||
this.spanOptions = options.spanOptions;
|
||
}
|
||
if (options.tracingContext) {
|
||
this.tracingContext = options.tracingContext;
|
||
}
|
||
this.abortSignal = options.abortSignal;
|
||
this.onDownloadProgress = options.onDownloadProgress;
|
||
this.onUploadProgress = options.onUploadProgress;
|
||
return this;
|
||
};
|
||
/**
|
||
* Clone this WebResource HTTP request object.
|
||
* @returns The clone of this WebResource HTTP request object.
|
||
*/
|
||
WebResource.prototype.clone = function () {
|
||
var result = new WebResource(this.url, this.method, this.body, this.query, this.headers && this.headers.clone(), this.streamResponseBody, this.withCredentials, this.abortSignal, this.timeout, this.onUploadProgress, this.onDownloadProgress, this.proxySettings, this.keepAlive, this.decompressResponse, this.streamResponseStatusCodes);
|
||
if (this.formData) {
|
||
result.formData = this.formData;
|
||
}
|
||
if (this.operationSpec) {
|
||
result.operationSpec = this.operationSpec;
|
||
}
|
||
if (this.shouldDeserialize) {
|
||
result.shouldDeserialize = this.shouldDeserialize;
|
||
}
|
||
if (this.operationResponseGetter) {
|
||
result.operationResponseGetter = this.operationResponseGetter;
|
||
}
|
||
return result;
|
||
};
|
||
return WebResource;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var custom = util.inspect.custom;
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* A class that handles the query portion of a URLBuilder.
|
||
*/
|
||
var URLQuery = /** @class */ (function () {
|
||
function URLQuery() {
|
||
this._rawQuery = {};
|
||
}
|
||
/**
|
||
* Get whether or not there any query parameters in this URLQuery.
|
||
*/
|
||
URLQuery.prototype.any = function () {
|
||
return Object.keys(this._rawQuery).length > 0;
|
||
};
|
||
/**
|
||
* Get the keys of the query string.
|
||
*/
|
||
URLQuery.prototype.keys = function () {
|
||
return Object.keys(this._rawQuery);
|
||
};
|
||
/**
|
||
* Set a query parameter with the provided name and value. If the parameterValue is undefined or
|
||
* empty, then this will attempt to remove an existing query parameter with the provided
|
||
* parameterName.
|
||
*/
|
||
URLQuery.prototype.set = function (parameterName, parameterValue) {
|
||
var caseParameterValue = parameterValue;
|
||
if (parameterName) {
|
||
if (caseParameterValue !== undefined && caseParameterValue !== null) {
|
||
var newValue = Array.isArray(caseParameterValue)
|
||
? caseParameterValue
|
||
: caseParameterValue.toString();
|
||
this._rawQuery[parameterName] = newValue;
|
||
}
|
||
else {
|
||
delete this._rawQuery[parameterName];
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* Get the value of the query parameter with the provided name. If no parameter exists with the
|
||
* provided parameter name, then undefined will be returned.
|
||
*/
|
||
URLQuery.prototype.get = function (parameterName) {
|
||
return parameterName ? this._rawQuery[parameterName] : undefined;
|
||
};
|
||
/**
|
||
* Get the string representation of this query. The return value will not start with a "?".
|
||
*/
|
||
URLQuery.prototype.toString = function () {
|
||
var result = "";
|
||
for (var parameterName in this._rawQuery) {
|
||
if (result) {
|
||
result += "&";
|
||
}
|
||
var parameterValue = this._rawQuery[parameterName];
|
||
if (Array.isArray(parameterValue)) {
|
||
var parameterStrings = [];
|
||
for (var _i = 0, parameterValue_1 = parameterValue; _i < parameterValue_1.length; _i++) {
|
||
var parameterValueElement = parameterValue_1[_i];
|
||
parameterStrings.push(parameterName + "=" + parameterValueElement);
|
||
}
|
||
result += parameterStrings.join("&");
|
||
}
|
||
else {
|
||
result += parameterName + "=" + parameterValue;
|
||
}
|
||
}
|
||
return result;
|
||
};
|
||
/**
|
||
* Parse a URLQuery from the provided text.
|
||
*/
|
||
URLQuery.parse = function (text) {
|
||
var result = new URLQuery();
|
||
if (text) {
|
||
if (text.startsWith("?")) {
|
||
text = text.substring(1);
|
||
}
|
||
var currentState = "ParameterName";
|
||
var parameterName = "";
|
||
var parameterValue = "";
|
||
for (var i = 0; i < text.length; ++i) {
|
||
var currentCharacter = text[i];
|
||
switch (currentState) {
|
||
case "ParameterName":
|
||
switch (currentCharacter) {
|
||
case "=":
|
||
currentState = "ParameterValue";
|
||
break;
|
||
case "&":
|
||
parameterName = "";
|
||
parameterValue = "";
|
||
break;
|
||
default:
|
||
parameterName += currentCharacter;
|
||
break;
|
||
}
|
||
break;
|
||
case "ParameterValue":
|
||
switch (currentCharacter) {
|
||
case "&":
|
||
result.set(parameterName, parameterValue);
|
||
parameterName = "";
|
||
parameterValue = "";
|
||
currentState = "ParameterName";
|
||
break;
|
||
default:
|
||
parameterValue += currentCharacter;
|
||
break;
|
||
}
|
||
break;
|
||
default:
|
||
throw new Error("Unrecognized URLQuery parse state: " + currentState);
|
||
}
|
||
}
|
||
if (currentState === "ParameterValue") {
|
||
result.set(parameterName, parameterValue);
|
||
}
|
||
}
|
||
return result;
|
||
};
|
||
return URLQuery;
|
||
}());
|
||
/**
|
||
* A class that handles creating, modifying, and parsing URLs.
|
||
*/
|
||
var URLBuilder = /** @class */ (function () {
|
||
function URLBuilder() {
|
||
}
|
||
/**
|
||
* Set the scheme/protocol for this URL. If the provided scheme contains other parts of a URL
|
||
* (such as a host, port, path, or query), those parts will be added to this URL as well.
|
||
*/
|
||
URLBuilder.prototype.setScheme = function (scheme) {
|
||
if (!scheme) {
|
||
this._scheme = undefined;
|
||
}
|
||
else {
|
||
this.set(scheme, "SCHEME");
|
||
}
|
||
};
|
||
/**
|
||
* Get the scheme that has been set in this URL.
|
||
*/
|
||
URLBuilder.prototype.getScheme = function () {
|
||
return this._scheme;
|
||
};
|
||
/**
|
||
* Set the host for this URL. If the provided host contains other parts of a URL (such as a
|
||
* port, path, or query), those parts will be added to this URL as well.
|
||
*/
|
||
URLBuilder.prototype.setHost = function (host) {
|
||
if (!host) {
|
||
this._host = undefined;
|
||
}
|
||
else {
|
||
this.set(host, "SCHEME_OR_HOST");
|
||
}
|
||
};
|
||
/**
|
||
* Get the host that has been set in this URL.
|
||
*/
|
||
URLBuilder.prototype.getHost = function () {
|
||
return this._host;
|
||
};
|
||
/**
|
||
* Set the port for this URL. If the provided port contains other parts of a URL (such as a
|
||
* path or query), those parts will be added to this URL as well.
|
||
*/
|
||
URLBuilder.prototype.setPort = function (port) {
|
||
if (port === undefined || port === null || port === "") {
|
||
this._port = undefined;
|
||
}
|
||
else {
|
||
this.set(port.toString(), "PORT");
|
||
}
|
||
};
|
||
/**
|
||
* Get the port that has been set in this URL.
|
||
*/
|
||
URLBuilder.prototype.getPort = function () {
|
||
return this._port;
|
||
};
|
||
/**
|
||
* Set the path for this URL. If the provided path contains a query, then it will be added to
|
||
* this URL as well.
|
||
*/
|
||
URLBuilder.prototype.setPath = function (path) {
|
||
if (!path) {
|
||
this._path = undefined;
|
||
}
|
||
else {
|
||
var schemeIndex = path.indexOf("://");
|
||
if (schemeIndex !== -1) {
|
||
var schemeStart = path.lastIndexOf("/", schemeIndex);
|
||
// Make sure to only grab the URL part of the path before setting the state back to SCHEME
|
||
// this will handle cases such as "/a/b/c/https://microsoft.com" => "https://microsoft.com"
|
||
this.set(schemeStart === -1 ? path : path.substr(schemeStart + 1), "SCHEME");
|
||
}
|
||
else {
|
||
this.set(path, "PATH");
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* Append the provided path to this URL's existing path. If the provided path contains a query,
|
||
* then it will be added to this URL as well.
|
||
*/
|
||
URLBuilder.prototype.appendPath = function (path) {
|
||
if (path) {
|
||
var currentPath = this.getPath();
|
||
if (currentPath) {
|
||
if (!currentPath.endsWith("/")) {
|
||
currentPath += "/";
|
||
}
|
||
if (path.startsWith("/")) {
|
||
path = path.substring(1);
|
||
}
|
||
path = currentPath + path;
|
||
}
|
||
this.set(path, "PATH");
|
||
}
|
||
};
|
||
/**
|
||
* Get the path that has been set in this URL.
|
||
*/
|
||
URLBuilder.prototype.getPath = function () {
|
||
return this._path;
|
||
};
|
||
/**
|
||
* Set the query in this URL.
|
||
*/
|
||
URLBuilder.prototype.setQuery = function (query) {
|
||
if (!query) {
|
||
this._query = undefined;
|
||
}
|
||
else {
|
||
this._query = URLQuery.parse(query);
|
||
}
|
||
};
|
||
/**
|
||
* Set a query parameter with the provided name and value in this URL's query. If the provided
|
||
* query parameter value is undefined or empty, then the query parameter will be removed if it
|
||
* existed.
|
||
*/
|
||
URLBuilder.prototype.setQueryParameter = function (queryParameterName, queryParameterValue) {
|
||
if (queryParameterName) {
|
||
if (!this._query) {
|
||
this._query = new URLQuery();
|
||
}
|
||
this._query.set(queryParameterName, queryParameterValue);
|
||
}
|
||
};
|
||
/**
|
||
* Get the value of the query parameter with the provided query parameter name. If no query
|
||
* parameter exists with the provided name, then undefined will be returned.
|
||
*/
|
||
URLBuilder.prototype.getQueryParameterValue = function (queryParameterName) {
|
||
return this._query ? this._query.get(queryParameterName) : undefined;
|
||
};
|
||
/**
|
||
* Get the query in this URL.
|
||
*/
|
||
URLBuilder.prototype.getQuery = function () {
|
||
return this._query ? this._query.toString() : undefined;
|
||
};
|
||
/**
|
||
* Set the parts of this URL by parsing the provided text using the provided startState.
|
||
*/
|
||
URLBuilder.prototype.set = function (text, startState) {
|
||
var tokenizer = new URLTokenizer(text, startState);
|
||
while (tokenizer.next()) {
|
||
var token = tokenizer.current();
|
||
var tokenPath = void 0;
|
||
if (token) {
|
||
switch (token.type) {
|
||
case "SCHEME":
|
||
this._scheme = token.text || undefined;
|
||
break;
|
||
case "HOST":
|
||
this._host = token.text || undefined;
|
||
break;
|
||
case "PORT":
|
||
this._port = token.text || undefined;
|
||
break;
|
||
case "PATH":
|
||
tokenPath = token.text || undefined;
|
||
if (!this._path || this._path === "/" || tokenPath !== "/") {
|
||
this._path = tokenPath;
|
||
}
|
||
break;
|
||
case "QUERY":
|
||
this._query = URLQuery.parse(token.text);
|
||
break;
|
||
default:
|
||
throw new Error("Unrecognized URLTokenType: " + token.type);
|
||
}
|
||
}
|
||
}
|
||
};
|
||
URLBuilder.prototype.toString = function () {
|
||
var result = "";
|
||
if (this._scheme) {
|
||
result += this._scheme + "://";
|
||
}
|
||
if (this._host) {
|
||
result += this._host;
|
||
}
|
||
if (this._port) {
|
||
result += ":" + this._port;
|
||
}
|
||
if (this._path) {
|
||
if (!this._path.startsWith("/")) {
|
||
result += "/";
|
||
}
|
||
result += this._path;
|
||
}
|
||
if (this._query && this._query.any()) {
|
||
result += "?" + this._query.toString();
|
||
}
|
||
return result;
|
||
};
|
||
/**
|
||
* If the provided searchValue is found in this URLBuilder, then replace it with the provided
|
||
* replaceValue.
|
||
*/
|
||
URLBuilder.prototype.replaceAll = function (searchValue, replaceValue) {
|
||
if (searchValue) {
|
||
this.setScheme(replaceAll(this.getScheme(), searchValue, replaceValue));
|
||
this.setHost(replaceAll(this.getHost(), searchValue, replaceValue));
|
||
this.setPort(replaceAll(this.getPort(), searchValue, replaceValue));
|
||
this.setPath(replaceAll(this.getPath(), searchValue, replaceValue));
|
||
this.setQuery(replaceAll(this.getQuery(), searchValue, replaceValue));
|
||
}
|
||
};
|
||
URLBuilder.parse = function (text) {
|
||
var result = new URLBuilder();
|
||
result.set(text, "SCHEME_OR_HOST");
|
||
return result;
|
||
};
|
||
return URLBuilder;
|
||
}());
|
||
var URLToken = /** @class */ (function () {
|
||
function URLToken(text, type) {
|
||
this.text = text;
|
||
this.type = type;
|
||
}
|
||
URLToken.scheme = function (text) {
|
||
return new URLToken(text, "SCHEME");
|
||
};
|
||
URLToken.host = function (text) {
|
||
return new URLToken(text, "HOST");
|
||
};
|
||
URLToken.port = function (text) {
|
||
return new URLToken(text, "PORT");
|
||
};
|
||
URLToken.path = function (text) {
|
||
return new URLToken(text, "PATH");
|
||
};
|
||
URLToken.query = function (text) {
|
||
return new URLToken(text, "QUERY");
|
||
};
|
||
return URLToken;
|
||
}());
|
||
/**
|
||
* Get whether or not the provided character (single character string) is an alphanumeric (letter or
|
||
* digit) character.
|
||
*/
|
||
function isAlphaNumericCharacter(character) {
|
||
var characterCode = character.charCodeAt(0);
|
||
return ((48 /* '0' */ <= characterCode && characterCode <= 57) /* '9' */ ||
|
||
(65 /* 'A' */ <= characterCode && characterCode <= 90) /* 'Z' */ ||
|
||
(97 /* 'a' */ <= characterCode && characterCode <= 122) /* 'z' */);
|
||
}
|
||
/**
|
||
* A class that tokenizes URL strings.
|
||
*/
|
||
var URLTokenizer = /** @class */ (function () {
|
||
function URLTokenizer(_text, state) {
|
||
this._text = _text;
|
||
this._textLength = _text ? _text.length : 0;
|
||
this._currentState = state !== undefined && state !== null ? state : "SCHEME_OR_HOST";
|
||
this._currentIndex = 0;
|
||
}
|
||
/**
|
||
* Get the current URLToken this URLTokenizer is pointing at, or undefined if the URLTokenizer
|
||
* hasn't started or has finished tokenizing.
|
||
*/
|
||
URLTokenizer.prototype.current = function () {
|
||
return this._currentToken;
|
||
};
|
||
/**
|
||
* Advance to the next URLToken and return whether or not a URLToken was found.
|
||
*/
|
||
URLTokenizer.prototype.next = function () {
|
||
if (!hasCurrentCharacter(this)) {
|
||
this._currentToken = undefined;
|
||
}
|
||
else {
|
||
switch (this._currentState) {
|
||
case "SCHEME":
|
||
nextScheme(this);
|
||
break;
|
||
case "SCHEME_OR_HOST":
|
||
nextSchemeOrHost(this);
|
||
break;
|
||
case "HOST":
|
||
nextHost(this);
|
||
break;
|
||
case "PORT":
|
||
nextPort(this);
|
||
break;
|
||
case "PATH":
|
||
nextPath(this);
|
||
break;
|
||
case "QUERY":
|
||
nextQuery(this);
|
||
break;
|
||
default:
|
||
throw new Error("Unrecognized URLTokenizerState: " + this._currentState);
|
||
}
|
||
}
|
||
return !!this._currentToken;
|
||
};
|
||
return URLTokenizer;
|
||
}());
|
||
/**
|
||
* Read the remaining characters from this Tokenizer's character stream.
|
||
*/
|
||
function readRemaining(tokenizer) {
|
||
var result = "";
|
||
if (tokenizer._currentIndex < tokenizer._textLength) {
|
||
result = tokenizer._text.substring(tokenizer._currentIndex);
|
||
tokenizer._currentIndex = tokenizer._textLength;
|
||
}
|
||
return result;
|
||
}
|
||
/**
|
||
* Whether or not this URLTokenizer has a current character.
|
||
*/
|
||
function hasCurrentCharacter(tokenizer) {
|
||
return tokenizer._currentIndex < tokenizer._textLength;
|
||
}
|
||
/**
|
||
* Get the character in the text string at the current index.
|
||
*/
|
||
function getCurrentCharacter(tokenizer) {
|
||
return tokenizer._text[tokenizer._currentIndex];
|
||
}
|
||
/**
|
||
* Advance to the character in text that is "step" characters ahead. If no step value is provided,
|
||
* then step will default to 1.
|
||
*/
|
||
function nextCharacter(tokenizer, step) {
|
||
if (hasCurrentCharacter(tokenizer)) {
|
||
if (!step) {
|
||
step = 1;
|
||
}
|
||
tokenizer._currentIndex += step;
|
||
}
|
||
}
|
||
/**
|
||
* Starting with the current character, peek "charactersToPeek" number of characters ahead in this
|
||
* Tokenizer's stream of characters.
|
||
*/
|
||
function peekCharacters(tokenizer, charactersToPeek) {
|
||
var endIndex = tokenizer._currentIndex + charactersToPeek;
|
||
if (tokenizer._textLength < endIndex) {
|
||
endIndex = tokenizer._textLength;
|
||
}
|
||
return tokenizer._text.substring(tokenizer._currentIndex, endIndex);
|
||
}
|
||
/**
|
||
* Read characters from this Tokenizer until the end of the stream or until the provided condition
|
||
* is false when provided the current character.
|
||
*/
|
||
function readWhile(tokenizer, condition) {
|
||
var result = "";
|
||
while (hasCurrentCharacter(tokenizer)) {
|
||
var currentCharacter = getCurrentCharacter(tokenizer);
|
||
if (!condition(currentCharacter)) {
|
||
break;
|
||
}
|
||
else {
|
||
result += currentCharacter;
|
||
nextCharacter(tokenizer);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
/**
|
||
* Read characters from this Tokenizer until a non-alphanumeric character or the end of the
|
||
* character stream is reached.
|
||
*/
|
||
function readWhileLetterOrDigit(tokenizer) {
|
||
return readWhile(tokenizer, function (character) { return isAlphaNumericCharacter(character); });
|
||
}
|
||
/**
|
||
* Read characters from this Tokenizer until one of the provided terminating characters is read or
|
||
* the end of the character stream is reached.
|
||
*/
|
||
function readUntilCharacter(tokenizer) {
|
||
var terminatingCharacters = [];
|
||
for (var _i = 1; _i < arguments.length; _i++) {
|
||
terminatingCharacters[_i - 1] = arguments[_i];
|
||
}
|
||
return readWhile(tokenizer, function (character) { return terminatingCharacters.indexOf(character) === -1; });
|
||
}
|
||
function nextScheme(tokenizer) {
|
||
var scheme = readWhileLetterOrDigit(tokenizer);
|
||
tokenizer._currentToken = URLToken.scheme(scheme);
|
||
if (!hasCurrentCharacter(tokenizer)) {
|
||
tokenizer._currentState = "DONE";
|
||
}
|
||
else {
|
||
tokenizer._currentState = "HOST";
|
||
}
|
||
}
|
||
function nextSchemeOrHost(tokenizer) {
|
||
var schemeOrHost = readUntilCharacter(tokenizer, ":", "/", "?");
|
||
if (!hasCurrentCharacter(tokenizer)) {
|
||
tokenizer._currentToken = URLToken.host(schemeOrHost);
|
||
tokenizer._currentState = "DONE";
|
||
}
|
||
else if (getCurrentCharacter(tokenizer) === ":") {
|
||
if (peekCharacters(tokenizer, 3) === "://") {
|
||
tokenizer._currentToken = URLToken.scheme(schemeOrHost);
|
||
tokenizer._currentState = "HOST";
|
||
}
|
||
else {
|
||
tokenizer._currentToken = URLToken.host(schemeOrHost);
|
||
tokenizer._currentState = "PORT";
|
||
}
|
||
}
|
||
else {
|
||
tokenizer._currentToken = URLToken.host(schemeOrHost);
|
||
if (getCurrentCharacter(tokenizer) === "/") {
|
||
tokenizer._currentState = "PATH";
|
||
}
|
||
else {
|
||
tokenizer._currentState = "QUERY";
|
||
}
|
||
}
|
||
}
|
||
function nextHost(tokenizer) {
|
||
if (peekCharacters(tokenizer, 3) === "://") {
|
||
nextCharacter(tokenizer, 3);
|
||
}
|
||
var host = readUntilCharacter(tokenizer, ":", "/", "?");
|
||
tokenizer._currentToken = URLToken.host(host);
|
||
if (!hasCurrentCharacter(tokenizer)) {
|
||
tokenizer._currentState = "DONE";
|
||
}
|
||
else if (getCurrentCharacter(tokenizer) === ":") {
|
||
tokenizer._currentState = "PORT";
|
||
}
|
||
else if (getCurrentCharacter(tokenizer) === "/") {
|
||
tokenizer._currentState = "PATH";
|
||
}
|
||
else {
|
||
tokenizer._currentState = "QUERY";
|
||
}
|
||
}
|
||
function nextPort(tokenizer) {
|
||
if (getCurrentCharacter(tokenizer) === ":") {
|
||
nextCharacter(tokenizer);
|
||
}
|
||
var port = readUntilCharacter(tokenizer, "/", "?");
|
||
tokenizer._currentToken = URLToken.port(port);
|
||
if (!hasCurrentCharacter(tokenizer)) {
|
||
tokenizer._currentState = "DONE";
|
||
}
|
||
else if (getCurrentCharacter(tokenizer) === "/") {
|
||
tokenizer._currentState = "PATH";
|
||
}
|
||
else {
|
||
tokenizer._currentState = "QUERY";
|
||
}
|
||
}
|
||
function nextPath(tokenizer) {
|
||
var path = readUntilCharacter(tokenizer, "?");
|
||
tokenizer._currentToken = URLToken.path(path);
|
||
if (!hasCurrentCharacter(tokenizer)) {
|
||
tokenizer._currentState = "DONE";
|
||
}
|
||
else {
|
||
tokenizer._currentState = "QUERY";
|
||
}
|
||
}
|
||
function nextQuery(tokenizer) {
|
||
if (getCurrentCharacter(tokenizer) === "?") {
|
||
nextCharacter(tokenizer);
|
||
}
|
||
var query = readRemaining(tokenizer);
|
||
tokenizer._currentToken = URLToken.query(query);
|
||
tokenizer._currentState = "DONE";
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var RedactedString = "REDACTED";
|
||
var defaultAllowedHeaderNames = [
|
||
"x-ms-client-request-id",
|
||
"x-ms-return-client-request-id",
|
||
"x-ms-useragent",
|
||
"x-ms-correlation-request-id",
|
||
"x-ms-request-id",
|
||
"client-request-id",
|
||
"ms-cv",
|
||
"return-client-request-id",
|
||
"traceparent",
|
||
"Access-Control-Allow-Credentials",
|
||
"Access-Control-Allow-Headers",
|
||
"Access-Control-Allow-Methods",
|
||
"Access-Control-Allow-Origin",
|
||
"Access-Control-Expose-Headers",
|
||
"Access-Control-Max-Age",
|
||
"Access-Control-Request-Headers",
|
||
"Access-Control-Request-Method",
|
||
"Origin",
|
||
"Accept",
|
||
"Accept-Encoding",
|
||
"Cache-Control",
|
||
"Connection",
|
||
"Content-Length",
|
||
"Content-Type",
|
||
"Date",
|
||
"ETag",
|
||
"Expires",
|
||
"If-Match",
|
||
"If-Modified-Since",
|
||
"If-None-Match",
|
||
"If-Unmodified-Since",
|
||
"Last-Modified",
|
||
"Pragma",
|
||
"Request-Id",
|
||
"Retry-After",
|
||
"Server",
|
||
"Transfer-Encoding",
|
||
"User-Agent"
|
||
];
|
||
var defaultAllowedQueryParameters = ["api-version"];
|
||
var Sanitizer = /** @class */ (function () {
|
||
function Sanitizer(_a) {
|
||
var _b = _a === void 0 ? {} : _a, _c = _b.allowedHeaderNames, allowedHeaderNames = _c === void 0 ? [] : _c, _d = _b.allowedQueryParameters, allowedQueryParameters = _d === void 0 ? [] : _d;
|
||
allowedHeaderNames = Array.isArray(allowedHeaderNames)
|
||
? defaultAllowedHeaderNames.concat(allowedHeaderNames)
|
||
: defaultAllowedHeaderNames;
|
||
allowedQueryParameters = Array.isArray(allowedQueryParameters)
|
||
? defaultAllowedQueryParameters.concat(allowedQueryParameters)
|
||
: defaultAllowedQueryParameters;
|
||
this.allowedHeaderNames = new Set(allowedHeaderNames.map(function (n) { return n.toLowerCase(); }));
|
||
this.allowedQueryParameters = new Set(allowedQueryParameters.map(function (p) { return p.toLowerCase(); }));
|
||
}
|
||
Sanitizer.prototype.sanitize = function (obj) {
|
||
var _this = this;
|
||
var seen = new Set();
|
||
return JSON.stringify(obj, function (key, value) {
|
||
// Ensure Errors include their interesting non-enumerable members
|
||
if (value instanceof Error) {
|
||
return tslib.__assign(tslib.__assign({}, value), { name: value.name, message: value.message });
|
||
}
|
||
if (key === "_headersMap") {
|
||
return _this.sanitizeHeaders(value);
|
||
}
|
||
else if (key === "url") {
|
||
return _this.sanitizeUrl(value);
|
||
}
|
||
else if (key === "query") {
|
||
return _this.sanitizeQuery(value);
|
||
}
|
||
else if (key === "body") {
|
||
// Don't log the request body
|
||
return undefined;
|
||
}
|
||
else if (key === "response") {
|
||
// Don't log response again
|
||
return undefined;
|
||
}
|
||
else if (key === "operationSpec") {
|
||
// When using sendOperationRequest, the request carries a massive
|
||
// field with the autorest spec. No need to log it.
|
||
return undefined;
|
||
}
|
||
else if (Array.isArray(value) || isObject(value)) {
|
||
if (seen.has(value)) {
|
||
return "[Circular]";
|
||
}
|
||
seen.add(value);
|
||
}
|
||
return value;
|
||
}, 2);
|
||
};
|
||
Sanitizer.prototype.sanitizeHeaders = function (value) {
|
||
return this.sanitizeObject(value, this.allowedHeaderNames, function (v, k) { return v[k].value; });
|
||
};
|
||
Sanitizer.prototype.sanitizeQuery = function (value) {
|
||
return this.sanitizeObject(value, this.allowedQueryParameters, function (v, k) { return v[k]; });
|
||
};
|
||
Sanitizer.prototype.sanitizeObject = function (value, allowedKeys, accessor) {
|
||
if (typeof value !== "object" || value === null) {
|
||
return value;
|
||
}
|
||
var sanitized = {};
|
||
for (var _i = 0, _a = Object.keys(value); _i < _a.length; _i++) {
|
||
var k = _a[_i];
|
||
if (allowedKeys.has(k.toLowerCase())) {
|
||
sanitized[k] = accessor(value, k);
|
||
}
|
||
else {
|
||
sanitized[k] = RedactedString;
|
||
}
|
||
}
|
||
return sanitized;
|
||
};
|
||
Sanitizer.prototype.sanitizeUrl = function (value) {
|
||
if (typeof value !== "string" || value === null) {
|
||
return value;
|
||
}
|
||
var urlBuilder = URLBuilder.parse(value);
|
||
var queryString = urlBuilder.getQuery();
|
||
if (!queryString) {
|
||
return value;
|
||
}
|
||
var query = URLQuery.parse(queryString);
|
||
for (var _i = 0, _a = query.keys(); _i < _a.length; _i++) {
|
||
var k = _a[_i];
|
||
if (!this.allowedQueryParameters.has(k.toLowerCase())) {
|
||
query.set(k, RedactedString);
|
||
}
|
||
}
|
||
urlBuilder.setQuery(query.toString());
|
||
return urlBuilder.toString();
|
||
};
|
||
return Sanitizer;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var errorSanitizer = new Sanitizer();
|
||
var RestError = /** @class */ (function (_super) {
|
||
tslib.__extends(RestError, _super);
|
||
function RestError(message, code, statusCode, request, response) {
|
||
var _this = _super.call(this, message) || this;
|
||
_this.name = "RestError";
|
||
_this.code = code;
|
||
_this.statusCode = statusCode;
|
||
_this.request = request;
|
||
_this.response = response;
|
||
Object.setPrototypeOf(_this, RestError.prototype);
|
||
return _this;
|
||
}
|
||
/**
|
||
* Logging method for util.inspect in Node
|
||
*/
|
||
RestError.prototype[custom] = function () {
|
||
return "RestError: " + this.message + " \n " + errorSanitizer.sanitize(this);
|
||
};
|
||
RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR";
|
||
RestError.PARSE_ERROR = "PARSE_ERROR";
|
||
return RestError;
|
||
}(Error));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var logger = logger$1.createClientLogger("core-http");
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var ReportTransform = /** @class */ (function (_super) {
|
||
tslib.__extends(ReportTransform, _super);
|
||
function ReportTransform(progressCallback) {
|
||
var _this = _super.call(this) || this;
|
||
_this.progressCallback = progressCallback;
|
||
_this.loadedBytes = 0;
|
||
return _this;
|
||
}
|
||
ReportTransform.prototype._transform = function (chunk, _encoding, callback) {
|
||
this.push(chunk);
|
||
this.loadedBytes += chunk.length;
|
||
this.progressCallback({ loadedBytes: this.loadedBytes });
|
||
callback(undefined);
|
||
};
|
||
return ReportTransform;
|
||
}(stream.Transform));
|
||
var FetchHttpClient = /** @class */ (function () {
|
||
function FetchHttpClient() {
|
||
}
|
||
FetchHttpClient.prototype.sendRequest = function (httpRequest) {
|
||
var _a;
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var abortController$1, abortListener, formData, requestForm_1, appendFormValue, _i, _b, formKey, formValue, j, contentType, body, onUploadProgress, uploadReportStream, platformSpecificRequestInit, requestInit, operationResponse, response, headers, streaming, _c, onDownloadProgress, responseBody, downloadReportStream, length_1, error_1, fetchError, uploadStreamDone, downloadStreamDone;
|
||
var _d;
|
||
return tslib.__generator(this, function (_e) {
|
||
switch (_e.label) {
|
||
case 0:
|
||
if (!httpRequest && typeof httpRequest !== "object") {
|
||
throw new Error("'httpRequest' (WebResourceLike) cannot be null or undefined and must be of type object.");
|
||
}
|
||
abortController$1 = new abortController.AbortController();
|
||
if (httpRequest.abortSignal) {
|
||
if (httpRequest.abortSignal.aborted) {
|
||
throw new abortController.AbortError("The operation was aborted.");
|
||
}
|
||
abortListener = function (event) {
|
||
if (event.type === "abort") {
|
||
abortController$1.abort();
|
||
}
|
||
};
|
||
httpRequest.abortSignal.addEventListener("abort", abortListener);
|
||
}
|
||
if (httpRequest.timeout) {
|
||
setTimeout(function () {
|
||
abortController$1.abort();
|
||
}, httpRequest.timeout);
|
||
}
|
||
if (httpRequest.formData) {
|
||
formData = httpRequest.formData;
|
||
requestForm_1 = new FormData();
|
||
appendFormValue = function (key, value) {
|
||
// value function probably returns a stream so we can provide a fresh stream on each retry
|
||
if (typeof value === "function") {
|
||
value = value();
|
||
}
|
||
if (value &&
|
||
Object.prototype.hasOwnProperty.call(value, "value") &&
|
||
Object.prototype.hasOwnProperty.call(value, "options")) {
|
||
requestForm_1.append(key, value.value, value.options);
|
||
}
|
||
else {
|
||
requestForm_1.append(key, value);
|
||
}
|
||
};
|
||
for (_i = 0, _b = Object.keys(formData); _i < _b.length; _i++) {
|
||
formKey = _b[_i];
|
||
formValue = formData[formKey];
|
||
if (Array.isArray(formValue)) {
|
||
for (j = 0; j < formValue.length; j++) {
|
||
appendFormValue(formKey, formValue[j]);
|
||
}
|
||
}
|
||
else {
|
||
appendFormValue(formKey, formValue);
|
||
}
|
||
}
|
||
httpRequest.body = requestForm_1;
|
||
httpRequest.formData = undefined;
|
||
contentType = httpRequest.headers.get("Content-Type");
|
||
if (contentType && contentType.indexOf("multipart/form-data") !== -1) {
|
||
if (typeof requestForm_1.getBoundary === "function") {
|
||
httpRequest.headers.set("Content-Type", "multipart/form-data; boundary=" + requestForm_1.getBoundary());
|
||
}
|
||
else {
|
||
// browser will automatically apply a suitable content-type header
|
||
httpRequest.headers.remove("Content-Type");
|
||
}
|
||
}
|
||
}
|
||
body = httpRequest.body
|
||
? typeof httpRequest.body === "function"
|
||
? httpRequest.body()
|
||
: httpRequest.body
|
||
: undefined;
|
||
if (httpRequest.onUploadProgress && httpRequest.body) {
|
||
onUploadProgress = httpRequest.onUploadProgress;
|
||
uploadReportStream = new ReportTransform(onUploadProgress);
|
||
if (isReadableStream(body)) {
|
||
body.pipe(uploadReportStream);
|
||
}
|
||
else {
|
||
uploadReportStream.end(body);
|
||
}
|
||
body = uploadReportStream;
|
||
}
|
||
return [4 /*yield*/, this.prepareRequest(httpRequest)];
|
||
case 1:
|
||
platformSpecificRequestInit = _e.sent();
|
||
requestInit = tslib.__assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, signal: abortController$1.signal, redirect: "manual" }, platformSpecificRequestInit);
|
||
_e.label = 2;
|
||
case 2:
|
||
_e.trys.push([2, 8, 9, 10]);
|
||
return [4 /*yield*/, this.fetch(httpRequest.url, requestInit)];
|
||
case 3:
|
||
response = _e.sent();
|
||
headers = parseHeaders(response.headers);
|
||
streaming = ((_a = httpRequest.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(response.status)) ||
|
||
httpRequest.streamResponseBody;
|
||
_d = {
|
||
headers: headers,
|
||
request: httpRequest,
|
||
status: response.status,
|
||
readableStreamBody: streaming
|
||
? response.body
|
||
: undefined
|
||
};
|
||
if (!!streaming) return [3 /*break*/, 5];
|
||
return [4 /*yield*/, response.text()];
|
||
case 4:
|
||
_c = _e.sent();
|
||
return [3 /*break*/, 6];
|
||
case 5:
|
||
_c = undefined;
|
||
_e.label = 6;
|
||
case 6:
|
||
operationResponse = (_d.bodyAsText = _c,
|
||
_d);
|
||
onDownloadProgress = httpRequest.onDownloadProgress;
|
||
if (onDownloadProgress) {
|
||
responseBody = response.body || undefined;
|
||
if (isReadableStream(responseBody)) {
|
||
downloadReportStream = new ReportTransform(onDownloadProgress);
|
||
responseBody.pipe(downloadReportStream);
|
||
operationResponse.readableStreamBody = downloadReportStream;
|
||
}
|
||
else {
|
||
length_1 = parseInt(headers.get("Content-Length")) || undefined;
|
||
if (length_1) {
|
||
// Calling callback for non-stream response for consistency with browser
|
||
onDownloadProgress({ loadedBytes: length_1 });
|
||
}
|
||
}
|
||
}
|
||
return [4 /*yield*/, this.processRequest(operationResponse)];
|
||
case 7:
|
||
_e.sent();
|
||
return [2 /*return*/, operationResponse];
|
||
case 8:
|
||
error_1 = _e.sent();
|
||
fetchError = error_1;
|
||
if (fetchError.code === "ENOTFOUND") {
|
||
throw new RestError(fetchError.message, RestError.REQUEST_SEND_ERROR, undefined, httpRequest);
|
||
}
|
||
else if (fetchError.type === "aborted") {
|
||
throw new abortController.AbortError("The operation was aborted.");
|
||
}
|
||
throw fetchError;
|
||
case 9:
|
||
// clean up event listener
|
||
if (httpRequest.abortSignal && abortListener) {
|
||
uploadStreamDone = Promise.resolve();
|
||
if (isReadableStream(body)) {
|
||
uploadStreamDone = isStreamComplete(body);
|
||
}
|
||
downloadStreamDone = Promise.resolve();
|
||
if (isReadableStream(operationResponse === null || operationResponse === void 0 ? void 0 : operationResponse.readableStreamBody)) {
|
||
downloadStreamDone = isStreamComplete(operationResponse.readableStreamBody);
|
||
}
|
||
Promise.all([uploadStreamDone, downloadStreamDone])
|
||
.then(function () {
|
||
var _a;
|
||
(_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener);
|
||
return;
|
||
})
|
||
.catch(function (e) {
|
||
logger.warning("Error when cleaning up abortListener on httpRequest", e);
|
||
});
|
||
}
|
||
return [7 /*endfinally*/];
|
||
case 10: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return FetchHttpClient;
|
||
}());
|
||
function isReadableStream(body) {
|
||
return body && typeof body.pipe === "function";
|
||
}
|
||
function isStreamComplete(stream) {
|
||
return new Promise(function (resolve) {
|
||
stream.on("close", resolve);
|
||
stream.on("end", resolve);
|
||
stream.on("error", resolve);
|
||
});
|
||
}
|
||
function parseHeaders(headers) {
|
||
var httpHeaders = new HttpHeaders();
|
||
headers.forEach(function (value, key) {
|
||
httpHeaders.set(key, value);
|
||
});
|
||
return httpHeaders;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function createProxyAgent(requestUrl, proxySettings, headers) {
|
||
var host = URLBuilder.parse(proxySettings.host).getHost();
|
||
if (!host) {
|
||
throw new Error("Expecting a non-empty host in proxy settings.");
|
||
}
|
||
if (!isValidPort(proxySettings.port)) {
|
||
throw new Error("Expecting a valid port number in the range of [0, 65535] in proxy settings.");
|
||
}
|
||
var tunnelOptions = {
|
||
proxy: {
|
||
host: host,
|
||
port: proxySettings.port,
|
||
headers: (headers && headers.rawHeaders()) || {}
|
||
}
|
||
};
|
||
if (proxySettings.username && proxySettings.password) {
|
||
tunnelOptions.proxy.proxyAuth = proxySettings.username + ":" + proxySettings.password;
|
||
}
|
||
var isRequestHttps = isUrlHttps(requestUrl);
|
||
var isProxyHttps = isUrlHttps(proxySettings.host);
|
||
var proxyAgent = {
|
||
isHttps: isRequestHttps,
|
||
agent: createTunnel(isRequestHttps, isProxyHttps, tunnelOptions)
|
||
};
|
||
return proxyAgent;
|
||
}
|
||
function isUrlHttps(url) {
|
||
var urlScheme = URLBuilder.parse(url).getScheme() || "";
|
||
return urlScheme.toLowerCase() === "https";
|
||
}
|
||
function createTunnel(isRequestHttps, isProxyHttps, tunnelOptions) {
|
||
if (isRequestHttps && isProxyHttps) {
|
||
return tunnel.httpsOverHttps(tunnelOptions);
|
||
}
|
||
else if (isRequestHttps && !isProxyHttps) {
|
||
return tunnel.httpsOverHttp(tunnelOptions);
|
||
}
|
||
else if (!isRequestHttps && isProxyHttps) {
|
||
return tunnel.httpOverHttps(tunnelOptions);
|
||
}
|
||
else {
|
||
return tunnel.httpOverHttp(tunnelOptions);
|
||
}
|
||
}
|
||
function isValidPort(port) {
|
||
// any port in 0-65535 range is valid (RFC 793) even though almost all implementations
|
||
// will reserve 0 for a specific purpose, and a range of numbers for ephemeral ports
|
||
return 0 <= port && port <= 65535;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function getCachedAgent(isHttps, agentCache) {
|
||
return isHttps ? agentCache.httpsAgent : agentCache.httpAgent;
|
||
}
|
||
var NodeFetchHttpClient = /** @class */ (function (_super) {
|
||
tslib.__extends(NodeFetchHttpClient, _super);
|
||
function NodeFetchHttpClient() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.proxyAgents = {};
|
||
_this.keepAliveAgents = {};
|
||
_this.cookieJar = new tough.CookieJar(undefined, { looseMode: true });
|
||
return _this;
|
||
}
|
||
NodeFetchHttpClient.prototype.getOrCreateAgent = function (httpRequest) {
|
||
var isHttps = isUrlHttps(httpRequest.url);
|
||
// At the moment, proxy settings and keepAlive are mutually
|
||
// exclusive because the 'tunnel' library currently lacks the
|
||
// ability to create a proxy with keepAlive turned on.
|
||
if (httpRequest.proxySettings) {
|
||
var agent = getCachedAgent(isHttps, this.proxyAgents);
|
||
if (agent) {
|
||
return agent;
|
||
}
|
||
var tunnel = createProxyAgent(httpRequest.url, httpRequest.proxySettings, httpRequest.headers);
|
||
agent = tunnel.agent;
|
||
if (tunnel.isHttps) {
|
||
this.proxyAgents.httpsAgent = tunnel.agent;
|
||
}
|
||
else {
|
||
this.proxyAgents.httpAgent = tunnel.agent;
|
||
}
|
||
return agent;
|
||
}
|
||
else if (httpRequest.keepAlive) {
|
||
var agent = getCachedAgent(isHttps, this.keepAliveAgents);
|
||
if (agent) {
|
||
return agent;
|
||
}
|
||
var agentOptions = {
|
||
keepAlive: httpRequest.keepAlive
|
||
};
|
||
if (isHttps) {
|
||
agent = this.keepAliveAgents.httpsAgent = new https.Agent(agentOptions);
|
||
}
|
||
else {
|
||
agent = this.keepAliveAgents.httpAgent = new http.Agent(agentOptions);
|
||
}
|
||
return agent;
|
||
}
|
||
else {
|
||
return isHttps ? https.globalAgent : http.globalAgent;
|
||
}
|
||
};
|
||
// eslint-disable-next-line @azure/azure-sdk/ts-apisurface-standardized-verbs
|
||
NodeFetchHttpClient.prototype.fetch = function (input, init) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, node_fetch(input, init)];
|
||
});
|
||
});
|
||
};
|
||
NodeFetchHttpClient.prototype.prepareRequest = function (httpRequest) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var requestInit, cookieString;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
requestInit = {};
|
||
if (!(this.cookieJar && !httpRequest.headers.get("Cookie"))) return [3 /*break*/, 2];
|
||
return [4 /*yield*/, new Promise(function (resolve, reject) {
|
||
_this.cookieJar.getCookieString(httpRequest.url, function (err, cookie) {
|
||
if (err) {
|
||
reject(err);
|
||
}
|
||
else {
|
||
resolve(cookie);
|
||
}
|
||
});
|
||
})];
|
||
case 1:
|
||
cookieString = _a.sent();
|
||
httpRequest.headers.set("Cookie", cookieString);
|
||
_a.label = 2;
|
||
case 2:
|
||
// Set the http(s) agent
|
||
requestInit.agent = this.getOrCreateAgent(httpRequest);
|
||
requestInit.compress = httpRequest.decompressResponse;
|
||
return [2 /*return*/, requestInit];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
NodeFetchHttpClient.prototype.processRequest = function (operationResponse) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var setCookieHeader_1;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
if (!this.cookieJar) return [3 /*break*/, 2];
|
||
setCookieHeader_1 = operationResponse.headers.get("Set-Cookie");
|
||
if (!(setCookieHeader_1 !== undefined)) return [3 /*break*/, 2];
|
||
return [4 /*yield*/, new Promise(function (resolve, reject) {
|
||
_this.cookieJar.setCookie(setCookieHeader_1, operationResponse.request.url, { ignoreError: true }, function (err) {
|
||
if (err) {
|
||
reject(err);
|
||
}
|
||
else {
|
||
resolve();
|
||
}
|
||
});
|
||
})];
|
||
case 1:
|
||
_a.sent();
|
||
_a.label = 2;
|
||
case 2: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return NodeFetchHttpClient;
|
||
}(FetchHttpClient));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
(function (HttpPipelineLogLevel) {
|
||
/**
|
||
* A log level that indicates that no logs will be logged.
|
||
*/
|
||
HttpPipelineLogLevel[HttpPipelineLogLevel["OFF"] = 0] = "OFF";
|
||
/**
|
||
* An error log.
|
||
*/
|
||
HttpPipelineLogLevel[HttpPipelineLogLevel["ERROR"] = 1] = "ERROR";
|
||
/**
|
||
* A warning log.
|
||
*/
|
||
HttpPipelineLogLevel[HttpPipelineLogLevel["WARNING"] = 2] = "WARNING";
|
||
/**
|
||
* An information log.
|
||
*/
|
||
HttpPipelineLogLevel[HttpPipelineLogLevel["INFO"] = 3] = "INFO";
|
||
})(exports.HttpPipelineLogLevel || (exports.HttpPipelineLogLevel = {}));
|
||
|
||
/**
|
||
* Converts an OperationOptions to a RequestOptionsBase
|
||
*
|
||
* @param opts - OperationOptions object to convert to RequestOptionsBase
|
||
*/
|
||
function operationOptionsToRequestOptionsBase(opts) {
|
||
var requestOptions = opts.requestOptions, tracingOptions = opts.tracingOptions, additionalOptions = tslib.__rest(opts, ["requestOptions", "tracingOptions"]);
|
||
var result = additionalOptions;
|
||
if (requestOptions) {
|
||
result = tslib.__assign(tslib.__assign({}, result), requestOptions);
|
||
}
|
||
if (tracingOptions) {
|
||
result.spanOptions = tracingOptions.spanOptions;
|
||
result.tracingContext = tracingOptions.tracingContext;
|
||
}
|
||
return result;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var BaseRequestPolicy = /** @class */ (function () {
|
||
function BaseRequestPolicy(_nextPolicy, _options) {
|
||
this._nextPolicy = _nextPolicy;
|
||
this._options = _options;
|
||
}
|
||
/**
|
||
* Get whether or not a log with the provided log level should be logged.
|
||
* @param logLevel - The log level of the log that will be logged.
|
||
* @returns Whether or not a log with the provided log level should be logged.
|
||
*/
|
||
BaseRequestPolicy.prototype.shouldLog = function (logLevel) {
|
||
return this._options.shouldLog(logLevel);
|
||
};
|
||
/**
|
||
* Attempt to log the provided message to the provided logger. If no logger was provided or if
|
||
* the log level does not meat the logger's threshold, then nothing will be logged.
|
||
* @param logLevel - The log level of this log.
|
||
* @param message - The message of this log.
|
||
*/
|
||
BaseRequestPolicy.prototype.log = function (logLevel, message) {
|
||
this._options.log(logLevel, message);
|
||
};
|
||
return BaseRequestPolicy;
|
||
}());
|
||
/**
|
||
* Optional properties that can be used when creating a RequestPolicy.
|
||
*/
|
||
var RequestPolicyOptions = /** @class */ (function () {
|
||
function RequestPolicyOptions(_logger) {
|
||
this._logger = _logger;
|
||
}
|
||
/**
|
||
* Get whether or not a log with the provided log level should be logged.
|
||
* @param logLevel - The log level of the log that will be logged.
|
||
* @returns Whether or not a log with the provided log level should be logged.
|
||
*/
|
||
RequestPolicyOptions.prototype.shouldLog = function (logLevel) {
|
||
return (!!this._logger &&
|
||
logLevel !== exports.HttpPipelineLogLevel.OFF &&
|
||
logLevel <= this._logger.minimumLogLevel);
|
||
};
|
||
/**
|
||
* Attempt to log the provided message to the provided logger. If no logger was provided or if
|
||
* the log level does not meet the logger's threshold, then nothing will be logged.
|
||
* @param logLevel - The log level of this log.
|
||
* @param message - The message of this log.
|
||
*/
|
||
RequestPolicyOptions.prototype.log = function (logLevel, message) {
|
||
if (this._logger && this.shouldLog(logLevel)) {
|
||
this._logger.log(logLevel, message);
|
||
}
|
||
};
|
||
return RequestPolicyOptions;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function logPolicy(loggingOptions) {
|
||
if (loggingOptions === void 0) { loggingOptions = {}; }
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new LogPolicy(nextPolicy, options, loggingOptions);
|
||
}
|
||
};
|
||
}
|
||
var LogPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(LogPolicy, _super);
|
||
function LogPolicy(nextPolicy, options, _a) {
|
||
var _b = _a === void 0 ? {} : _a, _c = _b.logger, logger$1 = _c === void 0 ? logger.info : _c, _d = _b.allowedHeaderNames, allowedHeaderNames = _d === void 0 ? [] : _d, _e = _b.allowedQueryParameters, allowedQueryParameters = _e === void 0 ? [] : _e;
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.logger = logger$1;
|
||
_this.sanitizer = new Sanitizer({ allowedHeaderNames: allowedHeaderNames, allowedQueryParameters: allowedQueryParameters });
|
||
return _this;
|
||
}
|
||
Object.defineProperty(LogPolicy.prototype, "allowedHeaderNames", {
|
||
/**
|
||
* Header names whose values will be logged when logging is enabled. Defaults to
|
||
* Date, traceparent, x-ms-client-request-id, and x-ms-request id. Any headers
|
||
* specified in this field will be added to that list. Any other values will
|
||
* be written to logs as "REDACTED".
|
||
* @deprecated Pass these into the constructor instead.
|
||
*/
|
||
get: function () {
|
||
return this.sanitizer.allowedHeaderNames;
|
||
},
|
||
/**
|
||
* Header names whose values will be logged when logging is enabled. Defaults to
|
||
* Date, traceparent, x-ms-client-request-id, and x-ms-request id. Any headers
|
||
* specified in this field will be added to that list. Any other values will
|
||
* be written to logs as "REDACTED".
|
||
* @deprecated Pass these into the constructor instead.
|
||
*/
|
||
set: function (allowedHeaderNames) {
|
||
this.sanitizer.allowedHeaderNames = allowedHeaderNames;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
Object.defineProperty(LogPolicy.prototype, "allowedQueryParameters", {
|
||
/**
|
||
* Query string names whose values will be logged when logging is enabled. By default no
|
||
* query string values are logged.
|
||
* @deprecated Pass these into the constructor instead.
|
||
*/
|
||
get: function () {
|
||
return this.sanitizer.allowedQueryParameters;
|
||
},
|
||
/**
|
||
* Query string names whose values will be logged when logging is enabled. By default no
|
||
* query string values are logged.
|
||
* @deprecated Pass these into the constructor instead.
|
||
*/
|
||
set: function (allowedQueryParameters) {
|
||
this.sanitizer.allowedQueryParameters = allowedQueryParameters;
|
||
},
|
||
enumerable: false,
|
||
configurable: true
|
||
});
|
||
LogPolicy.prototype.sendRequest = function (request) {
|
||
var _this = this;
|
||
if (!this.logger.enabled)
|
||
return this._nextPolicy.sendRequest(request);
|
||
this.logRequest(request);
|
||
return this._nextPolicy.sendRequest(request).then(function (response) { return _this.logResponse(response); });
|
||
};
|
||
LogPolicy.prototype.logRequest = function (request) {
|
||
this.logger("Request: " + this.sanitizer.sanitize(request));
|
||
};
|
||
LogPolicy.prototype.logResponse = function (response) {
|
||
this.logger("Response status code: " + response.status);
|
||
this.logger("Headers: " + this.sanitizer.sanitize(response.headers));
|
||
return response;
|
||
};
|
||
return LogPolicy;
|
||
}(BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* Get the path to this parameter's value as a dotted string (a.b.c).
|
||
* @param parameter - The parameter to get the path string for.
|
||
* @returns The path to this parameter's value as a dotted string.
|
||
*/
|
||
function getPathStringFromParameter(parameter) {
|
||
return getPathStringFromParameterPath(parameter.parameterPath, parameter.mapper);
|
||
}
|
||
function getPathStringFromParameterPath(parameterPath, mapper) {
|
||
var result;
|
||
if (typeof parameterPath === "string") {
|
||
result = parameterPath;
|
||
}
|
||
else if (Array.isArray(parameterPath)) {
|
||
result = parameterPath.join(".");
|
||
}
|
||
else {
|
||
result = mapper.serializedName;
|
||
}
|
||
return result;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Gets the list of status codes for streaming responses.
|
||
* @internal
|
||
*/
|
||
function getStreamResponseStatusCodes(operationSpec) {
|
||
var result = new Set();
|
||
for (var statusCode in operationSpec.responses) {
|
||
var operationResponse = operationSpec.responses[statusCode];
|
||
if (operationResponse.bodyMapper &&
|
||
operationResponse.bodyMapper.type.name === MapperType.Stream) {
|
||
result.add(Number(statusCode));
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Note: The reason we re-define all of the xml2js default settings (version 2.0) here is because the default settings object exposed
|
||
// by the xm2js library is mutable. See https://github.com/Leonidas-from-XIV/node-xml2js/issues/536
|
||
// By creating a new copy of the settings each time we instantiate the parser,
|
||
// we are safeguarding against the possibility of the default settings being mutated elsewhere unintentionally.
|
||
var xml2jsDefaultOptionsV2 = {
|
||
explicitCharkey: false,
|
||
trim: false,
|
||
normalize: false,
|
||
normalizeTags: false,
|
||
attrkey: XML_ATTRKEY,
|
||
explicitArray: true,
|
||
ignoreAttrs: false,
|
||
mergeAttrs: false,
|
||
explicitRoot: true,
|
||
validator: undefined,
|
||
xmlns: false,
|
||
explicitChildren: false,
|
||
preserveChildrenOrder: false,
|
||
childkey: "$$",
|
||
charsAsChildren: false,
|
||
includeWhiteChars: false,
|
||
async: false,
|
||
strict: true,
|
||
attrNameProcessors: undefined,
|
||
attrValueProcessors: undefined,
|
||
tagNameProcessors: undefined,
|
||
valueProcessors: undefined,
|
||
rootName: "root",
|
||
xmldec: {
|
||
version: "1.0",
|
||
encoding: "UTF-8",
|
||
standalone: true
|
||
},
|
||
doctype: undefined,
|
||
renderOpts: {
|
||
pretty: true,
|
||
indent: " ",
|
||
newline: "\n"
|
||
},
|
||
headless: false,
|
||
chunkSize: 10000,
|
||
emptyTag: "",
|
||
cdata: false
|
||
};
|
||
// The xml2js settings for general XML parsing operations.
|
||
var xml2jsParserSettings = Object.assign({}, xml2jsDefaultOptionsV2);
|
||
xml2jsParserSettings.explicitArray = false;
|
||
// The xml2js settings for general XML building operations.
|
||
var xml2jsBuilderSettings = Object.assign({}, xml2jsDefaultOptionsV2);
|
||
xml2jsBuilderSettings.explicitArray = false;
|
||
xml2jsBuilderSettings.renderOpts = {
|
||
pretty: false
|
||
};
|
||
/**
|
||
* Converts given JSON object to XML string
|
||
* @param obj - JSON object to be converted into XML string
|
||
* @param opts - Options that govern the parsing of given JSON object
|
||
*/
|
||
function stringifyXML(obj, opts) {
|
||
var _a;
|
||
if (opts === void 0) { opts = {}; }
|
||
xml2jsBuilderSettings.rootName = opts.rootName;
|
||
xml2jsBuilderSettings.charkey = (_a = opts.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
|
||
var builder = new xml2js.Builder(xml2jsBuilderSettings);
|
||
return builder.buildObject(obj);
|
||
}
|
||
/**
|
||
* Converts given XML string into JSON
|
||
* @param str - String containing the XML content to be parsed into JSON
|
||
* @param opts - Options that govern the parsing of given xml string
|
||
*/
|
||
function parseXML(str, opts) {
|
||
var _a;
|
||
if (opts === void 0) { opts = {}; }
|
||
xml2jsParserSettings.explicitRoot = !!opts.includeRoot;
|
||
xml2jsParserSettings.charkey = (_a = opts.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
|
||
var xmlParser = new xml2js.Parser(xml2jsParserSettings);
|
||
return new Promise(function (resolve, reject) {
|
||
if (!str) {
|
||
reject(new Error("Document is empty"));
|
||
}
|
||
else {
|
||
xmlParser.parseString(str, function (err, res) {
|
||
if (err) {
|
||
reject(err);
|
||
}
|
||
else {
|
||
resolve(res);
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Create a new serialization RequestPolicyCreator that will serialized HTTP request bodies as they
|
||
* pass through the HTTP pipeline.
|
||
*/
|
||
function deserializationPolicy(deserializationContentTypes, parsingOptions) {
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new DeserializationPolicy(nextPolicy, options, deserializationContentTypes, parsingOptions);
|
||
}
|
||
};
|
||
}
|
||
var defaultJsonContentTypes = ["application/json", "text/json"];
|
||
var defaultXmlContentTypes = ["application/xml", "application/atom+xml"];
|
||
var DefaultDeserializationOptions = {
|
||
expectedContentTypes: {
|
||
json: defaultJsonContentTypes,
|
||
xml: defaultXmlContentTypes
|
||
}
|
||
};
|
||
/**
|
||
* A RequestPolicy that will deserialize HTTP response bodies and headers as they pass through the
|
||
* HTTP pipeline.
|
||
*/
|
||
var DeserializationPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(DeserializationPolicy, _super);
|
||
function DeserializationPolicy(nextPolicy, requestPolicyOptions, deserializationContentTypes, parsingOptions) {
|
||
if (parsingOptions === void 0) { parsingOptions = {}; }
|
||
var _a;
|
||
var _this = _super.call(this, nextPolicy, requestPolicyOptions) || this;
|
||
_this.jsonContentTypes =
|
||
(deserializationContentTypes && deserializationContentTypes.json) || defaultJsonContentTypes;
|
||
_this.xmlContentTypes =
|
||
(deserializationContentTypes && deserializationContentTypes.xml) || defaultXmlContentTypes;
|
||
_this.xmlCharKey = (_a = parsingOptions.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
|
||
return _this;
|
||
}
|
||
DeserializationPolicy.prototype.sendRequest = function (request) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, this._nextPolicy.sendRequest(request).then(function (response) {
|
||
return deserializeResponseBody(_this.jsonContentTypes, _this.xmlContentTypes, response, {
|
||
xmlCharKey: _this.xmlCharKey
|
||
});
|
||
})];
|
||
});
|
||
});
|
||
};
|
||
return DeserializationPolicy;
|
||
}(BaseRequestPolicy));
|
||
function getOperationResponse(parsedResponse) {
|
||
var result;
|
||
var request = parsedResponse.request;
|
||
var operationSpec = request.operationSpec;
|
||
if (operationSpec) {
|
||
var operationResponseGetter = request.operationResponseGetter;
|
||
if (!operationResponseGetter) {
|
||
result = operationSpec.responses[parsedResponse.status];
|
||
}
|
||
else {
|
||
result = operationResponseGetter(operationSpec, parsedResponse);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
function shouldDeserializeResponse(parsedResponse) {
|
||
var shouldDeserialize = parsedResponse.request.shouldDeserialize;
|
||
var result;
|
||
if (shouldDeserialize === undefined) {
|
||
result = true;
|
||
}
|
||
else if (typeof shouldDeserialize === "boolean") {
|
||
result = shouldDeserialize;
|
||
}
|
||
else {
|
||
result = shouldDeserialize(parsedResponse);
|
||
}
|
||
return result;
|
||
}
|
||
function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options) {
|
||
var _a, _b, _c;
|
||
if (options === void 0) { options = {}; }
|
||
var updatedOptions = {
|
||
rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
|
||
includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
|
||
xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
|
||
};
|
||
return parse(jsonContentTypes, xmlContentTypes, response, updatedOptions).then(function (parsedResponse) {
|
||
if (!shouldDeserializeResponse(parsedResponse)) {
|
||
return parsedResponse;
|
||
}
|
||
var operationSpec = parsedResponse.request.operationSpec;
|
||
if (!operationSpec || !operationSpec.responses) {
|
||
return parsedResponse;
|
||
}
|
||
var responseSpec = getOperationResponse(parsedResponse);
|
||
var _a = handleErrorResponse(parsedResponse, operationSpec, responseSpec), error = _a.error, shouldReturnResponse = _a.shouldReturnResponse;
|
||
if (error) {
|
||
throw error;
|
||
}
|
||
else if (shouldReturnResponse) {
|
||
return parsedResponse;
|
||
}
|
||
// An operation response spec does exist for current status code, so
|
||
// use it to deserialize the response.
|
||
if (responseSpec) {
|
||
if (responseSpec.bodyMapper) {
|
||
var valueToDeserialize = parsedResponse.parsedBody;
|
||
if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperType.Sequence) {
|
||
valueToDeserialize =
|
||
typeof valueToDeserialize === "object"
|
||
? valueToDeserialize[responseSpec.bodyMapper.xmlElementName]
|
||
: [];
|
||
}
|
||
try {
|
||
parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody", options);
|
||
}
|
||
catch (innerError) {
|
||
var restError = new RestError("Error " + innerError + " occurred in deserializing the responseBody - " + parsedResponse.bodyAsText, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
|
||
throw restError;
|
||
}
|
||
}
|
||
else if (operationSpec.httpMethod === "HEAD") {
|
||
// head methods never have a body, but we return a boolean to indicate presence/absence of the resource
|
||
parsedResponse.parsedBody = response.status >= 200 && response.status < 300;
|
||
}
|
||
if (responseSpec.headersMapper) {
|
||
parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.rawHeaders(), "operationRes.parsedHeaders", options);
|
||
}
|
||
}
|
||
return parsedResponse;
|
||
});
|
||
}
|
||
function isOperationSpecEmpty(operationSpec) {
|
||
var expectedStatusCodes = Object.keys(operationSpec.responses);
|
||
return (expectedStatusCodes.length === 0 ||
|
||
(expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default"));
|
||
}
|
||
function handleErrorResponse(parsedResponse, operationSpec, responseSpec) {
|
||
var _a;
|
||
var isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;
|
||
var isExpectedStatusCode = isOperationSpecEmpty(operationSpec)
|
||
? isSuccessByStatus
|
||
: !!responseSpec;
|
||
if (isExpectedStatusCode) {
|
||
if (responseSpec) {
|
||
if (!responseSpec.isError) {
|
||
return { error: null, shouldReturnResponse: false };
|
||
}
|
||
}
|
||
else {
|
||
return { error: null, shouldReturnResponse: false };
|
||
}
|
||
}
|
||
var errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;
|
||
var streaming = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) ||
|
||
parsedResponse.request.streamResponseBody;
|
||
var initialErrorMessage = streaming
|
||
? "Unexpected status code: " + parsedResponse.status
|
||
: parsedResponse.bodyAsText;
|
||
var error = new RestError(initialErrorMessage, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
|
||
// If the item failed but there's no error spec or default spec to deserialize the error,
|
||
// we should fail so we just throw the parsed response
|
||
if (!errorResponseSpec) {
|
||
throw error;
|
||
}
|
||
var defaultBodyMapper = errorResponseSpec.bodyMapper;
|
||
var defaultHeadersMapper = errorResponseSpec.headersMapper;
|
||
try {
|
||
// If error response has a body, try to deserialize it using default body mapper.
|
||
// Then try to extract error code & message from it
|
||
if (parsedResponse.parsedBody) {
|
||
var parsedBody = parsedResponse.parsedBody;
|
||
var parsedError = void 0;
|
||
if (defaultBodyMapper) {
|
||
var valueToDeserialize = parsedBody;
|
||
if (operationSpec.isXML && defaultBodyMapper.type.name === MapperType.Sequence) {
|
||
valueToDeserialize =
|
||
typeof parsedBody === "object" ? parsedBody[defaultBodyMapper.xmlElementName] : [];
|
||
}
|
||
parsedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody");
|
||
}
|
||
var internalError = parsedBody.error || parsedError || parsedBody;
|
||
error.code = internalError.code;
|
||
if (internalError.message) {
|
||
error.message = internalError.message;
|
||
}
|
||
if (defaultBodyMapper) {
|
||
error.response.parsedBody = parsedError;
|
||
}
|
||
}
|
||
// If error response has headers, try to deserialize it using default header mapper
|
||
if (parsedResponse.headers && defaultHeadersMapper) {
|
||
error.response.parsedHeaders = operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.rawHeaders(), "operationRes.parsedHeaders");
|
||
}
|
||
}
|
||
catch (defaultError) {
|
||
error.message = "Error \"" + defaultError.message + "\" occurred in deserializing the responseBody - \"" + parsedResponse.bodyAsText + "\" for the default response.";
|
||
}
|
||
return { error: error, shouldReturnResponse: false };
|
||
}
|
||
function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts) {
|
||
var _a;
|
||
var errorHandler = function (err) {
|
||
var msg = "Error \"" + err + "\" occurred while parsing the response body - " + operationResponse.bodyAsText + ".";
|
||
var errCode = err.code || RestError.PARSE_ERROR;
|
||
var e = new RestError(msg, errCode, operationResponse.status, operationResponse.request, operationResponse);
|
||
return Promise.reject(e);
|
||
};
|
||
var streaming = ((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) ||
|
||
operationResponse.request.streamResponseBody;
|
||
if (!streaming && operationResponse.bodyAsText) {
|
||
var text_1 = operationResponse.bodyAsText;
|
||
var contentType = operationResponse.headers.get("Content-Type") || "";
|
||
var contentComponents = !contentType
|
||
? []
|
||
: contentType.split(";").map(function (component) { return component.toLowerCase(); });
|
||
if (contentComponents.length === 0 ||
|
||
contentComponents.some(function (component) { return jsonContentTypes.indexOf(component) !== -1; })) {
|
||
return new Promise(function (resolve) {
|
||
operationResponse.parsedBody = JSON.parse(text_1);
|
||
resolve(operationResponse);
|
||
}).catch(errorHandler);
|
||
}
|
||
else if (contentComponents.some(function (component) { return xmlContentTypes.indexOf(component) !== -1; })) {
|
||
return parseXML(text_1, opts)
|
||
.then(function (body) {
|
||
operationResponse.parsedBody = body;
|
||
return operationResponse;
|
||
})
|
||
.catch(errorHandler);
|
||
}
|
||
}
|
||
return Promise.resolve(operationResponse);
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
var DEFAULT_CLIENT_RETRY_COUNT = 3;
|
||
// intervals are in ms
|
||
var DEFAULT_CLIENT_RETRY_INTERVAL = 1000 * 30;
|
||
var DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 90;
|
||
var DEFAULT_CLIENT_MIN_RETRY_INTERVAL = 1000 * 3;
|
||
function isNumber(n) {
|
||
return typeof n === "number";
|
||
}
|
||
/**
|
||
* @internal
|
||
* Determines if the operation should be retried.
|
||
*
|
||
* @param retryLimit - Specifies the max number of retries.
|
||
* @param predicate - Initial chekck on whether to retry based on given responses or errors
|
||
* @param retryData - The retry data.
|
||
* @returns True if the operation qualifies for a retry; false otherwise.
|
||
*/
|
||
function shouldRetry(retryLimit, predicate, retryData, response, error) {
|
||
if (!predicate(response, error)) {
|
||
return false;
|
||
}
|
||
return retryData.retryCount < retryLimit;
|
||
}
|
||
/**
|
||
* @internal
|
||
* Updates the retry data for the next attempt.
|
||
*
|
||
* @param retryOptions - specifies retry interval, and its lower bound and upper bound.
|
||
* @param retryData - The retry data.
|
||
* @param err - The operation"s error, if any.
|
||
*/
|
||
function updateRetryData(retryOptions, retryData, err) {
|
||
if (retryData === void 0) { retryData = { retryCount: 0, retryInterval: 0 }; }
|
||
if (err) {
|
||
if (retryData.error) {
|
||
err.innerError = retryData.error;
|
||
}
|
||
retryData.error = err;
|
||
}
|
||
// Adjust retry count
|
||
retryData.retryCount++;
|
||
// Adjust retry interval
|
||
var incrementDelta = Math.pow(2, retryData.retryCount - 1) - 1;
|
||
var boundedRandDelta = retryOptions.retryInterval * 0.8 +
|
||
Math.floor(Math.random() * (retryOptions.retryInterval * 0.4));
|
||
incrementDelta *= boundedRandDelta;
|
||
retryData.retryInterval = Math.min(retryOptions.minRetryInterval + incrementDelta, retryOptions.maxRetryInterval);
|
||
return retryData;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function exponentialRetryPolicy(retryCount, retryInterval, maxRetryInterval) {
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval);
|
||
}
|
||
};
|
||
}
|
||
(function (RetryMode) {
|
||
RetryMode[RetryMode["Exponential"] = 0] = "Exponential";
|
||
})(exports.RetryMode || (exports.RetryMode = {}));
|
||
var DefaultRetryOptions = {
|
||
maxRetries: DEFAULT_CLIENT_RETRY_COUNT,
|
||
retryDelayInMs: DEFAULT_CLIENT_RETRY_INTERVAL,
|
||
maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL
|
||
};
|
||
/**
|
||
* Instantiates a new "ExponentialRetryPolicyFilter" instance.
|
||
*/
|
||
var ExponentialRetryPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(ExponentialRetryPolicy, _super);
|
||
/**
|
||
* @param nextPolicy - The next RequestPolicy in the pipeline chain.
|
||
* @param options - The options for this RequestPolicy.
|
||
* @param retryCount - The client retry count.
|
||
* @param retryInterval - The client retry interval, in milliseconds.
|
||
* @param minRetryInterval - The minimum retry interval, in milliseconds.
|
||
* @param maxRetryInterval - The maximum retry interval, in milliseconds.
|
||
*/
|
||
function ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
|
||
_this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
|
||
_this.maxRetryInterval = isNumber(maxRetryInterval)
|
||
? maxRetryInterval
|
||
: DEFAULT_CLIENT_MAX_RETRY_INTERVAL;
|
||
return _this;
|
||
}
|
||
ExponentialRetryPolicy.prototype.sendRequest = function (request) {
|
||
var _this = this;
|
||
return this._nextPolicy
|
||
.sendRequest(request.clone())
|
||
.then(function (response) { return retry(_this, request, response); })
|
||
.catch(function (error) { return retry(_this, request, error.response, undefined, error); });
|
||
};
|
||
return ExponentialRetryPolicy;
|
||
}(BaseRequestPolicy));
|
||
function retry(policy, request, response, retryData, requestError) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
function shouldPolicyRetry(responseParam) {
|
||
var statusCode = responseParam === null || responseParam === void 0 ? void 0 : responseParam.status;
|
||
if (statusCode === undefined ||
|
||
(statusCode < 500 && statusCode !== 408) ||
|
||
statusCode === 501 ||
|
||
statusCode === 505) {
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
var isAborted, res, err_1, err;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
retryData = updateRetryData({
|
||
retryInterval: policy.retryInterval,
|
||
minRetryInterval: 0,
|
||
maxRetryInterval: policy.maxRetryInterval
|
||
}, retryData, requestError);
|
||
isAborted = request.abortSignal && request.abortSignal.aborted;
|
||
if (!(!isAborted && shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, response))) return [3 /*break*/, 6];
|
||
logger.info("Retrying request in " + retryData.retryInterval);
|
||
_a.label = 1;
|
||
case 1:
|
||
_a.trys.push([1, 4, , 5]);
|
||
return [4 /*yield*/, delay(retryData.retryInterval)];
|
||
case 2:
|
||
_a.sent();
|
||
return [4 /*yield*/, policy._nextPolicy.sendRequest(request.clone())];
|
||
case 3:
|
||
res = _a.sent();
|
||
return [2 /*return*/, retry(policy, request, res, retryData)];
|
||
case 4:
|
||
err_1 = _a.sent();
|
||
return [2 /*return*/, retry(policy, request, response, retryData, err_1)];
|
||
case 5: return [3 /*break*/, 7];
|
||
case 6:
|
||
if (isAborted || requestError || !response) {
|
||
err = retryData.error ||
|
||
new RestError("Failed to send the request.", RestError.REQUEST_SEND_ERROR, response && response.status, response && response.request, response);
|
||
throw err;
|
||
}
|
||
else {
|
||
return [2 /*return*/, response];
|
||
}
|
||
case 7: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function generateClientRequestIdPolicy(requestIdHeaderName) {
|
||
if (requestIdHeaderName === void 0) { requestIdHeaderName = "x-ms-client-request-id"; }
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new GenerateClientRequestIdPolicy(nextPolicy, options, requestIdHeaderName);
|
||
}
|
||
};
|
||
}
|
||
var GenerateClientRequestIdPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(GenerateClientRequestIdPolicy, _super);
|
||
function GenerateClientRequestIdPolicy(nextPolicy, options, _requestIdHeaderName) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this._requestIdHeaderName = _requestIdHeaderName;
|
||
return _this;
|
||
}
|
||
GenerateClientRequestIdPolicy.prototype.sendRequest = function (request) {
|
||
if (!request.headers.contains(this._requestIdHeaderName)) {
|
||
request.headers.set(this._requestIdHeaderName, request.requestId);
|
||
}
|
||
return this._nextPolicy.sendRequest(request);
|
||
};
|
||
return GenerateClientRequestIdPolicy;
|
||
}(BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function getDefaultUserAgentKey() {
|
||
return Constants.HeaderConstants.USER_AGENT;
|
||
}
|
||
function getPlatformSpecificData() {
|
||
var runtimeInfo = {
|
||
key: "Node",
|
||
value: process.version
|
||
};
|
||
var osInfo = {
|
||
key: "OS",
|
||
value: "(" + os.arch() + "-" + os.type() + "-" + os.release() + ")"
|
||
};
|
||
return [runtimeInfo, osInfo];
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function getRuntimeInfo() {
|
||
var msRestRuntime = {
|
||
key: "core-http",
|
||
value: Constants.coreHttpVersion
|
||
};
|
||
return [msRestRuntime];
|
||
}
|
||
function getUserAgentString(telemetryInfo, keySeparator, valueSeparator) {
|
||
if (keySeparator === void 0) { keySeparator = " "; }
|
||
if (valueSeparator === void 0) { valueSeparator = "/"; }
|
||
return telemetryInfo
|
||
.map(function (info) {
|
||
var value = info.value ? "" + valueSeparator + info.value : "";
|
||
return "" + info.key + value;
|
||
})
|
||
.join(keySeparator);
|
||
}
|
||
var getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
|
||
function getDefaultUserAgentValue() {
|
||
var runtimeInfo = getRuntimeInfo();
|
||
var platformSpecificData = getPlatformSpecificData();
|
||
var userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));
|
||
return userAgent;
|
||
}
|
||
function userAgentPolicy(userAgentData) {
|
||
var key = !userAgentData || userAgentData.key === undefined || userAgentData.key === null
|
||
? getDefaultUserAgentKey()
|
||
: userAgentData.key;
|
||
var value = !userAgentData || userAgentData.value === undefined || userAgentData.value === null
|
||
? getDefaultUserAgentValue()
|
||
: userAgentData.value;
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new UserAgentPolicy(nextPolicy, options, key, value);
|
||
}
|
||
};
|
||
}
|
||
var UserAgentPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(UserAgentPolicy, _super);
|
||
function UserAgentPolicy(_nextPolicy, _options, headerKey, headerValue) {
|
||
var _this = _super.call(this, _nextPolicy, _options) || this;
|
||
_this._nextPolicy = _nextPolicy;
|
||
_this._options = _options;
|
||
_this.headerKey = headerKey;
|
||
_this.headerValue = headerValue;
|
||
return _this;
|
||
}
|
||
UserAgentPolicy.prototype.sendRequest = function (request) {
|
||
this.addUserAgentHeader(request);
|
||
return this._nextPolicy.sendRequest(request);
|
||
};
|
||
UserAgentPolicy.prototype.addUserAgentHeader = function (request) {
|
||
if (!request.headers) {
|
||
request.headers = new HttpHeaders();
|
||
}
|
||
if (!request.headers.get(this.headerKey) && this.headerValue) {
|
||
request.headers.set(this.headerKey, this.headerValue);
|
||
}
|
||
};
|
||
return UserAgentPolicy;
|
||
}(BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Methods that are allowed to follow redirects 301 and 302
|
||
*/
|
||
var allowedRedirect = ["GET", "HEAD"];
|
||
var DefaultRedirectOptions = {
|
||
handleRedirects: true,
|
||
maxRetries: 20
|
||
};
|
||
function redirectPolicy(maximumRetries) {
|
||
if (maximumRetries === void 0) { maximumRetries = 20; }
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new RedirectPolicy(nextPolicy, options, maximumRetries);
|
||
}
|
||
};
|
||
}
|
||
var RedirectPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(RedirectPolicy, _super);
|
||
function RedirectPolicy(nextPolicy, options, maxRetries) {
|
||
if (maxRetries === void 0) { maxRetries = 20; }
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.maxRetries = maxRetries;
|
||
return _this;
|
||
}
|
||
RedirectPolicy.prototype.sendRequest = function (request) {
|
||
var _this = this;
|
||
return this._nextPolicy
|
||
.sendRequest(request)
|
||
.then(function (response) { return handleRedirect(_this, response, 0); });
|
||
};
|
||
return RedirectPolicy;
|
||
}(BaseRequestPolicy));
|
||
function handleRedirect(policy, response, currentRetries) {
|
||
var request = response.request, status = response.status;
|
||
var locationHeader = response.headers.get("location");
|
||
if (locationHeader &&
|
||
(status === 300 ||
|
||
(status === 301 && allowedRedirect.includes(request.method)) ||
|
||
(status === 302 && allowedRedirect.includes(request.method)) ||
|
||
(status === 303 && request.method === "POST") ||
|
||
status === 307) &&
|
||
(!policy.maxRetries || currentRetries < policy.maxRetries)) {
|
||
var builder = URLBuilder.parse(request.url);
|
||
builder.setPath(locationHeader);
|
||
request.url = builder.toString();
|
||
// POST request with Status code 303 should be converted into a
|
||
// redirected GET request if the redirect url is present in the location header
|
||
if (status === 303) {
|
||
request.method = "GET";
|
||
delete request.body;
|
||
}
|
||
return policy._nextPolicy
|
||
.sendRequest(request)
|
||
.then(function (res) { return handleRedirect(policy, res, currentRetries + 1); });
|
||
}
|
||
return Promise.resolve(response);
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function rpRegistrationPolicy(retryTimeout) {
|
||
if (retryTimeout === void 0) { retryTimeout = 30; }
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new RPRegistrationPolicy(nextPolicy, options, retryTimeout);
|
||
}
|
||
};
|
||
}
|
||
var RPRegistrationPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(RPRegistrationPolicy, _super);
|
||
function RPRegistrationPolicy(nextPolicy, options, _retryTimeout) {
|
||
if (_retryTimeout === void 0) { _retryTimeout = 30; }
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this._retryTimeout = _retryTimeout;
|
||
return _this;
|
||
}
|
||
RPRegistrationPolicy.prototype.sendRequest = function (request) {
|
||
var _this = this;
|
||
return this._nextPolicy
|
||
.sendRequest(request.clone())
|
||
.then(function (response) { return registerIfNeeded(_this, request, response); });
|
||
};
|
||
return RPRegistrationPolicy;
|
||
}(BaseRequestPolicy));
|
||
function registerIfNeeded(policy, request, response) {
|
||
if (response.status === 409) {
|
||
var rpName = checkRPNotRegisteredError(response.bodyAsText);
|
||
if (rpName) {
|
||
var urlPrefix = extractSubscriptionUrl(request.url);
|
||
return (registerRP(policy, urlPrefix, rpName, request)
|
||
// Autoregistration of ${provider} failed for some reason. We will not return this error
|
||
// instead will return the initial response with 409 status code back to the user.
|
||
// do nothing here as we are returning the original response at the end of this method.
|
||
.catch(function () { return false; })
|
||
.then(function (registrationStatus) {
|
||
if (registrationStatus) {
|
||
// Retry the original request. We have to change the x-ms-client-request-id
|
||
// otherwise Azure endpoint will return the initial 409 (cached) response.
|
||
request.headers.set("x-ms-client-request-id", generateUuid());
|
||
return policy._nextPolicy.sendRequest(request.clone());
|
||
}
|
||
return response;
|
||
}));
|
||
}
|
||
}
|
||
return Promise.resolve(response);
|
||
}
|
||
/**
|
||
* Reuses the headers of the original request and url (if specified).
|
||
* @param originalRequest - The original request
|
||
* @param reuseUrlToo - Should the url from the original request be reused as well. Default false.
|
||
* @returns A new request object with desired headers.
|
||
*/
|
||
function getRequestEssentials(originalRequest, reuseUrlToo) {
|
||
if (reuseUrlToo === void 0) { reuseUrlToo = false; }
|
||
var reqOptions = originalRequest.clone();
|
||
if (reuseUrlToo) {
|
||
reqOptions.url = originalRequest.url;
|
||
}
|
||
// We have to change the x-ms-client-request-id otherwise Azure endpoint
|
||
// will return the initial 409 (cached) response.
|
||
reqOptions.headers.set("x-ms-client-request-id", generateUuid());
|
||
// Set content-type to application/json
|
||
reqOptions.headers.set("Content-Type", "application/json; charset=utf-8");
|
||
return reqOptions;
|
||
}
|
||
/**
|
||
* Validates the error code and message associated with 409 response status code. If it matches to that of
|
||
* RP not registered then it returns the name of the RP else returns undefined.
|
||
* @param body - The response body received after making the original request.
|
||
* @returns The name of the RP if condition is satisfied else undefined.
|
||
*/
|
||
function checkRPNotRegisteredError(body) {
|
||
var result, responseBody;
|
||
if (body) {
|
||
try {
|
||
responseBody = JSON.parse(body);
|
||
}
|
||
catch (err) {
|
||
// do nothing;
|
||
}
|
||
if (responseBody &&
|
||
responseBody.error &&
|
||
responseBody.error.message &&
|
||
responseBody.error.code &&
|
||
responseBody.error.code === "MissingSubscriptionRegistration") {
|
||
var matchRes = responseBody.error.message.match(/.*'(.*)'/i);
|
||
if (matchRes) {
|
||
result = matchRes.pop();
|
||
}
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
/**
|
||
* Extracts the first part of the URL, just after subscription:
|
||
* https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/
|
||
* @param url - The original request url
|
||
* @returns The url prefix as explained above.
|
||
*/
|
||
function extractSubscriptionUrl(url) {
|
||
var result;
|
||
var matchRes = url.match(/.*\/subscriptions\/[a-f0-9-]+\//gi);
|
||
if (matchRes && matchRes[0]) {
|
||
result = matchRes[0];
|
||
}
|
||
else {
|
||
throw new Error("Unable to extract subscriptionId from the given url - " + url + ".");
|
||
}
|
||
return result;
|
||
}
|
||
/**
|
||
* Registers the given provider.
|
||
* @param policy - The RPRegistrationPolicy this function is being called against.
|
||
* @param urlPrefix - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/
|
||
* @param provider - The provider name to be registered.
|
||
* @param originalRequest - The original request sent by the user that returned a 409 response
|
||
* with a message that the provider is not registered.
|
||
* @param callback - The callback that handles the RP registration
|
||
*/
|
||
function registerRP(policy, urlPrefix, provider, originalRequest) {
|
||
var postUrl = urlPrefix + "providers/" + provider + "/register?api-version=2016-02-01";
|
||
var getUrl = urlPrefix + "providers/" + provider + "?api-version=2016-02-01";
|
||
var reqOptions = getRequestEssentials(originalRequest);
|
||
reqOptions.method = "POST";
|
||
reqOptions.url = postUrl;
|
||
return policy._nextPolicy.sendRequest(reqOptions).then(function (response) {
|
||
if (response.status !== 200) {
|
||
throw new Error("Autoregistration of " + provider + " failed. Please try registering manually.");
|
||
}
|
||
return getRegistrationStatus(policy, getUrl, originalRequest);
|
||
});
|
||
}
|
||
/**
|
||
* Polls the registration status of the provider that was registered. Polling happens at an interval of 30 seconds.
|
||
* Polling will happen till the registrationState property of the response body is "Registered".
|
||
* @param policy - The RPRegistrationPolicy this function is being called against.
|
||
* @param url - The request url for polling
|
||
* @param originalRequest - The original request sent by the user that returned a 409 response
|
||
* with a message that the provider is not registered.
|
||
* @returns True if RP Registration is successful.
|
||
*/
|
||
function getRegistrationStatus(policy, url, originalRequest) {
|
||
var reqOptions = getRequestEssentials(originalRequest);
|
||
reqOptions.url = url;
|
||
reqOptions.method = "GET";
|
||
return policy._nextPolicy.sendRequest(reqOptions).then(function (res) {
|
||
var obj = res.parsedBody;
|
||
if (res.parsedBody && obj.registrationState && obj.registrationState === "Registered") {
|
||
return true;
|
||
}
|
||
else {
|
||
return delay(policy._retryTimeout * 1000)
|
||
.then(function () { return getRegistrationStatus(policy, url, originalRequest); });
|
||
}
|
||
});
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Default options for the cycler if none are provided
|
||
var DEFAULT_CYCLER_OPTIONS = {
|
||
forcedRefreshWindowInMs: 1000,
|
||
retryIntervalInMs: 3000,
|
||
refreshWindowInMs: 1000 * 60 * 2 // Start refreshing 2m before expiry
|
||
};
|
||
/**
|
||
* Converts an an unreliable access token getter (which may resolve with null)
|
||
* into an AccessTokenGetter by retrying the unreliable getter in a regular
|
||
* interval.
|
||
*
|
||
* @param getAccessToken - a function that produces a promise of an access
|
||
* token that may fail by returning null
|
||
* @param retryIntervalInMs - the time (in milliseconds) to wait between retry
|
||
* attempts
|
||
* @param timeoutInMs - the timestamp after which the refresh attempt will fail,
|
||
* throwing an exception
|
||
* @returns - a promise that, if it resolves, will resolve with an access token
|
||
*/
|
||
function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
// This wrapper handles exceptions gracefully as long as we haven't exceeded
|
||
// the timeout.
|
||
function tryGetAccessToken() {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _a, finalToken;
|
||
return tslib.__generator(this, function (_b) {
|
||
switch (_b.label) {
|
||
case 0:
|
||
if (!(Date.now() < timeoutInMs)) return [3 /*break*/, 5];
|
||
_b.label = 1;
|
||
case 1:
|
||
_b.trys.push([1, 3, , 4]);
|
||
return [4 /*yield*/, getAccessToken()];
|
||
case 2: return [2 /*return*/, _b.sent()];
|
||
case 3:
|
||
_a = _b.sent();
|
||
return [2 /*return*/, null];
|
||
case 4: return [3 /*break*/, 7];
|
||
case 5: return [4 /*yield*/, getAccessToken()];
|
||
case 6:
|
||
finalToken = _b.sent();
|
||
// Timeout is up, so throw if it's still null
|
||
if (finalToken === null) {
|
||
throw new Error("Failed to refresh access token.");
|
||
}
|
||
return [2 /*return*/, finalToken];
|
||
case 7: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
}
|
||
var token;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, tryGetAccessToken()];
|
||
case 1:
|
||
token = _a.sent();
|
||
_a.label = 2;
|
||
case 2:
|
||
if (!(token === null)) return [3 /*break*/, 5];
|
||
return [4 /*yield*/, delay(retryIntervalInMs)];
|
||
case 3:
|
||
_a.sent();
|
||
return [4 /*yield*/, tryGetAccessToken()];
|
||
case 4:
|
||
token = _a.sent();
|
||
return [3 /*break*/, 2];
|
||
case 5: return [2 /*return*/, token];
|
||
}
|
||
});
|
||
});
|
||
}
|
||
/**
|
||
* Creates a token cycler from a credential, scopes, and optional settings.
|
||
*
|
||
* A token cycler represents a way to reliably retrieve a valid access token
|
||
* from a TokenCredential. It will handle initializing the token, refreshing it
|
||
* when it nears expiration, and synchronizes refresh attempts to avoid
|
||
* concurrency hazards.
|
||
*
|
||
* @param credential - the underlying TokenCredential that provides the access
|
||
* token
|
||
* @param scopes - the scopes to request authorization for
|
||
* @param tokenCyclerOptions - optionally override default settings for the cycler
|
||
*
|
||
* @returns - a function that reliably produces a valid access token
|
||
*/
|
||
function createTokenCycler(credential, scopes, tokenCyclerOptions) {
|
||
var _this = this;
|
||
var refreshWorker = null;
|
||
var token = null;
|
||
var options = tslib.__assign(tslib.__assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);
|
||
/**
|
||
* This little holder defines several predicates that we use to construct
|
||
* the rules of refreshing the token.
|
||
*/
|
||
var cycler = {
|
||
/**
|
||
* Produces true if a refresh job is currently in progress.
|
||
*/
|
||
get isRefreshing() {
|
||
return refreshWorker !== null;
|
||
},
|
||
/**
|
||
* Produces true if the cycler SHOULD refresh (we are within the refresh
|
||
* window and not already refreshing)
|
||
*/
|
||
get shouldRefresh() {
|
||
var _a;
|
||
return (!cycler.isRefreshing &&
|
||
((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now());
|
||
},
|
||
/**
|
||
* Produces true if the cycler MUST refresh (null or nearly-expired
|
||
* token).
|
||
*/
|
||
get mustRefresh() {
|
||
return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());
|
||
}
|
||
};
|
||
/**
|
||
* Starts a refresh job or returns the existing job if one is already
|
||
* running.
|
||
*/
|
||
function refresh(getTokenOptions) {
|
||
var _a;
|
||
if (!cycler.isRefreshing) {
|
||
// We bind `scopes` here to avoid passing it around a lot
|
||
var tryGetAccessToken = function () {
|
||
return credential.getToken(scopes, getTokenOptions);
|
||
};
|
||
// Take advantage of promise chaining to insert an assignment to `token`
|
||
// before the refresh can be considered done.
|
||
refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs,
|
||
// If we don't have a token, then we should timeout immediately
|
||
(_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())
|
||
.then(function (_token) {
|
||
refreshWorker = null;
|
||
token = _token;
|
||
return token;
|
||
})
|
||
.catch(function (reason) {
|
||
// We also should reset the refresher if we enter a failed state. All
|
||
// existing awaiters will throw, but subsequent requests will start a
|
||
// new retry chain.
|
||
refreshWorker = null;
|
||
token = null;
|
||
throw reason;
|
||
});
|
||
}
|
||
return refreshWorker;
|
||
}
|
||
return function (tokenOptions) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
//
|
||
// Simple rules:
|
||
// - If we MUST refresh, then return the refresh task, blocking
|
||
// the pipeline until a token is available.
|
||
// - If we SHOULD refresh, then run refresh but don't return it
|
||
// (we can still use the cached token).
|
||
// - Return the token, since it's fine if we didn't return in
|
||
// step 1.
|
||
//
|
||
if (cycler.mustRefresh)
|
||
return [2 /*return*/, refresh(tokenOptions)];
|
||
if (cycler.shouldRefresh) {
|
||
refresh(tokenOptions);
|
||
}
|
||
return [2 /*return*/, token];
|
||
});
|
||
}); };
|
||
}
|
||
// #endregion
|
||
/**
|
||
* Creates a new factory for a RequestPolicy that applies a bearer token to
|
||
* the requests' `Authorization` headers.
|
||
*
|
||
* @param credential - The TokenCredential implementation that can supply the bearer token.
|
||
* @param scopes - The scopes for which the bearer token applies.
|
||
*/
|
||
function bearerTokenAuthenticationPolicy(credential, scopes) {
|
||
// This simple function encapsulates the entire process of reliably retrieving the token
|
||
var getToken = createTokenCycler(credential, scopes /* , options */);
|
||
var BearerTokenAuthenticationPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(BearerTokenAuthenticationPolicy, _super);
|
||
function BearerTokenAuthenticationPolicy(nextPolicy, options) {
|
||
return _super.call(this, nextPolicy, options) || this;
|
||
}
|
||
BearerTokenAuthenticationPolicy.prototype.sendRequest = function (webResource) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var token;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, getToken({
|
||
abortSignal: webResource.abortSignal,
|
||
tracingOptions: {
|
||
spanOptions: webResource.spanOptions,
|
||
tracingContext: webResource.tracingContext
|
||
}
|
||
})];
|
||
case 1:
|
||
token = (_a.sent()).token;
|
||
webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, "Bearer " + token);
|
||
return [2 /*return*/, this._nextPolicy.sendRequest(webResource)];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return BearerTokenAuthenticationPolicy;
|
||
}(BaseRequestPolicy));
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new BearerTokenAuthenticationPolicy(nextPolicy, options);
|
||
}
|
||
};
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function systemErrorRetryPolicy(retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval);
|
||
}
|
||
};
|
||
}
|
||
/**
|
||
* @param retryCount - The client retry count.
|
||
* @param retryInterval - The client retry interval, in milliseconds.
|
||
* @param minRetryInterval - The minimum retry interval, in milliseconds.
|
||
* @param maxRetryInterval - The maximum retry interval, in milliseconds.
|
||
*/
|
||
var SystemErrorRetryPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(SystemErrorRetryPolicy, _super);
|
||
function SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
|
||
_this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
|
||
_this.minRetryInterval = isNumber(minRetryInterval)
|
||
? minRetryInterval
|
||
: DEFAULT_CLIENT_MIN_RETRY_INTERVAL;
|
||
_this.maxRetryInterval = isNumber(maxRetryInterval)
|
||
? maxRetryInterval
|
||
: DEFAULT_CLIENT_MAX_RETRY_INTERVAL;
|
||
return _this;
|
||
}
|
||
SystemErrorRetryPolicy.prototype.sendRequest = function (request) {
|
||
var _this = this;
|
||
return this._nextPolicy
|
||
.sendRequest(request.clone())
|
||
.catch(function (error) { return retry$1(_this, request, error.response, error); });
|
||
};
|
||
return SystemErrorRetryPolicy;
|
||
}(BaseRequestPolicy));
|
||
function retry$1(policy, request, operationResponse, err, retryData) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
function shouldPolicyRetry(_response, error) {
|
||
if (error &&
|
||
error.code &&
|
||
(error.code === "ETIMEDOUT" ||
|
||
error.code === "ESOCKETTIMEDOUT" ||
|
||
error.code === "ECONNREFUSED" ||
|
||
error.code === "ECONNRESET" ||
|
||
error.code === "ENOENT")) {
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
var nestedErr_1;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
retryData = updateRetryData(policy, retryData, err);
|
||
if (!shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, operationResponse, err)) return [3 /*break*/, 5];
|
||
_a.label = 1;
|
||
case 1:
|
||
_a.trys.push([1, 3, , 4]);
|
||
return [4 /*yield*/, delay(retryData.retryInterval)];
|
||
case 2:
|
||
_a.sent();
|
||
return [2 /*return*/, policy._nextPolicy.sendRequest(request.clone())];
|
||
case 3:
|
||
nestedErr_1 = _a.sent();
|
||
return [2 /*return*/, retry$1(policy, request, operationResponse, nestedErr_1, retryData)];
|
||
case 4: return [3 /*break*/, 6];
|
||
case 5:
|
||
if (err) {
|
||
// If the operation failed in the end, return all errors instead of just the last one
|
||
return [2 /*return*/, Promise.reject(retryData.error)];
|
||
}
|
||
return [2 /*return*/, operationResponse];
|
||
case 6: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
(function (QueryCollectionFormat) {
|
||
QueryCollectionFormat["Csv"] = ",";
|
||
QueryCollectionFormat["Ssv"] = " ";
|
||
QueryCollectionFormat["Tsv"] = "\t";
|
||
QueryCollectionFormat["Pipes"] = "|";
|
||
QueryCollectionFormat["Multi"] = "Multi";
|
||
})(exports.QueryCollectionFormat || (exports.QueryCollectionFormat = {}));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* @internal
|
||
*/
|
||
var noProxyList = [];
|
||
var noProxyListLoaded = false;
|
||
var byPassedList = new Map();
|
||
function loadEnvironmentProxyValue() {
|
||
if (!process) {
|
||
return undefined;
|
||
}
|
||
var httpsProxy = getEnvironmentValue(Constants.HTTPS_PROXY);
|
||
var allProxy = getEnvironmentValue(Constants.ALL_PROXY);
|
||
var httpProxy = getEnvironmentValue(Constants.HTTP_PROXY);
|
||
return httpsProxy || allProxy || httpProxy;
|
||
}
|
||
// Check whether the host of a given `uri` is in the noProxyList.
|
||
// If there's a match, any request sent to the same host won't have the proxy settings set.
|
||
// This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210
|
||
function isBypassed(uri) {
|
||
if (noProxyList.length === 0) {
|
||
return false;
|
||
}
|
||
var host = URLBuilder.parse(uri).getHost();
|
||
if (byPassedList.has(host)) {
|
||
return byPassedList.get(host);
|
||
}
|
||
var isBypassedFlag = false;
|
||
for (var _i = 0, noProxyList_1 = noProxyList; _i < noProxyList_1.length; _i++) {
|
||
var pattern = noProxyList_1[_i];
|
||
if (pattern[0] === ".") {
|
||
// This should match either domain it self or any subdomain or host
|
||
// .foo.com will match foo.com it self or *.foo.com
|
||
if (host.endsWith(pattern)) {
|
||
isBypassedFlag = true;
|
||
}
|
||
else {
|
||
if (host.length === pattern.length - 1 && host === pattern.slice(1)) {
|
||
isBypassedFlag = true;
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
if (host === pattern) {
|
||
isBypassedFlag = true;
|
||
}
|
||
}
|
||
}
|
||
byPassedList.set(host, isBypassedFlag);
|
||
return isBypassedFlag;
|
||
}
|
||
/**
|
||
* @internal
|
||
*/
|
||
function loadNoProxy() {
|
||
var noProxy = getEnvironmentValue(Constants.NO_PROXY);
|
||
noProxyListLoaded = true;
|
||
if (noProxy) {
|
||
return noProxy
|
||
.split(",")
|
||
.map(function (item) { return item.trim(); })
|
||
.filter(function (item) { return item.length; });
|
||
}
|
||
return [];
|
||
}
|
||
function getDefaultProxySettings(proxyUrl) {
|
||
if (!proxyUrl) {
|
||
proxyUrl = loadEnvironmentProxyValue();
|
||
if (!proxyUrl) {
|
||
return undefined;
|
||
}
|
||
}
|
||
var _a = extractAuthFromUrl(proxyUrl), username = _a.username, password = _a.password, urlWithoutAuth = _a.urlWithoutAuth;
|
||
var parsedUrl = URLBuilder.parse(urlWithoutAuth);
|
||
var schema = parsedUrl.getScheme() ? parsedUrl.getScheme() + "://" : "";
|
||
return {
|
||
host: schema + parsedUrl.getHost(),
|
||
port: Number.parseInt(parsedUrl.getPort() || "80"),
|
||
username: username,
|
||
password: password
|
||
};
|
||
}
|
||
function proxyPolicy(proxySettings) {
|
||
if (!proxySettings) {
|
||
proxySettings = getDefaultProxySettings();
|
||
}
|
||
if (!noProxyListLoaded) {
|
||
noProxyList.push.apply(noProxyList, loadNoProxy());
|
||
}
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new ProxyPolicy(nextPolicy, options, proxySettings);
|
||
}
|
||
};
|
||
}
|
||
function extractAuthFromUrl(url) {
|
||
var atIndex = url.indexOf("@");
|
||
if (atIndex === -1) {
|
||
return { urlWithoutAuth: url };
|
||
}
|
||
var schemeIndex = url.indexOf("://");
|
||
var authStart = schemeIndex !== -1 ? schemeIndex + 3 : 0;
|
||
var auth = url.substring(authStart, atIndex);
|
||
var colonIndex = auth.indexOf(":");
|
||
var hasPassword = colonIndex !== -1;
|
||
var username = hasPassword ? auth.substring(0, colonIndex) : auth;
|
||
var password = hasPassword ? auth.substring(colonIndex + 1) : undefined;
|
||
var urlWithoutAuth = url.substring(0, authStart) + url.substring(atIndex + 1);
|
||
return {
|
||
username: username,
|
||
password: password,
|
||
urlWithoutAuth: urlWithoutAuth
|
||
};
|
||
}
|
||
var ProxyPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(ProxyPolicy, _super);
|
||
function ProxyPolicy(nextPolicy, options, proxySettings) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.proxySettings = proxySettings;
|
||
return _this;
|
||
}
|
||
ProxyPolicy.prototype.sendRequest = function (request) {
|
||
if (!request.proxySettings && !isBypassed(request.url)) {
|
||
request.proxySettings = this.proxySettings;
|
||
}
|
||
return this._nextPolicy.sendRequest(request);
|
||
};
|
||
return ProxyPolicy;
|
||
}(BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var StatusCodes = Constants.HttpConstants.StatusCodes;
|
||
function throttlingRetryPolicy() {
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new ThrottlingRetryPolicy(nextPolicy, options);
|
||
}
|
||
};
|
||
}
|
||
/**
|
||
* To learn more, please refer to
|
||
* https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,
|
||
* https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits and
|
||
* https://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors
|
||
*/
|
||
var ThrottlingRetryPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(ThrottlingRetryPolicy, _super);
|
||
function ThrottlingRetryPolicy(nextPolicy, options, _handleResponse) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this._handleResponse = _handleResponse || _this._defaultResponseHandler;
|
||
return _this;
|
||
}
|
||
ThrottlingRetryPolicy.prototype.sendRequest = function (httpRequest) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
return [2 /*return*/, this._nextPolicy.sendRequest(httpRequest.clone()).then(function (response) {
|
||
if (response.status !== StatusCodes.TooManyRequests) {
|
||
return response;
|
||
}
|
||
else {
|
||
return _this._handleResponse(httpRequest, response);
|
||
}
|
||
})];
|
||
});
|
||
});
|
||
};
|
||
ThrottlingRetryPolicy.prototype._defaultResponseHandler = function (httpRequest, httpResponse) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var retryAfterHeader, delayInMs;
|
||
var _this = this;
|
||
return tslib.__generator(this, function (_a) {
|
||
retryAfterHeader = httpResponse.headers.get(Constants.HeaderConstants.RETRY_AFTER);
|
||
if (retryAfterHeader) {
|
||
delayInMs = ThrottlingRetryPolicy.parseRetryAfterHeader(retryAfterHeader);
|
||
if (delayInMs) {
|
||
return [2 /*return*/, delay(delayInMs).then(function (_) { return _this._nextPolicy.sendRequest(httpRequest); })];
|
||
}
|
||
}
|
||
return [2 /*return*/, httpResponse];
|
||
});
|
||
});
|
||
};
|
||
ThrottlingRetryPolicy.parseRetryAfterHeader = function (headerValue) {
|
||
var retryAfterInSeconds = Number(headerValue);
|
||
if (Number.isNaN(retryAfterInSeconds)) {
|
||
return ThrottlingRetryPolicy.parseDateRetryAfterHeader(headerValue);
|
||
}
|
||
else {
|
||
return retryAfterInSeconds * 1000;
|
||
}
|
||
};
|
||
ThrottlingRetryPolicy.parseDateRetryAfterHeader = function (headerValue) {
|
||
try {
|
||
var now = Date.now();
|
||
var date = Date.parse(headerValue);
|
||
var diff = date - now;
|
||
return Number.isNaN(diff) ? undefined : diff;
|
||
}
|
||
catch (error) {
|
||
return undefined;
|
||
}
|
||
};
|
||
return ThrottlingRetryPolicy;
|
||
}(BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function signingPolicy(authenticationProvider) {
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new SigningPolicy(nextPolicy, options, authenticationProvider);
|
||
}
|
||
};
|
||
}
|
||
var SigningPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(SigningPolicy, _super);
|
||
function SigningPolicy(nextPolicy, options, authenticationProvider) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.authenticationProvider = authenticationProvider;
|
||
return _this;
|
||
}
|
||
SigningPolicy.prototype.signRequest = function (request) {
|
||
return this.authenticationProvider.signRequest(request);
|
||
};
|
||
SigningPolicy.prototype.sendRequest = function (request) {
|
||
var _this = this;
|
||
return this.signRequest(request).then(function (nextRequest) {
|
||
return _this._nextPolicy.sendRequest(nextRequest);
|
||
});
|
||
};
|
||
return SigningPolicy;
|
||
}(BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var DefaultKeepAliveOptions = {
|
||
enable: true
|
||
};
|
||
function keepAlivePolicy(keepAliveOptions) {
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new KeepAlivePolicy(nextPolicy, options, keepAliveOptions || DefaultKeepAliveOptions);
|
||
}
|
||
};
|
||
}
|
||
/**
|
||
* KeepAlivePolicy is a policy used to control keep alive settings for every request.
|
||
*/
|
||
var KeepAlivePolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(KeepAlivePolicy, _super);
|
||
/**
|
||
* Creates an instance of KeepAlivePolicy.
|
||
*
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
* @param keepAliveOptions -
|
||
*/
|
||
function KeepAlivePolicy(nextPolicy, options, keepAliveOptions) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.keepAliveOptions = keepAliveOptions;
|
||
return _this;
|
||
}
|
||
/**
|
||
* Sends out request.
|
||
*
|
||
* @param request -
|
||
* @returns
|
||
*/
|
||
KeepAlivePolicy.prototype.sendRequest = function (request) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
request.keepAlive = this.keepAliveOptions.enable;
|
||
return [2 /*return*/, this._nextPolicy.sendRequest(request)];
|
||
});
|
||
});
|
||
};
|
||
return KeepAlivePolicy;
|
||
}(BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var createSpan = coreTracing.createSpanFunction({
|
||
packagePrefix: "",
|
||
namespace: ""
|
||
});
|
||
function tracingPolicy(tracingOptions) {
|
||
if (tracingOptions === void 0) { tracingOptions = {}; }
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new TracingPolicy(nextPolicy, options, tracingOptions);
|
||
}
|
||
};
|
||
}
|
||
var TracingPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(TracingPolicy, _super);
|
||
function TracingPolicy(nextPolicy, options, tracingOptions) {
|
||
var _this = _super.call(this, nextPolicy, options) || this;
|
||
_this.userAgent = tracingOptions.userAgent;
|
||
return _this;
|
||
}
|
||
TracingPolicy.prototype.sendRequest = function (request) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var path, span, spanContext, traceParentHeader, traceState, response, serviceRequestId, err_1;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
if (!request.tracingContext) {
|
||
return [2 /*return*/, this._nextPolicy.sendRequest(request)];
|
||
}
|
||
path = URLBuilder.parse(request.url).getPath() || "/";
|
||
span = createSpan(path, {
|
||
tracingOptions: {
|
||
spanOptions: tslib.__assign(tslib.__assign({}, request.spanOptions), { kind: coreTracing.SpanKind.CLIENT }),
|
||
tracingContext: request.tracingContext
|
||
}
|
||
}).span;
|
||
span.setAttributes({
|
||
"http.method": request.method,
|
||
"http.url": request.url,
|
||
requestId: request.requestId
|
||
});
|
||
if (this.userAgent) {
|
||
span.setAttribute("http.user_agent", this.userAgent);
|
||
}
|
||
_a.label = 1;
|
||
case 1:
|
||
_a.trys.push([1, 3, 4, 5]);
|
||
spanContext = span.context();
|
||
traceParentHeader = coreTracing.getTraceParentHeader(spanContext);
|
||
if (traceParentHeader) {
|
||
request.headers.set("traceparent", traceParentHeader);
|
||
traceState = spanContext.traceState && spanContext.traceState.serialize();
|
||
// if tracestate is set, traceparent MUST be set, so only set tracestate after traceparent
|
||
if (traceState) {
|
||
request.headers.set("tracestate", traceState);
|
||
}
|
||
}
|
||
return [4 /*yield*/, this._nextPolicy.sendRequest(request)];
|
||
case 2:
|
||
response = _a.sent();
|
||
span.setAttribute("http.status_code", response.status);
|
||
serviceRequestId = response.headers.get("x-ms-request-id");
|
||
if (serviceRequestId) {
|
||
span.setAttribute("serviceRequestId", serviceRequestId);
|
||
}
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.OK
|
||
});
|
||
return [2 /*return*/, response];
|
||
case 3:
|
||
err_1 = _a.sent();
|
||
span.setStatus({
|
||
code: coreTracing.SpanStatusCode.ERROR,
|
||
message: err_1.message
|
||
});
|
||
span.setAttribute("http.status_code", err_1.statusCode);
|
||
throw err_1;
|
||
case 4:
|
||
span.end();
|
||
return [7 /*endfinally*/];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return TracingPolicy;
|
||
}(BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Returns a request policy factory that can be used to create an instance of
|
||
* {@link DisableResponseDecompressionPolicy}.
|
||
*/
|
||
function disableResponseDecompressionPolicy() {
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new DisableResponseDecompressionPolicy(nextPolicy, options);
|
||
}
|
||
};
|
||
}
|
||
/**
|
||
* A policy to disable response decompression according to Accept-Encoding header
|
||
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
|
||
*/
|
||
var DisableResponseDecompressionPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(DisableResponseDecompressionPolicy, _super);
|
||
/**
|
||
* Creates an instance of DisableResponseDecompressionPolicy.
|
||
*
|
||
* @param nextPolicy -
|
||
* @param options -
|
||
*/
|
||
// The parent constructor is protected.
|
||
/* eslint-disable-next-line @typescript-eslint/no-useless-constructor */
|
||
function DisableResponseDecompressionPolicy(nextPolicy, options) {
|
||
return _super.call(this, nextPolicy, options) || this;
|
||
}
|
||
/**
|
||
* Sends out request.
|
||
*
|
||
* @param request -
|
||
* @returns
|
||
*/
|
||
DisableResponseDecompressionPolicy.prototype.sendRequest = function (request) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
return tslib.__generator(this, function (_a) {
|
||
request.decompressResponse = false;
|
||
return [2 /*return*/, this._nextPolicy.sendRequest(request)];
|
||
});
|
||
});
|
||
};
|
||
return DisableResponseDecompressionPolicy;
|
||
}(BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
function ndJsonPolicy() {
|
||
return {
|
||
create: function (nextPolicy, options) {
|
||
return new NdJsonPolicy(nextPolicy, options);
|
||
}
|
||
};
|
||
}
|
||
/**
|
||
* NdJsonPolicy that formats a JSON array as newline-delimited JSON
|
||
*/
|
||
var NdJsonPolicy = /** @class */ (function (_super) {
|
||
tslib.__extends(NdJsonPolicy, _super);
|
||
/**
|
||
* Creates an instance of KeepAlivePolicy.
|
||
*/
|
||
function NdJsonPolicy(nextPolicy, options) {
|
||
return _super.call(this, nextPolicy, options) || this;
|
||
}
|
||
/**
|
||
* Sends a request.
|
||
*/
|
||
NdJsonPolicy.prototype.sendRequest = function (request) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var body;
|
||
return tslib.__generator(this, function (_a) {
|
||
// There currently isn't a good way to bypass the serializer
|
||
if (typeof request.body === "string" && request.body.startsWith("[")) {
|
||
body = JSON.parse(request.body);
|
||
if (Array.isArray(body)) {
|
||
request.body = body.map(function (item) { return JSON.stringify(item) + "\n"; }).join("");
|
||
}
|
||
}
|
||
return [2 /*return*/, this._nextPolicy.sendRequest(request)];
|
||
});
|
||
});
|
||
};
|
||
return NdJsonPolicy;
|
||
}(BaseRequestPolicy));
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var cachedHttpClient;
|
||
function getCachedDefaultHttpClient() {
|
||
if (!cachedHttpClient) {
|
||
cachedHttpClient = new NodeFetchHttpClient();
|
||
}
|
||
return cachedHttpClient;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* ServiceClient sends service requests and receives responses.
|
||
*/
|
||
var ServiceClient = /** @class */ (function () {
|
||
/**
|
||
* The ServiceClient constructor
|
||
* @param credentials - The credentials used for authentication with the service.
|
||
* @param options - The service client options that govern the behavior of the client.
|
||
*/
|
||
function ServiceClient(credentials,
|
||
/* eslint-disable-next-line @azure/azure-sdk/ts-naming-options */
|
||
options) {
|
||
var _this = this;
|
||
if (!options) {
|
||
options = {};
|
||
}
|
||
this._withCredentials = options.withCredentials || false;
|
||
this._httpClient = options.httpClient || getCachedDefaultHttpClient();
|
||
this._requestPolicyOptions = new RequestPolicyOptions(options.httpPipelineLogger);
|
||
var requestPolicyFactories;
|
||
if (Array.isArray(options.requestPolicyFactories)) {
|
||
logger.info("ServiceClient: using custom request policies");
|
||
requestPolicyFactories = options.requestPolicyFactories;
|
||
}
|
||
else {
|
||
var authPolicyFactory = undefined;
|
||
if (coreAuth.isTokenCredential(credentials)) {
|
||
logger.info("ServiceClient: creating bearer token authentication policy from provided credentials");
|
||
// Create a wrapped RequestPolicyFactory here so that we can provide the
|
||
// correct scope to the BearerTokenAuthenticationPolicy at the first time
|
||
// one is requested. This is needed because generated ServiceClient
|
||
// implementations do not set baseUri until after ServiceClient's constructor
|
||
// is finished, leaving baseUri empty at the time when it is needed to
|
||
// build the correct scope name.
|
||
var wrappedPolicyFactory = function () {
|
||
var bearerTokenPolicyFactory = undefined;
|
||
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
||
var serviceClient = _this;
|
||
var serviceClientOptions = options;
|
||
return {
|
||
create: function (nextPolicy, createOptions) {
|
||
var credentialScopes = getCredentialScopes(serviceClientOptions, serviceClient.baseUri);
|
||
if (!credentialScopes) {
|
||
throw new Error("When using credential, the ServiceClient must contain a baseUri or a credentialScopes in ServiceClientOptions. Unable to create a bearerTokenAuthenticationPolicy");
|
||
}
|
||
if (bearerTokenPolicyFactory === undefined || bearerTokenPolicyFactory === null) {
|
||
bearerTokenPolicyFactory = bearerTokenAuthenticationPolicy(credentials, credentialScopes);
|
||
}
|
||
return bearerTokenPolicyFactory.create(nextPolicy, createOptions);
|
||
}
|
||
};
|
||
};
|
||
authPolicyFactory = wrappedPolicyFactory();
|
||
}
|
||
else if (credentials && typeof credentials.signRequest === "function") {
|
||
logger.info("ServiceClient: creating signing policy from provided credentials");
|
||
authPolicyFactory = signingPolicy(credentials);
|
||
}
|
||
else if (credentials !== undefined && credentials !== null) {
|
||
throw new Error("The credentials argument must implement the TokenCredential interface");
|
||
}
|
||
logger.info("ServiceClient: using default request policies");
|
||
requestPolicyFactories = createDefaultRequestPolicyFactories(authPolicyFactory, options);
|
||
if (options.requestPolicyFactories) {
|
||
// options.requestPolicyFactories can also be a function that manipulates
|
||
// the default requestPolicyFactories array
|
||
var newRequestPolicyFactories = options.requestPolicyFactories(requestPolicyFactories);
|
||
if (newRequestPolicyFactories) {
|
||
requestPolicyFactories = newRequestPolicyFactories;
|
||
}
|
||
}
|
||
}
|
||
this._requestPolicyFactories = requestPolicyFactories;
|
||
}
|
||
/**
|
||
* Send the provided httpRequest.
|
||
*/
|
||
ServiceClient.prototype.sendRequest = function (options) {
|
||
if (options === null || options === undefined || typeof options !== "object") {
|
||
throw new Error("options cannot be null or undefined and it must be of type object.");
|
||
}
|
||
var httpRequest;
|
||
try {
|
||
if (isWebResourceLike(options)) {
|
||
options.validateRequestProperties();
|
||
httpRequest = options;
|
||
}
|
||
else {
|
||
httpRequest = new WebResource();
|
||
httpRequest = httpRequest.prepare(options);
|
||
}
|
||
}
|
||
catch (error) {
|
||
return Promise.reject(error);
|
||
}
|
||
var httpPipeline = this._httpClient;
|
||
if (this._requestPolicyFactories && this._requestPolicyFactories.length > 0) {
|
||
for (var i = this._requestPolicyFactories.length - 1; i >= 0; --i) {
|
||
httpPipeline = this._requestPolicyFactories[i].create(httpPipeline, this._requestPolicyOptions);
|
||
}
|
||
}
|
||
return httpPipeline.sendRequest(httpRequest);
|
||
};
|
||
/**
|
||
* Send an HTTP request that is populated using the provided OperationSpec.
|
||
* @param operationArguments - The arguments that the HTTP request's templated values will be populated from.
|
||
* @param operationSpec - The OperationSpec to use to populate the httpRequest.
|
||
* @param callback - The callback to call when the response is received.
|
||
*/
|
||
ServiceClient.prototype.sendOperationRequest = function (operationArguments, operationSpec, callback) {
|
||
var _a;
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var serializerOptions, httpRequest, result, baseUri, requestUrl, _i, _b, urlParameter, urlParameterValue, _c, _d, queryParameter, queryParameterValue, index, item, index, contentType, _e, _f, headerParameter, headerValue, headerCollectionPrefix, _g, _h, key, options, customHeaderName, rawResponse, sendRequestError, error_1, error_2, cb;
|
||
return tslib.__generator(this, function (_j) {
|
||
switch (_j.label) {
|
||
case 0:
|
||
if (typeof operationArguments.options === "function") {
|
||
callback = operationArguments.options;
|
||
operationArguments.options = undefined;
|
||
}
|
||
serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
|
||
httpRequest = new WebResource();
|
||
_j.label = 1;
|
||
case 1:
|
||
_j.trys.push([1, 6, , 7]);
|
||
baseUri = operationSpec.baseUrl || this.baseUri;
|
||
if (!baseUri) {
|
||
throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");
|
||
}
|
||
httpRequest.method = operationSpec.httpMethod;
|
||
httpRequest.operationSpec = operationSpec;
|
||
requestUrl = URLBuilder.parse(baseUri);
|
||
if (operationSpec.path) {
|
||
requestUrl.appendPath(operationSpec.path);
|
||
}
|
||
if (operationSpec.urlParameters && operationSpec.urlParameters.length > 0) {
|
||
for (_i = 0, _b = operationSpec.urlParameters; _i < _b.length; _i++) {
|
||
urlParameter = _b[_i];
|
||
urlParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, urlParameter, operationSpec.serializer);
|
||
urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, getPathStringFromParameter(urlParameter), serializerOptions);
|
||
if (!urlParameter.skipEncoding) {
|
||
urlParameterValue = encodeURIComponent(urlParameterValue);
|
||
}
|
||
requestUrl.replaceAll("{" + (urlParameter.mapper.serializedName || getPathStringFromParameter(urlParameter)) + "}", urlParameterValue);
|
||
}
|
||
}
|
||
if (operationSpec.queryParameters && operationSpec.queryParameters.length > 0) {
|
||
for (_c = 0, _d = operationSpec.queryParameters; _c < _d.length; _c++) {
|
||
queryParameter = _d[_c];
|
||
queryParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, queryParameter, operationSpec.serializer);
|
||
if (queryParameterValue !== undefined && queryParameterValue !== null) {
|
||
queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter), serializerOptions);
|
||
if (queryParameter.collectionFormat !== undefined &&
|
||
queryParameter.collectionFormat !== null) {
|
||
if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Multi) {
|
||
if (queryParameterValue.length === 0) {
|
||
// The collection is empty, no need to try serializing the current queryParam
|
||
continue;
|
||
}
|
||
else {
|
||
for (index in queryParameterValue) {
|
||
item = queryParameterValue[index];
|
||
queryParameterValue[index] =
|
||
item === undefined || item === null ? "" : item.toString();
|
||
}
|
||
}
|
||
}
|
||
else if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Ssv ||
|
||
queryParameter.collectionFormat === exports.QueryCollectionFormat.Tsv) {
|
||
queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
|
||
}
|
||
}
|
||
if (!queryParameter.skipEncoding) {
|
||
if (Array.isArray(queryParameterValue)) {
|
||
for (index in queryParameterValue) {
|
||
if (queryParameterValue[index] !== undefined &&
|
||
queryParameterValue[index] !== null) {
|
||
queryParameterValue[index] = encodeURIComponent(queryParameterValue[index]);
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
queryParameterValue = encodeURIComponent(queryParameterValue);
|
||
}
|
||
}
|
||
if (queryParameter.collectionFormat !== undefined &&
|
||
queryParameter.collectionFormat !== null &&
|
||
queryParameter.collectionFormat !== exports.QueryCollectionFormat.Multi &&
|
||
queryParameter.collectionFormat !== exports.QueryCollectionFormat.Ssv &&
|
||
queryParameter.collectionFormat !== exports.QueryCollectionFormat.Tsv) {
|
||
queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
|
||
}
|
||
requestUrl.setQueryParameter(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);
|
||
}
|
||
}
|
||
}
|
||
httpRequest.url = requestUrl.toString();
|
||
contentType = operationSpec.contentType || this.requestContentType;
|
||
if (contentType && operationSpec.requestBody) {
|
||
httpRequest.headers.set("Content-Type", contentType);
|
||
}
|
||
if (operationSpec.headerParameters) {
|
||
for (_e = 0, _f = operationSpec.headerParameters; _e < _f.length; _e++) {
|
||
headerParameter = _f[_e];
|
||
headerValue = getOperationArgumentValueFromParameter(this, operationArguments, headerParameter, operationSpec.serializer);
|
||
if (headerValue !== undefined && headerValue !== null) {
|
||
headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter), serializerOptions);
|
||
headerCollectionPrefix = headerParameter.mapper
|
||
.headerCollectionPrefix;
|
||
if (headerCollectionPrefix) {
|
||
for (_g = 0, _h = Object.keys(headerValue); _g < _h.length; _g++) {
|
||
key = _h[_g];
|
||
httpRequest.headers.set(headerCollectionPrefix + key, headerValue[key]);
|
||
}
|
||
}
|
||
else {
|
||
httpRequest.headers.set(headerParameter.mapper.serializedName ||
|
||
getPathStringFromParameter(headerParameter), headerValue);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
options = operationArguments.options;
|
||
if (options) {
|
||
if (options.customHeaders) {
|
||
for (customHeaderName in options.customHeaders) {
|
||
httpRequest.headers.set(customHeaderName, options.customHeaders[customHeaderName]);
|
||
}
|
||
}
|
||
if (options.abortSignal) {
|
||
httpRequest.abortSignal = options.abortSignal;
|
||
}
|
||
if (options.timeout) {
|
||
httpRequest.timeout = options.timeout;
|
||
}
|
||
if (options.onUploadProgress) {
|
||
httpRequest.onUploadProgress = options.onUploadProgress;
|
||
}
|
||
if (options.onDownloadProgress) {
|
||
httpRequest.onDownloadProgress = options.onDownloadProgress;
|
||
}
|
||
if (options.spanOptions) {
|
||
httpRequest.spanOptions = options.spanOptions;
|
||
}
|
||
if (options.tracingContext) {
|
||
httpRequest.tracingContext = options.tracingContext;
|
||
}
|
||
if (options.shouldDeserialize !== undefined && options.shouldDeserialize !== null) {
|
||
httpRequest.shouldDeserialize = options.shouldDeserialize;
|
||
}
|
||
}
|
||
httpRequest.withCredentials = this._withCredentials;
|
||
serializeRequestBody(this, httpRequest, operationArguments, operationSpec);
|
||
if (httpRequest.streamResponseStatusCodes === undefined) {
|
||
httpRequest.streamResponseStatusCodes = getStreamResponseStatusCodes(operationSpec);
|
||
}
|
||
rawResponse = void 0;
|
||
sendRequestError = void 0;
|
||
_j.label = 2;
|
||
case 2:
|
||
_j.trys.push([2, 4, , 5]);
|
||
return [4 /*yield*/, this.sendRequest(httpRequest)];
|
||
case 3:
|
||
rawResponse = _j.sent();
|
||
return [3 /*break*/, 5];
|
||
case 4:
|
||
error_1 = _j.sent();
|
||
sendRequestError = error_1;
|
||
return [3 /*break*/, 5];
|
||
case 5:
|
||
if (sendRequestError) {
|
||
if (sendRequestError.response) {
|
||
sendRequestError.details = flattenResponse(sendRequestError.response, operationSpec.responses[sendRequestError.statusCode] ||
|
||
operationSpec.responses["default"]);
|
||
}
|
||
result = Promise.reject(sendRequestError);
|
||
}
|
||
else {
|
||
result = Promise.resolve(flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]));
|
||
}
|
||
return [3 /*break*/, 7];
|
||
case 6:
|
||
error_2 = _j.sent();
|
||
result = Promise.reject(error_2);
|
||
return [3 /*break*/, 7];
|
||
case 7:
|
||
cb = callback;
|
||
if (cb) {
|
||
result
|
||
.then(function (res) { return cb(null, res._response.parsedBody, res._response.request, res._response); })
|
||
.catch(function (err) { return cb(err); });
|
||
}
|
||
return [2 /*return*/, result];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
return ServiceClient;
|
||
}());
|
||
function serializeRequestBody(serviceClient, httpRequest, operationArguments, operationSpec) {
|
||
var _a, _b, _c, _d, _e, _f;
|
||
var serializerOptions = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions) !== null && _b !== void 0 ? _b : {};
|
||
var updatedOptions = {
|
||
rootName: (_c = serializerOptions.rootName) !== null && _c !== void 0 ? _c : "",
|
||
includeRoot: (_d = serializerOptions.includeRoot) !== null && _d !== void 0 ? _d : false,
|
||
xmlCharKey: (_e = serializerOptions.xmlCharKey) !== null && _e !== void 0 ? _e : XML_CHARKEY
|
||
};
|
||
var xmlCharKey = serializerOptions.xmlCharKey;
|
||
if (operationSpec.requestBody && operationSpec.requestBody.mapper) {
|
||
httpRequest.body = getOperationArgumentValueFromParameter(serviceClient, operationArguments, operationSpec.requestBody, operationSpec.serializer);
|
||
var bodyMapper = operationSpec.requestBody.mapper;
|
||
var required = bodyMapper.required, xmlName = bodyMapper.xmlName, xmlElementName = bodyMapper.xmlElementName, serializedName = bodyMapper.serializedName, xmlNamespace = bodyMapper.xmlNamespace, xmlNamespacePrefix = bodyMapper.xmlNamespacePrefix;
|
||
var typeName = bodyMapper.type.name;
|
||
try {
|
||
if ((httpRequest.body !== undefined && httpRequest.body !== null) || required) {
|
||
var requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);
|
||
httpRequest.body = operationSpec.serializer.serialize(bodyMapper, httpRequest.body, requestBodyParameterPathString, updatedOptions);
|
||
var isStream = typeName === MapperType.Stream;
|
||
if (operationSpec.isXML) {
|
||
var xmlnsKey = xmlNamespacePrefix ? "xmlns:" + xmlNamespacePrefix : "xmlns";
|
||
var value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, httpRequest.body, updatedOptions);
|
||
if (typeName === MapperType.Sequence) {
|
||
httpRequest.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), {
|
||
rootName: xmlName || serializedName,
|
||
xmlCharKey: xmlCharKey
|
||
});
|
||
}
|
||
else if (!isStream) {
|
||
httpRequest.body = stringifyXML(value, {
|
||
rootName: xmlName || serializedName,
|
||
xmlCharKey: xmlCharKey
|
||
});
|
||
}
|
||
}
|
||
else if (typeName === MapperType.String &&
|
||
(((_f = operationSpec.contentType) === null || _f === void 0 ? void 0 : _f.match("text/plain")) || operationSpec.mediaType === "text")) {
|
||
// the String serializer has validated that request body is a string
|
||
// so just send the string.
|
||
return;
|
||
}
|
||
else if (!isStream) {
|
||
httpRequest.body = JSON.stringify(httpRequest.body);
|
||
}
|
||
}
|
||
}
|
||
catch (error) {
|
||
throw new Error("Error \"" + error.message + "\" occurred in serializing the payload - " + JSON.stringify(serializedName, undefined, " ") + ".");
|
||
}
|
||
}
|
||
else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {
|
||
httpRequest.formData = {};
|
||
for (var _i = 0, _g = operationSpec.formDataParameters; _i < _g.length; _i++) {
|
||
var formDataParameter = _g[_i];
|
||
var formDataParameterValue = getOperationArgumentValueFromParameter(serviceClient, operationArguments, formDataParameter, operationSpec.serializer);
|
||
if (formDataParameterValue !== undefined && formDataParameterValue !== null) {
|
||
var formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
|
||
httpRequest.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
/**
|
||
* Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself
|
||
*/
|
||
function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {
|
||
var _a;
|
||
// Composite and Sequence schemas already got their root namespace set during serialization
|
||
// We just need to add xmlns to the other schema types
|
||
if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) {
|
||
var result = {};
|
||
result[options.xmlCharKey] = serializedValue;
|
||
result[XML_ATTRKEY] = (_a = {}, _a[xmlnsKey] = xmlNamespace, _a);
|
||
return result;
|
||
}
|
||
return serializedValue;
|
||
}
|
||
function getValueOrFunctionResult(value, defaultValueCreator) {
|
||
var result;
|
||
if (typeof value === "string") {
|
||
result = value;
|
||
}
|
||
else {
|
||
result = defaultValueCreator();
|
||
if (typeof value === "function") {
|
||
result = value(result);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
function createDefaultRequestPolicyFactories(authPolicyFactory, options) {
|
||
var factories = [];
|
||
if (options.generateClientRequestIdHeader) {
|
||
factories.push(generateClientRequestIdPolicy(options.clientRequestIdHeaderName));
|
||
}
|
||
if (authPolicyFactory) {
|
||
factories.push(authPolicyFactory);
|
||
}
|
||
var userAgentHeaderName = getValueOrFunctionResult(options.userAgentHeaderName, getDefaultUserAgentHeaderName);
|
||
var userAgentHeaderValue = getValueOrFunctionResult(options.userAgent, getDefaultUserAgentValue);
|
||
if (userAgentHeaderName && userAgentHeaderValue) {
|
||
factories.push(userAgentPolicy({ key: userAgentHeaderName, value: userAgentHeaderValue }));
|
||
}
|
||
factories.push(redirectPolicy());
|
||
factories.push(rpRegistrationPolicy(options.rpRegistrationRetryTimeout));
|
||
if (!options.noRetryPolicy) {
|
||
factories.push(exponentialRetryPolicy());
|
||
factories.push(systemErrorRetryPolicy());
|
||
factories.push(throttlingRetryPolicy());
|
||
}
|
||
factories.push(deserializationPolicy(options.deserializationContentTypes));
|
||
{
|
||
factories.push(proxyPolicy(options.proxySettings));
|
||
}
|
||
factories.push(logPolicy({ logger: logger.info }));
|
||
return factories;
|
||
}
|
||
function createPipelineFromOptions(pipelineOptions, authPolicyFactory) {
|
||
var requestPolicyFactories = [];
|
||
if (pipelineOptions.sendStreamingJson) {
|
||
requestPolicyFactories.push(ndJsonPolicy());
|
||
}
|
||
var userAgentValue = undefined;
|
||
if (pipelineOptions.userAgentOptions && pipelineOptions.userAgentOptions.userAgentPrefix) {
|
||
var userAgentInfo = [];
|
||
userAgentInfo.push(pipelineOptions.userAgentOptions.userAgentPrefix);
|
||
// Add the default user agent value if it isn't already specified
|
||
// by the userAgentPrefix option.
|
||
var defaultUserAgentInfo = getDefaultUserAgentValue();
|
||
if (userAgentInfo.indexOf(defaultUserAgentInfo) === -1) {
|
||
userAgentInfo.push(defaultUserAgentInfo);
|
||
}
|
||
userAgentValue = userAgentInfo.join(" ");
|
||
}
|
||
var keepAliveOptions = tslib.__assign(tslib.__assign({}, DefaultKeepAliveOptions), pipelineOptions.keepAliveOptions);
|
||
var retryOptions = tslib.__assign(tslib.__assign({}, DefaultRetryOptions), pipelineOptions.retryOptions);
|
||
var redirectOptions = tslib.__assign(tslib.__assign({}, DefaultRedirectOptions), pipelineOptions.redirectOptions);
|
||
{
|
||
requestPolicyFactories.push(proxyPolicy(pipelineOptions.proxyOptions));
|
||
}
|
||
var deserializationOptions = tslib.__assign(tslib.__assign({}, DefaultDeserializationOptions), pipelineOptions.deserializationOptions);
|
||
var loggingOptions = tslib.__assign({}, pipelineOptions.loggingOptions);
|
||
requestPolicyFactories.push(tracingPolicy({ userAgent: userAgentValue }), keepAlivePolicy(keepAliveOptions), userAgentPolicy({ value: userAgentValue }), generateClientRequestIdPolicy(), deserializationPolicy(deserializationOptions.expectedContentTypes), throttlingRetryPolicy(), systemErrorRetryPolicy(), exponentialRetryPolicy(retryOptions.maxRetries, retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs));
|
||
if (redirectOptions.handleRedirects) {
|
||
requestPolicyFactories.push(redirectPolicy(redirectOptions.maxRetries));
|
||
}
|
||
if (authPolicyFactory) {
|
||
requestPolicyFactories.push(authPolicyFactory);
|
||
}
|
||
requestPolicyFactories.push(logPolicy(loggingOptions));
|
||
if (isNode && pipelineOptions.decompressResponse === false) {
|
||
requestPolicyFactories.push(disableResponseDecompressionPolicy());
|
||
}
|
||
return {
|
||
httpClient: pipelineOptions.httpClient,
|
||
requestPolicyFactories: requestPolicyFactories
|
||
};
|
||
}
|
||
function getOperationArgumentValueFromParameter(serviceClient, operationArguments, parameter, serializer) {
|
||
return getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, parameter.parameterPath, parameter.mapper, serializer);
|
||
}
|
||
function getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, parameterPath, parameterMapper, serializer) {
|
||
var _a;
|
||
var value;
|
||
if (typeof parameterPath === "string") {
|
||
parameterPath = [parameterPath];
|
||
}
|
||
var serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
|
||
if (Array.isArray(parameterPath)) {
|
||
if (parameterPath.length > 0) {
|
||
if (parameterMapper.isConstant) {
|
||
value = parameterMapper.defaultValue;
|
||
}
|
||
else {
|
||
var propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);
|
||
if (!propertySearchResult.propertyFound) {
|
||
propertySearchResult = getPropertyFromParameterPath(serviceClient, parameterPath);
|
||
}
|
||
var useDefaultValue = false;
|
||
if (!propertySearchResult.propertyFound) {
|
||
useDefaultValue =
|
||
parameterMapper.required ||
|
||
(parameterPath[0] === "options" && parameterPath.length === 2);
|
||
}
|
||
value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;
|
||
}
|
||
// Serialize just for validation purposes.
|
||
var parameterPathString = getPathStringFromParameterPath(parameterPath, parameterMapper);
|
||
serializer.serialize(parameterMapper, value, parameterPathString, serializerOptions);
|
||
}
|
||
}
|
||
else {
|
||
if (parameterMapper.required) {
|
||
value = {};
|
||
}
|
||
for (var propertyName in parameterPath) {
|
||
var propertyMapper = parameterMapper.type.modelProperties[propertyName];
|
||
var propertyPath = parameterPath[propertyName];
|
||
var propertyValue = getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, propertyPath, propertyMapper, serializer);
|
||
// Serialize just for validation purposes.
|
||
var propertyPathString = getPathStringFromParameterPath(propertyPath, propertyMapper);
|
||
serializer.serialize(propertyMapper, propertyValue, propertyPathString, serializerOptions);
|
||
if (propertyValue !== undefined && propertyValue !== null) {
|
||
if (!value) {
|
||
value = {};
|
||
}
|
||
value[propertyName] = propertyValue;
|
||
}
|
||
}
|
||
}
|
||
return value;
|
||
}
|
||
function getPropertyFromParameterPath(parent, parameterPath) {
|
||
var result = { propertyFound: false };
|
||
var i = 0;
|
||
for (; i < parameterPath.length; ++i) {
|
||
var parameterPathPart = parameterPath[i];
|
||
// Make sure to check inherited properties too, so don't use hasOwnProperty().
|
||
if (parent !== undefined && parent !== null && parameterPathPart in parent) {
|
||
parent = parent[parameterPathPart];
|
||
}
|
||
else {
|
||
break;
|
||
}
|
||
}
|
||
if (i === parameterPath.length) {
|
||
result.propertyValue = parent;
|
||
result.propertyFound = true;
|
||
}
|
||
return result;
|
||
}
|
||
function flattenResponse(_response, responseSpec) {
|
||
var parsedHeaders = _response.parsedHeaders;
|
||
var bodyMapper = responseSpec && responseSpec.bodyMapper;
|
||
var addOperationResponse = function (obj) {
|
||
return Object.defineProperty(obj, "_response", {
|
||
value: _response
|
||
});
|
||
};
|
||
if (bodyMapper) {
|
||
var typeName = bodyMapper.type.name;
|
||
if (typeName === "Stream") {
|
||
return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), { blobBody: _response.blobBody, readableStreamBody: _response.readableStreamBody }));
|
||
}
|
||
var modelProperties_1 = (typeName === "Composite" && bodyMapper.type.modelProperties) || {};
|
||
var isPageableResponse = Object.keys(modelProperties_1).some(function (k) { return modelProperties_1[k].serializedName === ""; });
|
||
if (typeName === "Sequence" || isPageableResponse) {
|
||
var arrayResponse = tslib.__spreadArray([], (_response.parsedBody || []));
|
||
for (var _i = 0, _a = Object.keys(modelProperties_1); _i < _a.length; _i++) {
|
||
var key = _a[_i];
|
||
if (modelProperties_1[key].serializedName) {
|
||
arrayResponse[key] = _response.parsedBody[key];
|
||
}
|
||
}
|
||
if (parsedHeaders) {
|
||
for (var _b = 0, _c = Object.keys(parsedHeaders); _b < _c.length; _b++) {
|
||
var key = _c[_b];
|
||
arrayResponse[key] = parsedHeaders[key];
|
||
}
|
||
}
|
||
addOperationResponse(arrayResponse);
|
||
return arrayResponse;
|
||
}
|
||
if (typeName === "Composite" || typeName === "Dictionary") {
|
||
return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), _response.parsedBody));
|
||
}
|
||
}
|
||
if (bodyMapper ||
|
||
_response.request.method === "HEAD" ||
|
||
isPrimitiveType(_response.parsedBody)) {
|
||
// primitive body types and HEAD booleans
|
||
return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), { body: _response.parsedBody }));
|
||
}
|
||
return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), _response.parsedBody));
|
||
}
|
||
function getCredentialScopes(options, baseUri) {
|
||
if (options === null || options === void 0 ? void 0 : options.credentialScopes) {
|
||
var scopes = options.credentialScopes;
|
||
return Array.isArray(scopes)
|
||
? scopes.map(function (scope) { return new url.URL(scope).toString(); })
|
||
: new url.URL(scopes).toString();
|
||
}
|
||
if (baseUri) {
|
||
return baseUri + "/.default";
|
||
}
|
||
return undefined;
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* This function is only here for compatibility. Use createSpanFunction in core-tracing.
|
||
*
|
||
* @deprecated This function is only here for compatibility. Use createSpanFunction in core-tracing.
|
||
* @hidden
|
||
|
||
* @param spanConfig - The name of the operation being performed.
|
||
* @param tracingOptions - The options for the underlying http request.
|
||
*/
|
||
function createSpanFunction(args) {
|
||
return coreTracing.createSpanFunction(args);
|
||
}
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
// Licensed under the MIT license.
|
||
/**
|
||
* Defines the default token refresh buffer duration.
|
||
*/
|
||
var TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
|
||
/**
|
||
* Provides an {@link AccessTokenCache} implementation which clears
|
||
* the cached {@link AccessToken}'s after the expiresOnTimestamp has
|
||
* passed.
|
||
*
|
||
* @deprecated No longer used in the bearer authorization policy.
|
||
*/
|
||
var ExpiringAccessTokenCache = /** @class */ (function () {
|
||
/**
|
||
* Constructs an instance of {@link ExpiringAccessTokenCache} with
|
||
* an optional expiration buffer time.
|
||
*/
|
||
function ExpiringAccessTokenCache(tokenRefreshBufferMs) {
|
||
if (tokenRefreshBufferMs === void 0) { tokenRefreshBufferMs = TokenRefreshBufferMs; }
|
||
this.cachedToken = undefined;
|
||
this.tokenRefreshBufferMs = tokenRefreshBufferMs;
|
||
}
|
||
ExpiringAccessTokenCache.prototype.setCachedToken = function (accessToken) {
|
||
this.cachedToken = accessToken;
|
||
};
|
||
ExpiringAccessTokenCache.prototype.getCachedToken = function () {
|
||
if (this.cachedToken &&
|
||
Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) {
|
||
this.cachedToken = undefined;
|
||
}
|
||
return this.cachedToken;
|
||
};
|
||
return ExpiringAccessTokenCache;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Helps the core-http token authentication policies with requesting a new token if we're not currently waiting for a new token.
|
||
*
|
||
* @deprecated No longer used in the bearer authorization policy.
|
||
*/
|
||
var AccessTokenRefresher = /** @class */ (function () {
|
||
function AccessTokenRefresher(credential, scopes, requiredMillisecondsBeforeNewRefresh) {
|
||
if (requiredMillisecondsBeforeNewRefresh === void 0) { requiredMillisecondsBeforeNewRefresh = 30000; }
|
||
this.credential = credential;
|
||
this.scopes = scopes;
|
||
this.requiredMillisecondsBeforeNewRefresh = requiredMillisecondsBeforeNewRefresh;
|
||
this.lastCalled = 0;
|
||
}
|
||
/**
|
||
* Returns true if the required milliseconds(defaulted to 30000) have been passed signifying
|
||
* that we are ready for a new refresh.
|
||
*/
|
||
AccessTokenRefresher.prototype.isReady = function () {
|
||
// We're only ready for a new refresh if the required milliseconds have passed.
|
||
return (!this.lastCalled || Date.now() - this.lastCalled > this.requiredMillisecondsBeforeNewRefresh);
|
||
};
|
||
/**
|
||
* Stores the time in which it is called,
|
||
* then requests a new token,
|
||
* then sets this.promise to undefined,
|
||
* then returns the token.
|
||
*/
|
||
AccessTokenRefresher.prototype.getToken = function (options) {
|
||
return tslib.__awaiter(this, void 0, void 0, function () {
|
||
var token;
|
||
return tslib.__generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
this.lastCalled = Date.now();
|
||
return [4 /*yield*/, this.credential.getToken(this.scopes, options)];
|
||
case 1:
|
||
token = _a.sent();
|
||
this.promise = undefined;
|
||
return [2 /*return*/, token || undefined];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
* Requests a new token if we're not currently waiting for a new token.
|
||
* Returns null if the required time between each call hasn't been reached.
|
||
*/
|
||
AccessTokenRefresher.prototype.refresh = function (options) {
|
||
if (!this.promise) {
|
||
this.promise = this.getToken(options);
|
||
}
|
||
return this.promise;
|
||
};
|
||
return AccessTokenRefresher;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var HeaderConstants = Constants.HeaderConstants;
|
||
var DEFAULT_AUTHORIZATION_SCHEME = "Basic";
|
||
var BasicAuthenticationCredentials = /** @class */ (function () {
|
||
/**
|
||
* Creates a new BasicAuthenticationCredentials object.
|
||
*
|
||
* @param userName - User name.
|
||
* @param password - Password.
|
||
* @param authorizationScheme - The authorization scheme.
|
||
*/
|
||
function BasicAuthenticationCredentials(userName, password, authorizationScheme) {
|
||
if (authorizationScheme === void 0) { authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME; }
|
||
this.authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME;
|
||
if (userName === null || userName === undefined || typeof userName.valueOf() !== "string") {
|
||
throw new Error("userName cannot be null or undefined and must be of type string.");
|
||
}
|
||
if (password === null || password === undefined || typeof password.valueOf() !== "string") {
|
||
throw new Error("password cannot be null or undefined and must be of type string.");
|
||
}
|
||
this.userName = userName;
|
||
this.password = password;
|
||
this.authorizationScheme = authorizationScheme;
|
||
}
|
||
/**
|
||
* Signs a request with the Authentication header.
|
||
*
|
||
* @param webResource - The WebResourceLike to be signed.
|
||
* @returns The signed request object.
|
||
*/
|
||
BasicAuthenticationCredentials.prototype.signRequest = function (webResource) {
|
||
var credentials = this.userName + ":" + this.password;
|
||
var encodedCredentials = this.authorizationScheme + " " + encodeString(credentials);
|
||
if (!webResource.headers)
|
||
webResource.headers = new HttpHeaders();
|
||
webResource.headers.set(HeaderConstants.AUTHORIZATION, encodedCredentials);
|
||
return Promise.resolve(webResource);
|
||
};
|
||
return BasicAuthenticationCredentials;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
/**
|
||
* Authenticates to a service using an API key.
|
||
*/
|
||
var ApiKeyCredentials = /** @class */ (function () {
|
||
/**
|
||
* @param options - Specifies the options to be provided for auth. Either header or query needs to be provided.
|
||
*/
|
||
function ApiKeyCredentials(options) {
|
||
if (!options || (options && !options.inHeader && !options.inQuery)) {
|
||
throw new Error("options cannot be null or undefined. Either \"inHeader\" or \"inQuery\" property of the options object needs to be provided.");
|
||
}
|
||
this.inHeader = options.inHeader;
|
||
this.inQuery = options.inQuery;
|
||
}
|
||
/**
|
||
* Signs a request with the values provided in the inHeader and inQuery parameter.
|
||
*
|
||
* @param webResource - The WebResourceLike to be signed.
|
||
* @returns The signed request object.
|
||
*/
|
||
ApiKeyCredentials.prototype.signRequest = function (webResource) {
|
||
if (!webResource) {
|
||
return Promise.reject(new Error("webResource cannot be null or undefined and must be of type \"object\"."));
|
||
}
|
||
if (this.inHeader) {
|
||
if (!webResource.headers) {
|
||
webResource.headers = new HttpHeaders();
|
||
}
|
||
for (var headerName in this.inHeader) {
|
||
webResource.headers.set(headerName, this.inHeader[headerName]);
|
||
}
|
||
}
|
||
if (this.inQuery) {
|
||
if (!webResource.url) {
|
||
return Promise.reject(new Error("url cannot be null in the request object."));
|
||
}
|
||
if (webResource.url.indexOf("?") < 0) {
|
||
webResource.url += "?";
|
||
}
|
||
for (var key in this.inQuery) {
|
||
if (!webResource.url.endsWith("?")) {
|
||
webResource.url += "&";
|
||
}
|
||
webResource.url += key + "=" + this.inQuery[key];
|
||
}
|
||
}
|
||
return Promise.resolve(webResource);
|
||
};
|
||
return ApiKeyCredentials;
|
||
}());
|
||
|
||
// Copyright (c) Microsoft Corporation.
|
||
var TopicCredentials = /** @class */ (function (_super) {
|
||
tslib.__extends(TopicCredentials, _super);
|
||
/**
|
||
* Creates a new EventGrid TopicCredentials object.
|
||
*
|
||
* @param topicKey - The EventGrid topic key
|
||
*/
|
||
function TopicCredentials(topicKey) {
|
||
var _this = this;
|
||
if (!topicKey || (topicKey && typeof topicKey !== "string")) {
|
||
throw new Error("topicKey cannot be null or undefined and must be of type string.");
|
||
}
|
||
var options = {
|
||
inHeader: {
|
||
"aeg-sas-key": topicKey
|
||
}
|
||
};
|
||
_this = _super.call(this, options) || this;
|
||
return _this;
|
||
}
|
||
return TopicCredentials;
|
||
}(ApiKeyCredentials));
|
||
|
||
Object.defineProperty(exports, 'isTokenCredential', {
|
||
enumerable: true,
|
||
get: function () {
|
||
return coreAuth.isTokenCredential;
|
||
}
|
||
});
|
||
exports.AccessTokenRefresher = AccessTokenRefresher;
|
||
exports.ApiKeyCredentials = ApiKeyCredentials;
|
||
exports.BaseRequestPolicy = BaseRequestPolicy;
|
||
exports.BasicAuthenticationCredentials = BasicAuthenticationCredentials;
|
||
exports.Constants = Constants;
|
||
exports.DefaultHttpClient = NodeFetchHttpClient;
|
||
exports.ExpiringAccessTokenCache = ExpiringAccessTokenCache;
|
||
exports.HttpHeaders = HttpHeaders;
|
||
exports.MapperType = MapperType;
|
||
exports.RequestPolicyOptions = RequestPolicyOptions;
|
||
exports.RestError = RestError;
|
||
exports.Serializer = Serializer;
|
||
exports.ServiceClient = ServiceClient;
|
||
exports.TopicCredentials = TopicCredentials;
|
||
exports.URLBuilder = URLBuilder;
|
||
exports.URLQuery = URLQuery;
|
||
exports.WebResource = WebResource;
|
||
exports.XML_ATTRKEY = XML_ATTRKEY;
|
||
exports.XML_CHARKEY = XML_CHARKEY;
|
||
exports.applyMixins = applyMixins;
|
||
exports.bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy;
|
||
exports.createPipelineFromOptions = createPipelineFromOptions;
|
||
exports.createSpanFunction = createSpanFunction;
|
||
exports.delay = delay;
|
||
exports.deserializationPolicy = deserializationPolicy;
|
||
exports.deserializeResponseBody = deserializeResponseBody;
|
||
exports.disableResponseDecompressionPolicy = disableResponseDecompressionPolicy;
|
||
exports.encodeUri = encodeUri;
|
||
exports.executePromisesSequentially = executePromisesSequentially;
|
||
exports.exponentialRetryPolicy = exponentialRetryPolicy;
|
||
exports.flattenResponse = flattenResponse;
|
||
exports.generateClientRequestIdPolicy = generateClientRequestIdPolicy;
|
||
exports.generateUuid = generateUuid;
|
||
exports.getDefaultProxySettings = getDefaultProxySettings;
|
||
exports.getDefaultUserAgentValue = getDefaultUserAgentValue;
|
||
exports.isDuration = isDuration;
|
||
exports.isNode = isNode;
|
||
exports.isValidUuid = isValidUuid;
|
||
exports.keepAlivePolicy = keepAlivePolicy;
|
||
exports.logPolicy = logPolicy;
|
||
exports.operationOptionsToRequestOptionsBase = operationOptionsToRequestOptionsBase;
|
||
exports.parseXML = parseXML;
|
||
exports.promiseToCallback = promiseToCallback;
|
||
exports.promiseToServiceCallback = promiseToServiceCallback;
|
||
exports.proxyPolicy = proxyPolicy;
|
||
exports.redirectPolicy = redirectPolicy;
|
||
exports.serializeObject = serializeObject;
|
||
exports.signingPolicy = signingPolicy;
|
||
exports.stringifyXML = stringifyXML;
|
||
exports.stripRequest = stripRequest;
|
||
exports.stripResponse = stripResponse;
|
||
exports.systemErrorRetryPolicy = systemErrorRetryPolicy;
|
||
exports.throttlingRetryPolicy = throttlingRetryPolicy;
|
||
exports.tracingPolicy = tracingPolicy;
|
||
exports.userAgentPolicy = userAgentPolicy;
|
||
//# sourceMappingURL=index.js.map
|
||
|
||
|
||
/***/ })
|
||
/******/ ]); |