From 104c8f46d747b9894819bf5a2094228a3b86840c Mon Sep 17 00:00:00 2001
From: Masahiro Iuchi
Date: Thu, 5 Jun 2025 02:35:09 +0900
Subject: [PATCH 1/3] Add v7 (8.6.0)
---
Gruntfile.js | 18 +-
Makefile | 4 +-
mt-static/data-api/v7/js/mt-data-api.js | 5716 +++++++++++++++++
mt-static/data-api/v7/js/mt-data-api.min.js | 9 +
mt-static/data-api/v7/js/mt-data-api.min.map | 1 +
node-lib/data-api/v7/node-mt-data-api.js | 5785 ++++++++++++++++++
src/data-api/v7/endpoints.js | 5 +
src/data-api/v7/endpoints.json | 1426 +++++
src/data-api/v7/mt-data-api.js | 26 +
src/data-api/v7/node-mt-data-api.js | 28 +
10 files changed, 13007 insertions(+), 11 deletions(-)
create mode 100644 mt-static/data-api/v7/js/mt-data-api.js
create mode 100644 mt-static/data-api/v7/js/mt-data-api.min.js
create mode 100644 mt-static/data-api/v7/js/mt-data-api.min.map
create mode 100644 node-lib/data-api/v7/node-mt-data-api.js
create mode 100644 src/data-api/v7/endpoints.js
create mode 100644 src/data-api/v7/endpoints.json
create mode 100644 src/data-api/v7/mt-data-api.js
create mode 100644 src/data-api/v7/node-mt-data-api.js
diff --git a/Gruntfile.js b/Gruntfile.js
index c87bd23..e0798a1 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -61,12 +61,12 @@ module.exports = function( grunt ) {
},
preprocess: {
"data-api-browser": {
- dest: "mt-static/data-api/v6/js/mt-data-api.js",
- src: "src/data-api/v6/mt-data-api.js"
+ dest: "mt-static/data-api/v7/js/mt-data-api.js",
+ src: "src/data-api/v7/mt-data-api.js"
},
"data-api-node": {
- dest: "node-lib/data-api/v6/node-mt-data-api.js",
- src: "src/data-api/v6/node-mt-data-api.js"
+ dest: "node-lib/data-api/v7/node-mt-data-api.js",
+ src: "src/data-api/v7/node-mt-data-api.js"
},
"node-bootstrap": {
dest: "node-lib/bootstrap.js",
@@ -74,7 +74,7 @@ module.exports = function( grunt ) {
},
"data-api-coverage-endpoints": {
dest: ".src/data-api/coverage/endpoints.js",
- src: "src/data-api/v6/endpoints.js"
+ src: "src/data-api/v7/endpoints.js"
}
},
watch: {
@@ -96,13 +96,13 @@ module.exports = function( grunt ) {
uglify: {
"data-api-browser": {
files: {
- "mt-static/data-api/v6/js/mt-data-api.min.js": [
- "mt-static/data-api/v6/js/mt-data-api.js"
+ "mt-static/data-api/v7/js/mt-data-api.min.js": [
+ "mt-static/data-api/v7/js/mt-data-api.js"
]
},
options: {
banner: "/* Copyright (c) Six Apart Ltd.\n * This file is generated by Movable Type DataAPI SDK for JavaScript.\n * Consult the source files for their respective licenses and copyrights.\n * <%= pkg.homepage %>\n */\n",
- sourceMap: "mt-static/data-api/v6/js/mt-data-api.min.map",
+ sourceMap: "mt-static/data-api/v7/js/mt-data-api.min.map",
sourceMapPrefix: 4,
sourceMappingURL: "mt-data-api.min.map",
report: "min",
@@ -183,7 +183,7 @@ module.exports = function( grunt ) {
},
jasmine: {
"data-api": {
- src: ["mt-static/data-api/v6/js/mt-data-api.js"],
+ src: ["mt-static/data-api/v7/js/mt-data-api.js"],
options: {
specs: "spec/data-api/**/*.js",
host: "http://localhost:<%= connect.jasmine.options.port %>/",
diff --git a/Makefile b/Makefile
index d39fa77..4b51468 100644
--- a/Makefile
+++ b/Makefile
@@ -20,8 +20,8 @@ build:
test:
-grunt test
-JSON_VERSION := v4
-JSON_BASE_URL := http://mt-app.movabletype.test/cgi-bin/MT7-R4601/mt-data-api.cgi
+JSON_VERSION := v7
+JSON_BASE_URL := http://localhost/cgi-bin/mt/mt-data-api.cgi
json:
perl tools/make-json.pl --version=$(JSON_VERSION) --base-url=$(JSON_BASE_URL) > src/data-api/$(JSON_VERSION)/endpoints.json
diff --git a/mt-static/data-api/v7/js/mt-data-api.js b/mt-static/data-api/v7/js/mt-data-api.js
new file mode 100644
index 0000000..f4251b7
--- /dev/null
+++ b/mt-static/data-api/v7/js/mt-data-api.js
@@ -0,0 +1,5716 @@
+/*
+ * Movable Type DataAPI SDK for JavaScript v6
+ * https://github.com/movabletype/mt-data-api-sdk-js
+ * Copyright (c) Six Apart Ltd.
+ * This program is distributed under the terms of the MIT license.
+ *
+ * Includes jQuery JavaScript Library in some parts.
+ * http://jquery.com/
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ */
+
+;(function(window, factory) {
+ var DataAPI = factory(window);
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ module.exports = DataAPI;
+ } else {
+ if ( typeof define === "function" && define.amd ) {
+ define("mt-data-api", [], function() {
+ return DataAPI;
+ });
+ }
+ }
+}(typeof window === "undefined" ? undefined : window, function(window, undefined) {
+
+"use strict";
+
+/**
+ * @namespace MT
+ */
+
+/**
+ * The MT.DataAPI is a client class for accessing to the Movable Type DataAPI.
+ * @class DataAPI
+ * @constructor
+ * @param {Object} options Options.
+ * @param {String} options.clientId Client ID
+ * This value allows alphanumeric, (_)underscore, (-)dash.
+ * @param {String} options.baseUrl The absolute CGI URL of the DataAPI.
+ * (e.g. http://example.com/mt/mt-data-api.cgi)
+ * @param {String} [options.format] The format to serialize.
+ * @param {String} [options.sessionStore] The session store.
+ * In browser, the cookie is used by default.
+ * @param {String} [options.sessionDomain] The session domain.
+ * When using the cookie, this value is used as cookie domain.
+ * @param {String} [options.sessionPath] The session path
+ * When using the cookie, this value is used as cookie path.
+ * @param {Boolean} [options.async] If true, use asynchronous
+ * XMLHttpRequest. The default value is the true.
+ * @param {Number} [options.timeout] The number of milliseconds a
+ * request can take before automatically being terminated.
+ * The default value is not set up, browser's default is used.
+ * @param {Boolean} [options.cache] If false, add an additional
+ * parameter "_" to request to avoid cache. The default value
+ * is the true.
+ * @param {Boolean} [options.withoutAuthorization] If true,
+ * the "X-MT-Authorization" request header is not sent even if
+ * already got accessToken. The default value is the false.
+ * @param {Boolean} [options.loadPluginEndpoints] If true, load
+ * endpoint data extended by plugin and generate methods to
+ * access that endpoint automatically. The default value is
+ * the true.
+ * (However even if this option's value is false, you are able
+ * to use all the methods to access to core endpoint.)
+ * @param {Boolean} [options.suppressResponseCodes] If true, add
+ * suppressResponseCodes parameter to each request. As a result,
+ * the Data API always returns 200 as HTTP response code.
+ * The default value is not set up.
+ * The default value is the false when requested via XMLHttpRequest
+ * or IFRAME. The default value is the true when requested via
+ * XDomainRequest.
+ * @param {Boolean} [options.crossOrigin] If true, requests are sent as
+ * a cross-domain request. The default value is assigned
+ * automatically by document's URL and baseUrl.
+ * @param {Boolean(} [options.disableFormData] If false,use FormData
+ * class when available that. The default value is the false.
+ */
+var DataAPI = function(options) {
+ var i, k,
+ requireds = ['clientId', 'baseUrl'];
+
+ this.o = {
+ clientId: undefined,
+ baseUrl: undefined,
+ format: undefined,
+ sessionStore: undefined,
+ sessionDomain: undefined,
+ sessionPath: undefined,
+ async: true,
+ timeout: undefined,
+ cache: true,
+ withoutAuthorization: false,
+ processOneTimeTokenOnInitialize: true,
+ loadPluginEndpoints: true,
+ suppressResponseCodes: undefined,
+ crossOrigin: undefined,
+ disableFormData: false
+ };
+ for (k in options) {
+ if (k in this.o) {
+ this.o[k] = options[k];
+ }
+ else {
+ throw 'Unkown option: ' + k;
+ }
+ }
+
+ for (i = 0; i < requireds.length; i++) {
+ if (! this.o[requireds[i]]) {
+ throw 'The "' + requireds[i] + '" is required.';
+ }
+ }
+
+ this.callbacks = {};
+ this.tokenData = null;
+ this.iframeId = 0;
+
+ this._initOptions();
+
+ if (this.o.loadPluginEndpoints) {
+ this.loadEndpoints({
+ excludeComponents: 'core'
+ });
+ }
+
+ if (this.o.processOneTimeTokenOnInitialize) {
+ this._storeOneTimeToken();
+ }
+
+ this.trigger('initialize');
+};
+
+
+/**
+ * The API version.
+ * @property version
+ * @static
+ * @private
+ * @type Number
+ */
+DataAPI.version = 6;
+
+/**
+ * The key of access token of this api object.
+ * This value is used for the session store.
+ * @property accessTokenKey
+ * @static
+ * @private
+ * @type String
+ */
+DataAPI.accessTokenKey = 'mt_data_api_access_token';
+
+/**
+ * The name prefix for iframe that created to upload asset.
+ * @property iframePrefix
+ * @static
+ * @private
+ * @type String
+ */
+DataAPI.iframePrefix = 'mt_data_api_iframe_';
+
+/**
+ * The default format that serializes data.
+ * @property defaultFormat
+ * @static
+ * @private
+ * @type String
+ */
+DataAPI.defaultFormat = 'json';
+
+/**
+ * The default session store.
+ * @property defaultSessionStore
+ * @static
+ * @private
+ * @type String
+ */
+DataAPI.defaultSessionStore = window.document ? 'cookie-encrypted' : 'fs';
+
+/**
+ * Class level callbacks function data.
+ * @property callbacks
+ * @static
+ * @private
+ * @type Object
+ */
+DataAPI.callbacks = {};
+
+/**
+ * Available formats that serialize data.
+ * @property formats
+ * @static
+ * @private
+ * @type Object
+ */
+DataAPI.formats = {
+ json: {
+ fileExtension: 'json',
+ mimeType: 'application/json',
+ serialize: function() {
+ return JSON.stringify.apply(JSON, arguments);
+ },
+ unserialize: function() {
+ return JSON.parse.apply(JSON, arguments);
+ }
+ }
+};
+
+/**
+ * Available session stores.
+ * @property sessionStores
+ * @static
+ * @private
+ * @type Object
+ */
+DataAPI.sessionStores = {};
+;(function() {
+
+function fetchCookieValues(name) {
+ var cookie = Cookie.fetch(name);
+
+ if (! cookie) {
+ return {};
+ }
+
+ try {
+ return JSON.parse(cookie.value);
+ }
+ catch (e) {
+ return {
+ data: cookie.value
+ };
+ }
+}
+
+function fillinDefaultCookieValues(values, o) {
+ var path = values.path,
+ currentPath = extractPath(documentUrl());
+ if (! path || path.length > currentPath.length) {
+ path = currentPath;
+ }
+
+ return {
+ data: values.data,
+ domain: ( typeof o === 'undefined' ? undefined : o.sessionDomain ) || values.domain || undefined,
+ path: ( typeof o === 'undefined' ? undefined : o.sessionPath ) || path
+ };
+}
+
+function documentUrl() {
+ if (! window.location) {
+ return '';
+ }
+
+ var loc;
+
+ // IE may throw an exception when accessing
+ // a field from window.location if document.domain has been set
+ try {
+ loc = window.location.href;
+ } catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ loc = window.document.createElement( "a" );
+ loc.href = "";
+ loc = loc.href;
+ }
+
+ return loc;
+}
+
+function extractPath(url) {
+ var urlRegexp = /^[\w.+-]+:(?:\/\/[^\/?#:]*(?::\d+|)|)(.*)\/[^\/]*$/,
+ match = urlRegexp.exec(url.toLowerCase());
+
+ return match ? match[1] : null;
+}
+
+DataAPI.sessionStores['cookie'] = {
+ save: function(name, data, remember) {
+ var expires = remember ? new Date(new Date().getTime() + 315360000000) : undefined, // after 10 years
+ values = fillinDefaultCookieValues(fetchCookieValues(name), this.o);
+ Cookie.bake(name, JSON.stringify(values), values.domain, values.path, expires);
+ },
+ fetch: function(name) {
+ fetchCookieValues(name).data;
+ },
+ remove: function(name) {
+ var values = fillinDefaultCookieValues(fetchCookieValues(name));
+ Cookie.bake(name, '', values.domain, values.path, new Date(0));
+ }
+};
+
+})();
+
+;(function() {
+
+/** @fileOverview Javascript cryptography implementation.
+ *
+ * Crush to remove comments, shorten variable names and
+ * generally reduce transmission size.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+"use strict";
+/*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
+/*global document, window, escape, unescape */
+
+/** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
+var sjcl = {
+ /** @namespace Symmetric ciphers. */
+ cipher: {},
+
+ /** @namespace Hash functions. Right now only SHA256 is implemented. */
+ hash: {},
+
+ /** @namespace Block cipher modes of operation. */
+ mode: {},
+
+ /** @namespace Miscellaneous. HMAC and PBKDF2. */
+ misc: {},
+
+ /**
+ * @namespace Bit array encoders and decoders.
+ *
+ * @description
+ * The members of this namespace are functions which translate between
+ * SJCL's bitArrays and other objects (usually strings). Because it
+ * isn't always clear which direction is encoding and which is decoding,
+ * the method names are "fromBits" and "toBits".
+ */
+ codec: {},
+
+ /** @namespace Exceptions. */
+ exception: {
+ /** @class Ciphertext is corrupt. */
+ corrupt: function(message) {
+ this.toString = function() { return "CORRUPT: "+this.message; };
+ this.message = message;
+ },
+
+ /** @class Invalid parameter. */
+ invalid: function(message) {
+ this.toString = function() { return "INVALID: "+this.message; };
+ this.message = message;
+ },
+
+ /** @class Bug or missing feature in SJCL. */
+ bug: function(message) {
+ this.toString = function() { return "BUG: "+this.message; };
+ this.message = message;
+ },
+
+ /** @class Something isn't ready. */
+ notReady: function(message) {
+ this.toString = function() { return "NOT READY: "+this.message; };
+ this.message = message;
+ }
+ }
+};
+/** @fileOverview Low-level AES implementation.
+ *
+ * This file contains a low-level implementation of AES, optimized for
+ * size and for efficiency on several browsers. It is based on
+ * OpenSSL's aes_core.c, a public-domain implementation by Vincent
+ * Rijmen, Antoon Bosselaers and Paulo Barreto.
+ *
+ * An older version of this implementation is available in the public
+ * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
+ * Stanford University 2008-2010 and BSD-licensed for liability
+ * reasons.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+/**
+ * Schedule out an AES key for both encryption and decryption. This
+ * is a low-level class. Use a cipher mode to do bulk encryption.
+ *
+ * @constructor
+ * @param {Array} key The key as an array of 4, 6 or 8 words.
+ *
+ * @class Advanced Encryption Standard (low-level interface)
+ */
+sjcl.cipher.aes = function (key) {
+ if (!this._tables[0][0][0]) {
+ this._precompute();
+ }
+
+ var i, j, tmp,
+ encKey, decKey,
+ sbox = this._tables[0][4], decTable = this._tables[1],
+ keyLen = key.length, rcon = 1;
+
+ if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) {
+ throw new sjcl.exception.invalid("invalid aes key size");
+ }
+
+ this._key = [encKey = key.slice(0), decKey = []];
+
+ // schedule encryption keys
+ for (i = keyLen; i < 4 * keyLen + 28; i++) {
+ tmp = encKey[i-1];
+
+ // apply sbox
+ if (i%keyLen === 0 || (keyLen === 8 && i%keyLen === 4)) {
+ tmp = sbox[tmp>>>24]<<24 ^ sbox[tmp>>16&255]<<16 ^ sbox[tmp>>8&255]<<8 ^ sbox[tmp&255];
+
+ // shift rows and add rcon
+ if (i%keyLen === 0) {
+ tmp = tmp<<8 ^ tmp>>>24 ^ rcon<<24;
+ rcon = rcon<<1 ^ (rcon>>7)*283;
+ }
+ }
+
+ encKey[i] = encKey[i-keyLen] ^ tmp;
+ }
+
+ // schedule decryption keys
+ for (j = 0; i; j++, i--) {
+ tmp = encKey[j&3 ? i : i - 4];
+ if (i<=4 || j<4) {
+ decKey[j] = tmp;
+ } else {
+ decKey[j] = decTable[0][sbox[tmp>>>24 ]] ^
+ decTable[1][sbox[tmp>>16 & 255]] ^
+ decTable[2][sbox[tmp>>8 & 255]] ^
+ decTable[3][sbox[tmp & 255]];
+ }
+ }
+};
+
+sjcl.cipher.aes.prototype = {
+ // public
+ /* Something like this might appear here eventually
+ name: "AES",
+ blockSize: 4,
+ keySizes: [4,6,8],
+ */
+
+ /**
+ * Encrypt an array of 4 big-endian words.
+ * @param {Array} data The plaintext.
+ * @return {Array} The ciphertext.
+ */
+ encrypt:function (data) { return this._crypt(data,0); },
+
+ /**
+ * Decrypt an array of 4 big-endian words.
+ * @param {Array} data The ciphertext.
+ * @return {Array} The plaintext.
+ */
+ decrypt:function (data) { return this._crypt(data,1); },
+
+ /**
+ * The expanded S-box and inverse S-box tables. These will be computed
+ * on the client so that we don't have to send them down the wire.
+ *
+ * There are two tables, _tables[0] is for encryption and
+ * _tables[1] is for decryption.
+ *
+ * The first 4 sub-tables are the expanded S-box with MixColumns. The
+ * last (_tables[01][4]) is the S-box itself.
+ *
+ * @private
+ */
+ _tables: [[[],[],[],[],[]],[[],[],[],[],[]]],
+
+ /**
+ * Expand the S-box tables.
+ *
+ * @private
+ */
+ _precompute: function () {
+ var encTable = this._tables[0], decTable = this._tables[1],
+ sbox = encTable[4], sboxInv = decTable[4],
+ i, x, xInv, d=[], th=[], x2, x4, x8, s, tEnc, tDec;
+
+ // Compute double and third tables
+ for (i = 0; i < 256; i++) {
+ th[( d[i] = i<<1 ^ (i>>7)*283 )^i]=i;
+ }
+
+ for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) {
+ // Compute sbox
+ s = xInv ^ xInv<<1 ^ xInv<<2 ^ xInv<<3 ^ xInv<<4;
+ s = s>>8 ^ s&255 ^ 99;
+ sbox[x] = s;
+ sboxInv[s] = x;
+
+ // Compute MixColumns
+ x8 = d[x4 = d[x2 = d[x]]];
+ tDec = x8*0x1010101 ^ x4*0x10001 ^ x2*0x101 ^ x*0x1010100;
+ tEnc = d[s]*0x101 ^ s*0x1010100;
+
+ for (i = 0; i < 4; i++) {
+ encTable[i][x] = tEnc = tEnc<<24 ^ tEnc>>>8;
+ decTable[i][s] = tDec = tDec<<24 ^ tDec>>>8;
+ }
+ }
+
+ // Compactify. Considerable speedup on Firefox.
+ for (i = 0; i < 5; i++) {
+ encTable[i] = encTable[i].slice(0);
+ decTable[i] = decTable[i].slice(0);
+ }
+ },
+
+ /**
+ * Encryption and decryption core.
+ * @param {Array} input Four words to be encrypted or decrypted.
+ * @param dir The direction, 0 for encrypt and 1 for decrypt.
+ * @return {Array} The four encrypted or decrypted words.
+ * @private
+ */
+ _crypt:function (input, dir) {
+ if (input.length !== 4) {
+ throw new sjcl.exception.invalid("invalid aes block size");
+ }
+
+ var key = this._key[dir],
+ // state variables a,b,c,d are loaded with pre-whitened data
+ a = input[0] ^ key[0],
+ b = input[dir ? 3 : 1] ^ key[1],
+ c = input[2] ^ key[2],
+ d = input[dir ? 1 : 3] ^ key[3],
+ a2, b2, c2,
+
+ nInnerRounds = key.length/4 - 2,
+ i,
+ kIndex = 4,
+ out = [0,0,0,0],
+ table = this._tables[dir],
+
+ // load up the tables
+ t0 = table[0],
+ t1 = table[1],
+ t2 = table[2],
+ t3 = table[3],
+ sbox = table[4];
+
+ // Inner rounds. Cribbed from OpenSSL.
+ for (i = 0; i < nInnerRounds; i++) {
+ a2 = t0[a>>>24] ^ t1[b>>16 & 255] ^ t2[c>>8 & 255] ^ t3[d & 255] ^ key[kIndex];
+ b2 = t0[b>>>24] ^ t1[c>>16 & 255] ^ t2[d>>8 & 255] ^ t3[a & 255] ^ key[kIndex + 1];
+ c2 = t0[c>>>24] ^ t1[d>>16 & 255] ^ t2[a>>8 & 255] ^ t3[b & 255] ^ key[kIndex + 2];
+ d = t0[d>>>24] ^ t1[a>>16 & 255] ^ t2[b>>8 & 255] ^ t3[c & 255] ^ key[kIndex + 3];
+ kIndex += 4;
+ a=a2; b=b2; c=c2;
+ }
+
+ // Last round.
+ for (i = 0; i < 4; i++) {
+ out[dir ? 3&-i : i] =
+ sbox[a>>>24 ]<<24 ^
+ sbox[b>>16 & 255]<<16 ^
+ sbox[c>>8 & 255]<<8 ^
+ sbox[d & 255] ^
+ key[kIndex++];
+ a2=a; a=b; b=c; c=d; d=a2;
+ }
+
+ return out;
+ }
+};
+
+/** @fileOverview Arrays of bits, encoded as arrays of Numbers.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+/** @namespace Arrays of bits, encoded as arrays of Numbers.
+ *
+ * @description
+ *
+ * These objects are the currency accepted by SJCL's crypto functions.
+ *
+ *
+ *
+ * Most of our crypto primitives operate on arrays of 4-byte words internally,
+ * but many of them can take arguments that are not a multiple of 4 bytes.
+ * This library encodes arrays of bits (whose size need not be a multiple of 8
+ * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
+ * array of words, 32 bits at a time. Since the words are double-precision
+ * floating point numbers, they fit some extra data. We use this (in a private,
+ * possibly-changing manner) to encode the number of bits actually present
+ * in the last word of the array.
+ *
+ *
+ *
+ * Because bitwise ops clear this out-of-band data, these arrays can be passed
+ * to ciphers like AES which want arrays of words.
+ *
+ */
+sjcl.bitArray = {
+ /**
+ * Array slices in units of bits.
+ * @param {bitArray a} The array to slice.
+ * @param {Number} bstart The offset to the start of the slice, in bits.
+ * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
+ * slice until the end of the array.
+ * @return {bitArray} The requested slice.
+ */
+ bitSlice: function (a, bstart, bend) {
+ a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
+ return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
+ },
+
+ /**
+ * Concatenate two bit arrays.
+ * @param {bitArray} a1 The first array.
+ * @param {bitArray} a2 The second array.
+ * @return {bitArray} The concatenation of a1 and a2.
+ */
+ concat: function (a1, a2) {
+ if (a1.length === 0 || a2.length === 0) {
+ return a1.concat(a2);
+ }
+
+ var out, i, last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
+ if (shift === 32) {
+ return a1.concat(a2);
+ } else {
+ return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
+ }
+ },
+
+ /**
+ * Find the length of an array of bits.
+ * @param {bitArray} a The array.
+ * @return {Number} The length of a, in bits.
+ */
+ bitLength: function (a) {
+ var l = a.length, x;
+ if (l === 0) { return 0; }
+ x = a[l - 1];
+ return (l-1) * 32 + sjcl.bitArray.getPartial(x);
+ },
+
+ /**
+ * Truncate an array.
+ * @param {bitArray} a The array.
+ * @param {Number} len The length to truncate to, in bits.
+ * @return {bitArray} A new array, truncated to len bits.
+ */
+ clamp: function (a, len) {
+ if (a.length * 32 < len) { return a; }
+ a = a.slice(0, Math.ceil(len / 32));
+ var l = a.length;
+ len = len & 31;
+ if (l > 0 && len) {
+ a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
+ }
+ return a;
+ },
+
+ /**
+ * Make a partial word for a bit array.
+ * @param {Number} len The number of bits in the word.
+ * @param {Number} x The bits.
+ * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
+ * @return {Number} The partial word.
+ */
+ partial: function (len, x, _end) {
+ if (len === 32) { return x; }
+ return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
+ },
+
+ /**
+ * Get the number of bits used by a partial word.
+ * @param {Number} x The partial word.
+ * @return {Number} The number of bits used by the partial word.
+ */
+ getPartial: function (x) {
+ return Math.round(x/0x10000000000) || 32;
+ },
+
+ /**
+ * Compare two arrays for equality in a predictable amount of time.
+ * @param {bitArray} a The first array.
+ * @param {bitArray} b The second array.
+ * @return {boolean} true if a == b; false otherwise.
+ */
+ equal: function (a, b) {
+ if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
+ return false;
+ }
+ var x = 0, i;
+ for (i=0; i= 32; shift -= 32) {
+ out.push(carry);
+ carry = 0;
+ }
+ if (shift === 0) {
+ return out.concat(a);
+ }
+
+ for (i=0; i>>shift);
+ carry = a[i] << (32-shift);
+ }
+ last2 = a.length ? a[a.length-1] : 0;
+ shift2 = sjcl.bitArray.getPartial(last2);
+ out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
+ return out;
+ },
+
+ /** xor a block of 4 words together.
+ * @private
+ */
+ _xor4: function(x,y) {
+ return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
+ }
+};
+/** @fileOverview Bit array codec implementations.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+/** @namespace UTF-8 strings */
+sjcl.codec.utf8String = {
+ /** Convert from a bitArray to a UTF-8 string. */
+ fromBits: function (arr) {
+ var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
+ for (i=0; i>> 24);
+ tmp <<= 8;
+ }
+ return decodeURIComponent(escape(out));
+ },
+
+ /** Convert from a UTF-8 string to a bitArray. */
+ toBits: function (str) {
+ str = unescape(encodeURIComponent(str));
+ var out = [], i, tmp=0;
+ for (i=0; i>>bits) >>> 26);
+ if (bits < 6) {
+ ta = arr[i] << (6-bits);
+ bits += 26;
+ i++;
+ } else {
+ ta <<= 6;
+ bits -= 6;
+ }
+ }
+ while ((out.length & 3) && !_noEquals) { out += "="; }
+ return out;
+ },
+
+ /** Convert from a base64 string to a bitArray */
+ toBits: function(str) {
+ str = str.replace(/\s|=/g,'');
+ var out = [], i, bits=0, c = sjcl.codec.base64._chars, ta=0, x;
+ for (i=0; i 26) {
+ bits -= 26;
+ out.push(ta ^ x>>>bits);
+ ta = x << (32-bits);
+ } else {
+ bits += 6;
+ ta ^= x << (32-bits);
+ }
+ }
+ if (bits&56) {
+ out.push(sjcl.bitArray.partial(bits&56, ta, 1));
+ }
+ return out;
+ }
+};
+/** @fileOverview Javascript SHA-256 implementation.
+ *
+ * An older version of this implementation is available in the public
+ * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
+ * Stanford University 2008-2010 and BSD-licensed for liability
+ * reasons.
+ *
+ * Special thanks to Aldo Cortesi for pointing out several bugs in
+ * this code.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+/**
+ * Context for a SHA-256 operation in progress.
+ * @constructor
+ * @class Secure Hash Algorithm, 256 bits.
+ */
+sjcl.hash.sha256 = function (hash) {
+ if (!this._key[0]) { this._precompute(); }
+ if (hash) {
+ this._h = hash._h.slice(0);
+ this._buffer = hash._buffer.slice(0);
+ this._length = hash._length;
+ } else {
+ this.reset();
+ }
+};
+
+/**
+ * Hash a string or an array of words.
+ * @static
+ * @param {bitArray|String} data the data to hash.
+ * @return {bitArray} The hash value, an array of 16 big-endian words.
+ */
+sjcl.hash.sha256.hash = function (data) {
+ return (new sjcl.hash.sha256()).update(data).finalize();
+};
+
+sjcl.hash.sha256.prototype = {
+ /**
+ * The hash's block size, in bits.
+ * @constant
+ */
+ blockSize: 512,
+
+ /**
+ * Reset the hash state.
+ * @return this
+ */
+ reset:function () {
+ this._h = this._init.slice(0);
+ this._buffer = [];
+ this._length = 0;
+ return this;
+ },
+
+ /**
+ * Input several words to the hash.
+ * @param {bitArray|String} data the data to hash.
+ * @return this
+ */
+ update: function (data) {
+ if (typeof data === "string") {
+ data = sjcl.codec.utf8String.toBits(data);
+ }
+ var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
+ ol = this._length,
+ nl = this._length = ol + sjcl.bitArray.bitLength(data);
+ for (i = 512+ol & -512; i <= nl; i+= 512) {
+ this._block(b.splice(0,16));
+ }
+ return this;
+ },
+
+ /**
+ * Complete hashing and output the hash value.
+ * @return {bitArray} The hash value, an array of 16 big-endian words.
+ */
+ finalize:function () {
+ var i, b = this._buffer, h = this._h;
+
+ // Round out and push the buffer
+ b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
+
+ // Round out the buffer to a multiple of 16 words, less the 2 length words.
+ for (i = b.length + 2; i & 15; i++) {
+ b.push(0);
+ }
+
+ // append the length
+ b.push(Math.floor(this._length / 0x100000000));
+ b.push(this._length | 0);
+
+ while (b.length) {
+ this._block(b.splice(0,16));
+ }
+
+ this.reset();
+ return h;
+ },
+
+ /**
+ * The SHA-256 initialization vector, to be precomputed.
+ * @private
+ */
+ _init:[],
+ /*
+ _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
+ */
+
+ /**
+ * The SHA-256 hash key, to be precomputed.
+ * @private
+ */
+ _key:[],
+ /*
+ _key:
+ [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
+ */
+
+
+ /**
+ * Function to precompute _init and _key.
+ * @private
+ */
+ _precompute: function () {
+ var i = 0, prime = 2, factor;
+
+ function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
+
+ outer: for (; i<64; prime++) {
+ for (factor=2; factor*factor <= prime; factor++) {
+ if (prime % factor === 0) {
+ // not a prime
+ continue outer;
+ }
+ }
+
+ if (i<8) {
+ this._init[i] = frac(Math.pow(prime, 1/2));
+ }
+ this._key[i] = frac(Math.pow(prime, 1/3));
+ i++;
+ }
+ },
+
+ /**
+ * Perform one cycle of SHA-256.
+ * @param {bitArray} words one block of words.
+ * @private
+ */
+ _block:function (words) {
+ var i, tmp, a, b,
+ w = words.slice(0),
+ h = this._h,
+ k = this._key,
+ h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
+ h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
+
+ /* Rationale for placement of |0 :
+ * If a value can overflow is original 32 bits by a factor of more than a few
+ * million (2^23 ish), there is a possibility that it might overflow the
+ * 53-bit mantissa and lose precision.
+ *
+ * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
+ * propagates around the loop, and on the hash state h[]. I don't believe
+ * that the clamps on h4 and on h0 are strictly necessary, but it's close
+ * (for h4 anyway), and better safe than sorry.
+ *
+ * The clamps on h[] are necessary for the output to be correct even in the
+ * common case and for short inputs.
+ */
+ for (i=0; i<64; i++) {
+ // load up the input word for this round
+ if (i<16) {
+ tmp = w[i];
+ } else {
+ a = w[(i+1 ) & 15];
+ b = w[(i+14) & 15];
+ tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
+ (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
+ w[i&15] + w[(i+9) & 15]) | 0;
+ }
+
+ tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
+
+ // shift register
+ h7 = h6; h6 = h5; h5 = h4;
+ h4 = h3 + tmp | 0;
+ h3 = h2; h2 = h1; h1 = h0;
+
+ h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
+ }
+
+ h[0] = h[0]+h0 | 0;
+ h[1] = h[1]+h1 | 0;
+ h[2] = h[2]+h2 | 0;
+ h[3] = h[3]+h3 | 0;
+ h[4] = h[4]+h4 | 0;
+ h[5] = h[5]+h5 | 0;
+ h[6] = h[6]+h6 | 0;
+ h[7] = h[7]+h7 | 0;
+ }
+};
+
+
+/** @fileOverview CCM mode implementation.
+ *
+ * Special thanks to Roy Nicholson for pointing out a bug in our
+ * implementation.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+/** @namespace CTR mode with CBC MAC. */
+sjcl.mode.ccm = {
+ /** The name of the mode.
+ * @constant
+ */
+ name: "ccm",
+
+ /** Encrypt in CCM mode.
+ * @static
+ * @param {Object} prf The pseudorandom function. It must have a block size of 16 bytes.
+ * @param {bitArray} plaintext The plaintext data.
+ * @param {bitArray} iv The initialization value.
+ * @param {bitArray} [adata=[]] The authenticated data.
+ * @param {Number} [tlen=64] the desired tag length, in bits.
+ * @return {bitArray} The encrypted data, an array of bytes.
+ */
+ encrypt: function(prf, plaintext, iv, adata, tlen) {
+ var L, i, out = plaintext.slice(0), tag, w=sjcl.bitArray, ivl = w.bitLength(iv) / 8, ol = w.bitLength(out) / 8;
+ tlen = tlen || 64;
+ adata = adata || [];
+
+ if (ivl < 7) {
+ throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");
+ }
+
+ // compute the length of the length
+ for (L=2; L<4 && ol >>> 8*L; L++) {}
+ if (L < 15 - ivl) { L = 15-ivl; }
+ iv = w.clamp(iv,8*(15-L));
+
+ // compute the tag
+ tag = sjcl.mode.ccm._computeTag(prf, plaintext, iv, adata, tlen, L);
+
+ // encrypt
+ out = sjcl.mode.ccm._ctrMode(prf, out, iv, tag, tlen, L);
+
+ return w.concat(out.data, out.tag);
+ },
+
+ /** Decrypt in CCM mode.
+ * @static
+ * @param {Object} prf The pseudorandom function. It must have a block size of 16 bytes.
+ * @param {bitArray} ciphertext The ciphertext data.
+ * @param {bitArray} iv The initialization value.
+ * @param {bitArray} [[]] adata The authenticated data.
+ * @param {Number} [64] tlen the desired tag length, in bits.
+ * @return {bitArray} The decrypted data.
+ */
+ decrypt: function(prf, ciphertext, iv, adata, tlen) {
+ tlen = tlen || 64;
+ adata = adata || [];
+ var L, i,
+ w=sjcl.bitArray,
+ ivl = w.bitLength(iv) / 8,
+ ol = w.bitLength(ciphertext),
+ out = w.clamp(ciphertext, ol - tlen),
+ tag = w.bitSlice(ciphertext, ol - tlen), tag2;
+
+
+ ol = (ol - tlen) / 8;
+
+ if (ivl < 7) {
+ throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");
+ }
+
+ // compute the length of the length
+ for (L=2; L<4 && ol >>> 8*L; L++) {}
+ if (L < 15 - ivl) { L = 15-ivl; }
+ iv = w.clamp(iv,8*(15-L));
+
+ // decrypt
+ out = sjcl.mode.ccm._ctrMode(prf, out, iv, tag, tlen, L);
+
+ // check the tag
+ tag2 = sjcl.mode.ccm._computeTag(prf, out.data, iv, adata, tlen, L);
+ if (!w.equal(out.tag, tag2)) {
+ throw new sjcl.exception.corrupt("ccm: tag doesn't match");
+ }
+
+ return out.data;
+ },
+
+ /* Compute the (unencrypted) authentication tag, according to the CCM specification
+ * @param {Object} prf The pseudorandom function.
+ * @param {bitArray} plaintext The plaintext data.
+ * @param {bitArray} iv The initialization value.
+ * @param {bitArray} adata The authenticated data.
+ * @param {Number} tlen the desired tag length, in bits.
+ * @return {bitArray} The tag, but not yet encrypted.
+ * @private
+ */
+ _computeTag: function(prf, plaintext, iv, adata, tlen, L) {
+ // compute B[0]
+ var q, mac, field = 0, offset = 24, tmp, i, macData = [], w=sjcl.bitArray, xor = w._xor4;
+
+ tlen /= 8;
+
+ // check tag length and message length
+ if (tlen % 2 || tlen < 4 || tlen > 16) {
+ throw new sjcl.exception.invalid("ccm: invalid tag length");
+ }
+
+ if (adata.length > 0xFFFFFFFF || plaintext.length > 0xFFFFFFFF) {
+ // I don't want to deal with extracting high words from doubles.
+ throw new sjcl.exception.bug("ccm: can't deal with 4GiB or more data");
+ }
+
+ // mac the flags
+ mac = [w.partial(8, (adata.length ? 1<<6 : 0) | (tlen-2) << 2 | L-1)];
+
+ // mac the iv and length
+ mac = w.concat(mac, iv);
+ mac[3] |= w.bitLength(plaintext)/8;
+ mac = prf.encrypt(mac);
+
+
+ if (adata.length) {
+ // mac the associated data. start with its length...
+ tmp = w.bitLength(adata)/8;
+ if (tmp <= 0xFEFF) {
+ macData = [w.partial(16, tmp)];
+ } else if (tmp <= 0xFFFFFFFF) {
+ macData = w.concat([w.partial(16,0xFFFE)], [tmp]);
+ } // else ...
+
+ // mac the data itself
+ macData = w.concat(macData, adata);
+ for (i=0; i bs) {
+ key = Hash.hash(key);
+ }
+
+ for (i=0; i
+ * This random number generator is a derivative of Ferguson and Schneier's
+ * generator Fortuna. It collects entropy from various events into several
+ * pools, implemented by streaming SHA-256 instances. It differs from
+ * ordinary Fortuna in a few ways, though.
+ *
+ *
+ *
+ * Most importantly, it has an entropy estimator. This is present because
+ * there is a strong conflict here between making the generator available
+ * as soon as possible, and making sure that it doesn't "run on empty".
+ * In Fortuna, there is a saved state file, and the system is likely to have
+ * time to warm up.
+ *
+ *
+ *
+ * Second, because users are unlikely to stay on the page for very long,
+ * and to speed startup time, the number of pools increases logarithmically:
+ * a new pool is created when the previous one is actually used for a reseed.
+ * This gives the same asymptotic guarantees as Fortuna, but gives more
+ * entropy to early reseeds.
+ *
+ *
+ *
+ * The entire mechanism here feels pretty klunky. Furthermore, there are
+ * several improvements that should be made, including support for
+ * dedicated cryptographic functions that may be present in some browsers;
+ * state files in local storage; cookies containing randomness; etc. So
+ * look for improvements in future versions.
+ *
+ */
+sjcl.random = {
+ /** Generate several random words, and return them in an array
+ * @param {Number} nwords The number of words to generate.
+ */
+ randomWords: function (nwords, paranoia) {
+ var out = [], i, readiness = this.isReady(paranoia), g;
+
+ if (readiness === this._NOT_READY) {
+ throw new sjcl.exception.notReady("generator isn't seeded");
+ } else if (readiness & this._REQUIRES_RESEED) {
+ this._reseedFromPools(!(readiness & this._READY));
+ }
+
+ for (i=0; i0) {
+ estimatedEntropy++;
+ tmp = tmp >>> 1;
+ }
+ }
+ }
+ this._pools[robin].update([id,this._eventId++,2,estimatedEntropy,t,data.length].concat(data));
+ }
+ break;
+
+ case "string":
+ if (estimatedEntropy === undefined) {
+ /* English text has just over 1 bit per character of entropy.
+ * But this might be HTML or something, and have far less
+ * entropy than English... Oh well, let's just say one bit.
+ */
+ estimatedEntropy = data.length;
+ }
+ this._pools[robin].update([id,this._eventId++,3,estimatedEntropy,t,data.length]);
+ this._pools[robin].update(data);
+ break;
+
+ default:
+ err=1;
+ }
+ if (err) {
+ throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");
+ }
+
+ /* record the new strength */
+ this._poolEntropy[robin] += estimatedEntropy;
+ this._poolStrength += estimatedEntropy;
+
+ /* fire off events */
+ if (oldReady === this._NOT_READY) {
+ if (this.isReady() !== this._NOT_READY) {
+ this._fireEvent("seeded", Math.max(this._strength, this._poolStrength));
+ }
+ this._fireEvent("progress", this.getProgress());
+ }
+ },
+
+ /** Is the generator ready? */
+ isReady: function (paranoia) {
+ var entropyRequired = this._PARANOIA_LEVELS[ (paranoia !== undefined) ? paranoia : this._defaultParanoia ];
+
+ if (this._strength && this._strength >= entropyRequired) {
+ return (this._poolEntropy[0] > this._BITS_PER_RESEED && (new Date()).valueOf() > this._nextReseed) ?
+ this._REQUIRES_RESEED | this._READY :
+ this._READY;
+ } else {
+ return (this._poolStrength >= entropyRequired) ?
+ this._REQUIRES_RESEED | this._NOT_READY :
+ this._NOT_READY;
+ }
+ },
+
+ /** Get the generator's progress toward readiness, as a fraction */
+ getProgress: function (paranoia) {
+ var entropyRequired = this._PARANOIA_LEVELS[ paranoia ? paranoia : this._defaultParanoia ];
+
+ if (this._strength >= entropyRequired) {
+ return 1.0;
+ } else {
+ return (this._poolStrength > entropyRequired) ?
+ 1.0 :
+ this._poolStrength / entropyRequired;
+ }
+ },
+
+ /** start the built-in entropy collectors */
+ startCollectors: function () {
+ if (this._collectorsStarted) { return; }
+
+ if (window.addEventListener) {
+ window.addEventListener("load", this._loadTimeCollector, false);
+ window.addEventListener("mousemove", this._mouseCollector, false);
+ } else if (document.attachEvent) {
+ document.attachEvent("onload", this._loadTimeCollector);
+ document.attachEvent("onmousemove", this._mouseCollector);
+ }
+ else {
+ throw new sjcl.exception.bug("can't attach event");
+ }
+
+ this._collectorsStarted = true;
+ },
+
+ /** stop the built-in entropy collectors */
+ stopCollectors: function () {
+ if (!this._collectorsStarted) { return; }
+
+ if (window.removeEventListener) {
+ window.removeEventListener("load", this._loadTimeCollector, false);
+ window.removeEventListener("mousemove", this._mouseCollector, false);
+ } else if (window.detachEvent) {
+ window.detachEvent("onload", this._loadTimeCollector);
+ window.detachEvent("onmousemove", this._mouseCollector);
+ }
+ this._collectorsStarted = false;
+ },
+
+ /* use a cookie to store entropy.
+ useCookie: function (all_cookies) {
+ throw new sjcl.exception.bug("random: useCookie is unimplemented");
+ },*/
+
+ /** add an event listener for progress or seeded-ness. */
+ addEventListener: function (name, callback) {
+ this._callbacks[name][this._callbackI++] = callback;
+ },
+
+ /** remove an event listener for progress or seeded-ness */
+ removeEventListener: function (name, cb) {
+ var i, j, cbs=this._callbacks[name], jsTemp=[];
+
+ /* I'm not sure if this is necessary; in C++, iterating over a
+ * collection and modifying it at the same time is a no-no.
+ */
+
+ for (j in cbs) {
+ if (cbs.hasOwnProperty(j) && cbs[j] === cb) {
+ jsTemp.push(j);
+ }
+ }
+
+ for (i=0; i= 1 << this._pools.length) {
+ this._pools.push(new sjcl.hash.sha256());
+ this._poolEntropy.push(0);
+ }
+
+ /* how strong was this reseed? */
+ this._poolStrength -= strength;
+ if (strength > this._strength) {
+ this._strength = strength;
+ }
+
+ this._reseedCount ++;
+ this._reseed(reseedData);
+ },
+
+ _mouseCollector: function (ev) {
+ var x = ev.x || ev.clientX || ev.offsetX || 0, y = ev.y || ev.clientY || ev.offsetY || 0;
+ sjcl.random.addEntropy([x,y], 2, "mouse");
+ },
+
+ _loadTimeCollector: function (ev) {
+ sjcl.random.addEntropy((new Date()).valueOf(), 2, "loadtime");
+ },
+
+ _fireEvent: function (name, arg) {
+ var j, cbs=sjcl.random._callbacks[name], cbsTemp=[];
+ /* TODO: there is a race condition between removing collectors and firing them */
+
+ /* I'm not sure if this is necessary; in C++, iterating over a
+ * collection and modifying it at the same time is a no-no.
+ */
+
+ for (j in cbs) {
+ if (cbs.hasOwnProperty(j)) {
+ cbsTemp.push(cbs[j]);
+ }
+ }
+
+ for (j=0; j 4)) {
+ throw new sjcl.exception.invalid("json encrypt: invalid parameters");
+ }
+
+ if (typeof password === "string") {
+ tmp = sjcl.misc.cachedPbkdf2(password, p);
+ password = tmp.key.slice(0,p.ks/32);
+ p.salt = tmp.salt;
+ }
+ if (typeof plaintext === "string") {
+ plaintext = sjcl.codec.utf8String.toBits(plaintext);
+ }
+ if (typeof adata === "string") {
+ adata = sjcl.codec.utf8String.toBits(adata);
+ }
+ prp = new sjcl.cipher[p.cipher](password);
+
+ /* return the json data */
+ j._add(rp, p);
+ rp.key = password;
+
+ /* do the encryption */
+ p.ct = sjcl.mode[p.mode].encrypt(prp, plaintext, p.iv, adata, p.ts);
+
+ //return j.encode(j._subtract(p, j.defaults));
+ return j.encode(p);
+ },
+
+ /** Simple decryption function.
+ * @param {String|bitArray} password The password or key.
+ * @param {String} ciphertext The ciphertext to decrypt.
+ * @param {Object} [params] Additional non-default parameters.
+ * @param {Object} [rp] A returned object with filled parameters.
+ * @return {String} The plaintext.
+ * @throws {sjcl.exception.invalid} if a parameter is invalid.
+ * @throws {sjcl.exception.corrupt} if the ciphertext is corrupt.
+ */
+ decrypt: function (password, ciphertext, params, rp) {
+ params = params || {};
+ rp = rp || {};
+
+ var j = sjcl.json, p = j._add(j._add(j._add({},j.defaults),j.decode(ciphertext)), params, true), ct, tmp, prp, adata=p.adata;
+ if (typeof p.salt === "string") {
+ p.salt = sjcl.codec.base64.toBits(p.salt);
+ }
+ if (typeof p.iv === "string") {
+ p.iv = sjcl.codec.base64.toBits(p.iv);
+ }
+
+ if (!sjcl.mode[p.mode] ||
+ !sjcl.cipher[p.cipher] ||
+ (typeof password === "string" && p.iter <= 100) ||
+ (p.ts !== 64 && p.ts !== 96 && p.ts !== 128) ||
+ (p.ks !== 128 && p.ks !== 192 && p.ks !== 256) ||
+ (!p.iv) ||
+ (p.iv.length < 2 || p.iv.length > 4)) {
+ throw new sjcl.exception.invalid("json decrypt: invalid parameters");
+ }
+
+ if (typeof password === "string") {
+ tmp = sjcl.misc.cachedPbkdf2(password, p);
+ password = tmp.key.slice(0,p.ks/32);
+ p.salt = tmp.salt;
+ }
+ if (typeof adata === "string") {
+ adata = sjcl.codec.utf8String.toBits(adata);
+ }
+ prp = new sjcl.cipher[p.cipher](password);
+
+ /* do the decryption */
+ ct = sjcl.mode[p.mode].decrypt(prp, p.ct, p.iv, adata, p.ts);
+
+ /* return the json data */
+ j._add(rp, p);
+ rp.key = password;
+
+ return sjcl.codec.utf8String.fromBits(ct);
+ },
+
+ /** Encode a flat structure into a JSON string.
+ * @param {Object} obj The structure to encode.
+ * @return {String} A JSON string.
+ * @throws {sjcl.exception.invalid} if obj has a non-alphanumeric property.
+ * @throws {sjcl.exception.bug} if a parameter has an unsupported type.
+ */
+ encode: function (obj) {
+ var i, out='{', comma='';
+ for (i in obj) {
+ if (obj.hasOwnProperty(i)) {
+ if (!i.match(/^[a-z0-9]+$/i)) {
+ throw new sjcl.exception.invalid("json encode: invalid property name");
+ }
+ out += comma + '"' + i + '":';
+ comma = ',';
+
+ switch (typeof obj[i]) {
+ case 'number':
+ case 'boolean':
+ out += obj[i];
+ break;
+
+ case 'string':
+ out += '"' + escape(obj[i]) + '"';
+ break;
+
+ case 'object':
+ out += '"' + sjcl.codec.base64.fromBits(obj[i],1) + '"';
+ break;
+
+ default:
+ throw new sjcl.exception.bug("json encode: unsupported type");
+ }
+ }
+ }
+ return out+'}';
+ },
+
+ /** Decode a simple (flat) JSON string into a structure. The ciphertext,
+ * adata, salt and iv will be base64-decoded.
+ * @param {String} str The string.
+ * @return {Object} The decoded structure.
+ * @throws {sjcl.exception.invalid} if str isn't (simple) JSON.
+ */
+ decode: function (str) {
+ str = str.replace(/\s/g,'');
+ if (!str.match(/^\{.*\}$/)) {
+ throw new sjcl.exception.invalid("json decode: this isn't json!");
+ }
+ var a = str.replace(/^\{|\}$/g, '').split(/,/), out={}, i, m;
+ for (i=0; i currentPath.length) {
+ path = currentPath;
+ }
+
+ return {
+ encryptKey: values.encryptKey || generateKey(),
+ storageKey: values.storageKey || generateKey(),
+ domain: o.sessionDomain || values.domain || undefined,
+ path: o.sessionPath || path
+ };
+}
+
+function documentUrl() {
+ if (! window.location) {
+ return '';
+ }
+
+ var loc;
+
+ // IE may throw an exception when accessing
+ // a field from window.location if document.domain has been set
+ try {
+ loc = window.location.href;
+ } catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ loc = window.document.createElement( "a" );
+ loc.href = "";
+ loc = loc.href;
+ }
+
+ return loc;
+}
+
+function extractPath(url) {
+ var urlRegexp = /^[\w.+-]+:(?:\/\/[^\/?#:]*(?::\d+|)|)(.*)\/[^\/]*$/,
+ match = urlRegexp.exec(url.toLowerCase());
+
+ return match ? match[1] : null;
+}
+
+// DEPRECATED
+// This method will be removed in future version.
+function buildLocalStorageNames(name, path) {
+ function buildName(path) {
+ return name + ':' + path;
+ }
+
+ var names = [];
+
+ if (! path) {
+ return [name];
+ }
+
+ while (true) {
+ names.push(buildName(path));
+ if (path === '/') {
+ break;
+ }
+ path = path.replace(/[^\/]+\/$/, '');
+ }
+ return names;
+}
+
+// DEPRECATED
+// This method will be removed in future version.
+function localStorageNames(name, o) {
+ return buildLocalStorageNames(name, o.sessionPath || extractPath(documentUrl())+"/");
+}
+
+if (! localStorage) {
+ DataAPI.sessionStores['cookie-encrypted'] = {
+ save: function(){},
+ fetch: function(){},
+ remove: function(){}
+ };
+}
+else {
+ DataAPI.sessionStores['cookie-encrypted'] = {
+ save: function(name, data, remember) {
+ var expires = remember ? new Date(new Date().getTime() + 315360000000) : undefined, // after 10 years
+ values = fillinDefaultCookieValues(fetchCookieValues(name), this.o);
+
+ Cookie.bake(cookieName(name), JSON.stringify(values), values.domain, values.path, expires);
+ localStorage.setItem(values.storageKey, sjcl.encrypt(values.encryptKey, data));
+ },
+ fetch: function(name) {
+ var values = fetchCookieValues(name),
+ i, names, data;
+
+ // Backward compatibility
+ if (! values.storageKey) {
+ names = localStorageNames(name, this.o);
+ for (i = 0; i < names.length; i++) {
+ if (localStorage.getItem(names[i])) {
+ values.storageKey = names[i];
+ break;
+ }
+ }
+ }
+
+ data = localStorage.getItem(values.storageKey);
+
+ try {
+ return sjcl.decrypt(values.encryptKey, data);
+ }
+ catch (e) {
+ }
+
+ return null;
+ },
+ remove: function(name) {
+ var values = fillinDefaultCookieValues(fetchCookieValues(name), this.o);
+
+ Cookie.bake(cookieName(name), '', values.domain, values.path, new Date(0));
+
+ if (values.storageKey) {
+ localStorage.removeItem(values.storageKey);
+ }
+ }
+ };
+}
+
+})();
+
+
+/**
+ * Register callback to class.
+ * @method on
+ * @static
+ * @param {String} key Event name
+ * @param {Function} callback Callback function
+ * @category core
+ * @example
+ * var callback = function() {
+ * // Do stuff
+ * };
+ * DataAPI.on(eventName, callback);
+ */
+DataAPI.on = function(key, callback) {
+ if (! this.callbacks[key]) {
+ this.callbacks[key] = [];
+ }
+
+ this.callbacks[key].push(callback);
+};
+
+/**
+ * Deregister callback from class.
+ * @method off
+ * @static
+ * @param {String} key Event name
+ * @param {Function} callback Callback function
+ * @category core
+ * @example
+ * DataAPI.off(eventName, callback);
+ */
+DataAPI.off = function(key, callback) {
+ var i, callbacks;
+
+ if (callback) {
+ callbacks = this.callbacks[key] || [];
+
+ for (i = 0; i < callbacks.length; i++) {
+ if (callbacks[i] === callback) {
+ callbacks.splice(i, 1);
+ break;
+ }
+ }
+ }
+ else {
+ delete this.callbacks[key];
+ }
+};
+
+/**
+ * Register formats that serialize data.
+ * @method registerFormat
+ * @static
+ * @param {String} key Format name
+ * @param {Object} spec
+ * @param {String} spec.fileExtension Extension
+ * @param {String} spec.mimeType MIME type
+ * @param {String} spec.serialize Serializing method
+ * @param {String} spec.unserialize Unserializing method
+ * @category core
+ */
+DataAPI.registerFormat = function(key, spec) {
+ this.formats[key] = spec;
+};
+
+/**
+ * Register session store.
+ * @method registerSessionStore
+ * @static
+ * @param {String} key Session store name
+ * @param {Object} spec
+ * @param {String} spec.save Saving method
+ * @param {String} spec.fetch Fetching method
+ * @param {String} spec.remove Removing method
+ * @category core
+ */
+DataAPI.registerSessionStore = function(key, spec) {
+ this.sessionStores[key] = spec;
+};
+
+/**
+ * Get default format of this class.
+ * @method getDefaultFormat
+ * @static
+ * @return {Object} Format
+ * @category core
+ */
+DataAPI.getDefaultFormat = function() {
+ return this.formats[this.defaultFormat];
+};
+
+/**
+ * Get default session store of this class.
+ * @method getDefaultSessionStore
+ * @static
+ * @return {Object} Format
+ * @category core
+ */
+DataAPI.getDefaultSessionStore = function() {
+ return this.sessionStores[this.defaultSessionStore];
+};
+
+DataAPI.prototype = {
+ constructor: DataAPI.prototype.constructor,
+
+ _initOptions: function() {
+ this._initCrossDomainOption();
+ },
+
+ _initCrossDomainOption: function() {
+ var loc, locParts, baseUrl, baseParts,
+ urlRegexp = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
+
+ if ( window.document && typeof this.o.crossOrigin === 'undefined') {
+ // IE may throw an exception when accessing
+ // a field from window.location if document.domain has been set
+ try {
+ loc = window.location.href;
+ } catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ loc = window.document.createElement( "a" );
+ loc.href = "";
+ loc = loc.href;
+ }
+ locParts = urlRegexp.exec( loc.toLowerCase() ) || [];
+
+ baseUrl = this.o.baseUrl.replace(/^\/\//, locParts[1]).toLowerCase();
+ baseParts = urlRegexp.exec( baseUrl );
+
+ this.o.crossOrigin = !!( baseParts &&
+ ( baseParts[ 1 ] !== locParts[ 1 ] || baseParts[ 2 ] !== locParts[ 2 ] ||
+ ( baseParts[ 3 ] || ( baseParts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+ ( locParts[ 3 ] || ( locParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+ );
+ }
+ },
+
+ /**
+ * Get authorization URL.
+ * @method getAuthorizationUrl
+ * @param {String} redirectUrl The user is redirected to this URL with "#_login" if authorization succeeded.
+ * @return {String} Authorization URL
+ * @category core
+ */
+ getAuthorizationUrl: function(redirectUrl) {
+ return this.o.baseUrl.replace(/\/*$/, '/') +
+ 'v' + this.getVersion() +
+ '/authorization' +
+ '?clientId=' + this.o.clientId +
+ '&redirectUrl=' + redirectUrl;
+ },
+
+ _getCurrentEpoch: function() {
+ return Math.round(new Date().getTime() / 1000);
+ },
+
+ _getNextIframeName: function() {
+ return this.constructor.iframePrefix + (++this.iframeId);
+ },
+
+ /**
+ * Get API version.
+ * @method getVersion
+ * @return {String} API version
+ * @category core
+ */
+ getVersion: function() {
+ return this.constructor.version;
+ },
+
+ /**
+ * Get application key of this object.
+ * @method getAppKey
+ * @return {String} Application key
+ * This value is used for the session store.
+ * @category core
+ */
+ getAppKey: function() {
+ return this.constructor.accessTokenKey + '_' + this.o.clientId;
+ },
+
+ _findFormatInternal: function(mimeType) {
+ if (! mimeType) {
+ return null;
+ }
+
+ for (var k in this.constructor.formats) {
+ if (this.constructor.formats[k].mimeType === mimeType) {
+ return this.constructor.formats[k];
+ }
+ }
+
+ return null;
+ },
+
+ /**
+ * Get format by MIME Type.
+ * @method findFormat
+ * @param {String} mimeType MIME Type
+ * @return {Object|null} Format. Return null if any format is not found.
+ * @category core
+ */
+ findFormat: function(mimeType) {
+ var format = this._findFormatInternal(mimeType);
+ if (! format && mimeType.indexOf(';')) {
+ format = this._findFormatInternal(mimeType.replace(/\s*;.*/, ''));
+ }
+
+ return format;
+ },
+
+ /**
+ * Get current format of this object.
+ * @method getCurrentFormat
+ * @return {Object} Format
+ * @category core
+ */
+ getCurrentFormat: function() {
+ return this.constructor.formats[this.o.format] ||
+ this.constructor.getDefaultFormat();
+ },
+
+ /**
+ * Serialize data.
+ * @method serializeData
+ * @param {Object} data The data to serialize
+ * @return {String} Serialized data
+ * @category core
+ */
+ serializeData: function() {
+ return this.getCurrentFormat().serialize.apply(this, arguments);
+ },
+
+ /**
+ * Unserialize data.
+ * @method unserializeData
+ * @param {String} data The data to unserialize
+ * @return {Object} Unserialized data
+ * @category core
+ */
+ unserializeData: function() {
+ return this.getCurrentFormat().unserialize.apply(this, arguments);
+ },
+
+ /**
+ * Get current session store of this object.
+ * @method getCurrentSessionStore
+ * @return {Object} Session store
+ * @category core
+ */
+ getCurrentSessionStore: function() {
+ return this.constructor.sessionStores[this.o.sessionStore] ||
+ this.constructor.getDefaultSessionStore();
+ },
+
+ /**
+ * Save session data.
+ * @method saveSessionData
+ * @param {String} name The name of session
+ * @param {Object} data The data to save
+ * @category core
+ */
+ saveSessionData: function() {
+ return this.getCurrentSessionStore().save.apply(this, arguments);
+ },
+
+ /**
+ * Fetch session data.
+ * @method fetchSessionData
+ * @param {String} name The name of session
+ * @return {String} The data fetched
+ * @category core
+ */
+ fetchSessionData: function() {
+ return this.getCurrentSessionStore().fetch.apply(this, arguments);
+ },
+
+ /**
+ * Remove session data.
+ * @method removeSessionData
+ * @param {String} name The name of session
+ * @category core
+ */
+ removeSessionData: function() {
+ return this.getCurrentSessionStore().remove.apply(this, arguments);
+ },
+
+ /**
+ * Store token data via current session store.
+ * @method storeTokenData
+ * @param {Object} tokenData The token data
+ * @param {String} tokenData.accessToken access token
+ * @param {String} tokenData.expiresIn The number of seconds
+ * until access token becomes invalid
+ * @param {String} [tokenData.sessionId] session ID
+ * @category core
+ */
+ storeTokenData: function(tokenData) {
+ var oldData = this.getTokenData();
+ if (! tokenData.sessionId && oldData && oldData.sessionId) {
+ tokenData.sessionId = oldData.sessionId;
+ }
+
+ tokenData.startTime = this._getCurrentEpoch();
+ this.saveSessionData(
+ this.getAppKey(),
+ this.serializeData(tokenData),
+ tokenData.sessionId && tokenData.remember
+ );
+ this.tokenData = tokenData;
+ },
+
+ /**
+ * Clear token data from object and session store.
+ * @method clearTokenData
+ * @category core
+ */
+ clearTokenData: function() {
+ this.removeSessionData(this.getAppKey());
+ this.tokenData = null;
+ },
+
+ _updateTokenFromDefaultCookie: function() {
+ var defaultKey = this.constructor.accessTokenKey,
+ defaultCookie = Cookie.fetch(defaultKey),
+ defaultToken;
+
+ if (! defaultCookie) {
+ return null;
+ }
+
+ Cookie.bake(defaultKey, '', undefined, '/', new Date(0));
+
+ try {
+ defaultToken = this.unserializeData(defaultCookie.value);
+ }
+ catch (e) {
+ return null;
+ }
+
+ this.storeTokenData(defaultToken);
+ return defaultToken;
+ },
+
+ _hasOneTimeToken: function() {
+ return window.location && window.location.hash.indexOf('#_ott_') === 0;
+ },
+
+ _storeOneTimeToken: function() {
+ var token, m;
+
+ if (! window.location) {
+ return undefined;
+ }
+
+ m = window.location.hash.match(/^#_ott_(.*)/);
+ if (! m) {
+ return undefined;
+ }
+
+ token = {
+ oneTimeToken: m[1]
+ };
+ window.location.hash = '#_login';
+
+ this.storeTokenData(token);
+ return token;
+ },
+
+ /**
+ * Get token data via current session store.
+ * @method getTokenData
+ * @return {Object} Token data
+ * @category core
+ */
+ getTokenData: function() {
+ var token = this.tokenData;
+
+ if (! token) {
+ if (window.location) {
+ if (window.location.hash === '#_login') {
+ try {
+ token = this._updateTokenFromDefaultCookie();
+ }
+ catch (e) {
+ }
+ }
+ else if (this._hasOneTimeToken()) {
+ token = this._storeOneTimeToken();
+ }
+ }
+
+ if (! token) {
+ try {
+ token = this.unserializeData(this.fetchSessionData(this.getAppKey()));
+ }
+ catch (e) {
+ }
+ }
+ }
+
+ if (token &&
+ 'startTime' in token &&
+ 'expiresIn' in token &&
+ (token.startTime + token.expiresIn < this._getCurrentEpoch())) {
+ delete token.accessToken;
+ delete token.startTime;
+ delete token.expiresIn;
+ }
+
+ return this.tokenData = token || null;
+ },
+
+ /**
+ * Get authorization request header.
+ * @method getAuthorizationHeader
+ * @return {String|null} Header string. Return null if api object has no token.
+ * @category core
+ */
+ getAuthorizationHeader: function(key) {
+ var tokenData = this.getTokenData();
+ if (tokenData) {
+ return 'MTAuth ' + key + '=' + (tokenData[key] || '');
+ }
+
+ return '';
+ },
+
+ /**
+ * Bind parameters to route spec.
+ * @method bindEndpointParams
+ * @param {String} route Specification of route
+ * @param {Object} params parameters
+ * @param {Number|Object|Function} params.{key} Value to bind
+ * @return {String} Endpoint to witch parameters was bound
+ * @example
+ * api.bindEndpointParams('/sites/:site_id/entries/:entry_id/comments/:comment_id', {
+ * blog_id: 1,
+ * entry_id: {id: 1},
+ * comment_id: functioin(){ return 1; }
+ * });
+ * @category core
+ */
+ bindEndpointParams: function(route, params) {
+ var k, v;
+
+ for (k in params) {
+ v = params[k];
+ if (typeof v === 'object') {
+ if (typeof v.id === 'function') {
+ v = v.id();
+ }
+ else {
+ v = v.id;
+ }
+ }
+ if (typeof v === 'function') {
+ v = v();
+ }
+ route = route.replace(new RegExp(':' + k), v);
+ }
+ return route;
+ },
+
+ _isElement: function(e, name) {
+ if (! e || typeof e !== 'object') {
+ return false;
+ }
+ var n = e.nodeName;
+ return n && n.toLowerCase() === name;
+ },
+
+ _isFormElement: function(e) {
+ return this._isElement(e, 'form');
+ },
+
+ _isInputElement: function(e) {
+ return this._isElement(e, 'input');
+ },
+
+ _isFileInputElement: function(e) {
+ return this._isInputElement(e) && e.type.toLowerCase() === 'file';
+ },
+
+ _serializeObject: function(v) {
+ function f(n) {
+ return n < 10 ? '0' + n : n;
+ }
+
+ function iso8601Date(v) {
+ if (! isFinite(v.valueOf())) {
+ return '';
+ }
+
+ var off,
+ tz = v.getTimezoneOffset();
+ if(tz === 0) {
+ off = 'Z';
+ }
+ else {
+ off = (tz > 0 ? '-': '+');
+ tz = Math.abs(tz);
+ off += f(Math.floor(tz / 60)) + ':' + f(tz % 60);
+ }
+
+ return v.getFullYear() + '-' +
+ f(v.getMonth() + 1) + '-' +
+ f(v.getDate()) + 'T' +
+ f(v.getHours()) + ':' +
+ f(v.getMinutes()) + ':' +
+ f(v.getSeconds()) + off;
+ }
+
+ if (this._isFormElement(v)) {
+ v = this._serializeFormElementToObject(v);
+ }
+
+ var type = typeof v;
+ if (type === 'undefined' || v === null || (type === 'number' && ! isFinite(v))) {
+ return '';
+ }
+ else if (type === 'boolean') {
+ return v ? '1' : '';
+ }
+ else if (v instanceof Date) {
+ return iso8601Date(v);
+ }
+ else if (window.File && v instanceof window.File) {
+ return v;
+ }
+ else if (this._isFileInputElement(v)) {
+ return v.files[0];
+ }
+ else if (type === 'object') {
+ return this.serializeData(v, function(key, value) {
+ if (this[key] instanceof Date) {
+ return iso8601Date(this[key]);
+ }
+ return value;
+ });
+ }
+ else {
+ return v;
+ }
+ },
+
+ _serializeParams: function(params) {
+ if (! params) {
+ return params;
+ }
+ if (typeof params === 'string') {
+ return params;
+ }
+ if (this._isFormElement(params)) {
+ params = this._serializeFormElementToObject(params);
+ }
+
+ var k,
+ str = '';
+ for (k in params) {
+ if (! params.hasOwnProperty(k)) {
+ continue;
+ }
+ if (str) {
+ str += '&';
+ }
+
+ str +=
+ encodeURIComponent(k) + '=' +
+ encodeURIComponent(this._serializeObject(params[k]));
+ }
+ return str;
+ },
+
+ _unserializeParams: function(params) {
+ if (typeof params !== 'string') {
+ return params;
+ }
+
+ var i, pair,
+ data = {},
+ values = params.split('&');
+
+ for(i = 0; i < values.length; i++) {
+ pair = values[i].split('=');
+ data[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
+ }
+
+ return data;
+ },
+
+ _newXMLHttpRequestStandard: function() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+ },
+
+ _newXMLHttpRequestActiveX: function() {
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch( e ) {}
+ },
+
+ /**
+ * Create XMLHttpRequest by higher browser compatibility way.
+ * @method newXMLHttpRequest
+ * @return {XMLHttpRequest} Created XMLHttpRequest
+ * @category core
+ */
+ newXMLHttpRequest: function() {
+ return this._newXMLHttpRequestStandard() ||
+ this._newXMLHttpRequestActiveX() ||
+ false;
+ },
+
+ _findFileInput: function(params) {
+ if (typeof params !== 'object') {
+ return null;
+ }
+
+ for (var k in params) {
+ if (this._isFileInputElement(params[k])) {
+ return params[k];
+ }
+ }
+
+ return null;
+ },
+
+ _isEmptyObject: function(o) {
+ if (! o) {
+ return true;
+ }
+
+ for (var k in o) {
+ if (o.hasOwnProperty(k)) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ /**
+ * Send request to specified URL with params via XMLHttpRequest.
+ * @method sendXMLHttpRequest
+ * @param {XMLHttpRequest} xhr XMLHttpRequest object to send request
+ * @param {String} method Request method
+ * @param {String} url Request URL
+ * @param {String|FormData} params Parameters to send with request
+ * @return {XMLHttpRequest}
+ * @category core
+ */
+ sendXMLHttpRequest: function(xhr, method, url, params, defaultHeaders) {
+ var k, headers, uk;
+
+ xhr.open(method, url, this.o.async);
+ for (k in defaultHeaders) {
+ xhr.setRequestHeader(k, defaultHeaders[k]);
+ }
+ if (typeof params === 'string') {
+ xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+ }
+ if (! this.o.crossOrigin) {
+ xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+ }
+
+ function normalizeHeaderKey(all, prefix, letter) {
+ return prefix + letter.toUpperCase();
+ }
+ if (params && params.getHeaders) {
+ headers = params.getHeaders();
+ for (k in headers) {
+ uk = k.replace(/(^|-)([a-z])/g, normalizeHeaderKey);
+ xhr.setRequestHeader(uk, headers[k]);
+ }
+ }
+
+ xhr.send(params);
+
+ return xhr;
+ },
+
+ _sendFetchApiRequest: function(method, url, params, defaultHeaders) {
+ var controller, signal, timeoutId, headers, k, uk, options;
+ controller = new AbortController();
+ signal = controller.signal;
+
+ if (typeof this.o.timeout !== 'undefined') {
+ timeoutId = setTimeout(function (){
+ controller.abort();
+ }, this.o.timeout);
+ }
+
+ headers = new Headers(defaultHeaders);
+ if (typeof params === 'string') {
+ headers.set('Content-Type', 'application/x-www-form-urlencoded');
+ }
+ if (! this.o.crossOrigin) {
+ headers.set('X-Requested-With', 'XMLHttpRequest');
+ }
+ function normalizeHeaderKey(all, prefix, letter) {
+ return prefix + letter.toUpperCase();
+ }
+ if (params && params.getHeaders) {
+ headers = params.getHeaders();
+ for (k in headers) {
+ uk = k.replace(/(^|-)([a-z])/g, normalizeHeaderKey);
+ headers.set(uk, headers[k]);
+ }
+ }
+
+ options = {
+ method: method,
+ headers: headers,
+ credentials: 'include',
+ mode: 'cors',
+ signal: signal
+ };
+ if (method.toLowerCase() !== 'get') {
+ options.body = params;
+ }
+
+ return fetch(url, options).then(function (response){
+ clearTimeout(timeoutId);
+ return response;
+ });
+ },
+
+ _serializeFormElementToObject: function(form) {
+ var i, e, type,
+ data = {},
+ submitterTypes = /^(?:submit|button|image|reset)$/i,
+ submittable = /^(?:input|select|textarea|keygen)/i,
+ checkableTypes = /^(?:checkbox|radio)$/i;
+
+ for (i = 0; i < form.elements.length; i++) {
+ e = form.elements[i];
+ type = e.type;
+
+ if (
+ ! e.name ||
+ e.disabled ||
+ ! submittable.test(e.nodeName) ||
+ submitterTypes.test(type) ||
+ (checkableTypes.test(type) && ! e.checked)
+ ) {
+ continue;
+ }
+
+ if (this._isFileInputElement(e)) {
+ data[e.name] = e;
+ }
+ else {
+ data[e.name] = this._elementValue(e);
+ }
+ }
+
+ return data;
+ },
+
+ _elementValue: function(e) {
+ if (e.nodeName.toLowerCase() === 'select') {
+ var value, option,
+ options = e.options,
+ index = e.selectedIndex,
+ one = e.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // oldIE doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( !option.parentNode.disabled || option.parentNode.nodeName.toLowerCase() !== "optgroup" ) ) {
+
+ // Get the specific value for the option
+ value = option.attributes.value;
+ if (!value || value.specified) {
+ value = option.value;
+ }
+ else {
+ value = e.text;
+ }
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+ else {
+ return e.value;
+ }
+ },
+
+ /**
+ * Execute function with specified options.
+ * @method withOptions
+ * @param {option} option Option to overwrite
+ * @param {Function} func Function to execute
+ * @return Return value of specified func
+ * @example
+ * // The DataAPI object is created with {async: true}
+ * api.withOptions({async: false}, function() {
+ * api.listEntries(1, function() {
+ * // This is executed synchronously
+ * });
+ * });
+ * api.listEntries(1, function() {
+ * // This is executed asynchronously
+ * });
+ * @category core
+ */
+ withOptions: function(option, func) {
+ var k, result,
+ originalOption = this.o,
+ o = {};
+
+ for (k in originalOption) {
+ o[k] = originalOption[k];
+ }
+ for (k in option) {
+ o[k] = option[k];
+ }
+
+ this.o = o;
+ this._initOptions();
+
+ result = func.apply(this);
+
+ this.o = originalOption;
+ this._initOptions();
+
+ return result;
+ },
+
+ _requestVia: function() {
+ return (window.XDomainRequest &&
+ this.o.crossOrigin &&
+ /msie (8|9)\./i.test(window.navigator.appVersion)) ? 'xdr' :
+ (window.XMLHttpRequest ? 'xhr' : 'fetch');
+ },
+
+ /**
+ * Send a request to the endpoint with specified parameters.
+ * @method request
+ * @param {String} method Request method
+ * @param {String} endpoint Endpoint to request
+ * @param {String|Object} [queryParameter]
+ * @param {String|Object|HTMLFormElement|FormData} [requestData]
+ * @param {String|Object|HTMLFormElement} [requestData.{the-key-requires-json-text}] Can specify json-text value by string or object or HTMLFormElement. Serialize automatically if object or HTMLFormElement is passed.
+ * @param {HTMLInputElement|File} [requestData.{the-key-requires-file}] Can specify file value by HTMLInputElement or File object.
+ * @param {Function} [callback]
+ * @return {XMLHttpRequest|null} Return XMLHttpRequest if request is sent
+ * via XMLHttpRequest. Return null if request is not sent
+ * via XMLHttpRequest (e.g. sent via iframe).
+ * @category core
+ */
+ request: function(method, endpoint) {
+ var i, k, v, base,
+ api = this,
+ paramsList = [],
+ params = null,
+ callback = function(){},
+ xhr = null,
+ xdr = null,
+ via = this._requestVia(),
+ tokenData = this.getTokenData(),
+ authHeader = this.getAuthorizationHeader('accessToken'),
+ currentFormat = this.getCurrentFormat(),
+ originalMethod = method,
+ originalArguments = Array.prototype.slice.call(arguments),
+ defaultParams = {},
+ defaultHeaders = {};
+
+ function serializeParams(params) {
+ var k, data;
+
+ if (! api.o.disableFormData && window.FormData) {
+ if (params instanceof window.FormData) {
+ return params;
+ }
+ else if (api._isFormElement(params)) {
+ return new window.FormData(params);
+ }
+ else if (window.FormData && typeof params === 'object') {
+ data = new window.FormData();
+ for (k in params) {
+ data.append(k, api._serializeObject(params[k]));
+ }
+ return data;
+ }
+ }
+
+
+ if (api._isFormElement(params)) {
+ params = api._serializeFormElementToObject(params);
+ for (k in params) {
+ if (params[k] instanceof Array) {
+ params[k] = params[k].join(',');
+ }
+ }
+ }
+
+ if (api._findFileInput(params)) {
+ via = 'iframe';
+
+ data = {};
+ for (k in params) {
+ if (api._isFileInputElement(params[k])) {
+ data[k] = params[k];
+ }
+ else {
+ data[k] = api._serializeObject(params[k]);
+ }
+ }
+ params = data;
+ }
+ else if (typeof params !== 'string') {
+ params = api._serializeParams(params);
+ }
+
+ return params;
+ }
+
+ function runCallback(response) {
+ var status = callback(response);
+ if (status !== false) {
+ if (response.error) {
+ api.trigger('error', response);
+ }
+ }
+ return status;
+ }
+
+ function needToRetry(response) {
+ return response.error &&
+ response.error.code === 401 &&
+ endpoint !== '/token' &&
+ endpoint !== '/authentication';
+ }
+
+ function retryWithAuthentication() {
+ api.request('POST', '/token', function(response) {
+ if (response.error) {
+ parseArguments(originalArguments);
+ return runCallback(response);
+ }
+ else {
+ api.storeTokenData(response);
+ api.request.apply(api, originalArguments);
+ return false;
+ }
+ });
+ }
+
+ function appendParamsToURL(base, params) {
+ if (base.indexOf('?') === -1) {
+ base += '?';
+ }
+ else {
+ base += '&';
+ }
+ return base + api._serializeParams(params);
+ }
+
+ function parseArguments(args) {
+ for (i = 2; i < args.length; i++) {
+ v = args[i];
+ switch (typeof v) {
+ case 'function':
+ callback = v;
+ break;
+ case 'object':
+ if (
+ v &&
+ ! v.nodeName &&
+ ((window.ActiveXObject && v instanceof window.ActiveXObject) ||
+ (window.XMLHttpRequest && v instanceof window.XMLHttpRequest) ||
+ (window.XDomainRequest && v instanceof window.XDomainRequest))
+ ) {
+ if (window.XDomainRequest && v instanceof window.XDomainRequest) {
+ xdr = v;
+ }
+ else {
+ xhr = v;
+ }
+ }
+ else {
+ paramsList.push(v);
+ }
+ break;
+ case 'string':
+ paramsList.push(api._unserializeParams(v));
+ break;
+ }
+ }
+ }
+
+ if (! this.o.withoutAuthorization &&
+ tokenData &&
+ ! tokenData.accessToken &&
+ endpoint !== '/token' &&
+ endpoint !== '/authentication'
+ ) {
+ return retryWithAuthentication();
+ }
+
+ if (authHeader) {
+ defaultHeaders['X-MT-Authorization'] = authHeader;
+ }
+
+ if (endpoint === '/token' || endpoint === '/authentication') {
+ if (tokenData && tokenData.oneTimeToken) {
+ defaultHeaders['X-MT-Authorization'] =
+ api.getAuthorizationHeader('oneTimeToken');
+ delete tokenData.oneTimeToken;
+ }
+ else if (tokenData && tokenData.sessionId) {
+ defaultHeaders['X-MT-Authorization'] =
+ api.getAuthorizationHeader('sessionId');
+ }
+ else if (endpoint === '/token' && originalMethod.toLowerCase() === 'post') {
+ delete defaultHeaders['X-MT-Authorization'];
+ }
+ defaultParams.clientId = api.o.clientId;
+ }
+
+ if (this.o.withoutAuthorization) {
+ delete defaultHeaders['X-MT-Authorization'];
+ }
+
+ if (this.o.suppressResponseCodes ||
+ (typeof this.o.suppressResponseCodes === 'undefined' && via === 'xdr')
+ ) {
+ defaultParams.suppressResponseCodes = true;
+ }
+
+ if (! this.o.cache) {
+ defaultParams._ = new Date().getTime();
+ }
+
+ if (currentFormat !== this.constructor.getDefaultFormat()) {
+ defaultParams.format = currentFormat.fileExtension;
+ }
+
+ if (method.match(/^(put|delete)$/i)) {
+ defaultParams.__method = method;
+ method = 'POST';
+ }
+
+ parseArguments(arguments);
+
+ if (paramsList.length && (method.toLowerCase() === 'get' || paramsList.length >= 2)) {
+ endpoint = appendParamsToURL(endpoint, paramsList.shift());
+ }
+
+ if (paramsList.length) {
+ params = paramsList.shift();
+ }
+
+ if (! this._isEmptyObject(defaultParams)) {
+ if (method.toLowerCase() === 'get') {
+ endpoint = appendParamsToURL(endpoint, defaultParams);
+ }
+ else if (window.FormData && params && params instanceof window.FormData) {
+ for (k in defaultParams) {
+ params.append(k, defaultParams[k]);
+ }
+ }
+ else {
+ params = params || {};
+ for (k in defaultParams) {
+ params[k] = defaultParams[k];
+ }
+ }
+ }
+
+ params = serializeParams(params);
+
+
+ base = this.o.baseUrl.replace(/\/*$/, '/') + 'v' + this.getVersion();
+ endpoint = endpoint.replace(/^\/*/, '/');
+
+
+ function responseCallback(contentType, responseText, status, statusText, cleanup) {
+ var response, mimeType, format, callbackResult;
+
+ try {
+ mimeType = contentType;
+ format = api.findFormat(mimeType) || api.getCurrentFormat();
+ response = format.unserialize(responseText);
+ }
+ catch (e) {
+ response = {
+ error: {
+ code: +status,
+ message: statusText || 'Communication Error'
+ }
+ };
+ }
+
+ if (needToRetry(response)) {
+ retryWithAuthentication();
+ if (cleanup) {
+ cleanup();
+ }
+ return false;
+ }
+
+ if ((! response.error &&
+ endpoint === '/authentication' &&
+ originalMethod.toLowerCase() === 'delete') ||
+ (response.error && response.error.code === 401 && (
+ (endpoint === '/authentication' &&
+ originalMethod.toLowerCase() === 'post') ||
+ (endpoint === '/token' &&
+ originalMethod.toLowerCase() === 'post')))) {
+ api.clearTokenData();
+ }
+ else if (! response.error && (
+ (endpoint === '/authentication' &&
+ originalMethod.toLowerCase() === 'post') ||
+ (endpoint === '/token' &&
+ originalMethod.toLowerCase() === 'post'))) {
+ api.storeTokenData(response);
+ }
+
+ callbackResult = runCallback(response);
+
+ if (callbackResult !== false &&
+ response.error && response.error.code === 401 &&
+ endpoint !== '/authentication') {
+ api.trigger('authorizationRequired', response);
+ }
+ }
+
+ if (via === 'xdr') {
+ if (! this._isEmptyObject(defaultHeaders)) {
+ throw 'Cannot set request header when sending via XDomainRequest';
+ }
+
+ xdr = xdr || new window.XDomainRequest();
+ xdr.onload = function() {
+ responseCallback(xdr.contentType, xdr.responseText, 200);
+ };
+ xdr.onerror = function() {
+ responseCallback(xdr.contentType, xdr.responseText, 404);
+ };
+ xdr.onprogress = function(){};
+ xdr.ontimeout = function() {
+ responseCallback(xdr.contentType, xdr.responseText, 0);
+ };
+ if (typeof this.o.timeout !== 'undefined') {
+ xdr.timeout = this.o.timeout || Number.MAX_VALUE;
+ }
+ xdr.open( method, base + endpoint);
+ xdr.send( api._serializeParams(params) || null );
+ }
+ else if (via === 'xhr') {
+ xhr = xhr || this.newXMLHttpRequest();
+ if (typeof this.o.timeout !== 'undefined') {
+ xhr.timeout = this.o.timeout;
+ }
+ xhr.onreadystatechange = function() {
+ var responseResult, url;
+
+ if (xhr.readyState !== 4) {
+ return;
+ }
+
+ function cleanup() {
+ xhr.onreadystatechange = function(){};
+ }
+
+ responseResult = responseCallback(
+ xhr.getResponseHeader('Content-Type'),
+ xhr.responseText,
+ xhr.status,
+ xhr.statusText,
+ cleanup
+ );
+
+ if (responseResult === false) {
+ return;
+ }
+
+ url = xhr.getResponseHeader('X-MT-Next-Phase-URL');
+ if (url) {
+ xhr.abort();
+ api.sendXMLHttpRequest(xhr, method, base + url, params, defaultHeaders);
+ }
+ else {
+ cleanup();
+ }
+ };
+ return this.sendXMLHttpRequest(xhr, method, base + endpoint, params, defaultHeaders);
+ }
+ else if (via === 'fetch') {
+ this._sendFetchApiRequest(method, base + endpoint, params, defaultHeaders).then(function (response){
+ var responseResult, url;
+ responseResult = response.text().then(function (text){
+ responseCallback(response.headers.get('Content-Type'), text, response.status, response.statusText);
+ });
+
+ if (responseResult === false) {
+ return;
+ }
+
+ url = response.headers.get('X-MT-Next-Phase-URL');
+ if (!url) {
+ return;
+ }
+
+ this._sendFetchApiRequest(method, base + url, params, defaultHeaders);
+ });
+ }
+ else {
+ (function() {
+ var k, file, originalName, input,
+ target = api._getNextIframeName(),
+ doc = window.document,
+ form = doc.createElement('form'),
+ iframe = doc.createElement('iframe');
+
+
+ // Set up a form element
+ form.action = base + endpoint;
+ form.target = target;
+ form.method = method;
+ form.style.display = 'inline';
+ form.encoding = 'multipart/form-data';
+ form.enctype = 'multipart/form-data';
+
+ // Set up a iframe element
+ iframe.name = target;
+ iframe.style.position = 'absolute';
+ iframe.style.top = '-9999px';
+ doc.body.appendChild(iframe);
+ iframe.contentWindow.name = target;
+
+
+ params = params || {};
+ for (k in defaultHeaders) {
+ params[k] = defaultHeaders[k];
+ }
+ params['X-MT-Requested-Via'] = 'IFRAME';
+
+ for (k in params) {
+ if (api._isFileInputElement(params[k])) {
+ file = params[k];
+ originalName = file.name;
+ file.name = k;
+ if (file.parentNode) {
+ file.parentNode.insertBefore(form, file);
+ }
+ else {
+ doc.body.appendChild(form);
+ }
+ form.appendChild(file);
+ continue;
+ }
+
+ input = doc.createElement('input');
+ input.type = 'hidden';
+ input.name = k;
+ input.value = params[k];
+ form.appendChild(input);
+ }
+
+ form.submit();
+
+
+ function handler() {
+ var body = iframe.contentWindow.document.body,
+ contents = body.textContent || body.innerText,
+ response;
+
+ function cleanup() {
+ setTimeout(function() {
+ file.name = originalName;
+ if (form.parentNode) {
+ form.parentNode.insertBefore(file, form);
+ form.parentNode.removeChild(form);
+ }
+ if (iframe.parentNode) {
+ iframe.parentNode.removeChild(iframe);
+ }
+ });
+ }
+
+ try {
+ response = api.unserializeData(contents);
+ }
+ catch (e) {
+ response = {
+ error: {
+ code: 500,
+ message: 'Internal Server Error'
+ }
+ };
+ }
+
+ if (needToRetry(response)) {
+ retryWithAuthentication();
+ cleanup();
+ return;
+ }
+
+ cleanup();
+ runCallback(response);
+ }
+ if ( iframe.addEventListener ) {
+ iframe.addEventListener('load', handler, false);
+ } else if ( iframe.attachEvent ) {
+ iframe.attachEvent('onload', handler);
+ }
+ })();
+
+ return;
+ }
+ },
+
+ /**
+ * Register callback to instance.
+ * @method on
+ * @param {String} key Event name
+ * @param {Function} callback Callback function
+ * @category core
+ * @example
+ * var callback = function() {
+ * // Do stuff
+ * };
+ * api.on(eventName, callback);
+ */
+ on: function() {
+ this.constructor.on.apply(this, arguments);
+ },
+
+ /**
+ * Deregister callback from instance.
+ * @method off
+ * @param {String} key Event name
+ * @param {Function} callback Callback function
+ * @category core
+ * @example
+ * api.off(eventName, callback);
+ */
+ off: function() {
+ this.constructor.off.apply(this, arguments);
+ },
+
+ /**
+ * Trigger event.
+ * First, run class level callbacks. Then, run instance level callbacks.
+ * @method trigger
+ * @param {String} key Event name
+ * @category core
+ */
+ trigger: function(key) {
+ var i,
+ args = Array.prototype.slice.call(arguments, 1),
+ callbacks = (this.constructor.callbacks[key] || []) // Class level
+ .concat(this.callbacks[key] || []); // Instance level
+
+ for (i = 0; i < callbacks.length; i++) {
+ callbacks[i].apply(this, args);
+ }
+ },
+
+ _generateEndpointMethod: function(e) {
+ var api = this,
+ varRegexp = new RegExp(':([a-zA-Z_-]+)', 'g'),
+ vars = null,
+ name = e.id.replace(/_(\w)/g, function(all, letter) {
+ return letter.toUpperCase();
+ });
+
+ function extractVars() {
+ var m, vars = [];
+ while ((m = varRegexp.exec(e.route)) !== null) {
+ vars.push(m[1]);
+ }
+ return vars;
+ }
+
+ api[name] = function() {
+ if (! vars) {
+ vars = extractVars();
+ }
+
+ var args = Array.prototype.slice.call(arguments),
+ endpointParams = {},
+ resources = {},
+ route, i;
+
+ for (i = 0; i < vars.length; i++) {
+ endpointParams[vars[i]] = args.shift();
+ }
+ route = api.bindEndpointParams(e.route, endpointParams);
+
+ if (e.resources) {
+ for (i = 0; i < e.resources.length; i++) {
+ resources[e.resources[i]] = args.shift();
+ }
+ args.push(resources);
+ }
+
+ return api.request.apply(api, [e.verb, route].concat(args));
+ };
+ },
+
+ /**
+ * Generate methods to access endpoint.
+ * @method generateEndpointMethods
+ * @param {Array.Object} endpoints Endpoints to register
+ * @param {Object} endpoints.{i}
+ * @param {String} endpoints.{i}.id Normally, the ID is snake case,
+ * but generated method is camel case.
+ * @param {String} endpoints.{i}.route The template of route
+ * @param {String} endpoints.{i}.verb The HTTP verb
+ * @param {Array.String} [endpoints.{i}.resources] The required resource data
+ * @example
+ * api.generateEndpointMethods([
+ * {
+ * "id": "list_entries",
+ * "route": "/sites/:site_id/entries",
+ * "verb": "GET",
+ * },
+ * {
+ * "id": "create_entry",
+ * "route": "/sites/:site_id/entries",
+ * "verb": "POST",
+ * "resources": [
+ * "entry"
+ * ]
+ * }
+ * ]);
+ * @category core
+ */
+ generateEndpointMethods: function(endpoints) {
+ for (var i = 0; i < endpoints.length; i++) {
+ this._generateEndpointMethod(endpoints[i]);
+ }
+ },
+
+ /**
+ * Load endpoint from DataAPI dynamically.
+ * @method loadEndpoints
+ * @param {Object} [params]
+ * @param {String} [params.includeComponents] Comma separated component IDs to load
+ * @param {String} [params.excludeComponents] Comma separated component IDs to exclude
+ * @example
+ * Load endpoints only from specified module.
+ *
+ * api.loadEndpoints({
+ * includeComponents: 'your-extension-module'
+ * });
+ * api.getDataViaYourExtensionModule(function(response) {
+ * // Do stuff
+ * });
+ *
+ * Load all endpoints except for core.
+ * Since all the endpoints of core is already loaded.
+ *
+ * api.loadEndpoints({
+ * excludeComponents: 'core'
+ * });
+ * api.getDataViaYourExtensionModule(function(response) {
+ * // Do stuff
+ * });
+ * @category core
+ */
+ loadEndpoints: function(params) {
+ var api = this;
+
+ api.withOptions({withoutAuthorization: true, async: false}, function() {
+ api.request('GET', '/endpoints', params, function(response) {
+ if (response.error) {
+ return;
+ }
+
+ api.generateEndpointMethods(response.items);
+ });
+ });
+ }
+};
+
+/**
+ * Triggered on initializing an instance
+ *
+ * @event initialize
+ * @example
+ * DataAPI.on("initialize", function() {
+ * console.log("initializing...");
+ * });
+ **/
+
+/**
+ * Triggered on getting an error of a HTTP request
+ *
+ * @event error
+ * @param {Object} response A response object
+ * @param {Number} response.code The HTTP response code
+ * @param {String} response.message The error message
+ * @param {Object} response.data The data exists only if a current error has optional data
+ * @example
+ * api.on("error", function(response) {
+ * console.log(response.error.message);
+ * });
+ **/
+
+/**
+ * Triggered on receiving the HTTP response code 401 (Authorization required).
+ *
+ * @event authorizationRequired
+ * @param {Object} response A response object
+ * @param {Number} response.code The HTTP response code
+ * @param {Number} response.message The error message
+ * @example
+ * api.on("authorizationRequired", function(response) {
+ * // You will return to current URL after authorization succeeded.
+ * location.href = api.getAuthorizationUrl(location.href);
+ * });
+ **/
+
+var Cookie = function( name, value, domain, path, expires, secure ) {
+ this.name = name;
+ this.value = value;
+ this.domain = domain;
+ this.path = path;
+ this.expires = expires;
+ this.secure = secure;
+};
+
+Cookie.prototype = {
+ /**
+ * Get this cookie from the web browser's store of cookies. Note that if the document.cookie
+ * property has been written to repeatedly by the same client code in excess of 4K (regardless of the size
+ * of the actual cookies), IE 6 will report an empty document.cookie collection of cookies.
+ * @return Cookie The fetched cookie.
+ */
+ fetch: function() {
+ if (! window.document) {
+ return undefined;
+ }
+
+ var prefix = escape( this.name ) + "=",
+ cookies = ("" + window.document.cookie).split( /;\s*/ ),
+ i;
+
+ for( i = 0; i < cookies.length; i++ ) {
+ if( cookies[ i ].indexOf( prefix ) === 0 ) {
+ this.value = unescape( cookies[ i ].substring( prefix.length ) );
+ return this;
+ }
+ }
+
+ return undefined;
+ },
+
+
+ /**
+ * Set and store a cookie in the the web browser's native collection of cookies.
+ * @return Cookie The set and stored ("baked") cookie.
+ */
+ bake: function( value ) {
+ if (! window.document) {
+ return undefined;
+ }
+
+ function exists(x) {
+ return (x === undefined || x === null) ? false : true;
+ }
+
+ if( !exists( this.name ) ) {
+ return undefined;
+ }
+
+ if( exists( value ) ) {
+ this.value = value;
+ }
+ else {
+ value = this.value;
+ }
+
+ var name = escape( this.name ),
+ attributes = ( this.domain ? "; domain=" + escape( this.domain ) : "") +
+ (this.path ? "; path=" + escape( this.path ) : "") +
+ (this.expires ? "; expires=" + this.expires.toGMTString() : "") +
+ (this.secure ? "; secure=1" : ""),
+ batter = name + "=" + escape( value ) + attributes;
+
+ window.document.cookie = batter;
+
+ return this;
+ },
+
+
+ remove: function() {
+ this.expires = new Date( 0 ); // "Thu, 01 Jan 1970 00:00:00 GMT"
+ this.value = "";
+ this.bake();
+ }
+};
+
+Cookie.fetch = function( name ) {
+ var cookie = new this( name );
+ return cookie.fetch();
+};
+
+
+Cookie.bake = function( name, value, domain, path, expires, secure ) {
+ var cookie = new this( name, value, domain, path, expires, secure );
+ return cookie.bake();
+};
+
+Cookie.remove = function( name ) {
+ var cookie = this.fetch( name );
+ if ( cookie ) {
+ return cookie.remove();
+ }
+};
+
+var JSON = window.JSON;
+/*
+ json2.js
+ 2012-10-08
+
+ Public Domain.
+
+ NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+ See http://www.JSON.org/js.html
+
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects. It can be a
+ function or an array of strings.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or ' '),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the value
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array of strings, then it will be
+ used to select the members to be serialized. It filters the results
+ such that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+*/
+
+/*jslint evil: true, regexp: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+ call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+ getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+ lastIndex, length, parse, prototype, push, replace, slice, stringify,
+ test, toJSON, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+if (typeof JSON !== 'object') {
+ JSON = {};
+}
+
+(function () {
+ 'use strict';
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapable.lastIndex = 0;
+ return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+ var c = meta[a];
+ return typeof c === 'string'
+ ? c
+ : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' : '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// Is the value an array?
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0
+ ? '[]'
+ : gap
+ ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
+ : '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ if (typeof rep[i] === 'string') {
+ k = rep[i];
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0
+ ? '{}'
+ : gap
+ ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
+ : '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+ if (typeof JSON.stringify !== 'function') {
+ JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ };
+ }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+ if (typeof JSON.parse !== 'function') {
+ JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ text = String(text);
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' +
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/
+ .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function'
+ ? walk({'': j}, '')
+ : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ };
+ }
+}());
+
+DataAPI.on('initialize', function() {
+ this.generateEndpointMethods(
+ [
+ {
+ "id": "openapi",
+ "route": "/",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "version",
+ "route": "/version",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_endpoints",
+ "route": "/endpoints",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "authorize",
+ "route": "/authorization",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_token",
+ "route": "/token",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_authentication",
+ "route": "/authentication",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "revoke_token",
+ "route": "/token",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "get_user",
+ "route": "/users/:user_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_user",
+ "route": "/users/:user_id",
+ "verb": "PUT",
+ "resources": [
+ "user"
+ ]
+ },
+ {
+ "id": "get_entry",
+ "route": "/sites/:site_id/entries/:entry_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "delete_entry",
+ "route": "/sites/:site_id/entries/:entry_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "publish_entries",
+ "route": "/publish/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_stats_provider",
+ "route": "/sites/:site_id/stats/provider",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_categories",
+ "route": "/sites/:site_id/categories",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_categories_for_entry",
+ "route": "/sites/:site_id/entries/:entry_id/categories",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_parent_categories",
+ "route": "/sites/:site_id/categories/:category_id/parents",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sibling_categories",
+ "route": "/sites/:site_id/categories/:category_id/siblings",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_child_categories",
+ "route": "/sites/:site_id/categories/:category_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_category",
+ "route": "/sites/:site_id/categories",
+ "verb": "POST",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "get_category",
+ "route": "/sites/:site_id/categories/:category_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_category",
+ "route": "/sites/:site_id/categories/:category_id",
+ "verb": "PUT",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "delete_category",
+ "route": "/sites/:site_id/categories/:category_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_categories",
+ "route": "/sites/:site_id/categories/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_folders",
+ "route": "/sites/:site_id/folders",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_parent_folders",
+ "route": "/sites/:site_id/folders/:folder_id/parents",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sibling_folders",
+ "route": "/sites/:site_id/folders/:folder_id/siblings",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_child_folders",
+ "route": "/sites/:site_id/folders/:folder_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_folder",
+ "route": "/sites/:site_id/folders",
+ "verb": "POST",
+ "resources": [
+ "folder"
+ ]
+ },
+ {
+ "id": "get_folder",
+ "route": "/sites/:site_id/folders/:folder_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_folder",
+ "route": "/sites/:site_id/folders/:folder_id",
+ "verb": "PUT",
+ "resources": [
+ "folder"
+ ]
+ },
+ {
+ "id": "delete_folder",
+ "route": "/sites/:site_id/folders/:folder_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_folders",
+ "route": "/sites/:site_id/folders/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_assets",
+ "route": "/sites/:site_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_assets_for_entry",
+ "route": "/sites/:site_id/entries/:entry_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_assets_for_page",
+ "route": "/sites/:site_id/pages/:page_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_assets_for_site_and_tag",
+ "route": "/sites/:site_id/tags/:tag_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_asset",
+ "route": "/sites/:site_id/assets/:asset_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_asset",
+ "route": "/sites/:site_id/assets/:asset_id",
+ "verb": "PUT",
+ "resources": [
+ "asset"
+ ]
+ },
+ {
+ "id": "delete_asset",
+ "route": "/sites/:site_id/assets/:asset_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "get_thumbnail",
+ "route": "/sites/:site_id/assets/:asset_id/thumbnail",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries_for_category",
+ "route": "/sites/:site_id/categories/:category_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries_for_asset",
+ "route": "/sites/:site_id/assets/:asset_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries_for_site_and_tag",
+ "route": "/sites/:site_id/tags/:tag_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "import_entries",
+ "route": "/sites/:site_id/entries/import",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "export_entries",
+ "route": "/sites/:site_id/entries/export",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "preview_entry_by_id",
+ "route": "/sites/:site_id/entries/:entry_id/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_entry",
+ "route": "/sites/:site_id/entries/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_pages",
+ "route": "/sites/:site_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_pages_for_folder",
+ "route": "/sites/:site_id/folders/:folder_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_pages_for_asset",
+ "route": "/sites/:site_id/assets/:asset_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_pages_for_site_and_tag",
+ "route": "/sites/:site_id/tags/:tag_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_page",
+ "route": "/sites/:site_id/pages/:page_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "delete_page",
+ "route": "/sites/:site_id/pages/:page_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "preview_page_by_id",
+ "route": "/sites/:site_id/pages/:page_id/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_page",
+ "route": "/sites/:site_id/pages/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_sites",
+ "route": "/sites",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_blog",
+ "route": "/sites/:site_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_blogs_for_user",
+ "route": "/users/:user_id/sites",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sites_by_parent",
+ "route": "/sites/:site_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "insert_new_blog",
+ "route": "/sites/:site_id",
+ "verb": "POST",
+ "resources": [
+ "blog"
+ ]
+ },
+ {
+ "id": "insert_new_website",
+ "route": "/sites",
+ "verb": "POST",
+ "resources": [
+ "website"
+ ]
+ },
+ {
+ "id": "update_site",
+ "route": "/sites/:site_id",
+ "verb": "PUT",
+ "resources": null
+ },
+ {
+ "id": "delete_site",
+ "route": "/sites/:site_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_roles",
+ "route": "/roles",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_role",
+ "route": "/roles",
+ "verb": "POST",
+ "resources": [
+ "role"
+ ]
+ },
+ {
+ "id": "get_role",
+ "route": "/roles/:role_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_role",
+ "route": "/roles/:role_id",
+ "verb": "PUT",
+ "resources": [
+ "role"
+ ]
+ },
+ {
+ "id": "delete_role",
+ "route": "/roles/:role_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_permissions",
+ "route": "/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_user",
+ "route": "/users/:user_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_site",
+ "route": "/sites/:site_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_role",
+ "route": "/roles/:role_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "grant_permission_to_site",
+ "route": "/sites/:site_id/permissions/grant",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "grant_permission_to_user",
+ "route": "/users/:user_id/permissions/grant",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_permission_from_site",
+ "route": "/sites/:site_id/permissions/revoke",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_permission_from_user",
+ "route": "/users/:user_id/permissions/revoke",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_logs",
+ "route": "/sites/:site_id/logs",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_log",
+ "route": "/sites/:site_id/logs/:log_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_log",
+ "route": "/sites/:site_id/logs",
+ "verb": "POST",
+ "resources": [
+ "log"
+ ]
+ },
+ {
+ "id": "update_log",
+ "route": "/sites/:site_id/logs/:log_id",
+ "verb": "PUT",
+ "resources": [
+ "log"
+ ]
+ },
+ {
+ "id": "delete_log",
+ "route": "/sites/:site_id/logs/:log_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "reset_logs",
+ "route": "/sites/:site_id/logs",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "export_logs",
+ "route": "/sites/:site_id/logs/export",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_tags_for_site",
+ "route": "/sites/:site_id/tags",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_tag_for_site",
+ "route": "/sites/:site_id/tags/:tag_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "rename_tag_for_site",
+ "route": "/sites/:site_id/tags/:tag_id",
+ "verb": "PUT",
+ "resources": null
+ },
+ {
+ "id": "delete_tag_for_site",
+ "route": "/sites/:site_id/tags/:tag_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_themes",
+ "route": "/themes",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_themes_for_site",
+ "route": "/sites/:site_id/themes",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_theme",
+ "route": "/themes/:theme_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_theme_for_site",
+ "route": "/sites/:site_id/themes/:theme_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "apply_theme_to_site",
+ "route": "/sites/:site_id/themes/:theme_id/apply",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "uninstall_theme",
+ "route": "/themes/:theme_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "create_template",
+ "route": "/sites/:site_id/templates",
+ "verb": "POST",
+ "resources": [
+ "template"
+ ]
+ },
+ {
+ "id": "refresh_templates_for_site",
+ "route": "/sites/:site_id/refresh_templates",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_template_by_id",
+ "route": "/sites/:site_id/templates/:template_id/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_template",
+ "route": "/sites/:site_id/templates/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_widgetsets",
+ "route": "/sites/:site_id/widgetsets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_widgetset",
+ "route": "/sites/:site_id/widgetsets",
+ "verb": "POST",
+ "resources": [
+ "widgetset"
+ ]
+ },
+ {
+ "id": "update_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id",
+ "verb": "PUT",
+ "resources": [
+ "widgetset"
+ ]
+ },
+ {
+ "id": "delete_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_widgets",
+ "route": "/sites/:site_id/widgets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_widgets_for_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id/widgets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_widgets",
+ "route": "/sites/:site_id/widgets/:widget_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_widget_for_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id/widgets/:widget_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_widget",
+ "route": "/sites/:site_id/widgets",
+ "verb": "POST",
+ "resources": [
+ "widget"
+ ]
+ },
+ {
+ "id": "update_widget",
+ "route": "/sites/:site_id/widgets/:widget_id",
+ "verb": "PUT",
+ "resources": [
+ "widget"
+ ]
+ },
+ {
+ "id": "delete_widget",
+ "route": "/sites/:site_id/widgets/:widget_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "refresh_widget",
+ "route": "/sites/:site_id/widgets/:widget_id/refresh",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "clone_widget",
+ "route": "/sites/:site_id/widgets/:widget_id/clone",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_users",
+ "route": "/users",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_user",
+ "route": "/users",
+ "verb": "POST",
+ "resources": [
+ "user"
+ ]
+ },
+ {
+ "id": "delete_user",
+ "route": "/users/:user_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "unlock_user",
+ "route": "/users/:user_id/unlock",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "recover_password_for_user",
+ "route": "/users/:user_id/recover_password",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "recover_password",
+ "route": "/recover_password",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_plugins",
+ "route": "/plugins",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_plugin",
+ "route": "/plugins/:plugin_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "enable_plugin",
+ "route": "/plugins/:plugin_id/enable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "disable_plugin",
+ "route": "/plugins/:plugin_id/disable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "enable_all_plugins",
+ "route": "/plugins/enable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "disable_all_plugins",
+ "route": "/plugins/disable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "backup_site",
+ "route": "/sites/:site_id/backup",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_groups",
+ "route": "/groups",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_groups_for_user",
+ "route": "/users/:user_id/groups",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_group",
+ "route": "/groups/:group_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_group",
+ "route": "/groups",
+ "verb": "POST",
+ "resources": [
+ "group"
+ ]
+ },
+ {
+ "id": "update_group",
+ "route": "/groups/:group_id",
+ "verb": "PUT",
+ "resources": [
+ "group"
+ ]
+ },
+ {
+ "id": "delete_group",
+ "route": "/groups/:group_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_group",
+ "route": "/groups/:group_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "grant_permission_to_group",
+ "route": "/groups/:group_id/permissions/grant",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_permission_from_group",
+ "route": "/groups/:group_id/permissions/revoke",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_members_for_group",
+ "route": "/groups/:group_id/members",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_member_for_group",
+ "route": "/groups/:group_id/members/:member_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "add_member_to_group",
+ "route": "/groups/:group_id/members",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "remove_member_from_group",
+ "route": "/groups/:group_id/members/:member_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "authenticate",
+ "route": "/authentication",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "upload_asset",
+ "route": "/assets/upload",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "upload_asset_for_site",
+ "route": "/sites/:site_id/assets/upload",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "create_entry",
+ "route": "/sites/:site_id/entries",
+ "verb": "POST",
+ "resources": [
+ "entry"
+ ]
+ },
+ {
+ "id": "update_entry",
+ "route": "/sites/:site_id/entries/:entry_id",
+ "verb": "PUT",
+ "resources": [
+ "entry"
+ ]
+ },
+ {
+ "id": "create_page",
+ "route": "/sites/:site_id/pages",
+ "verb": "POST",
+ "resources": [
+ "page"
+ ]
+ },
+ {
+ "id": "update_page",
+ "route": "/sites/:site_id/pages/:page_id",
+ "verb": "PUT",
+ "resources": [
+ "page"
+ ]
+ },
+ {
+ "id": "create_category_set",
+ "route": "/sites/:site_id/categorySets",
+ "verb": "POST",
+ "resources": [
+ "category_set"
+ ]
+ },
+ {
+ "id": "get_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id",
+ "verb": "PUT",
+ "resources": [
+ "category_set"
+ ]
+ },
+ {
+ "id": "delete_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_parent_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id/parents",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sibling_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id/siblings",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_child_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories",
+ "verb": "POST",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "get_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id",
+ "verb": "PUT",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "delete_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_content_types",
+ "route": "/sites/:site_id/contentTypes",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_content_type",
+ "route": "/sites/:site_id/contentTypes",
+ "verb": "POST",
+ "resources": [
+ "content_type"
+ ]
+ },
+ {
+ "id": "get_content_type",
+ "route": "/sites/:site_id/contentTypes/:content_type_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_content_type",
+ "route": "/sites/:site_id/contentTypes/:content_type_id",
+ "verb": "PUT",
+ "resources": [
+ "content_type"
+ ]
+ },
+ {
+ "id": "delete_content_type",
+ "route": "/sites/:site_id/contentTypes/:content_type_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_content_fields",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields",
+ "verb": "POST",
+ "resources": [
+ "content_field"
+ ]
+ },
+ {
+ "id": "get_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",
+ "verb": "PUT",
+ "resources": [
+ "content_field"
+ ]
+ },
+ {
+ "id": "delete_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_content_fields",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "create_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data",
+ "verb": "POST",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "get_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",
+ "verb": "PUT",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "delete_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "preview_content_data_by_id",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id/preview",
+ "verb": "POST",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "preview_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/preview",
+ "verb": "POST",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "publish_content_data",
+ "route": "/publish/contentData",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "search",
+ "route": "/search",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_templates",
+ "route": "/sites/:site_id/templates",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_template",
+ "route": "/sites/:site_id/templates/:template_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_template",
+ "route": "/sites/:site_id/templates/:template_id",
+ "verb": "PUT",
+ "resources": [
+ "template"
+ ]
+ },
+ {
+ "id": "delete_template",
+ "route": "/sites/:site_id/templates/:template_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "publish_template",
+ "route": "/sites/:site_id/templates/:template_id/publish",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "refresh_template",
+ "route": "/sites/:site_id/templates/:template_id/refresh",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "clone_template",
+ "route": "/sites/:site_id/templates/:template_id/clone",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_templatemaps",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps",
+ "verb": "POST",
+ "resources": [
+ "templatemap"
+ ]
+ },
+ {
+ "id": "update_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",
+ "verb": "PUT",
+ "resources": [
+ "templatemap"
+ ]
+ },
+ {
+ "id": "delete_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_category_sets",
+ "route": "/sites/:site_id/categorySets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_text_filters",
+ "route": "/textFilters",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries",
+ "route": "/sites/:site_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_pageviews_for_path",
+ "route": "/sites/:site_id/stats/path/pageviews",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_visits_for_path",
+ "route": "/sites/:site_id/stats/path/visits",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_pageviews_for_date",
+ "route": "/sites/:site_id/stats/date/pageviews",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_visits_for_date",
+ "route": "/sites/:site_id/stats/date/visits",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "export_site_theme",
+ "route": "/sites/:site_id/export_theme",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_fields",
+ "route": "/sites/:site_id/fields",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_field",
+ "route": "/sites/:site_id/fields/:field_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_field",
+ "route": "/sites/:site_id/fields",
+ "verb": "POST",
+ "resources": [
+ "field"
+ ]
+ },
+ {
+ "id": "update_field",
+ "route": "/sites/:site_id/fields/:field_id",
+ "verb": "PUT",
+ "resources": [
+ "field"
+ ]
+ },
+ {
+ "id": "delete_field",
+ "route": "/sites/:site_id/fields/:field_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "synchronize_groups",
+ "route": "/groups/synchronize",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "bulk_author_import",
+ "route": "/users/import",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "bulk_author_export",
+ "route": "/users/export",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "synchronize_users",
+ "route": "/users/synchronize",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_formatted_texts",
+ "route": "/sites/:site_id/formatted_texts",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_formatted_text",
+ "route": "/sites/:site_id/formatted_texts/:formatted_text_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_formatted_text",
+ "route": "/sites/:site_id/formatted_texts",
+ "verb": "POST",
+ "resources": [
+ "formatted_text"
+ ]
+ },
+ {
+ "id": "update_formatted_text",
+ "route": "/sites/:site_id/formatted_texts/:formatted_text_id",
+ "verb": "PUT",
+ "resources": [
+ "formatted_text"
+ ]
+ },
+ {
+ "id": "delete_formatted_text",
+ "route": "/sites/:site_id/formatted_texts/:formatted_text_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_comments",
+ "route": "/sites/:site_id/comments",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_comments_for_entry",
+ "route": "/sites/:site_id/entries/:entry_id/comments",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_comment",
+ "route": "/sites/:site_id/entries/:entry_id/comments",
+ "verb": "POST",
+ "resources": [
+ "comment"
+ ]
+ },
+ {
+ "id": "create_reply_comment",
+ "route": "/sites/:site_id/entries/:entry_id/comments/:comment_id/replies",
+ "verb": "POST",
+ "resources": [
+ "comment"
+ ]
+ },
+ {
+ "id": "get_comment",
+ "route": "/sites/:site_id/comments/:comment_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_comment",
+ "route": "/sites/:site_id/comments/:comment_id",
+ "verb": "PUT",
+ "resources": [
+ "comment"
+ ]
+ },
+ {
+ "id": "delete_comment",
+ "route": "/sites/:site_id/comments/:comment_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_comments_for_page",
+ "route": "/sites/:site_id/pages/:page_id/comments",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_comment_for_page",
+ "route": "/sites/:site_id/pages/:page_id/comments",
+ "verb": "POST",
+ "resources": [
+ {
+ "comment": null
+ }
+ ]
+ },
+ {
+ "id": "create_reply_comment_for_page",
+ "route": "/sites/:site_id/pages/:page_id/comments/:comment_id/replies",
+ "verb": "POST",
+ "resources": [
+ "comment"
+ ]
+ }
+]
+
+ );
+});
+
+window.MT = window.MT || {};
+window.MT.DataAPI = window.MT.DataAPI || DataAPI;
+window.MT.DataAPI['v' + DataAPI.version] = DataAPI;
+
+
+return DataAPI;
+
+}));
diff --git a/mt-static/data-api/v7/js/mt-data-api.min.js b/mt-static/data-api/v7/js/mt-data-api.min.js
new file mode 100644
index 0000000..277150b
--- /dev/null
+++ b/mt-static/data-api/v7/js/mt-data-api.min.js
@@ -0,0 +1,9 @@
+/* Copyright (c) Six Apart Ltd.
+ * This file is generated by Movable Type DataAPI SDK for JavaScript.
+ * Consult the source files for their respective licenses and copyrights.
+ * https://github.com/movabletype/mt-data-api-sdk-js
+ */
+
+!function(a,b){var c=b(a);"object"==typeof module&&"object"==typeof module.exports?module.exports=c:"function"==typeof define&&define.amd&&define("mt-data-api",[],function(){return c})}("undefined"==typeof window?void 0:window,function(window,undefined){"use strict";var DataAPI=function(a){var b,c,d=["clientId","baseUrl"];this.o={clientId:undefined,baseUrl:undefined,format:undefined,sessionStore:undefined,sessionDomain:undefined,sessionPath:undefined,async:!0,timeout:undefined,cache:!0,withoutAuthorization:!1,processOneTimeTokenOnInitialize:!0,loadPluginEndpoints:!0,suppressResponseCodes:undefined,crossOrigin:undefined,disableFormData:!1};for(c in a){if(!(c in this.o))throw"Unkown option: "+c;this.o[c]=a[c]}for(b=0;bf.length)&&(e=f),{data:a.data,domain:("undefined"==typeof b?undefined:b.sessionDomain)||a.domain||undefined,path:("undefined"==typeof b?undefined:b.sessionPath)||e}}function c(){if(!window.location)return"";var a;try{a=window.location.href}catch(b){a=window.document.createElement("a"),a.href="",a=a.href}return a}function d(a){var b=/^[\w.+-]+:(?:\/\/[^\/?#:]*(?::\d+|)|)(.*)\/[^\/]*$/,c=b.exec(a.toLowerCase());return c?c[1]:null}DataAPI.sessionStores.cookie={save:function(c,d,e){var f=e?new Date((new Date).getTime()+31536e7):undefined,g=b(a(c),this.o);Cookie.bake(c,JSON.stringify(g),g.domain,g.path,f)},fetch:function(b){a(b).data},remove:function(c){var d=b(a(c));Cookie.bake(c,"",d.domain,d.path,new Date(0))}}}(),function(){var a={cipher:{},hash:{},mode:{},misc:{},codec:{},exception:{corrupt:function(a){this.toString=function(){return"CORRUPT: "+this.message},this.message=a},invalid:function(a){this.toString=function(){return"INVALID: "+this.message},this.message=a},bug:function(a){this.toString=function(){return"BUG: "+this.message},this.message=a},notReady:function(a){this.toString=function(){return"NOT READY: "+this.message},this.message=a}}};a.cipher.aes=function(b){this._tables[0][0][0]||this._precompute();var c,d,e,f,g,h=this._tables[0][4],i=this._tables[1],j=b.length,k=1;if(4!==j&&6!==j&&8!==j)throw new a.exception.invalid("invalid aes key size");for(this._key=[f=b.slice(0),g=[]],c=j;4*j+28>c;c++)e=f[c-1],(c%j===0||8===j&&c%j===4)&&(e=h[e>>>24]<<24^h[e>>16&255]<<16^h[e>>8&255]<<8^h[255&e],c%j===0&&(e=e<<8^e>>>24^k<<24,k=k<<1^283*(k>>7))),f[c]=f[c-j]^e;for(d=0;c;d++,c--)e=f[3&d?c:c-4],4>=c||4>d?g[d]=e:g[d]=i[0][h[e>>>24]]^i[1][h[e>>16&255]]^i[2][h[e>>8&255]]^i[3][h[255&e]]},a.cipher.aes.prototype={encrypt:function(a){return this._crypt(a,0)},decrypt:function(a){return this._crypt(a,1)},_tables:[[[],[],[],[],[]],[[],[],[],[],[]]],_precompute:function(){var a=this._tables[0],b=this._tables[1],c=a[4],d=b[4],e,f,g,h=[],i=[],j,k,l,m,n,o;for(e=0;256>e;e++)i[(h[e]=e<<1^283*(e>>7))^e]=e;for(f=g=0;!c[f];f^=j||1,g=i[g]||1)for(m=g^g<<1^g<<2^g<<3^g<<4,m=m>>8^255&m^99,c[f]=m,d[m]=f,l=h[k=h[j=h[f]]],o=16843009*l^65537*k^257*j^16843008*f,n=257*h[m]^16843008*m,e=0;4>e;e++)a[e][f]=n=n<<24^n>>>8,b[e][m]=o=o<<24^o>>>8;for(e=0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)},_crypt:function(b,c){if(4!==b.length)throw new a.exception.invalid("invalid aes block size");var d=this._key[c],e=b[0]^d[0],f=b[c?3:1]^d[1],g=b[2]^d[2],h=b[c?1:3]^d[3],i,j,k,l=d.length/4-2,m,n=4,o=[0,0,0,0],p=this._tables[c],q=p[0],r=p[1],s=p[2],t=p[3],u=p[4];for(m=0;l>m;m++)i=q[e>>>24]^r[f>>16&255]^s[g>>8&255]^t[255&h]^d[n],j=q[f>>>24]^r[g>>16&255]^s[h>>8&255]^t[255&e]^d[n+1],k=q[g>>>24]^r[h>>16&255]^s[e>>8&255]^t[255&f]^d[n+2],h=q[h>>>24]^r[e>>16&255]^s[f>>8&255]^t[255&g]^d[n+3],n+=4,e=i,f=j,g=k;for(m=0;4>m;m++)o[c?3&-m:m]=u[e>>>24]<<24^u[f>>16&255]<<16^u[g>>8&255]<<8^u[255&h]^d[n++],i=e,e=f,f=g,g=h,h=i;return o}},a.bitArray={bitSlice:function(b,c,d){return b=a.bitArray._shiftRight(b.slice(c/32),32-(31&c)).slice(1),d===undefined?b:a.bitArray.clamp(b,d-c)},concat:function(b,c){if(0===b.length||0===c.length)return b.concat(c);var d,e,f=b[b.length-1],g=a.bitArray.getPartial(f);return 32===g?b.concat(c):a.bitArray._shiftRight(c,g,0|f,b.slice(0,b.length-1))},bitLength:function(b){var c=b.length,d;if(0===c)return 0;return d=b[c-1],32*(c-1)+a.bitArray.getPartial(d)},clamp:function(b,c){if(32*b.length0&&c&&(b[d-1]=a.bitArray.partial(c,b[d-1]&2147483648>>c-1,1)),b},partial:function(a,b,c){if(32===a)return b;return(c?0|b:b<<32-a)+1099511627776*a},getPartial:function(a){return Math.round(a/1099511627776)||32},equal:function(b,c){if(a.bitArray.bitLength(b)!==a.bitArray.bitLength(c))return!1;var d=0,e;for(e=0;e=32;c-=32)e.push(d),d=0;if(0===c)return e.concat(b);for(f=0;f>>c),d=b[f]<<32-c;return g=b.length?b[b.length-1]:0,h=a.bitArray.getPartial(g),e.push(a.bitArray.partial(c+h&31,c+h>32?d:e.pop(),1)),e},_xor4:function(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]}},a.codec.utf8String={fromBits:function(b){var c="",d=a.bitArray.bitLength(b),e,f;for(e=0;d/8>e;e++)0===(3&e)&&(f=b[e/4]),c+=String.fromCharCode(f>>>24),f<<=8;return decodeURIComponent(escape(c))},toBits:function(b){b=unescape(encodeURIComponent(b));var c=[],d,e=0;for(d=0;d>>f)>>>26),6>f?(h=b[e]<<6-f,f+=26,e++):(h<<=6,f-=6);while(3&d.length&&!c)d+="=";return d},toBits:function(b){b=b.replace(/\s|=/g,"");var c=[],d,e=0,f=a.codec.base64._chars,g=0,h;for(d=0;dh)throw new a.exception.invalid("this isn't base64!");e>26?(e-=26,c.push(g^h>>>e),g=h<<32-e):(e+=6,g^=h<<32-e)}return 56&e&&c.push(a.bitArray.partial(56&e,g,1)),c}},a.hash.sha256=function(a){this._key[0]||this._precompute(),a?(this._h=a._h.slice(0),this._buffer=a._buffer.slice(0),this._length=a._length):this.reset()},a.hash.sha256.hash=function(b){return(new a.hash.sha256).update(b).finalize()},a.hash.sha256.prototype={blockSize:512,reset:function(){return this._h=this._init.slice(0),this._buffer=[],this._length=0,this},update:function(b){"string"==typeof b&&(b=a.codec.utf8String.toBits(b));var c,d=this._buffer=a.bitArray.concat(this._buffer,b),e=this._length,f=this._length=e+a.bitArray.bitLength(b);for(c=512+e&-512;f>=c;c+=512)this._block(d.splice(0,16));return this},finalize:function(){var b,c=this._buffer,d=this._h;for(c=a.bitArray.concat(c,[a.bitArray.partial(1,1)]),b=c.length+2;15&b;b++)c.push(0);c.push(Math.floor(this._length/4294967296)),c.push(0|this._length);while(c.length)this._block(c.splice(0,16));return this.reset(),d},_init:[],_key:[],_precompute:function(){var a=0,b=2,c;function d(a){return 4294967296*(a-Math.floor(a))|0}a:for(;64>a;b++){for(c=2;b>=c*c;c++)if(b%c===0)continue a;8>a&&(this._init[a]=d(Math.pow(b,.5))),this._key[a]=d(Math.pow(b,1/3)),a++}},_block:function(a){var b,c,d,e,f=a.slice(0),g=this._h,h=this._key,i=g[0],j=g[1],k=g[2],l=g[3],m=g[4],n=g[5],o=g[6],p=g[7];for(b=0;64>b;b++)16>b?c=f[b]:(d=f[b+1&15],e=f[b+14&15],c=f[15&b]=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+f[15&b]+f[b+9&15]|0),c=c+p+(m>>>6^m>>>11^m>>>25^m<<26^m<<21^m<<7)+(o^m&(n^o))+h[b],p=o,o=n,n=m,m=l+c|0,l=k,k=j,j=i,i=c+(j&k^l&(j^k))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;g[0]=g[0]+i|0,g[1]=g[1]+j|0,g[2]=g[2]+k|0,g[3]=g[3]+l|0,g[4]=g[4]+m|0,g[5]=g[5]+n|0,g[6]=g[6]+o|0,g[7]=g[7]+p|0}},a.mode.ccm={name:"ccm",encrypt:function(b,c,d,e,f){var g,h,i=c.slice(0),j,k=a.bitArray,l=k.bitLength(d)/8,m=k.bitLength(i)/8;if(f=f||64,e=e||[],7>l)throw new a.exception.invalid("ccm: iv must be at least 7 bytes");for(g=2;4>g&&m>>>8*g;g++);return 15-l>g&&(g=15-l),d=k.clamp(d,8*(15-g)),j=a.mode.ccm._computeTag(b,c,d,e,f,g),i=a.mode.ccm._ctrMode(b,i,d,j,f,g),k.concat(i.data,i.tag)},decrypt:function(b,c,d,e,f){f=f||64,e=e||[];var g,h,i=a.bitArray,j=i.bitLength(d)/8,k=i.bitLength(c),l=i.clamp(c,k-f),m=i.bitSlice(c,k-f),n;if(k=(k-f)/8,7>j)throw new a.exception.invalid("ccm: iv must be at least 7 bytes");for(g=2;4>g&&k>>>8*g;g++);if(15-j>g&&(g=15-j),d=i.clamp(d,8*(15-g)),l=a.mode.ccm._ctrMode(b,l,d,m,f,g),n=a.mode.ccm._computeTag(b,l.data,d,e,f,g),!i.equal(l.tag,n))throw new a.exception.corrupt("ccm: tag doesn't match");return l.data},_computeTag:function(b,c,d,e,f,g){var h,i,j=0,k=24,l,m,n=[],o=a.bitArray,p=o._xor4;if(f/=8,f%2||4>f||f>16)throw new a.exception.invalid("ccm: invalid tag length");if(e.length>4294967295||c.length>4294967295)throw new a.exception.bug("ccm: can't deal with 4GiB or more data");if(i=[o.partial(8,(e.length?64:0)|f-2<<2|g-1)],i=o.concat(i,d),i[3]|=o.bitLength(c)/8,i=b.encrypt(i),e.length)for(l=o.bitLength(e)/8,65279>=l?n=[o.partial(16,l)]:4294967295>=l&&(n=o.concat([o.partial(16,65534)],[l])),n=o.concat(n,e),m=0;mi;i+=4)l[3]++,h=b.encrypt(l),c[i]^=h[0],c[i+1]^=h[1],c[i+2]^=h[2],c[i+3]^=h[3];return{tag:e,data:j.clamp(c,o)}}},a.misc.hmac=function(b,c){this._hash=c=c||a.hash.sha256;var d=[[],[]],e,f=c.prototype.blockSize/32;for(this._baseHash=[new c,new c],b.length>f&&(b=c.hash(b)),e=0;f>e;e++)d[0][e]=909522486^b[e],d[1][e]=1549556828^b[e];this._baseHash[0].update(d[0]),this._baseHash[1].update(d[1])},a.misc.hmac.prototype.encrypt=a.misc.hmac.prototype.mac=function(a){var b=new this._hash(this._baseHash[0]).update(a).finalize();return new this._hash(this._baseHash[1]).update(b).finalize()},a.misc.pbkdf2=function(b,c,d,e,f){if(d=d||1e3,0>e||0>d)throw a.exception.invalid("invalid params to pbkdf2");"string"==typeof b&&(b=a.codec.utf8String.toBits(b)),f=f||a.misc.hmac;var g=new f(b),h,i,j,k,l,m=[],n=a.bitArray;for(l=1;32*m.length<(e||1);l++){for(h=i=g.encrypt(n.concat(c,[l])),j=1;d>j;j++)for(i=g.encrypt(i),k=0;ke;e+=4)(e+1)%this._MAX_WORDS_PER_BURST===0&&this._gate(),g=this._gen4words(),d.push(g[0],g[1],g[2],g[3]);return this._gate(),d.slice(0,b)},setDefaultParanoia:function(a){this._defaultParanoia=a},addEntropy:function(b,c,d){d=d||"user";var e,f,g,h=(new Date).valueOf(),i=this._robins[d],j=this.isReady(),k=0;switch(e=this._collectorIds[d],e===undefined&&(e=this._collectorIds[d]=this._collectorIdNext++),i===undefined&&(i=this._robins[d]=0),this._robins[d]=(this._robins[d]+1)%this._pools.length,typeof b){case"number":c===undefined&&(c=1),this._pools[i].update([e,this._eventId++,1,c,h,1,0|b]);break;case"object":var l=Object.prototype.toString.call(b);if("[object Uint32Array]"===l){for(g=[],f=0;f0)c++,g>>>=1}this._pools[i].update([e,this._eventId++,2,c,h,b.length].concat(b))}break;case"string":c===undefined&&(c=b.length),this._pools[i].update([e,this._eventId++,3,c,h,b.length]),this._pools[i].update(b);break;default:k=1}if(k)throw new a.exception.bug("random: addEntropy only supports number, array of numbers or string");this._poolEntropy[i]+=c,this._poolStrength+=c,j===this._NOT_READY&&(this.isReady()!==this._NOT_READY&&this._fireEvent("seeded",Math.max(this._strength,this._poolStrength)),this._fireEvent("progress",this.getProgress()))},isReady:function(a){var b=this._PARANOIA_LEVELS[a!==undefined?a:this._defaultParanoia];return this._strength&&this._strength>=b?this._poolEntropy[0]>this._BITS_PER_RESEED&&(new Date).valueOf()>this._nextReseed?this._REQUIRES_RESEED|this._READY:this._READY:this._poolStrength>=b?this._REQUIRES_RESEED|this._NOT_READY:this._NOT_READY},getProgress:function(a){var b=this._PARANOIA_LEVELS[a?a:this._defaultParanoia];return this._strength>=b?1:this._poolStrength>b?1:this._poolStrength/b},startCollectors:function(){if(this._collectorsStarted)return;if(window.addEventListener)window.addEventListener("load",this._loadTimeCollector,!1),window.addEventListener("mousemove",this._mouseCollector,!1);else{if(!document.attachEvent)throw new a.exception.bug("can't attach event");document.attachEvent("onload",this._loadTimeCollector),document.attachEvent("onmousemove",this._mouseCollector)}this._collectorsStarted=!0},stopCollectors:function(){if(!this._collectorsStarted)return;window.removeEventListener?(window.removeEventListener("load",this._loadTimeCollector,!1),window.removeEventListener("mousemove",this._mouseCollector,!1)):window.detachEvent&&(window.detachEvent("onload",this._loadTimeCollector),window.detachEvent("onmousemove",this._mouseCollector)),this._collectorsStarted=!1},addEventListener:function(a,b){this._callbacks[a][this._callbackI++]=b},removeEventListener:function(a,b){var c,d,e=this._callbacks[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;ca;a++)if(this._counter[a]=this._counter[a]+1|0,this._counter[a])break;return this._cipher.encrypt(this._counter)},_gate:function(){this._key=this._gen4words().concat(this._gen4words()),this._cipher=new a.cipher.aes(this._key)},_reseed:function(b){this._key=a.hash.sha256.hash(this._key.concat(b)),this._cipher=new a.cipher.aes(this._key);for(var c=0;4>c;c++)if(this._counter[c]=this._counter[c]+1|0,this._counter[c])break},_reseedFromPools:function(b){var c=[],d=0,e;for(this._nextReseed=c[0]=(new Date).valueOf()+this._MILLISECONDS_PER_RESEED,e=0;16>e;e++)c.push(4294967296*Math.random()|0);for(e=0;e=1<this._strength&&(this._strength=d),this._reseedCount++,this._reseed(c)},_mouseCollector:function(b){var c=b.x||b.clientX||b.offsetX||0,d=b.y||b.clientY||b.offsetY||0;a.random.addEntropy([c,d],2,"mouse")},_loadTimeCollector:function(b){a.random.addEntropy((new Date).valueOf(),2,"loadtime")},_fireEvent:function(b,c){var d,e=a.random._callbacks[b],f=[];for(d in e)e.hasOwnProperty(d)&&f.push(e[d]);for(d=0;d4)throw new a.exception.invalid("json encrypt: invalid parameters");return"string"==typeof b&&(h=a.misc.cachedPbkdf2(b,g),b=h.key.slice(0,g.ks/32),g.salt=h.salt),"string"==typeof c&&(c=a.codec.utf8String.toBits(c)),"string"==typeof j&&(j=a.codec.utf8String.toBits(j)),i=new a.cipher[g.cipher](b),f._add(e,g),e.key=b,g.ct=a.mode[g.mode].encrypt(i,c,g.iv,j,g.ts),f.encode(g)},decrypt:function(b,c,d,e){d=d||{},e=e||{};var f=a.json,g=f._add(f._add(f._add({},f.defaults),f.decode(c)),d,!0),h,i,j,k=g.adata;if("string"==typeof g.salt&&(g.salt=a.codec.base64.toBits(g.salt)),"string"==typeof g.iv&&(g.iv=a.codec.base64.toBits(g.iv)),!a.mode[g.mode]||!a.cipher[g.cipher]||"string"==typeof b&&g.iter<=100||64!==g.ts&&96!==g.ts&&128!==g.ts||128!==g.ks&&192!==g.ks&&256!==g.ks||!g.iv||g.iv.length<2||g.iv.length>4)throw new a.exception.invalid("json decrypt: invalid parameters");return"string"==typeof b&&(i=a.misc.cachedPbkdf2(b,g),b=i.key.slice(0,g.ks/32),g.salt=i.salt),"string"==typeof k&&(k=a.codec.utf8String.toBits(k)),j=new a.cipher[g.cipher](b),h=a.mode[g.mode].decrypt(j,g.ct,g.iv,k,g.ts),f._add(e,g),e.key=b,a.codec.utf8String.fromBits(h)},encode:function(b){var c,d="{",e="";for(c in b)if(b.hasOwnProperty(c)){if(!c.match(/^[a-z0-9]+$/i))throw new a.exception.invalid("json encode: invalid property name");switch(d+=e+'"'+c+'":',e=",",typeof b[c]){case"number":case"boolean":d+=b[c];break;case"string":d+='"'+escape(b[c])+'"';break;case"object":d+='"'+a.codec.base64.fromBits(b[c],1)+'"';break;default:throw new a.exception.bug("json encode: unsupported type")}}return d+"}"},decode:function(b){if(b=b.replace(/\s/g,""),!b.match(/^\{.*\}$/))throw new a.exception.invalid("json decode: this isn't json!");var c=b.replace(/^\{|\}$/g,"").split(/,/),d={},e,f;for(e=0;eh.length)&&(e=h),{encryptKey:b.encryptKey||d(),storageKey:b.storageKey||d(),domain:c.sessionDomain||b.domain||undefined,path:c.sessionPath||e}}function f(){if(!window.location)return"";var a;try{a=window.location.href}catch(b){a=window.document.createElement("a"),a.href="",a=a.href}return a}function g(a){var b=/^[\w.+-]+:(?:\/\/[^\/?#:]*(?::\d+|)|)(.*)\/[^\/]*$/,c=b.exec(a.toLowerCase());return c?c[1]:null}function h(a,b){function c(b){return a+":"+b}var d=[];if(!b)return[a];while(!0){if(d.push(c(b)),"/"===b)break;b=b.replace(/[^\/]+\/$/,"")}return d}function i(a,b){return h(a,b.sessionPath||g(f())+"/")}b?DataAPI.sessionStores["cookie-encrypted"]={save:function(f,g,h){var i=h?new Date((new Date).getTime()+31536e7):undefined,j=e(d(f),this.o);Cookie.bake(c(f),JSON.stringify(j),j.domain,j.path,i),b.setItem(j.storageKey,a.encrypt(j.encryptKey,g))},fetch:function(c){var e=d(c),f,g,h;if(!e.storageKey)for(g=i(c,this.o),f=0;fa?"0"+a:a}function c(a){if(!isFinite(a.valueOf()))return"";var c,d=a.getTimezoneOffset();return 0===d?c="Z":(c=d>0?"-":"+",d=Math.abs(d),c+=b(Math.floor(d/60))+":"+b(d%60)),a.getFullYear()+"-"+b(a.getMonth()+1)+"-"+b(a.getDate())+"T"+b(a.getHours())+":"+b(a.getMinutes())+":"+b(a.getSeconds())+c}this._isFormElement(a)&&(a=this._serializeFormElementToObject(a));var d=typeof a;return"undefined"===d||null===a||"number"===d&&!isFinite(a)?"":"boolean"===d?a?"1":"":a instanceof Date?c(a):window.File&&a instanceof window.File?a:this._isFileInputElement(a)?a.files[0]:"object"===d?this.serializeData(a,function(a,b){if(this[a]instanceof Date)return c(this[a]);return b}):a},_serializeParams:function(a){if(!a)return a;if("string"==typeof a)return a;this._isFormElement(a)&&(a=this._serializeFormElementToObject(a));var b,c="";for(b in a){if(!a.hasOwnProperty(b))continue;c&&(c+="&"),c+=encodeURIComponent(b)+"="+encodeURIComponent(this._serializeObject(a[b]))}return c},_unserializeParams:function(a){if("string"!=typeof a)return a;var b,c,d={},e=a.split("&");for(b=0;be,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;for(;h>i;i++)if(c=d[i],(c.selected||i===e)&&(!c.parentNode.disabled||"optgroup"!==c.parentNode.nodeName.toLowerCase())){if(b=c.attributes.value,b=!b||b.specified?c.value:a.text,f)return b;g.push(b)}return g}return a.value},withOptions:function(a,b){var c,d,e=this.o,f={};for(c in e)f[c]=e[c];for(c in a)f[c]=a[c];return this.o=f,this._initOptions(),d=b.apply(this),this.o=e,this._initOptions(),d},_requestVia:function(){return window.XDomainRequest&&this.o.crossOrigin&&/msie (8|9)\./i.test(window.navigator.appVersion)?"xdr":window.XMLHttpRequest?"xhr":"fetch"},request:function(a,b){var c,d,e,f,g=this,h=[],i=null,j=function(){},k=null,l=null,m=this._requestVia(),n=this.getTokenData(),o=this.getAuthorizationHeader("accessToken"),p=this.getCurrentFormat(),q=a,r=Array.prototype.slice.call(arguments),s={},t={};function u(a){var b,c;if(!g.o.disableFormData&&window.FormData){if(a instanceof window.FormData)return a;if(g._isFormElement(a))return new window.FormData(a);if(window.FormData&&"object"==typeof a){c=new window.FormData;for(b in a)c.append(b,g._serializeObject(a[b]));return c}}if(g._isFormElement(a)){a=g._serializeFormElementToObject(a);for(b in a)a[b]instanceof Array&&(a[b]=a[b].join(","))}if(g._findFileInput(a)){m="iframe",c={};for(b in a)g._isFileInputElement(a[b])?c[b]=a[b]:c[b]=g._serializeObject(a[b]);a=c}else"string"!=typeof a&&(a=g._serializeParams(a));return a}function v(a){var b=j(a);return b!==!1&&a.error&&g.trigger("error",a),b}function w(a){return a.error&&401===a.error.code&&"/token"!==b&&"/authentication"!==b}function x(){g.request("POST","/token",function(a){return a.error?(z(r),v(a)):(g.storeTokenData(a),g.request.apply(g,r),!1)})}function y(a,b){return a+=-1===a.indexOf("?")?"?":"&",a+g._serializeParams(b)}function z(a){for(c=2;c=2)&&(b=y(b,h.shift())),h.length&&(i=h.shift()),!this._isEmptyObject(s))if("get"===a.toLowerCase())b=y(b,s);else if(window.FormData&&i&&i instanceof window.FormData)for(d in s)i.append(d,s[d]);else{i=i||{};for(d in s)i[d]=s[d]}i=u(i),f=this.o.baseUrl.replace(/\/*$/,"/")+"v"+this.getVersion(),b=b.replace(/^\/*/,"/");function A(a,c,d,e,f){var h,i,j,k;try{i=a,j=g.findFormat(i)||g.getCurrentFormat(),h=j.unserialize(c)}catch(l){h={error:{code:+d,message:e||"Communication Error"}}}if(w(h))return x(),f&&f(),!1;!h.error&&"/authentication"===b&&"delete"===q.toLowerCase()||h.error&&401===h.error.code&&("/authentication"===b&&"post"===q.toLowerCase()||"/token"===b&&"post"===q.toLowerCase())?g.clearTokenData():!h.error&&("/authentication"===b&&"post"===q.toLowerCase()||"/token"===b&&"post"===q.toLowerCase())&&g.storeTokenData(h),k=v(h),k!==!1&&h.error&&401===h.error.code&&"/authentication"!==b&&g.trigger("authorizationRequired",h)}if("xdr"===m){if(!this._isEmptyObject(t))throw"Cannot set request header when sending via XDomainRequest";l=l||new window.XDomainRequest,l.onload=function(){A(l.contentType,l.responseText,200)},l.onerror=function(){A(l.contentType,l.responseText,404)},l.onprogress=function(){},l.ontimeout=function(){A(l.contentType,l.responseText,0)},"undefined"!=typeof this.o.timeout&&(l.timeout=this.o.timeout||Number.MAX_VALUE),l.open(a,f+b),l.send(g._serializeParams(i)||null)}else{if("xhr"===m)return k=k||this.newXMLHttpRequest(),"undefined"!=typeof this.o.timeout&&(k.timeout=this.o.timeout),k.onreadystatechange=function(){var b,c;if(4!==k.readyState)return;function d(){k.onreadystatechange=function(){}}if(b=A(k.getResponseHeader("Content-Type"),k.responseText,k.status,k.statusText,d),b===!1)return;c=k.getResponseHeader("X-MT-Next-Phase-URL"),c?(k.abort(),g.sendXMLHttpRequest(k,a,f+c,i,t)):d()},this.sendXMLHttpRequest(k,a,f+b,i,t);if("fetch"!==m)return void function(){var c,d,e,h,j=g._getNextIframeName(),k=window.document,l=k.createElement("form"),m=k.createElement("iframe");l.action=f+b,l.target=j,l.method=a,l.style.display="inline",l.encoding="multipart/form-data",l.enctype="multipart/form-data",m.name=j,m.style.position="absolute",m.style.top="-9999px",k.body.appendChild(m),m.contentWindow.name=j,i=i||{};for(c in t)i[c]=t[c];i["X-MT-Requested-Via"]="IFRAME";for(c in i){if(g._isFileInputElement(i[c])){d=i[c],e=d.name,d.name=c,d.parentNode?d.parentNode.insertBefore(l,d):k.body.appendChild(l),l.appendChild(d);continue}h=k.createElement("input"),h.type="hidden",h.name=c,h.value=i[c],l.appendChild(h)}l.submit();function n(){var a=m.contentWindow.document.body,b=a.textContent||a.innerText,c;function f(){setTimeout(function(){d.name=e,l.parentNode&&(l.parentNode.insertBefore(d,l),l.parentNode.removeChild(l)),m.parentNode&&m.parentNode.removeChild(m)})}try{c=g.unserializeData(b)}catch(h){c={error:{code:500,message:"Internal Server Error"}}}if(w(c))return x(),void f();f(),v(c)}m.addEventListener?m.addEventListener("load",n,!1):m.attachEvent&&m.attachEvent("onload",n)}();this._sendFetchApiRequest(a,f+b,i,t).then(function(b){var c,d;if(c=b.text().then(function(a){A(b.headers.get("Content-Type"),a,b.status,b.statusText)}),c===!1)return;if(d=b.headers.get("X-MT-Next-Phase-URL"),!d)return;this._sendFetchApiRequest(a,f+d,i,t)})}},on:function(){this.constructor.on.apply(this,arguments)},off:function(){this.constructor.off.apply(this,arguments)},trigger:function(a){var b,c=Array.prototype.slice.call(arguments,1),d=(this.constructor.callbacks[a]||[]).concat(this.callbacks[a]||[]);for(b=0;ba?"0"+a:a}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(a){return escapable.lastIndex=0,escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return"string"==typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function str(a,b){var c,d,e,f,g=gap,h,i=b[a];switch(i&&"object"==typeof i&&"function"==typeof i.toJSON&&(i=i.toJSON(a)),"function"==typeof rep&&(i=rep.call(b,a,i)),typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";if(gap+=indent,h=[],"[object Array]"===Object.prototype.toString.apply(i)){for(f=i.length,c=0;f>c;c+=1)h[c]=str(c,i)||"null";return e=0===h.length?"[]":gap?"[\n"+gap+h.join(",\n"+gap)+"\n"+g+"]":"["+h.join(",")+"]",gap=g,e}if(rep&&"object"==typeof rep)for(f=rep.length,c=0;f>c;c+=1)"string"==typeof rep[c]&&(d=rep[c],e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e));else for(d in i)Object.prototype.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e));return e=0===h.length?"{}":gap?"{\n"+gap+h.join(",\n"+gap)+"\n"+g+"}":"{"+h.join(",")+"}",gap=g,e}}"function"!=typeof JSON.stringify&&(JSON.stringify=function(a,b,c){var d;if(gap="",indent="","number"==typeof c)for(d=0;c>d;d+=1)indent+=" ";else"string"==typeof c&&(indent=c);if(rep=b,b&&"function"!=typeof b&&("object"!=typeof b||"number"!=typeof b.length))throw new Error("JSON.stringify");return str("",{"":a})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){var j;function walk(a,b){var c,d,e=a[b];if(e&&"object"==typeof e)for(c in e)Object.prototype.hasOwnProperty.call(e,c)&&(d=walk(e,c),d!==undefined?e[c]=d:delete e[c]);return reviver.call(a,b,e)}if(text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}(),DataAPI.on("initialize",function(){this.generateEndpointMethods([{id:"openapi",route:"/",verb:"GET",resources:null},{id:"version",route:"/version",verb:"GET",resources:null},{id:"list_endpoints",route:"/endpoints",verb:"GET",resources:null},{id:"authorize",route:"/authorization",verb:"GET",resources:null},{id:"get_token",route:"/token",verb:"POST",resources:null},{id:"revoke_authentication",route:"/authentication",verb:"DELETE",resources:null},{id:"revoke_token",route:"/token",verb:"DELETE",resources:null},{id:"get_user",route:"/users/:user_id",verb:"GET",resources:null},{id:"update_user",route:"/users/:user_id",verb:"PUT",resources:["user"]},{id:"get_entry",route:"/sites/:site_id/entries/:entry_id",verb:"GET",resources:null},{id:"delete_entry",route:"/sites/:site_id/entries/:entry_id",verb:"DELETE",resources:null},{id:"publish_entries",route:"/publish/entries",verb:"GET",resources:null},{id:"get_stats_provider",route:"/sites/:site_id/stats/provider",verb:"GET",resources:null},{id:"list_categories",route:"/sites/:site_id/categories",verb:"GET",resources:null},{id:"list_categories_for_entry",route:"/sites/:site_id/entries/:entry_id/categories",verb:"GET",resources:null},{id:"list_parent_categories",route:"/sites/:site_id/categories/:category_id/parents",verb:"GET",resources:null},{id:"list_sibling_categories",route:"/sites/:site_id/categories/:category_id/siblings",verb:"GET",resources:null},{id:"list_child_categories",route:"/sites/:site_id/categories/:category_id/children",verb:"GET",resources:null},{id:"create_category",route:"/sites/:site_id/categories",verb:"POST",resources:["category"]},{id:"get_category",route:"/sites/:site_id/categories/:category_id",verb:"GET",resources:null},{id:"update_category",route:"/sites/:site_id/categories/:category_id",verb:"PUT",resources:["category"]},{id:"delete_category",route:"/sites/:site_id/categories/:category_id",verb:"DELETE",resources:null},{id:"permutate_categories",route:"/sites/:site_id/categories/permutate",verb:"POST",resources:null},{id:"list_folders",route:"/sites/:site_id/folders",verb:"GET",resources:null},{id:"list_parent_folders",route:"/sites/:site_id/folders/:folder_id/parents",verb:"GET",resources:null},{id:"list_sibling_folders",route:"/sites/:site_id/folders/:folder_id/siblings",verb:"GET",resources:null},{id:"list_child_folders",route:"/sites/:site_id/folders/:folder_id/children",verb:"GET",resources:null},{id:"create_folder",route:"/sites/:site_id/folders",verb:"POST",resources:["folder"]},{id:"get_folder",route:"/sites/:site_id/folders/:folder_id",verb:"GET",resources:null},{id:"update_folder",route:"/sites/:site_id/folders/:folder_id",verb:"PUT",resources:["folder"]},{id:"delete_folder",route:"/sites/:site_id/folders/:folder_id",verb:"DELETE",resources:null},{id:"permutate_folders",route:"/sites/:site_id/folders/permutate",verb:"POST",resources:null},{id:"list_assets",route:"/sites/:site_id/assets",verb:"GET",resources:null},{id:"list_assets_for_entry",route:"/sites/:site_id/entries/:entry_id/assets",verb:"GET",resources:null},{id:"list_assets_for_page",route:"/sites/:site_id/pages/:page_id/assets",verb:"GET",resources:null},{id:"list_assets_for_site_and_tag",route:"/sites/:site_id/tags/:tag_id/assets",verb:"GET",resources:null},{id:"get_asset",route:"/sites/:site_id/assets/:asset_id",verb:"GET",resources:null},{id:"update_asset",route:"/sites/:site_id/assets/:asset_id",verb:"PUT",resources:["asset"]},{id:"delete_asset",route:"/sites/:site_id/assets/:asset_id",verb:"DELETE",resources:null},{id:"get_thumbnail",route:"/sites/:site_id/assets/:asset_id/thumbnail",verb:"GET",resources:null},{id:"list_entries_for_category",route:"/sites/:site_id/categories/:category_id/entries",verb:"GET",resources:null},{id:"list_entries_for_asset",route:"/sites/:site_id/assets/:asset_id/entries",verb:"GET",resources:null},{id:"list_entries_for_site_and_tag",route:"/sites/:site_id/tags/:tag_id/entries",verb:"GET",resources:null},{id:"import_entries",route:"/sites/:site_id/entries/import",verb:"POST",resources:null},{id:"export_entries",route:"/sites/:site_id/entries/export",verb:"GET",resources:null},{id:"preview_entry_by_id",route:"/sites/:site_id/entries/:entry_id/preview",verb:"POST",resources:null},{id:"preview_entry",route:"/sites/:site_id/entries/preview",verb:"POST",resources:null},{id:"list_pages",route:"/sites/:site_id/pages",verb:"GET",resources:null},{id:"list_pages_for_folder",route:"/sites/:site_id/folders/:folder_id/pages",verb:"GET",resources:null},{id:"list_pages_for_asset",route:"/sites/:site_id/assets/:asset_id/pages",verb:"GET",resources:null},{id:"list_pages_for_site_and_tag",route:"/sites/:site_id/tags/:tag_id/pages",verb:"GET",resources:null},{id:"get_page",route:"/sites/:site_id/pages/:page_id",verb:"GET",resources:null},{id:"delete_page",route:"/sites/:site_id/pages/:page_id",verb:"DELETE",resources:null},{id:"preview_page_by_id",route:"/sites/:site_id/pages/:page_id/preview",verb:"POST",resources:null},{id:"preview_page",route:"/sites/:site_id/pages/preview",verb:"POST",resources:null},{id:"list_sites",route:"/sites",verb:"GET",resources:null},{id:"get_blog",route:"/sites/:site_id",verb:"GET",resources:null},{id:"list_blogs_for_user",route:"/users/:user_id/sites",verb:"GET",resources:null},{id:"list_sites_by_parent",route:"/sites/:site_id/children",verb:"GET",resources:null},{id:"insert_new_blog",route:"/sites/:site_id",verb:"POST",resources:["blog"]},{id:"insert_new_website",route:"/sites",verb:"POST",resources:["website"]},{id:"update_site",route:"/sites/:site_id",verb:"PUT",resources:null},{id:"delete_site",route:"/sites/:site_id",verb:"DELETE",resources:null},{id:"list_roles",route:"/roles",verb:"GET",resources:null},{id:"create_role",route:"/roles",verb:"POST",resources:["role"]},{id:"get_role",route:"/roles/:role_id",verb:"GET",resources:null},{id:"update_role",route:"/roles/:role_id",verb:"PUT",resources:["role"]},{id:"delete_role",route:"/roles/:role_id",verb:"DELETE",resources:null},{id:"list_permissions",route:"/permissions",verb:"GET",resources:null},{id:"list_permissions_for_user",route:"/users/:user_id/permissions",verb:"GET",resources:null},{id:"list_permissions_for_site",route:"/sites/:site_id/permissions",verb:"GET",resources:null},{id:"list_permissions_for_role",route:"/roles/:role_id/permissions",verb:"GET",resources:null},{id:"grant_permission_to_site",route:"/sites/:site_id/permissions/grant",verb:"POST",resources:null},{id:"grant_permission_to_user",route:"/users/:user_id/permissions/grant",verb:"POST",resources:null},{id:"revoke_permission_from_site",route:"/sites/:site_id/permissions/revoke",verb:"POST",resources:null},{id:"revoke_permission_from_user",route:"/users/:user_id/permissions/revoke",verb:"POST",resources:null},{id:"list_logs",route:"/sites/:site_id/logs",verb:"GET",resources:null},{id:"get_log",route:"/sites/:site_id/logs/:log_id",verb:"GET",resources:null},{id:"create_log",route:"/sites/:site_id/logs",verb:"POST",resources:["log"]},{id:"update_log",route:"/sites/:site_id/logs/:log_id",verb:"PUT",resources:["log"]},{id:"delete_log",route:"/sites/:site_id/logs/:log_id",verb:"DELETE",resources:null},{id:"reset_logs",route:"/sites/:site_id/logs",verb:"DELETE",resources:null},{id:"export_logs",route:"/sites/:site_id/logs/export",verb:"GET",resources:null},{id:"list_tags_for_site",route:"/sites/:site_id/tags",verb:"GET",resources:null},{id:"get_tag_for_site",route:"/sites/:site_id/tags/:tag_id",verb:"GET",resources:null},{id:"rename_tag_for_site",route:"/sites/:site_id/tags/:tag_id",verb:"PUT",resources:null},{id:"delete_tag_for_site",route:"/sites/:site_id/tags/:tag_id",verb:"DELETE",resources:null},{id:"list_themes",route:"/themes",verb:"GET",resources:null},{id:"list_themes_for_site",route:"/sites/:site_id/themes",verb:"GET",resources:null},{id:"get_theme",route:"/themes/:theme_id",verb:"GET",resources:null},{id:"get_theme_for_site",route:"/sites/:site_id/themes/:theme_id",verb:"GET",resources:null},{id:"apply_theme_to_site",route:"/sites/:site_id/themes/:theme_id/apply",verb:"POST",resources:null},{id:"uninstall_theme",route:"/themes/:theme_id",verb:"DELETE",resources:null},{id:"create_template",route:"/sites/:site_id/templates",verb:"POST",resources:["template"]},{id:"refresh_templates_for_site",route:"/sites/:site_id/refresh_templates",verb:"POST",resources:null},{id:"preview_template_by_id",route:"/sites/:site_id/templates/:template_id/preview",verb:"POST",resources:null},{id:"preview_template",route:"/sites/:site_id/templates/preview",verb:"POST",resources:null},{id:"list_widgetsets",route:"/sites/:site_id/widgetsets",verb:"GET",resources:null},{id:"get_widgetset",route:"/sites/:site_id/widgetsets/:widgetset_id",verb:"GET",resources:null},{id:"create_widgetset",route:"/sites/:site_id/widgetsets",verb:"POST",resources:["widgetset"]},{id:"update_widgetset",route:"/sites/:site_id/widgetsets/:widgetset_id",verb:"PUT",resources:["widgetset"]},{id:"delete_widgetset",route:"/sites/:site_id/widgetsets/:widgetset_id",verb:"DELETE",resources:null},{id:"list_widgets",route:"/sites/:site_id/widgets",verb:"GET",resources:null},{id:"list_widgets_for_widgetset",route:"/sites/:site_id/widgetsets/:widgetset_id/widgets",verb:"GET",resources:null},{id:"get_widgets",route:"/sites/:site_id/widgets/:widget_id",verb:"GET",resources:null},{id:"get_widget_for_widgetset",route:"/sites/:site_id/widgetsets/:widgetset_id/widgets/:widget_id",verb:"GET",resources:null},{id:"create_widget",route:"/sites/:site_id/widgets",verb:"POST",resources:["widget"]},{id:"update_widget",route:"/sites/:site_id/widgets/:widget_id",verb:"PUT",resources:["widget"]},{id:"delete_widget",route:"/sites/:site_id/widgets/:widget_id",verb:"DELETE",resources:null},{id:"refresh_widget",route:"/sites/:site_id/widgets/:widget_id/refresh",verb:"POST",resources:null},{id:"clone_widget",route:"/sites/:site_id/widgets/:widget_id/clone",verb:"POST",resources:null},{id:"list_users",route:"/users",verb:"GET",resources:null},{id:"create_user",route:"/users",verb:"POST",resources:["user"]},{id:"delete_user",route:"/users/:user_id",verb:"DELETE",resources:null},{id:"unlock_user",route:"/users/:user_id/unlock",verb:"POST",resources:null},{id:"recover_password_for_user",route:"/users/:user_id/recover_password",verb:"POST",resources:null},{id:"recover_password",route:"/recover_password",verb:"POST",resources:null},{id:"list_plugins",route:"/plugins",verb:"GET",resources:null},{id:"get_plugin",route:"/plugins/:plugin_id",verb:"GET",resources:null},{id:"enable_plugin",route:"/plugins/:plugin_id/enable",verb:"POST",resources:null},{id:"disable_plugin",route:"/plugins/:plugin_id/disable",verb:"POST",resources:null},{id:"enable_all_plugins",route:"/plugins/enable",verb:"POST",resources:null},{id:"disable_all_plugins",route:"/plugins/disable",verb:"POST",resources:null},{id:"backup_site",route:"/sites/:site_id/backup",verb:"GET",resources:null},{id:"list_groups",route:"/groups",verb:"GET",resources:null},{id:"list_groups_for_user",route:"/users/:user_id/groups",verb:"GET",resources:null},{id:"get_group",route:"/groups/:group_id",verb:"GET",resources:null},{id:"create_group",route:"/groups",verb:"POST",resources:["group"]},{id:"update_group",route:"/groups/:group_id",verb:"PUT",resources:["group"]},{id:"delete_group",route:"/groups/:group_id",verb:"DELETE",resources:null},{id:"list_permissions_for_group",route:"/groups/:group_id/permissions",verb:"GET",resources:null},{id:"grant_permission_to_group",route:"/groups/:group_id/permissions/grant",verb:"POST",resources:null},{id:"revoke_permission_from_group",route:"/groups/:group_id/permissions/revoke",verb:"POST",resources:null},{id:"list_members_for_group",route:"/groups/:group_id/members",verb:"GET",resources:null},{id:"get_member_for_group",route:"/groups/:group_id/members/:member_id",verb:"GET",resources:null},{id:"add_member_to_group",route:"/groups/:group_id/members",verb:"POST",resources:null},{id:"remove_member_from_group",route:"/groups/:group_id/members/:member_id",verb:"DELETE",resources:null},{id:"authenticate",route:"/authentication",verb:"POST",resources:null},{id:"upload_asset",route:"/assets/upload",verb:"POST",resources:null},{id:"upload_asset_for_site",route:"/sites/:site_id/assets/upload",verb:"POST",resources:null},{id:"create_entry",route:"/sites/:site_id/entries",verb:"POST",resources:["entry"]},{id:"update_entry",route:"/sites/:site_id/entries/:entry_id",verb:"PUT",resources:["entry"]},{id:"create_page",route:"/sites/:site_id/pages",verb:"POST",resources:["page"]},{id:"update_page",route:"/sites/:site_id/pages/:page_id",verb:"PUT",resources:["page"]},{id:"create_category_set",route:"/sites/:site_id/categorySets",verb:"POST",resources:["category_set"]},{id:"get_category_set",route:"/sites/:site_id/categorySets/:category_set_id",verb:"GET",resources:null},{id:"update_category_set",route:"/sites/:site_id/categorySets/:category_set_id",verb:"PUT",resources:["category_set"]},{id:"delete_category_set",route:"/sites/:site_id/categorySets/:category_set_id",verb:"DELETE",resources:null},{id:"list_categories_for_category_set",route:"/sites/:site_id/categorySets/:category_set_id/categories",verb:"GET",resources:null},{id:"list_parent_categories_for_category_set",route:"/sites/:site_id/categorySets/:category_set_id/categories/:category_id/parents",verb:"GET",resources:null},{id:"list_sibling_categories_for_category_set",route:"/sites/:site_id/categorySets/:category_set_id/categories/:category_id/siblings",verb:"GET",resources:null},{id:"list_child_categories_for_category_set",route:"/sites/:site_id/categorySets/:category_set_id/categories/:category_id/children",verb:"GET",resources:null},{id:"create_category_for_category_set",route:"/sites/:site_id/categorySets/:category_set_id/categories",verb:"POST",resources:["category"]},{id:"get_category_for_category_set",route:"/sites/:site_id/categorySets/:category_set_id/categories/:category_id",verb:"GET",resources:null},{id:"update_category_for_category_set",route:"/sites/:site_id/categorySets/:category_set_id/categories/:category_id",verb:"PUT",resources:["category"]},{id:"delete_category_for_category_set",route:"/sites/:site_id/categorySets/:category_set_id/categories/:category_id",verb:"DELETE",resources:null},{id:"permutate_categories_for_category_set",route:"/sites/:site_id/categorySets/:category_set_id/categories/permutate",verb:"POST",resources:null},{id:"list_content_types",route:"/sites/:site_id/contentTypes",verb:"GET",resources:null},{id:"create_content_type",route:"/sites/:site_id/contentTypes",verb:"POST",resources:["content_type"]},{id:"get_content_type",route:"/sites/:site_id/contentTypes/:content_type_id",verb:"GET",resources:null},{id:"update_content_type",route:"/sites/:site_id/contentTypes/:content_type_id",verb:"PUT",resources:["content_type"]},{id:"delete_content_type",route:"/sites/:site_id/contentTypes/:content_type_id",verb:"DELETE",resources:null},{id:"list_content_fields",route:"/sites/:site_id/contentTypes/:content_type_id/fields",verb:"GET",resources:null},{id:"create_content_field",route:"/sites/:site_id/contentTypes/:content_type_id/fields",verb:"POST",resources:["content_field"]},{id:"get_content_field",route:"/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",verb:"GET",resources:null},{id:"update_content_field",route:"/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",verb:"PUT",resources:["content_field"]},{id:"delete_content_field",route:"/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",verb:"DELETE",resources:null},{id:"permutate_content_fields",route:"/sites/:site_id/contentTypes/:content_type_id/fields/permutate",verb:"POST",resources:null},{id:"create_content_data",route:"/sites/:site_id/contentTypes/:content_type_id/data",verb:"POST",resources:["content_data"]},{id:"get_content_data",route:"/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",verb:"GET",resources:null},{id:"update_content_data",route:"/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",verb:"PUT",resources:["content_data"]},{id:"delete_content_data",route:"/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",verb:"DELETE",resources:null},{id:"preview_content_data_by_id",route:"/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id/preview",verb:"POST",resources:["content_data"]},{id:"preview_content_data",route:"/sites/:site_id/contentTypes/:content_type_id/data/preview",verb:"POST",resources:["content_data"]},{id:"publish_content_data",route:"/publish/contentData",verb:"GET",resources:null},{id:"search",route:"/search",verb:"GET",resources:null},{id:"list_templates",route:"/sites/:site_id/templates",verb:"GET",resources:null},{id:"get_template",route:"/sites/:site_id/templates/:template_id",verb:"GET",resources:null},{id:"update_template",route:"/sites/:site_id/templates/:template_id",verb:"PUT",resources:["template"]},{id:"delete_template",route:"/sites/:site_id/templates/:template_id",verb:"DELETE",resources:null},{id:"publish_template",route:"/sites/:site_id/templates/:template_id/publish",verb:"POST",resources:null},{id:"refresh_template",route:"/sites/:site_id/templates/:template_id/refresh",verb:"POST",resources:null},{id:"clone_template",route:"/sites/:site_id/templates/:template_id/clone",verb:"POST",resources:null},{id:"list_templatemaps",route:"/sites/:site_id/templates/:template_id/templatemaps",verb:"GET",resources:null},{id:"get_templatemap",route:"/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",verb:"GET",resources:null},{id:"create_templatemap",route:"/sites/:site_id/templates/:template_id/templatemaps",verb:"POST",resources:["templatemap"]},{id:"update_templatemap",route:"/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",verb:"PUT",resources:["templatemap"]},{id:"delete_templatemap",route:"/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",verb:"DELETE",resources:null},{id:"list_category_sets",route:"/sites/:site_id/categorySets",verb:"GET",resources:null},{id:"list_content_data",route:"/sites/:site_id/contentTypes/:content_type_id/data",verb:"GET",resources:null},{id:"list_text_filters",route:"/textFilters",verb:"GET",resources:null},{id:"list_entries",route:"/sites/:site_id/entries",verb:"GET",resources:null},{id:"list_stats_pageviews_for_path",route:"/sites/:site_id/stats/path/pageviews",verb:"GET",resources:null},{id:"list_stats_visits_for_path",route:"/sites/:site_id/stats/path/visits",verb:"GET",resources:null},{id:"list_stats_pageviews_for_date",route:"/sites/:site_id/stats/date/pageviews",verb:"GET",resources:null},{id:"list_stats_visits_for_date",route:"/sites/:site_id/stats/date/visits",verb:"GET",resources:null},{id:"export_site_theme",route:"/sites/:site_id/export_theme",verb:"POST",resources:null},{id:"list_fields",route:"/sites/:site_id/fields",verb:"GET",resources:null},{id:"get_field",route:"/sites/:site_id/fields/:field_id",verb:"GET",resources:null},{id:"create_field",route:"/sites/:site_id/fields",verb:"POST",resources:["field"]},{id:"update_field",route:"/sites/:site_id/fields/:field_id",verb:"PUT",resources:["field"]},{id:"delete_field",route:"/sites/:site_id/fields/:field_id",verb:"DELETE",resources:null},{id:"synchronize_groups",route:"/groups/synchronize",verb:"POST",resources:null},{id:"bulk_author_import",route:"/users/import",verb:"POST",resources:null},{id:"bulk_author_export",route:"/users/export",verb:"GET",resources:null},{id:"synchronize_users",route:"/users/synchronize",verb:"POST",resources:null},{id:"list_formatted_texts",route:"/sites/:site_id/formatted_texts",verb:"GET",resources:null},{id:"get_formatted_text",route:"/sites/:site_id/formatted_texts/:formatted_text_id",verb:"GET",resources:null},{id:"create_formatted_text",route:"/sites/:site_id/formatted_texts",verb:"POST",resources:["formatted_text"]},{id:"update_formatted_text",route:"/sites/:site_id/formatted_texts/:formatted_text_id",verb:"PUT",resources:["formatted_text"]},{id:"delete_formatted_text",route:"/sites/:site_id/formatted_texts/:formatted_text_id",verb:"DELETE",resources:null},{id:"list_comments",route:"/sites/:site_id/comments",verb:"GET",resources:null},{id:"list_comments_for_entry",route:"/sites/:site_id/entries/:entry_id/comments",verb:"GET",resources:null},{id:"create_comment",route:"/sites/:site_id/entries/:entry_id/comments",verb:"POST",resources:["comment"]},{id:"create_reply_comment",route:"/sites/:site_id/entries/:entry_id/comments/:comment_id/replies",verb:"POST",resources:["comment"]},{id:"get_comment",route:"/sites/:site_id/comments/:comment_id",verb:"GET",resources:null},{id:"update_comment",route:"/sites/:site_id/comments/:comment_id",verb:"PUT",resources:["comment"]},{id:"delete_comment",route:"/sites/:site_id/comments/:comment_id",verb:"DELETE",resources:null},{id:"list_comments_for_page",route:"/sites/:site_id/pages/:page_id/comments",verb:"GET",resources:null},{id:"create_comment_for_page",route:"/sites/:site_id/pages/:page_id/comments",verb:"POST",resources:[{comment:null}]},{id:"create_reply_comment_for_page",route:"/sites/:site_id/pages/:page_id/comments/:comment_id/replies",verb:"POST",resources:["comment"]}])}),window.MT=window.MT||{},window.MT.DataAPI=window.MT.DataAPI||DataAPI,window.MT.DataAPI["v"+DataAPI.version]=DataAPI,DataAPI});
+//# sourceMappingURL=mt-data-api.min.map
\ No newline at end of file
diff --git a/mt-static/data-api/v7/js/mt-data-api.min.map b/mt-static/data-api/v7/js/mt-data-api.min.map
new file mode 100644
index 0000000..27ebb9d
--- /dev/null
+++ b/mt-static/data-api/v7/js/mt-data-api.min.map
@@ -0,0 +1 @@
+{"version":3,"file":"mt-static/data-api/v7/js/mt-data-api.min.js","sources":["mt-data-api.js"],"names":["window","factory","DataAPI","module","exports","define","amd","undefined","options","i","k","requireds","this","o","clientId","baseUrl","format","sessionStore","sessionDomain","sessionPath","async","timeout","cache","withoutAuthorization","processOneTimeTokenOnInitialize","loadPluginEndpoints","suppressResponseCodes","crossOrigin","disableFormData","length","callbacks","tokenData","iframeId","_initOptions","loadEndpoints","excludeComponents","_storeOneTimeToken","trigger","version","accessTokenKey","iframePrefix","defaultFormat","defaultSessionStore","document","formats","json","fileExtension","mimeType","serialize","JSON","stringify","apply","arguments","unserialize","parse","sessionStores","fetchCookieValues","name","cookie","Cookie","fetch","value","e","data","fillinDefaultCookieValues","values","path","currentPath","extractPath","documentUrl","domain","location","loc","href","createElement","url","urlRegexp","match","exec","toLowerCase","save","remember","expires","Date","getTime","bake","remove","sjcl","cipher","hash","mode","misc","codec","exception","corrupt","message","toString","invalid","bug","notReady","aes","key","_tables","_precompute","j","tmp","encKey","decKey","sbox","decTable","keyLen","rcon","_key","slice","prototype","encrypt","_crypt","decrypt","encTable","sboxInv","x","xInv","d","th","x2","x4","x8","s","tEnc","tDec","input","dir","a","b","c","a2","b2","c2","nInnerRounds","kIndex","out","table","t0","t1","t2","t3","bitArray","bitSlice","bstart","bend","_shiftRight","clamp","concat","a1","last","shift","getPartial","bitLength","l","len","Math","ceil","partial","_end","round","equal","carry","last2","shift2","push","pop","_xor4","y","utf8String","fromBits","arr","bl","String","fromCharCode","decodeURIComponent","escape","toBits","str","unescape","encodeURIComponent","charCodeAt","base64","_chars","_noEquals","bits","ta","charAt","replace","indexOf","sha256","_h","_buffer","_length","reset","update","finalize","blockSize","_init","ol","nl","_block","splice","h","floor","prime","factor","frac","outer","pow","words","w","h0","h1","h2","h3","h4","h5","h6","h7","ccm","prf","plaintext","iv","adata","tlen","L","tag","ivl","_computeTag","_ctrMode","ciphertext","tag2","q","mac","field","offset","macData","xor","enc","ctr","hmac","Hash","_hash","exKey","bs","_baseHash","pbkdf2","password","salt","count","Prff","u","ui","random","randomWords","nwords","paranoia","readiness","isReady","g","_NOT_READY","_REQUIRES_RESEED","_reseedFromPools","_READY","_MAX_WORDS_PER_BURST","_gate","_gen4words","setDefaultParanoia","_defaultParanoia","addEntropy","estimatedEntropy","source","id","t","valueOf","robin","_robins","oldReady","err","_collectorIds","_collectorIdNext","_pools","_eventId","objName","Object","call","_poolEntropy","_poolStrength","_fireEvent","max","_strength","getProgress","entropyRequired","_PARANOIA_LEVELS","_BITS_PER_RESEED","_nextReseed","startCollectors","_collectorsStarted","addEventListener","_loadTimeCollector","_mouseCollector","attachEvent","stopCollectors","removeEventListener","detachEvent","callback","_callbacks","_callbackI","cb","cbs","jsTemp","hasOwnProperty","_reseedCount","_counter","_cipher","progress","seeded","_MILLISECONDS_PER_RESEED","_reseed","seedWords","full","reseedData","strength","ev","clientX","offsetX","clientY","offsetY","arg","cbsTemp","ab","Uint32Array","crypto","getRandomValues","defaults","v","iter","ks","ts","params","rp","p","_add","prp","cachedPbkdf2","ct","encode","decode","obj","comma","split","m","parseInt","target","src","requireSame","_filter","filter","_pbkdf2Cache","cp","firstSalt","localStorage","cookieName","port","protocol","encryptKey","generateKey","storageKey","buildLocalStorageNames","buildName","names","localStorageNames","setItem","getItem","removeItem","on","off","registerFormat","spec","registerSessionStore","getDefaultFormat","getDefaultSessionStore","constructor","_initCrossDomainOption","locParts","baseParts","getAuthorizationUrl","redirectUrl","getVersion","_getCurrentEpoch","_getNextIframeName","getAppKey","_findFormatInternal","findFormat","getCurrentFormat","serializeData","unserializeData","getCurrentSessionStore","saveSessionData","fetchSessionData","removeSessionData","storeTokenData","oldData","getTokenData","sessionId","startTime","clearTokenData","_updateTokenFromDefaultCookie","defaultKey","defaultCookie","defaultToken","_hasOneTimeToken","token","oneTimeToken","expiresIn","accessToken","getAuthorizationHeader","bindEndpointParams","route","RegExp","_isElement","n","nodeName","_isFormElement","_isInputElement","_isFileInputElement","type","_serializeObject","f","iso8601Date","isFinite","tz","getTimezoneOffset","abs","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","_serializeFormElementToObject","File","files","_serializeParams","_unserializeParams","pair","_newXMLHttpRequestStandard","XMLHttpRequest","_newXMLHttpRequestActiveX","ActiveXObject","newXMLHttpRequest","_findFileInput","_isEmptyObject","sendXMLHttpRequest","xhr","method","defaultHeaders","headers","uk","open","setRequestHeader","normalizeHeaderKey","all","prefix","letter","toUpperCase","getHeaders","send","_sendFetchApiRequest","controller","signal","timeoutId","AbortController","setTimeout","abort","Headers","set","credentials","body","then","response","clearTimeout","form","submitterTypes","submittable","checkableTypes","elements","disabled","test","checked","_elementValue","option","index","selectedIndex","one","selected","parentNode","attributes","specified","text","withOptions","func","result","originalOption","_requestVia","XDomainRequest","navigator","appVersion","request","endpoint","base","api","paramsList","xdr","via","authHeader","currentFormat","originalMethod","originalArguments","Array","defaultParams","serializeParams","FormData","append","join","runCallback","status","error","needToRetry","code","retryWithAuthentication","parseArguments","appendParamsToURL","args","_","__method","responseCallback","contentType","responseText","statusText","cleanup","callbackResult","onload","onerror","onprogress","ontimeout","Number","MAX_VALUE","onreadystatechange","responseResult","readyState","getResponseHeader","file","originalName","doc","iframe","action","style","display","encoding","enctype","position","top","appendChild","contentWindow","insertBefore","submit","handler","contents","textContent","innerText","removeChild","get","_generateEndpointMethod","varRegexp","vars","extractVars","endpointParams","resources","verb","generateEndpointMethods","endpoints","items","secure","cookies","substring","exists","toGMTString","batter","cx","escapable","gap","indent","meta","\b","\t","\n","\f","\r","\"","\\","rep","quote","string","lastIndex","holder","mind","toJSON","replacer","space","Error","reviver","walk","eval","SyntaxError","comment","MT"],"mappings":"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"}
\ No newline at end of file
diff --git a/node-lib/data-api/v7/node-mt-data-api.js b/node-lib/data-api/v7/node-mt-data-api.js
new file mode 100644
index 0000000..2c2c97c
--- /dev/null
+++ b/node-lib/data-api/v7/node-mt-data-api.js
@@ -0,0 +1,5785 @@
+/*
+ * Movable Type DataAPI SDK for JavaScript v6
+ * https://github.com/movabletype/mt-data-api-sdk-js
+ * Copyright (c) Six Apart Ltd.
+ * This program is distributed under the terms of the MIT license.
+ *
+ * Includes jQuery JavaScript Library in some parts.
+ * http://jquery.com/
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ */
+
+;(function(window, factory) {
+ var DataAPI = factory(window);
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ module.exports = DataAPI;
+ } else {
+ if ( typeof define === "function" && define.amd ) {
+ define("mt-data-api", [], function() {
+ return DataAPI;
+ });
+ }
+ }
+}(typeof window === "undefined" ? undefined : window, function(window, undefined) {
+
+"use strict";
+
+if (typeof window === 'undefined') {
+ window = {
+ fetch: globalThis.fetch,
+ FormData: globalThis.FormData,
+ File: require('stream').Stream
+ };
+}
+
+/**
+ * @namespace MT
+ */
+
+/**
+ * The MT.DataAPI is a client class for accessing to the Movable Type DataAPI.
+ * @class DataAPI
+ * @constructor
+ * @param {Object} options Options.
+ * @param {String} options.clientId Client ID
+ * This value allows alphanumeric, (_)underscore, (-)dash.
+ * @param {String} options.baseUrl The absolute CGI URL of the DataAPI.
+ * (e.g. http://example.com/mt/mt-data-api.cgi)
+ * @param {String} [options.format] The format to serialize.
+ * @param {String} [options.sessionStore] The session store.
+ * In browser, the cookie is used by default.
+ * @param {String} [options.sessionDomain] The session domain.
+ * When using the cookie, this value is used as cookie domain.
+ * @param {String} [options.sessionPath] The session path
+ * When using the cookie, this value is used as cookie path.
+ * @param {Boolean} [options.async] If true, use asynchronous
+ * XMLHttpRequest. The default value is the true.
+ * @param {Number} [options.timeout] The number of milliseconds a
+ * request can take before automatically being terminated.
+ * The default value is not set up, browser's default is used.
+ * @param {Boolean} [options.cache] If false, add an additional
+ * parameter "_" to request to avoid cache. The default value
+ * is the true.
+ * @param {Boolean} [options.withoutAuthorization] If true,
+ * the "X-MT-Authorization" request header is not sent even if
+ * already got accessToken. The default value is the false.
+ * @param {Boolean} [options.loadPluginEndpoints] If true, load
+ * endpoint data extended by plugin and generate methods to
+ * access that endpoint automatically. The default value is
+ * the true.
+ * (However even if this option's value is false, you are able
+ * to use all the methods to access to core endpoint.)
+ * @param {Boolean} [options.suppressResponseCodes] If true, add
+ * suppressResponseCodes parameter to each request. As a result,
+ * the Data API always returns 200 as HTTP response code.
+ * The default value is not set up.
+ * The default value is the false when requested via XMLHttpRequest
+ * or IFRAME. The default value is the true when requested via
+ * XDomainRequest.
+ * @param {Boolean} [options.crossOrigin] If true, requests are sent as
+ * a cross-domain request. The default value is assigned
+ * automatically by document's URL and baseUrl.
+ * @param {Boolean(} [options.disableFormData] If false,use FormData
+ * class when available that. The default value is the false.
+ */
+var DataAPI = function(options) {
+ var i, k,
+ requireds = ['clientId', 'baseUrl'];
+
+ this.o = {
+ clientId: undefined,
+ baseUrl: undefined,
+ format: undefined,
+ sessionStore: undefined,
+ sessionDomain: undefined,
+ sessionPath: undefined,
+ async: true,
+ timeout: undefined,
+ cache: true,
+ withoutAuthorization: false,
+ processOneTimeTokenOnInitialize: true,
+ loadPluginEndpoints: true,
+ suppressResponseCodes: undefined,
+ crossOrigin: undefined,
+ disableFormData: false
+ };
+ for (k in options) {
+ if (k in this.o) {
+ this.o[k] = options[k];
+ }
+ else {
+ throw 'Unkown option: ' + k;
+ }
+ }
+
+ for (i = 0; i < requireds.length; i++) {
+ if (! this.o[requireds[i]]) {
+ throw 'The "' + requireds[i] + '" is required.';
+ }
+ }
+
+ this.callbacks = {};
+ this.tokenData = null;
+ this.iframeId = 0;
+
+ this._initOptions();
+
+ if (this.o.loadPluginEndpoints) {
+ this.loadEndpoints({
+ excludeComponents: 'core'
+ });
+ }
+
+ if (this.o.processOneTimeTokenOnInitialize) {
+ this._storeOneTimeToken();
+ }
+
+ this.trigger('initialize');
+};
+
+
+/**
+ * The API version.
+ * @property version
+ * @static
+ * @private
+ * @type Number
+ */
+DataAPI.version = 6;
+
+/**
+ * The key of access token of this api object.
+ * This value is used for the session store.
+ * @property accessTokenKey
+ * @static
+ * @private
+ * @type String
+ */
+DataAPI.accessTokenKey = 'mt_data_api_access_token';
+
+/**
+ * The name prefix for iframe that created to upload asset.
+ * @property iframePrefix
+ * @static
+ * @private
+ * @type String
+ */
+DataAPI.iframePrefix = 'mt_data_api_iframe_';
+
+/**
+ * The default format that serializes data.
+ * @property defaultFormat
+ * @static
+ * @private
+ * @type String
+ */
+DataAPI.defaultFormat = 'json';
+
+/**
+ * The default session store.
+ * @property defaultSessionStore
+ * @static
+ * @private
+ * @type String
+ */
+DataAPI.defaultSessionStore = window.document ? 'cookie-encrypted' : 'fs';
+
+/**
+ * Class level callbacks function data.
+ * @property callbacks
+ * @static
+ * @private
+ * @type Object
+ */
+DataAPI.callbacks = {};
+
+/**
+ * Available formats that serialize data.
+ * @property formats
+ * @static
+ * @private
+ * @type Object
+ */
+DataAPI.formats = {
+ json: {
+ fileExtension: 'json',
+ mimeType: 'application/json',
+ serialize: function() {
+ return JSON.stringify.apply(JSON, arguments);
+ },
+ unserialize: function() {
+ return JSON.parse.apply(JSON, arguments);
+ }
+ }
+};
+
+/**
+ * Available session stores.
+ * @property sessionStores
+ * @static
+ * @private
+ * @type Object
+ */
+DataAPI.sessionStores = {};
+;(function() {
+
+function fetchCookieValues(name) {
+ var cookie = Cookie.fetch(name);
+
+ if (! cookie) {
+ return {};
+ }
+
+ try {
+ return JSON.parse(cookie.value);
+ }
+ catch (e) {
+ return {
+ data: cookie.value
+ };
+ }
+}
+
+function fillinDefaultCookieValues(values, o) {
+ var path = values.path,
+ currentPath = extractPath(documentUrl());
+ if (! path || path.length > currentPath.length) {
+ path = currentPath;
+ }
+
+ return {
+ data: values.data,
+ domain: ( typeof o === 'undefined' ? undefined : o.sessionDomain ) || values.domain || undefined,
+ path: ( typeof o === 'undefined' ? undefined : o.sessionPath ) || path
+ };
+}
+
+function documentUrl() {
+ if (! window.location) {
+ return '';
+ }
+
+ var loc;
+
+ // IE may throw an exception when accessing
+ // a field from window.location if document.domain has been set
+ try {
+ loc = window.location.href;
+ } catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ loc = window.document.createElement( "a" );
+ loc.href = "";
+ loc = loc.href;
+ }
+
+ return loc;
+}
+
+function extractPath(url) {
+ var urlRegexp = /^[\w.+-]+:(?:\/\/[^\/?#:]*(?::\d+|)|)(.*)\/[^\/]*$/,
+ match = urlRegexp.exec(url.toLowerCase());
+
+ return match ? match[1] : null;
+}
+
+DataAPI.sessionStores['cookie'] = {
+ save: function(name, data, remember) {
+ var expires = remember ? new Date(new Date().getTime() + 315360000000) : undefined, // after 10 years
+ values = fillinDefaultCookieValues(fetchCookieValues(name), this.o);
+ Cookie.bake(name, JSON.stringify(values), values.domain, values.path, expires);
+ },
+ fetch: function(name) {
+ fetchCookieValues(name).data;
+ },
+ remove: function(name) {
+ var values = fillinDefaultCookieValues(fetchCookieValues(name));
+ Cookie.bake(name, '', values.domain, values.path, new Date(0));
+ }
+};
+
+})();
+
+;(function() {
+
+/** @fileOverview Javascript cryptography implementation.
+ *
+ * Crush to remove comments, shorten variable names and
+ * generally reduce transmission size.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+"use strict";
+/*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
+/*global document, window, escape, unescape */
+
+/** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
+var sjcl = {
+ /** @namespace Symmetric ciphers. */
+ cipher: {},
+
+ /** @namespace Hash functions. Right now only SHA256 is implemented. */
+ hash: {},
+
+ /** @namespace Block cipher modes of operation. */
+ mode: {},
+
+ /** @namespace Miscellaneous. HMAC and PBKDF2. */
+ misc: {},
+
+ /**
+ * @namespace Bit array encoders and decoders.
+ *
+ * @description
+ * The members of this namespace are functions which translate between
+ * SJCL's bitArrays and other objects (usually strings). Because it
+ * isn't always clear which direction is encoding and which is decoding,
+ * the method names are "fromBits" and "toBits".
+ */
+ codec: {},
+
+ /** @namespace Exceptions. */
+ exception: {
+ /** @class Ciphertext is corrupt. */
+ corrupt: function(message) {
+ this.toString = function() { return "CORRUPT: "+this.message; };
+ this.message = message;
+ },
+
+ /** @class Invalid parameter. */
+ invalid: function(message) {
+ this.toString = function() { return "INVALID: "+this.message; };
+ this.message = message;
+ },
+
+ /** @class Bug or missing feature in SJCL. */
+ bug: function(message) {
+ this.toString = function() { return "BUG: "+this.message; };
+ this.message = message;
+ },
+
+ /** @class Something isn't ready. */
+ notReady: function(message) {
+ this.toString = function() { return "NOT READY: "+this.message; };
+ this.message = message;
+ }
+ }
+};
+/** @fileOverview Low-level AES implementation.
+ *
+ * This file contains a low-level implementation of AES, optimized for
+ * size and for efficiency on several browsers. It is based on
+ * OpenSSL's aes_core.c, a public-domain implementation by Vincent
+ * Rijmen, Antoon Bosselaers and Paulo Barreto.
+ *
+ * An older version of this implementation is available in the public
+ * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
+ * Stanford University 2008-2010 and BSD-licensed for liability
+ * reasons.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+/**
+ * Schedule out an AES key for both encryption and decryption. This
+ * is a low-level class. Use a cipher mode to do bulk encryption.
+ *
+ * @constructor
+ * @param {Array} key The key as an array of 4, 6 or 8 words.
+ *
+ * @class Advanced Encryption Standard (low-level interface)
+ */
+sjcl.cipher.aes = function (key) {
+ if (!this._tables[0][0][0]) {
+ this._precompute();
+ }
+
+ var i, j, tmp,
+ encKey, decKey,
+ sbox = this._tables[0][4], decTable = this._tables[1],
+ keyLen = key.length, rcon = 1;
+
+ if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) {
+ throw new sjcl.exception.invalid("invalid aes key size");
+ }
+
+ this._key = [encKey = key.slice(0), decKey = []];
+
+ // schedule encryption keys
+ for (i = keyLen; i < 4 * keyLen + 28; i++) {
+ tmp = encKey[i-1];
+
+ // apply sbox
+ if (i%keyLen === 0 || (keyLen === 8 && i%keyLen === 4)) {
+ tmp = sbox[tmp>>>24]<<24 ^ sbox[tmp>>16&255]<<16 ^ sbox[tmp>>8&255]<<8 ^ sbox[tmp&255];
+
+ // shift rows and add rcon
+ if (i%keyLen === 0) {
+ tmp = tmp<<8 ^ tmp>>>24 ^ rcon<<24;
+ rcon = rcon<<1 ^ (rcon>>7)*283;
+ }
+ }
+
+ encKey[i] = encKey[i-keyLen] ^ tmp;
+ }
+
+ // schedule decryption keys
+ for (j = 0; i; j++, i--) {
+ tmp = encKey[j&3 ? i : i - 4];
+ if (i<=4 || j<4) {
+ decKey[j] = tmp;
+ } else {
+ decKey[j] = decTable[0][sbox[tmp>>>24 ]] ^
+ decTable[1][sbox[tmp>>16 & 255]] ^
+ decTable[2][sbox[tmp>>8 & 255]] ^
+ decTable[3][sbox[tmp & 255]];
+ }
+ }
+};
+
+sjcl.cipher.aes.prototype = {
+ // public
+ /* Something like this might appear here eventually
+ name: "AES",
+ blockSize: 4,
+ keySizes: [4,6,8],
+ */
+
+ /**
+ * Encrypt an array of 4 big-endian words.
+ * @param {Array} data The plaintext.
+ * @return {Array} The ciphertext.
+ */
+ encrypt:function (data) { return this._crypt(data,0); },
+
+ /**
+ * Decrypt an array of 4 big-endian words.
+ * @param {Array} data The ciphertext.
+ * @return {Array} The plaintext.
+ */
+ decrypt:function (data) { return this._crypt(data,1); },
+
+ /**
+ * The expanded S-box and inverse S-box tables. These will be computed
+ * on the client so that we don't have to send them down the wire.
+ *
+ * There are two tables, _tables[0] is for encryption and
+ * _tables[1] is for decryption.
+ *
+ * The first 4 sub-tables are the expanded S-box with MixColumns. The
+ * last (_tables[01][4]) is the S-box itself.
+ *
+ * @private
+ */
+ _tables: [[[],[],[],[],[]],[[],[],[],[],[]]],
+
+ /**
+ * Expand the S-box tables.
+ *
+ * @private
+ */
+ _precompute: function () {
+ var encTable = this._tables[0], decTable = this._tables[1],
+ sbox = encTable[4], sboxInv = decTable[4],
+ i, x, xInv, d=[], th=[], x2, x4, x8, s, tEnc, tDec;
+
+ // Compute double and third tables
+ for (i = 0; i < 256; i++) {
+ th[( d[i] = i<<1 ^ (i>>7)*283 )^i]=i;
+ }
+
+ for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) {
+ // Compute sbox
+ s = xInv ^ xInv<<1 ^ xInv<<2 ^ xInv<<3 ^ xInv<<4;
+ s = s>>8 ^ s&255 ^ 99;
+ sbox[x] = s;
+ sboxInv[s] = x;
+
+ // Compute MixColumns
+ x8 = d[x4 = d[x2 = d[x]]];
+ tDec = x8*0x1010101 ^ x4*0x10001 ^ x2*0x101 ^ x*0x1010100;
+ tEnc = d[s]*0x101 ^ s*0x1010100;
+
+ for (i = 0; i < 4; i++) {
+ encTable[i][x] = tEnc = tEnc<<24 ^ tEnc>>>8;
+ decTable[i][s] = tDec = tDec<<24 ^ tDec>>>8;
+ }
+ }
+
+ // Compactify. Considerable speedup on Firefox.
+ for (i = 0; i < 5; i++) {
+ encTable[i] = encTable[i].slice(0);
+ decTable[i] = decTable[i].slice(0);
+ }
+ },
+
+ /**
+ * Encryption and decryption core.
+ * @param {Array} input Four words to be encrypted or decrypted.
+ * @param dir The direction, 0 for encrypt and 1 for decrypt.
+ * @return {Array} The four encrypted or decrypted words.
+ * @private
+ */
+ _crypt:function (input, dir) {
+ if (input.length !== 4) {
+ throw new sjcl.exception.invalid("invalid aes block size");
+ }
+
+ var key = this._key[dir],
+ // state variables a,b,c,d are loaded with pre-whitened data
+ a = input[0] ^ key[0],
+ b = input[dir ? 3 : 1] ^ key[1],
+ c = input[2] ^ key[2],
+ d = input[dir ? 1 : 3] ^ key[3],
+ a2, b2, c2,
+
+ nInnerRounds = key.length/4 - 2,
+ i,
+ kIndex = 4,
+ out = [0,0,0,0],
+ table = this._tables[dir],
+
+ // load up the tables
+ t0 = table[0],
+ t1 = table[1],
+ t2 = table[2],
+ t3 = table[3],
+ sbox = table[4];
+
+ // Inner rounds. Cribbed from OpenSSL.
+ for (i = 0; i < nInnerRounds; i++) {
+ a2 = t0[a>>>24] ^ t1[b>>16 & 255] ^ t2[c>>8 & 255] ^ t3[d & 255] ^ key[kIndex];
+ b2 = t0[b>>>24] ^ t1[c>>16 & 255] ^ t2[d>>8 & 255] ^ t3[a & 255] ^ key[kIndex + 1];
+ c2 = t0[c>>>24] ^ t1[d>>16 & 255] ^ t2[a>>8 & 255] ^ t3[b & 255] ^ key[kIndex + 2];
+ d = t0[d>>>24] ^ t1[a>>16 & 255] ^ t2[b>>8 & 255] ^ t3[c & 255] ^ key[kIndex + 3];
+ kIndex += 4;
+ a=a2; b=b2; c=c2;
+ }
+
+ // Last round.
+ for (i = 0; i < 4; i++) {
+ out[dir ? 3&-i : i] =
+ sbox[a>>>24 ]<<24 ^
+ sbox[b>>16 & 255]<<16 ^
+ sbox[c>>8 & 255]<<8 ^
+ sbox[d & 255] ^
+ key[kIndex++];
+ a2=a; a=b; b=c; c=d; d=a2;
+ }
+
+ return out;
+ }
+};
+
+/** @fileOverview Arrays of bits, encoded as arrays of Numbers.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+/** @namespace Arrays of bits, encoded as arrays of Numbers.
+ *
+ * @description
+ *
+ * These objects are the currency accepted by SJCL's crypto functions.
+ *
+ *
+ *
+ * Most of our crypto primitives operate on arrays of 4-byte words internally,
+ * but many of them can take arguments that are not a multiple of 4 bytes.
+ * This library encodes arrays of bits (whose size need not be a multiple of 8
+ * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
+ * array of words, 32 bits at a time. Since the words are double-precision
+ * floating point numbers, they fit some extra data. We use this (in a private,
+ * possibly-changing manner) to encode the number of bits actually present
+ * in the last word of the array.
+ *
+ *
+ *
+ * Because bitwise ops clear this out-of-band data, these arrays can be passed
+ * to ciphers like AES which want arrays of words.
+ *
+ */
+sjcl.bitArray = {
+ /**
+ * Array slices in units of bits.
+ * @param {bitArray a} The array to slice.
+ * @param {Number} bstart The offset to the start of the slice, in bits.
+ * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
+ * slice until the end of the array.
+ * @return {bitArray} The requested slice.
+ */
+ bitSlice: function (a, bstart, bend) {
+ a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
+ return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
+ },
+
+ /**
+ * Concatenate two bit arrays.
+ * @param {bitArray} a1 The first array.
+ * @param {bitArray} a2 The second array.
+ * @return {bitArray} The concatenation of a1 and a2.
+ */
+ concat: function (a1, a2) {
+ if (a1.length === 0 || a2.length === 0) {
+ return a1.concat(a2);
+ }
+
+ var out, i, last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
+ if (shift === 32) {
+ return a1.concat(a2);
+ } else {
+ return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
+ }
+ },
+
+ /**
+ * Find the length of an array of bits.
+ * @param {bitArray} a The array.
+ * @return {Number} The length of a, in bits.
+ */
+ bitLength: function (a) {
+ var l = a.length, x;
+ if (l === 0) { return 0; }
+ x = a[l - 1];
+ return (l-1) * 32 + sjcl.bitArray.getPartial(x);
+ },
+
+ /**
+ * Truncate an array.
+ * @param {bitArray} a The array.
+ * @param {Number} len The length to truncate to, in bits.
+ * @return {bitArray} A new array, truncated to len bits.
+ */
+ clamp: function (a, len) {
+ if (a.length * 32 < len) { return a; }
+ a = a.slice(0, Math.ceil(len / 32));
+ var l = a.length;
+ len = len & 31;
+ if (l > 0 && len) {
+ a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
+ }
+ return a;
+ },
+
+ /**
+ * Make a partial word for a bit array.
+ * @param {Number} len The number of bits in the word.
+ * @param {Number} x The bits.
+ * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
+ * @return {Number} The partial word.
+ */
+ partial: function (len, x, _end) {
+ if (len === 32) { return x; }
+ return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
+ },
+
+ /**
+ * Get the number of bits used by a partial word.
+ * @param {Number} x The partial word.
+ * @return {Number} The number of bits used by the partial word.
+ */
+ getPartial: function (x) {
+ return Math.round(x/0x10000000000) || 32;
+ },
+
+ /**
+ * Compare two arrays for equality in a predictable amount of time.
+ * @param {bitArray} a The first array.
+ * @param {bitArray} b The second array.
+ * @return {boolean} true if a == b; false otherwise.
+ */
+ equal: function (a, b) {
+ if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
+ return false;
+ }
+ var x = 0, i;
+ for (i=0; i= 32; shift -= 32) {
+ out.push(carry);
+ carry = 0;
+ }
+ if (shift === 0) {
+ return out.concat(a);
+ }
+
+ for (i=0; i>>shift);
+ carry = a[i] << (32-shift);
+ }
+ last2 = a.length ? a[a.length-1] : 0;
+ shift2 = sjcl.bitArray.getPartial(last2);
+ out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
+ return out;
+ },
+
+ /** xor a block of 4 words together.
+ * @private
+ */
+ _xor4: function(x,y) {
+ return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
+ }
+};
+/** @fileOverview Bit array codec implementations.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+/** @namespace UTF-8 strings */
+sjcl.codec.utf8String = {
+ /** Convert from a bitArray to a UTF-8 string. */
+ fromBits: function (arr) {
+ var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
+ for (i=0; i>> 24);
+ tmp <<= 8;
+ }
+ return decodeURIComponent(escape(out));
+ },
+
+ /** Convert from a UTF-8 string to a bitArray. */
+ toBits: function (str) {
+ str = unescape(encodeURIComponent(str));
+ var out = [], i, tmp=0;
+ for (i=0; i>>bits) >>> 26);
+ if (bits < 6) {
+ ta = arr[i] << (6-bits);
+ bits += 26;
+ i++;
+ } else {
+ ta <<= 6;
+ bits -= 6;
+ }
+ }
+ while ((out.length & 3) && !_noEquals) { out += "="; }
+ return out;
+ },
+
+ /** Convert from a base64 string to a bitArray */
+ toBits: function(str) {
+ str = str.replace(/\s|=/g,'');
+ var out = [], i, bits=0, c = sjcl.codec.base64._chars, ta=0, x;
+ for (i=0; i 26) {
+ bits -= 26;
+ out.push(ta ^ x>>>bits);
+ ta = x << (32-bits);
+ } else {
+ bits += 6;
+ ta ^= x << (32-bits);
+ }
+ }
+ if (bits&56) {
+ out.push(sjcl.bitArray.partial(bits&56, ta, 1));
+ }
+ return out;
+ }
+};
+/** @fileOverview Javascript SHA-256 implementation.
+ *
+ * An older version of this implementation is available in the public
+ * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
+ * Stanford University 2008-2010 and BSD-licensed for liability
+ * reasons.
+ *
+ * Special thanks to Aldo Cortesi for pointing out several bugs in
+ * this code.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+/**
+ * Context for a SHA-256 operation in progress.
+ * @constructor
+ * @class Secure Hash Algorithm, 256 bits.
+ */
+sjcl.hash.sha256 = function (hash) {
+ if (!this._key[0]) { this._precompute(); }
+ if (hash) {
+ this._h = hash._h.slice(0);
+ this._buffer = hash._buffer.slice(0);
+ this._length = hash._length;
+ } else {
+ this.reset();
+ }
+};
+
+/**
+ * Hash a string or an array of words.
+ * @static
+ * @param {bitArray|String} data the data to hash.
+ * @return {bitArray} The hash value, an array of 16 big-endian words.
+ */
+sjcl.hash.sha256.hash = function (data) {
+ return (new sjcl.hash.sha256()).update(data).finalize();
+};
+
+sjcl.hash.sha256.prototype = {
+ /**
+ * The hash's block size, in bits.
+ * @constant
+ */
+ blockSize: 512,
+
+ /**
+ * Reset the hash state.
+ * @return this
+ */
+ reset:function () {
+ this._h = this._init.slice(0);
+ this._buffer = [];
+ this._length = 0;
+ return this;
+ },
+
+ /**
+ * Input several words to the hash.
+ * @param {bitArray|String} data the data to hash.
+ * @return this
+ */
+ update: function (data) {
+ if (typeof data === "string") {
+ data = sjcl.codec.utf8String.toBits(data);
+ }
+ var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
+ ol = this._length,
+ nl = this._length = ol + sjcl.bitArray.bitLength(data);
+ for (i = 512+ol & -512; i <= nl; i+= 512) {
+ this._block(b.splice(0,16));
+ }
+ return this;
+ },
+
+ /**
+ * Complete hashing and output the hash value.
+ * @return {bitArray} The hash value, an array of 16 big-endian words.
+ */
+ finalize:function () {
+ var i, b = this._buffer, h = this._h;
+
+ // Round out and push the buffer
+ b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
+
+ // Round out the buffer to a multiple of 16 words, less the 2 length words.
+ for (i = b.length + 2; i & 15; i++) {
+ b.push(0);
+ }
+
+ // append the length
+ b.push(Math.floor(this._length / 0x100000000));
+ b.push(this._length | 0);
+
+ while (b.length) {
+ this._block(b.splice(0,16));
+ }
+
+ this.reset();
+ return h;
+ },
+
+ /**
+ * The SHA-256 initialization vector, to be precomputed.
+ * @private
+ */
+ _init:[],
+ /*
+ _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
+ */
+
+ /**
+ * The SHA-256 hash key, to be precomputed.
+ * @private
+ */
+ _key:[],
+ /*
+ _key:
+ [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
+ */
+
+
+ /**
+ * Function to precompute _init and _key.
+ * @private
+ */
+ _precompute: function () {
+ var i = 0, prime = 2, factor;
+
+ function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
+
+ outer: for (; i<64; prime++) {
+ for (factor=2; factor*factor <= prime; factor++) {
+ if (prime % factor === 0) {
+ // not a prime
+ continue outer;
+ }
+ }
+
+ if (i<8) {
+ this._init[i] = frac(Math.pow(prime, 1/2));
+ }
+ this._key[i] = frac(Math.pow(prime, 1/3));
+ i++;
+ }
+ },
+
+ /**
+ * Perform one cycle of SHA-256.
+ * @param {bitArray} words one block of words.
+ * @private
+ */
+ _block:function (words) {
+ var i, tmp, a, b,
+ w = words.slice(0),
+ h = this._h,
+ k = this._key,
+ h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
+ h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
+
+ /* Rationale for placement of |0 :
+ * If a value can overflow is original 32 bits by a factor of more than a few
+ * million (2^23 ish), there is a possibility that it might overflow the
+ * 53-bit mantissa and lose precision.
+ *
+ * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
+ * propagates around the loop, and on the hash state h[]. I don't believe
+ * that the clamps on h4 and on h0 are strictly necessary, but it's close
+ * (for h4 anyway), and better safe than sorry.
+ *
+ * The clamps on h[] are necessary for the output to be correct even in the
+ * common case and for short inputs.
+ */
+ for (i=0; i<64; i++) {
+ // load up the input word for this round
+ if (i<16) {
+ tmp = w[i];
+ } else {
+ a = w[(i+1 ) & 15];
+ b = w[(i+14) & 15];
+ tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
+ (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
+ w[i&15] + w[(i+9) & 15]) | 0;
+ }
+
+ tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
+
+ // shift register
+ h7 = h6; h6 = h5; h5 = h4;
+ h4 = h3 + tmp | 0;
+ h3 = h2; h2 = h1; h1 = h0;
+
+ h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
+ }
+
+ h[0] = h[0]+h0 | 0;
+ h[1] = h[1]+h1 | 0;
+ h[2] = h[2]+h2 | 0;
+ h[3] = h[3]+h3 | 0;
+ h[4] = h[4]+h4 | 0;
+ h[5] = h[5]+h5 | 0;
+ h[6] = h[6]+h6 | 0;
+ h[7] = h[7]+h7 | 0;
+ }
+};
+
+
+/** @fileOverview CCM mode implementation.
+ *
+ * Special thanks to Roy Nicholson for pointing out a bug in our
+ * implementation.
+ *
+ * @author Emily Stark
+ * @author Mike Hamburg
+ * @author Dan Boneh
+ */
+
+/** @namespace CTR mode with CBC MAC. */
+sjcl.mode.ccm = {
+ /** The name of the mode.
+ * @constant
+ */
+ name: "ccm",
+
+ /** Encrypt in CCM mode.
+ * @static
+ * @param {Object} prf The pseudorandom function. It must have a block size of 16 bytes.
+ * @param {bitArray} plaintext The plaintext data.
+ * @param {bitArray} iv The initialization value.
+ * @param {bitArray} [adata=[]] The authenticated data.
+ * @param {Number} [tlen=64] the desired tag length, in bits.
+ * @return {bitArray} The encrypted data, an array of bytes.
+ */
+ encrypt: function(prf, plaintext, iv, adata, tlen) {
+ var L, i, out = plaintext.slice(0), tag, w=sjcl.bitArray, ivl = w.bitLength(iv) / 8, ol = w.bitLength(out) / 8;
+ tlen = tlen || 64;
+ adata = adata || [];
+
+ if (ivl < 7) {
+ throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");
+ }
+
+ // compute the length of the length
+ for (L=2; L<4 && ol >>> 8*L; L++) {}
+ if (L < 15 - ivl) { L = 15-ivl; }
+ iv = w.clamp(iv,8*(15-L));
+
+ // compute the tag
+ tag = sjcl.mode.ccm._computeTag(prf, plaintext, iv, adata, tlen, L);
+
+ // encrypt
+ out = sjcl.mode.ccm._ctrMode(prf, out, iv, tag, tlen, L);
+
+ return w.concat(out.data, out.tag);
+ },
+
+ /** Decrypt in CCM mode.
+ * @static
+ * @param {Object} prf The pseudorandom function. It must have a block size of 16 bytes.
+ * @param {bitArray} ciphertext The ciphertext data.
+ * @param {bitArray} iv The initialization value.
+ * @param {bitArray} [[]] adata The authenticated data.
+ * @param {Number} [64] tlen the desired tag length, in bits.
+ * @return {bitArray} The decrypted data.
+ */
+ decrypt: function(prf, ciphertext, iv, adata, tlen) {
+ tlen = tlen || 64;
+ adata = adata || [];
+ var L, i,
+ w=sjcl.bitArray,
+ ivl = w.bitLength(iv) / 8,
+ ol = w.bitLength(ciphertext),
+ out = w.clamp(ciphertext, ol - tlen),
+ tag = w.bitSlice(ciphertext, ol - tlen), tag2;
+
+
+ ol = (ol - tlen) / 8;
+
+ if (ivl < 7) {
+ throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");
+ }
+
+ // compute the length of the length
+ for (L=2; L<4 && ol >>> 8*L; L++) {}
+ if (L < 15 - ivl) { L = 15-ivl; }
+ iv = w.clamp(iv,8*(15-L));
+
+ // decrypt
+ out = sjcl.mode.ccm._ctrMode(prf, out, iv, tag, tlen, L);
+
+ // check the tag
+ tag2 = sjcl.mode.ccm._computeTag(prf, out.data, iv, adata, tlen, L);
+ if (!w.equal(out.tag, tag2)) {
+ throw new sjcl.exception.corrupt("ccm: tag doesn't match");
+ }
+
+ return out.data;
+ },
+
+ /* Compute the (unencrypted) authentication tag, according to the CCM specification
+ * @param {Object} prf The pseudorandom function.
+ * @param {bitArray} plaintext The plaintext data.
+ * @param {bitArray} iv The initialization value.
+ * @param {bitArray} adata The authenticated data.
+ * @param {Number} tlen the desired tag length, in bits.
+ * @return {bitArray} The tag, but not yet encrypted.
+ * @private
+ */
+ _computeTag: function(prf, plaintext, iv, adata, tlen, L) {
+ // compute B[0]
+ var q, mac, field = 0, offset = 24, tmp, i, macData = [], w=sjcl.bitArray, xor = w._xor4;
+
+ tlen /= 8;
+
+ // check tag length and message length
+ if (tlen % 2 || tlen < 4 || tlen > 16) {
+ throw new sjcl.exception.invalid("ccm: invalid tag length");
+ }
+
+ if (adata.length > 0xFFFFFFFF || plaintext.length > 0xFFFFFFFF) {
+ // I don't want to deal with extracting high words from doubles.
+ throw new sjcl.exception.bug("ccm: can't deal with 4GiB or more data");
+ }
+
+ // mac the flags
+ mac = [w.partial(8, (adata.length ? 1<<6 : 0) | (tlen-2) << 2 | L-1)];
+
+ // mac the iv and length
+ mac = w.concat(mac, iv);
+ mac[3] |= w.bitLength(plaintext)/8;
+ mac = prf.encrypt(mac);
+
+
+ if (adata.length) {
+ // mac the associated data. start with its length...
+ tmp = w.bitLength(adata)/8;
+ if (tmp <= 0xFEFF) {
+ macData = [w.partial(16, tmp)];
+ } else if (tmp <= 0xFFFFFFFF) {
+ macData = w.concat([w.partial(16,0xFFFE)], [tmp]);
+ } // else ...
+
+ // mac the data itself
+ macData = w.concat(macData, adata);
+ for (i=0; i bs) {
+ key = Hash.hash(key);
+ }
+
+ for (i=0; i
+ * This random number generator is a derivative of Ferguson and Schneier's
+ * generator Fortuna. It collects entropy from various events into several
+ * pools, implemented by streaming SHA-256 instances. It differs from
+ * ordinary Fortuna in a few ways, though.
+ *
+ *
+ *
+ * Most importantly, it has an entropy estimator. This is present because
+ * there is a strong conflict here between making the generator available
+ * as soon as possible, and making sure that it doesn't "run on empty".
+ * In Fortuna, there is a saved state file, and the system is likely to have
+ * time to warm up.
+ *
+ *
+ *
+ * Second, because users are unlikely to stay on the page for very long,
+ * and to speed startup time, the number of pools increases logarithmically:
+ * a new pool is created when the previous one is actually used for a reseed.
+ * This gives the same asymptotic guarantees as Fortuna, but gives more
+ * entropy to early reseeds.
+ *
+ *
+ *
+ * The entire mechanism here feels pretty klunky. Furthermore, there are
+ * several improvements that should be made, including support for
+ * dedicated cryptographic functions that may be present in some browsers;
+ * state files in local storage; cookies containing randomness; etc. So
+ * look for improvements in future versions.
+ *
+ */
+sjcl.random = {
+ /** Generate several random words, and return them in an array
+ * @param {Number} nwords The number of words to generate.
+ */
+ randomWords: function (nwords, paranoia) {
+ var out = [], i, readiness = this.isReady(paranoia), g;
+
+ if (readiness === this._NOT_READY) {
+ throw new sjcl.exception.notReady("generator isn't seeded");
+ } else if (readiness & this._REQUIRES_RESEED) {
+ this._reseedFromPools(!(readiness & this._READY));
+ }
+
+ for (i=0; i0) {
+ estimatedEntropy++;
+ tmp = tmp >>> 1;
+ }
+ }
+ }
+ this._pools[robin].update([id,this._eventId++,2,estimatedEntropy,t,data.length].concat(data));
+ }
+ break;
+
+ case "string":
+ if (estimatedEntropy === undefined) {
+ /* English text has just over 1 bit per character of entropy.
+ * But this might be HTML or something, and have far less
+ * entropy than English... Oh well, let's just say one bit.
+ */
+ estimatedEntropy = data.length;
+ }
+ this._pools[robin].update([id,this._eventId++,3,estimatedEntropy,t,data.length]);
+ this._pools[robin].update(data);
+ break;
+
+ default:
+ err=1;
+ }
+ if (err) {
+ throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");
+ }
+
+ /* record the new strength */
+ this._poolEntropy[robin] += estimatedEntropy;
+ this._poolStrength += estimatedEntropy;
+
+ /* fire off events */
+ if (oldReady === this._NOT_READY) {
+ if (this.isReady() !== this._NOT_READY) {
+ this._fireEvent("seeded", Math.max(this._strength, this._poolStrength));
+ }
+ this._fireEvent("progress", this.getProgress());
+ }
+ },
+
+ /** Is the generator ready? */
+ isReady: function (paranoia) {
+ var entropyRequired = this._PARANOIA_LEVELS[ (paranoia !== undefined) ? paranoia : this._defaultParanoia ];
+
+ if (this._strength && this._strength >= entropyRequired) {
+ return (this._poolEntropy[0] > this._BITS_PER_RESEED && (new Date()).valueOf() > this._nextReseed) ?
+ this._REQUIRES_RESEED | this._READY :
+ this._READY;
+ } else {
+ return (this._poolStrength >= entropyRequired) ?
+ this._REQUIRES_RESEED | this._NOT_READY :
+ this._NOT_READY;
+ }
+ },
+
+ /** Get the generator's progress toward readiness, as a fraction */
+ getProgress: function (paranoia) {
+ var entropyRequired = this._PARANOIA_LEVELS[ paranoia ? paranoia : this._defaultParanoia ];
+
+ if (this._strength >= entropyRequired) {
+ return 1.0;
+ } else {
+ return (this._poolStrength > entropyRequired) ?
+ 1.0 :
+ this._poolStrength / entropyRequired;
+ }
+ },
+
+ /** start the built-in entropy collectors */
+ startCollectors: function () {
+ if (this._collectorsStarted) { return; }
+
+ if (window.addEventListener) {
+ window.addEventListener("load", this._loadTimeCollector, false);
+ window.addEventListener("mousemove", this._mouseCollector, false);
+ } else if (document.attachEvent) {
+ document.attachEvent("onload", this._loadTimeCollector);
+ document.attachEvent("onmousemove", this._mouseCollector);
+ }
+ else {
+ throw new sjcl.exception.bug("can't attach event");
+ }
+
+ this._collectorsStarted = true;
+ },
+
+ /** stop the built-in entropy collectors */
+ stopCollectors: function () {
+ if (!this._collectorsStarted) { return; }
+
+ if (window.removeEventListener) {
+ window.removeEventListener("load", this._loadTimeCollector, false);
+ window.removeEventListener("mousemove", this._mouseCollector, false);
+ } else if (window.detachEvent) {
+ window.detachEvent("onload", this._loadTimeCollector);
+ window.detachEvent("onmousemove", this._mouseCollector);
+ }
+ this._collectorsStarted = false;
+ },
+
+ /* use a cookie to store entropy.
+ useCookie: function (all_cookies) {
+ throw new sjcl.exception.bug("random: useCookie is unimplemented");
+ },*/
+
+ /** add an event listener for progress or seeded-ness. */
+ addEventListener: function (name, callback) {
+ this._callbacks[name][this._callbackI++] = callback;
+ },
+
+ /** remove an event listener for progress or seeded-ness */
+ removeEventListener: function (name, cb) {
+ var i, j, cbs=this._callbacks[name], jsTemp=[];
+
+ /* I'm not sure if this is necessary; in C++, iterating over a
+ * collection and modifying it at the same time is a no-no.
+ */
+
+ for (j in cbs) {
+ if (cbs.hasOwnProperty(j) && cbs[j] === cb) {
+ jsTemp.push(j);
+ }
+ }
+
+ for (i=0; i= 1 << this._pools.length) {
+ this._pools.push(new sjcl.hash.sha256());
+ this._poolEntropy.push(0);
+ }
+
+ /* how strong was this reseed? */
+ this._poolStrength -= strength;
+ if (strength > this._strength) {
+ this._strength = strength;
+ }
+
+ this._reseedCount ++;
+ this._reseed(reseedData);
+ },
+
+ _mouseCollector: function (ev) {
+ var x = ev.x || ev.clientX || ev.offsetX || 0, y = ev.y || ev.clientY || ev.offsetY || 0;
+ sjcl.random.addEntropy([x,y], 2, "mouse");
+ },
+
+ _loadTimeCollector: function (ev) {
+ sjcl.random.addEntropy((new Date()).valueOf(), 2, "loadtime");
+ },
+
+ _fireEvent: function (name, arg) {
+ var j, cbs=sjcl.random._callbacks[name], cbsTemp=[];
+ /* TODO: there is a race condition between removing collectors and firing them */
+
+ /* I'm not sure if this is necessary; in C++, iterating over a
+ * collection and modifying it at the same time is a no-no.
+ */
+
+ for (j in cbs) {
+ if (cbs.hasOwnProperty(j)) {
+ cbsTemp.push(cbs[j]);
+ }
+ }
+
+ for (j=0; j 4)) {
+ throw new sjcl.exception.invalid("json encrypt: invalid parameters");
+ }
+
+ if (typeof password === "string") {
+ tmp = sjcl.misc.cachedPbkdf2(password, p);
+ password = tmp.key.slice(0,p.ks/32);
+ p.salt = tmp.salt;
+ }
+ if (typeof plaintext === "string") {
+ plaintext = sjcl.codec.utf8String.toBits(plaintext);
+ }
+ if (typeof adata === "string") {
+ adata = sjcl.codec.utf8String.toBits(adata);
+ }
+ prp = new sjcl.cipher[p.cipher](password);
+
+ /* return the json data */
+ j._add(rp, p);
+ rp.key = password;
+
+ /* do the encryption */
+ p.ct = sjcl.mode[p.mode].encrypt(prp, plaintext, p.iv, adata, p.ts);
+
+ //return j.encode(j._subtract(p, j.defaults));
+ return j.encode(p);
+ },
+
+ /** Simple decryption function.
+ * @param {String|bitArray} password The password or key.
+ * @param {String} ciphertext The ciphertext to decrypt.
+ * @param {Object} [params] Additional non-default parameters.
+ * @param {Object} [rp] A returned object with filled parameters.
+ * @return {String} The plaintext.
+ * @throws {sjcl.exception.invalid} if a parameter is invalid.
+ * @throws {sjcl.exception.corrupt} if the ciphertext is corrupt.
+ */
+ decrypt: function (password, ciphertext, params, rp) {
+ params = params || {};
+ rp = rp || {};
+
+ var j = sjcl.json, p = j._add(j._add(j._add({},j.defaults),j.decode(ciphertext)), params, true), ct, tmp, prp, adata=p.adata;
+ if (typeof p.salt === "string") {
+ p.salt = sjcl.codec.base64.toBits(p.salt);
+ }
+ if (typeof p.iv === "string") {
+ p.iv = sjcl.codec.base64.toBits(p.iv);
+ }
+
+ if (!sjcl.mode[p.mode] ||
+ !sjcl.cipher[p.cipher] ||
+ (typeof password === "string" && p.iter <= 100) ||
+ (p.ts !== 64 && p.ts !== 96 && p.ts !== 128) ||
+ (p.ks !== 128 && p.ks !== 192 && p.ks !== 256) ||
+ (!p.iv) ||
+ (p.iv.length < 2 || p.iv.length > 4)) {
+ throw new sjcl.exception.invalid("json decrypt: invalid parameters");
+ }
+
+ if (typeof password === "string") {
+ tmp = sjcl.misc.cachedPbkdf2(password, p);
+ password = tmp.key.slice(0,p.ks/32);
+ p.salt = tmp.salt;
+ }
+ if (typeof adata === "string") {
+ adata = sjcl.codec.utf8String.toBits(adata);
+ }
+ prp = new sjcl.cipher[p.cipher](password);
+
+ /* do the decryption */
+ ct = sjcl.mode[p.mode].decrypt(prp, p.ct, p.iv, adata, p.ts);
+
+ /* return the json data */
+ j._add(rp, p);
+ rp.key = password;
+
+ return sjcl.codec.utf8String.fromBits(ct);
+ },
+
+ /** Encode a flat structure into a JSON string.
+ * @param {Object} obj The structure to encode.
+ * @return {String} A JSON string.
+ * @throws {sjcl.exception.invalid} if obj has a non-alphanumeric property.
+ * @throws {sjcl.exception.bug} if a parameter has an unsupported type.
+ */
+ encode: function (obj) {
+ var i, out='{', comma='';
+ for (i in obj) {
+ if (obj.hasOwnProperty(i)) {
+ if (!i.match(/^[a-z0-9]+$/i)) {
+ throw new sjcl.exception.invalid("json encode: invalid property name");
+ }
+ out += comma + '"' + i + '":';
+ comma = ',';
+
+ switch (typeof obj[i]) {
+ case 'number':
+ case 'boolean':
+ out += obj[i];
+ break;
+
+ case 'string':
+ out += '"' + escape(obj[i]) + '"';
+ break;
+
+ case 'object':
+ out += '"' + sjcl.codec.base64.fromBits(obj[i],1) + '"';
+ break;
+
+ default:
+ throw new sjcl.exception.bug("json encode: unsupported type");
+ }
+ }
+ }
+ return out+'}';
+ },
+
+ /** Decode a simple (flat) JSON string into a structure. The ciphertext,
+ * adata, salt and iv will be base64-decoded.
+ * @param {String} str The string.
+ * @return {Object} The decoded structure.
+ * @throws {sjcl.exception.invalid} if str isn't (simple) JSON.
+ */
+ decode: function (str) {
+ str = str.replace(/\s/g,'');
+ if (!str.match(/^\{.*\}$/)) {
+ throw new sjcl.exception.invalid("json decode: this isn't json!");
+ }
+ var a = str.replace(/^\{|\}$/g, '').split(/,/), out={}, i, m;
+ for (i=0; i currentPath.length) {
+ path = currentPath;
+ }
+
+ return {
+ encryptKey: values.encryptKey || generateKey(),
+ storageKey: values.storageKey || generateKey(),
+ domain: o.sessionDomain || values.domain || undefined,
+ path: o.sessionPath || path
+ };
+}
+
+function documentUrl() {
+ if (! window.location) {
+ return '';
+ }
+
+ var loc;
+
+ // IE may throw an exception when accessing
+ // a field from window.location if document.domain has been set
+ try {
+ loc = window.location.href;
+ } catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ loc = window.document.createElement( "a" );
+ loc.href = "";
+ loc = loc.href;
+ }
+
+ return loc;
+}
+
+function extractPath(url) {
+ var urlRegexp = /^[\w.+-]+:(?:\/\/[^\/?#:]*(?::\d+|)|)(.*)\/[^\/]*$/,
+ match = urlRegexp.exec(url.toLowerCase());
+
+ return match ? match[1] : null;
+}
+
+// DEPRECATED
+// This method will be removed in future version.
+function buildLocalStorageNames(name, path) {
+ function buildName(path) {
+ return name + ':' + path;
+ }
+
+ var names = [];
+
+ if (! path) {
+ return [name];
+ }
+
+ while (true) {
+ names.push(buildName(path));
+ if (path === '/') {
+ break;
+ }
+ path = path.replace(/[^\/]+\/$/, '');
+ }
+ return names;
+}
+
+// DEPRECATED
+// This method will be removed in future version.
+function localStorageNames(name, o) {
+ return buildLocalStorageNames(name, o.sessionPath || extractPath(documentUrl())+"/");
+}
+
+if (! localStorage) {
+ DataAPI.sessionStores['cookie-encrypted'] = {
+ save: function(){},
+ fetch: function(){},
+ remove: function(){}
+ };
+}
+else {
+ DataAPI.sessionStores['cookie-encrypted'] = {
+ save: function(name, data, remember) {
+ var expires = remember ? new Date(new Date().getTime() + 315360000000) : undefined, // after 10 years
+ values = fillinDefaultCookieValues(fetchCookieValues(name), this.o);
+
+ Cookie.bake(cookieName(name), JSON.stringify(values), values.domain, values.path, expires);
+ localStorage.setItem(values.storageKey, sjcl.encrypt(values.encryptKey, data));
+ },
+ fetch: function(name) {
+ var values = fetchCookieValues(name),
+ i, names, data;
+
+ // Backward compatibility
+ if (! values.storageKey) {
+ names = localStorageNames(name, this.o);
+ for (i = 0; i < names.length; i++) {
+ if (localStorage.getItem(names[i])) {
+ values.storageKey = names[i];
+ break;
+ }
+ }
+ }
+
+ data = localStorage.getItem(values.storageKey);
+
+ try {
+ return sjcl.decrypt(values.encryptKey, data);
+ }
+ catch (e) {
+ }
+
+ return null;
+ },
+ remove: function(name) {
+ var values = fillinDefaultCookieValues(fetchCookieValues(name), this.o);
+
+ Cookie.bake(cookieName(name), '', values.domain, values.path, new Date(0));
+
+ if (values.storageKey) {
+ localStorage.removeItem(values.storageKey);
+ }
+ }
+ };
+}
+
+})();
+
+
+/**
+ * Register callback to class.
+ * @method on
+ * @static
+ * @param {String} key Event name
+ * @param {Function} callback Callback function
+ * @category core
+ * @example
+ * var callback = function() {
+ * // Do stuff
+ * };
+ * DataAPI.on(eventName, callback);
+ */
+DataAPI.on = function(key, callback) {
+ if (! this.callbacks[key]) {
+ this.callbacks[key] = [];
+ }
+
+ this.callbacks[key].push(callback);
+};
+
+/**
+ * Deregister callback from class.
+ * @method off
+ * @static
+ * @param {String} key Event name
+ * @param {Function} callback Callback function
+ * @category core
+ * @example
+ * DataAPI.off(eventName, callback);
+ */
+DataAPI.off = function(key, callback) {
+ var i, callbacks;
+
+ if (callback) {
+ callbacks = this.callbacks[key] || [];
+
+ for (i = 0; i < callbacks.length; i++) {
+ if (callbacks[i] === callback) {
+ callbacks.splice(i, 1);
+ break;
+ }
+ }
+ }
+ else {
+ delete this.callbacks[key];
+ }
+};
+
+/**
+ * Register formats that serialize data.
+ * @method registerFormat
+ * @static
+ * @param {String} key Format name
+ * @param {Object} spec
+ * @param {String} spec.fileExtension Extension
+ * @param {String} spec.mimeType MIME type
+ * @param {String} spec.serialize Serializing method
+ * @param {String} spec.unserialize Unserializing method
+ * @category core
+ */
+DataAPI.registerFormat = function(key, spec) {
+ this.formats[key] = spec;
+};
+
+/**
+ * Register session store.
+ * @method registerSessionStore
+ * @static
+ * @param {String} key Session store name
+ * @param {Object} spec
+ * @param {String} spec.save Saving method
+ * @param {String} spec.fetch Fetching method
+ * @param {String} spec.remove Removing method
+ * @category core
+ */
+DataAPI.registerSessionStore = function(key, spec) {
+ this.sessionStores[key] = spec;
+};
+
+/**
+ * Get default format of this class.
+ * @method getDefaultFormat
+ * @static
+ * @return {Object} Format
+ * @category core
+ */
+DataAPI.getDefaultFormat = function() {
+ return this.formats[this.defaultFormat];
+};
+
+/**
+ * Get default session store of this class.
+ * @method getDefaultSessionStore
+ * @static
+ * @return {Object} Format
+ * @category core
+ */
+DataAPI.getDefaultSessionStore = function() {
+ return this.sessionStores[this.defaultSessionStore];
+};
+
+DataAPI.prototype = {
+ constructor: DataAPI.prototype.constructor,
+
+ _initOptions: function() {
+ this._initCrossDomainOption();
+ },
+
+ _initCrossDomainOption: function() {
+ var loc, locParts, baseUrl, baseParts,
+ urlRegexp = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
+
+ if ( window.document && typeof this.o.crossOrigin === 'undefined') {
+ // IE may throw an exception when accessing
+ // a field from window.location if document.domain has been set
+ try {
+ loc = window.location.href;
+ } catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ loc = window.document.createElement( "a" );
+ loc.href = "";
+ loc = loc.href;
+ }
+ locParts = urlRegexp.exec( loc.toLowerCase() ) || [];
+
+ baseUrl = this.o.baseUrl.replace(/^\/\//, locParts[1]).toLowerCase();
+ baseParts = urlRegexp.exec( baseUrl );
+
+ this.o.crossOrigin = !!( baseParts &&
+ ( baseParts[ 1 ] !== locParts[ 1 ] || baseParts[ 2 ] !== locParts[ 2 ] ||
+ ( baseParts[ 3 ] || ( baseParts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+ ( locParts[ 3 ] || ( locParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+ );
+ }
+ },
+
+ /**
+ * Get authorization URL.
+ * @method getAuthorizationUrl
+ * @param {String} redirectUrl The user is redirected to this URL with "#_login" if authorization succeeded.
+ * @return {String} Authorization URL
+ * @category core
+ */
+ getAuthorizationUrl: function(redirectUrl) {
+ return this.o.baseUrl.replace(/\/*$/, '/') +
+ 'v' + this.getVersion() +
+ '/authorization' +
+ '?clientId=' + this.o.clientId +
+ '&redirectUrl=' + redirectUrl;
+ },
+
+ _getCurrentEpoch: function() {
+ return Math.round(new Date().getTime() / 1000);
+ },
+
+ _getNextIframeName: function() {
+ return this.constructor.iframePrefix + (++this.iframeId);
+ },
+
+ /**
+ * Get API version.
+ * @method getVersion
+ * @return {String} API version
+ * @category core
+ */
+ getVersion: function() {
+ return this.constructor.version;
+ },
+
+ /**
+ * Get application key of this object.
+ * @method getAppKey
+ * @return {String} Application key
+ * This value is used for the session store.
+ * @category core
+ */
+ getAppKey: function() {
+ return this.constructor.accessTokenKey + '_' + this.o.clientId;
+ },
+
+ _findFormatInternal: function(mimeType) {
+ if (! mimeType) {
+ return null;
+ }
+
+ for (var k in this.constructor.formats) {
+ if (this.constructor.formats[k].mimeType === mimeType) {
+ return this.constructor.formats[k];
+ }
+ }
+
+ return null;
+ },
+
+ /**
+ * Get format by MIME Type.
+ * @method findFormat
+ * @param {String} mimeType MIME Type
+ * @return {Object|null} Format. Return null if any format is not found.
+ * @category core
+ */
+ findFormat: function(mimeType) {
+ var format = this._findFormatInternal(mimeType);
+ if (! format && mimeType.indexOf(';')) {
+ format = this._findFormatInternal(mimeType.replace(/\s*;.*/, ''));
+ }
+
+ return format;
+ },
+
+ /**
+ * Get current format of this object.
+ * @method getCurrentFormat
+ * @return {Object} Format
+ * @category core
+ */
+ getCurrentFormat: function() {
+ return this.constructor.formats[this.o.format] ||
+ this.constructor.getDefaultFormat();
+ },
+
+ /**
+ * Serialize data.
+ * @method serializeData
+ * @param {Object} data The data to serialize
+ * @return {String} Serialized data
+ * @category core
+ */
+ serializeData: function() {
+ return this.getCurrentFormat().serialize.apply(this, arguments);
+ },
+
+ /**
+ * Unserialize data.
+ * @method unserializeData
+ * @param {String} data The data to unserialize
+ * @return {Object} Unserialized data
+ * @category core
+ */
+ unserializeData: function() {
+ return this.getCurrentFormat().unserialize.apply(this, arguments);
+ },
+
+ /**
+ * Get current session store of this object.
+ * @method getCurrentSessionStore
+ * @return {Object} Session store
+ * @category core
+ */
+ getCurrentSessionStore: function() {
+ return this.constructor.sessionStores[this.o.sessionStore] ||
+ this.constructor.getDefaultSessionStore();
+ },
+
+ /**
+ * Save session data.
+ * @method saveSessionData
+ * @param {String} name The name of session
+ * @param {Object} data The data to save
+ * @category core
+ */
+ saveSessionData: function() {
+ return this.getCurrentSessionStore().save.apply(this, arguments);
+ },
+
+ /**
+ * Fetch session data.
+ * @method fetchSessionData
+ * @param {String} name The name of session
+ * @return {String} The data fetched
+ * @category core
+ */
+ fetchSessionData: function() {
+ return this.getCurrentSessionStore().fetch.apply(this, arguments);
+ },
+
+ /**
+ * Remove session data.
+ * @method removeSessionData
+ * @param {String} name The name of session
+ * @category core
+ */
+ removeSessionData: function() {
+ return this.getCurrentSessionStore().remove.apply(this, arguments);
+ },
+
+ /**
+ * Store token data via current session store.
+ * @method storeTokenData
+ * @param {Object} tokenData The token data
+ * @param {String} tokenData.accessToken access token
+ * @param {String} tokenData.expiresIn The number of seconds
+ * until access token becomes invalid
+ * @param {String} [tokenData.sessionId] session ID
+ * @category core
+ */
+ storeTokenData: function(tokenData) {
+ var oldData = this.getTokenData();
+ if (! tokenData.sessionId && oldData && oldData.sessionId) {
+ tokenData.sessionId = oldData.sessionId;
+ }
+
+ tokenData.startTime = this._getCurrentEpoch();
+ this.saveSessionData(
+ this.getAppKey(),
+ this.serializeData(tokenData),
+ tokenData.sessionId && tokenData.remember
+ );
+ this.tokenData = tokenData;
+ },
+
+ /**
+ * Clear token data from object and session store.
+ * @method clearTokenData
+ * @category core
+ */
+ clearTokenData: function() {
+ this.removeSessionData(this.getAppKey());
+ this.tokenData = null;
+ },
+
+ _updateTokenFromDefaultCookie: function() {
+ var defaultKey = this.constructor.accessTokenKey,
+ defaultCookie = Cookie.fetch(defaultKey),
+ defaultToken;
+
+ if (! defaultCookie) {
+ return null;
+ }
+
+ Cookie.bake(defaultKey, '', undefined, '/', new Date(0));
+
+ try {
+ defaultToken = this.unserializeData(defaultCookie.value);
+ }
+ catch (e) {
+ return null;
+ }
+
+ this.storeTokenData(defaultToken);
+ return defaultToken;
+ },
+
+ _hasOneTimeToken: function() {
+ return window.location && window.location.hash.indexOf('#_ott_') === 0;
+ },
+
+ _storeOneTimeToken: function() {
+ var token, m;
+
+ if (! window.location) {
+ return undefined;
+ }
+
+ m = window.location.hash.match(/^#_ott_(.*)/);
+ if (! m) {
+ return undefined;
+ }
+
+ token = {
+ oneTimeToken: m[1]
+ };
+ window.location.hash = '#_login';
+
+ this.storeTokenData(token);
+ return token;
+ },
+
+ /**
+ * Get token data via current session store.
+ * @method getTokenData
+ * @return {Object} Token data
+ * @category core
+ */
+ getTokenData: function() {
+ var token = this.tokenData;
+
+ if (! token) {
+ if (window.location) {
+ if (window.location.hash === '#_login') {
+ try {
+ token = this._updateTokenFromDefaultCookie();
+ }
+ catch (e) {
+ }
+ }
+ else if (this._hasOneTimeToken()) {
+ token = this._storeOneTimeToken();
+ }
+ }
+
+ if (! token) {
+ try {
+ token = this.unserializeData(this.fetchSessionData(this.getAppKey()));
+ }
+ catch (e) {
+ }
+ }
+ }
+
+ if (token &&
+ 'startTime' in token &&
+ 'expiresIn' in token &&
+ (token.startTime + token.expiresIn < this._getCurrentEpoch())) {
+ delete token.accessToken;
+ delete token.startTime;
+ delete token.expiresIn;
+ }
+
+ return this.tokenData = token || null;
+ },
+
+ /**
+ * Get authorization request header.
+ * @method getAuthorizationHeader
+ * @return {String|null} Header string. Return null if api object has no token.
+ * @category core
+ */
+ getAuthorizationHeader: function(key) {
+ var tokenData = this.getTokenData();
+ if (tokenData) {
+ return 'MTAuth ' + key + '=' + (tokenData[key] || '');
+ }
+
+ return '';
+ },
+
+ /**
+ * Bind parameters to route spec.
+ * @method bindEndpointParams
+ * @param {String} route Specification of route
+ * @param {Object} params parameters
+ * @param {Number|Object|Function} params.{key} Value to bind
+ * @return {String} Endpoint to witch parameters was bound
+ * @example
+ * api.bindEndpointParams('/sites/:site_id/entries/:entry_id/comments/:comment_id', {
+ * blog_id: 1,
+ * entry_id: {id: 1},
+ * comment_id: functioin(){ return 1; }
+ * });
+ * @category core
+ */
+ bindEndpointParams: function(route, params) {
+ var k, v;
+
+ for (k in params) {
+ v = params[k];
+ if (typeof v === 'object') {
+ if (typeof v.id === 'function') {
+ v = v.id();
+ }
+ else {
+ v = v.id;
+ }
+ }
+ if (typeof v === 'function') {
+ v = v();
+ }
+ route = route.replace(new RegExp(':' + k), v);
+ }
+ return route;
+ },
+
+ _isElement: function(e, name) {
+ if (! e || typeof e !== 'object') {
+ return false;
+ }
+ var n = e.nodeName;
+ return n && n.toLowerCase() === name;
+ },
+
+ _isFormElement: function(e) {
+ return this._isElement(e, 'form');
+ },
+
+ _isInputElement: function(e) {
+ return this._isElement(e, 'input');
+ },
+
+ _isFileInputElement: function(e) {
+ return this._isInputElement(e) && e.type.toLowerCase() === 'file';
+ },
+
+ _serializeObject: function(v) {
+ function f(n) {
+ return n < 10 ? '0' + n : n;
+ }
+
+ function iso8601Date(v) {
+ if (! isFinite(v.valueOf())) {
+ return '';
+ }
+
+ var off,
+ tz = v.getTimezoneOffset();
+ if(tz === 0) {
+ off = 'Z';
+ }
+ else {
+ off = (tz > 0 ? '-': '+');
+ tz = Math.abs(tz);
+ off += f(Math.floor(tz / 60)) + ':' + f(tz % 60);
+ }
+
+ return v.getFullYear() + '-' +
+ f(v.getMonth() + 1) + '-' +
+ f(v.getDate()) + 'T' +
+ f(v.getHours()) + ':' +
+ f(v.getMinutes()) + ':' +
+ f(v.getSeconds()) + off;
+ }
+
+ if (this._isFormElement(v)) {
+ v = this._serializeFormElementToObject(v);
+ }
+
+ var type = typeof v;
+ if (type === 'undefined' || v === null || (type === 'number' && ! isFinite(v))) {
+ return '';
+ }
+ else if (type === 'boolean') {
+ return v ? '1' : '';
+ }
+ else if (v instanceof Date) {
+ return iso8601Date(v);
+ }
+ else if (window.File && v instanceof window.File) {
+ return v;
+ }
+ else if (this._isFileInputElement(v)) {
+ return v.files[0];
+ }
+ else if (type === 'object') {
+ return this.serializeData(v, function(key, value) {
+ if (this[key] instanceof Date) {
+ return iso8601Date(this[key]);
+ }
+ return value;
+ });
+ }
+ else {
+ return v;
+ }
+ },
+
+ _serializeParams: function(params) {
+ if (! params) {
+ return params;
+ }
+ if (typeof params === 'string') {
+ return params;
+ }
+ if (this._isFormElement(params)) {
+ params = this._serializeFormElementToObject(params);
+ }
+
+ var k,
+ str = '';
+ for (k in params) {
+ if (! params.hasOwnProperty(k)) {
+ continue;
+ }
+ if (str) {
+ str += '&';
+ }
+
+ str +=
+ encodeURIComponent(k) + '=' +
+ encodeURIComponent(this._serializeObject(params[k]));
+ }
+ return str;
+ },
+
+ _unserializeParams: function(params) {
+ if (typeof params !== 'string') {
+ return params;
+ }
+
+ var i, pair,
+ data = {},
+ values = params.split('&');
+
+ for(i = 0; i < values.length; i++) {
+ pair = values[i].split('=');
+ data[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
+ }
+
+ return data;
+ },
+
+ _newXMLHttpRequestStandard: function() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+ },
+
+ _newXMLHttpRequestActiveX: function() {
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch( e ) {}
+ },
+
+ /**
+ * Create XMLHttpRequest by higher browser compatibility way.
+ * @method newXMLHttpRequest
+ * @return {XMLHttpRequest} Created XMLHttpRequest
+ * @category core
+ */
+ newXMLHttpRequest: function() {
+ return this._newXMLHttpRequestStandard() ||
+ this._newXMLHttpRequestActiveX() ||
+ false;
+ },
+
+ _findFileInput: function(params) {
+ if (typeof params !== 'object') {
+ return null;
+ }
+
+ for (var k in params) {
+ if (this._isFileInputElement(params[k])) {
+ return params[k];
+ }
+ }
+
+ return null;
+ },
+
+ _isEmptyObject: function(o) {
+ if (! o) {
+ return true;
+ }
+
+ for (var k in o) {
+ if (o.hasOwnProperty(k)) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ /**
+ * Send request to specified URL with params via XMLHttpRequest.
+ * @method sendXMLHttpRequest
+ * @param {XMLHttpRequest} xhr XMLHttpRequest object to send request
+ * @param {String} method Request method
+ * @param {String} url Request URL
+ * @param {String|FormData} params Parameters to send with request
+ * @return {XMLHttpRequest}
+ * @category core
+ */
+ sendXMLHttpRequest: function(xhr, method, url, params, defaultHeaders) {
+ var k, headers, uk;
+
+ xhr.open(method, url, this.o.async);
+ for (k in defaultHeaders) {
+ xhr.setRequestHeader(k, defaultHeaders[k]);
+ }
+ if (typeof params === 'string') {
+ xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+ }
+ if (! this.o.crossOrigin) {
+ xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+ }
+
+ function normalizeHeaderKey(all, prefix, letter) {
+ return prefix + letter.toUpperCase();
+ }
+ if (params && params.getHeaders) {
+ headers = params.getHeaders();
+ for (k in headers) {
+ uk = k.replace(/(^|-)([a-z])/g, normalizeHeaderKey);
+ xhr.setRequestHeader(uk, headers[k]);
+ }
+ }
+
+ xhr.send(params);
+
+ return xhr;
+ },
+
+ _sendFetchApiRequest: function(method, url, params, defaultHeaders) {
+ var controller, signal, timeoutId, headers, k, uk, options;
+ controller = new AbortController();
+ signal = controller.signal;
+
+ if (typeof this.o.timeout !== 'undefined') {
+ timeoutId = setTimeout(function (){
+ controller.abort();
+ }, this.o.timeout);
+ }
+
+ headers = new Headers(defaultHeaders);
+ if (typeof params === 'string') {
+ headers.set('Content-Type', 'application/x-www-form-urlencoded');
+ }
+ if (! this.o.crossOrigin) {
+ headers.set('X-Requested-With', 'XMLHttpRequest');
+ }
+ function normalizeHeaderKey(all, prefix, letter) {
+ return prefix + letter.toUpperCase();
+ }
+ if (params && params.getHeaders) {
+ headers = params.getHeaders();
+ for (k in headers) {
+ uk = k.replace(/(^|-)([a-z])/g, normalizeHeaderKey);
+ headers.set(uk, headers[k]);
+ }
+ }
+
+ options = {
+ method: method,
+ headers: headers,
+ credentials: 'include',
+ mode: 'cors',
+ signal: signal
+ };
+ if (method.toLowerCase() !== 'get') {
+ options.body = params;
+ }
+
+ return fetch(url, options).then(function (response){
+ clearTimeout(timeoutId);
+ return response;
+ });
+ },
+
+ _serializeFormElementToObject: function(form) {
+ var i, e, type,
+ data = {},
+ submitterTypes = /^(?:submit|button|image|reset)$/i,
+ submittable = /^(?:input|select|textarea|keygen)/i,
+ checkableTypes = /^(?:checkbox|radio)$/i;
+
+ for (i = 0; i < form.elements.length; i++) {
+ e = form.elements[i];
+ type = e.type;
+
+ if (
+ ! e.name ||
+ e.disabled ||
+ ! submittable.test(e.nodeName) ||
+ submitterTypes.test(type) ||
+ (checkableTypes.test(type) && ! e.checked)
+ ) {
+ continue;
+ }
+
+ if (this._isFileInputElement(e)) {
+ data[e.name] = e;
+ }
+ else {
+ data[e.name] = this._elementValue(e);
+ }
+ }
+
+ return data;
+ },
+
+ _elementValue: function(e) {
+ if (e.nodeName.toLowerCase() === 'select') {
+ var value, option,
+ options = e.options,
+ index = e.selectedIndex,
+ one = e.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // oldIE doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( !option.parentNode.disabled || option.parentNode.nodeName.toLowerCase() !== "optgroup" ) ) {
+
+ // Get the specific value for the option
+ value = option.attributes.value;
+ if (!value || value.specified) {
+ value = option.value;
+ }
+ else {
+ value = e.text;
+ }
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+ else {
+ return e.value;
+ }
+ },
+
+ /**
+ * Execute function with specified options.
+ * @method withOptions
+ * @param {option} option Option to overwrite
+ * @param {Function} func Function to execute
+ * @return Return value of specified func
+ * @example
+ * // The DataAPI object is created with {async: true}
+ * api.withOptions({async: false}, function() {
+ * api.listEntries(1, function() {
+ * // This is executed synchronously
+ * });
+ * });
+ * api.listEntries(1, function() {
+ * // This is executed asynchronously
+ * });
+ * @category core
+ */
+ withOptions: function(option, func) {
+ var k, result,
+ originalOption = this.o,
+ o = {};
+
+ for (k in originalOption) {
+ o[k] = originalOption[k];
+ }
+ for (k in option) {
+ o[k] = option[k];
+ }
+
+ this.o = o;
+ this._initOptions();
+
+ result = func.apply(this);
+
+ this.o = originalOption;
+ this._initOptions();
+
+ return result;
+ },
+
+ _requestVia: function() {
+ return (window.XDomainRequest &&
+ this.o.crossOrigin &&
+ /msie (8|9)\./i.test(window.navigator.appVersion)) ? 'xdr' :
+ (window.XMLHttpRequest ? 'xhr' : 'fetch');
+ },
+
+ /**
+ * Send a request to the endpoint with specified parameters.
+ * @method request
+ * @param {String} method Request method
+ * @param {String} endpoint Endpoint to request
+ * @param {String|Object} [queryParameter]
+ * @param {String|Object|HTMLFormElement|FormData} [requestData]
+ * @param {String|Object|HTMLFormElement} [requestData.{the-key-requires-json-text}] Can specify json-text value by string or object or HTMLFormElement. Serialize automatically if object or HTMLFormElement is passed.
+ * @param {HTMLInputElement|File} [requestData.{the-key-requires-file}] Can specify file value by HTMLInputElement or File object.
+ * @param {Function} [callback]
+ * @return {XMLHttpRequest|null} Return XMLHttpRequest if request is sent
+ * via XMLHttpRequest. Return null if request is not sent
+ * via XMLHttpRequest (e.g. sent via iframe).
+ * @category core
+ */
+ request: function(method, endpoint) {
+ var i, k, v, base,
+ api = this,
+ paramsList = [],
+ params = null,
+ callback = function(){},
+ xhr = null,
+ xdr = null,
+ via = this._requestVia(),
+ tokenData = this.getTokenData(),
+ authHeader = this.getAuthorizationHeader('accessToken'),
+ currentFormat = this.getCurrentFormat(),
+ originalMethod = method,
+ originalArguments = Array.prototype.slice.call(arguments),
+ defaultParams = {},
+ defaultHeaders = {};
+
+ function serializeParams(params) {
+ var k, data;
+
+ if (! api.o.disableFormData && window.FormData) {
+ if (params instanceof window.FormData) {
+ return params;
+ }
+ else if (api._isFormElement(params)) {
+ return new window.FormData(params);
+ }
+ else if (window.FormData && typeof params === 'object') {
+ data = new window.FormData();
+ for (k in params) {
+ data.append(k, api._serializeObject(params[k]));
+ }
+ return data;
+ }
+ }
+
+
+ if (api._isFormElement(params)) {
+ params = api._serializeFormElementToObject(params);
+ for (k in params) {
+ if (params[k] instanceof Array) {
+ params[k] = params[k].join(',');
+ }
+ }
+ }
+
+ if (api._findFileInput(params)) {
+ via = 'iframe';
+
+ data = {};
+ for (k in params) {
+ if (api._isFileInputElement(params[k])) {
+ data[k] = params[k];
+ }
+ else {
+ data[k] = api._serializeObject(params[k]);
+ }
+ }
+ params = data;
+ }
+ else if (typeof params !== 'string') {
+ params = api._serializeParams(params);
+ }
+
+ return params;
+ }
+
+ function runCallback(response) {
+ var status = callback(response);
+ if (status !== false) {
+ if (response.error) {
+ api.trigger('error', response);
+ }
+ }
+ return status;
+ }
+
+ function needToRetry(response) {
+ return response.error &&
+ response.error.code === 401 &&
+ endpoint !== '/token' &&
+ endpoint !== '/authentication';
+ }
+
+ function retryWithAuthentication() {
+ api.request('POST', '/token', function(response) {
+ if (response.error) {
+ parseArguments(originalArguments);
+ return runCallback(response);
+ }
+ else {
+ api.storeTokenData(response);
+ api.request.apply(api, originalArguments);
+ return false;
+ }
+ });
+ }
+
+ function appendParamsToURL(base, params) {
+ if (base.indexOf('?') === -1) {
+ base += '?';
+ }
+ else {
+ base += '&';
+ }
+ return base + api._serializeParams(params);
+ }
+
+ function parseArguments(args) {
+ for (i = 2; i < args.length; i++) {
+ v = args[i];
+ switch (typeof v) {
+ case 'function':
+ callback = v;
+ break;
+ case 'object':
+ if (
+ v &&
+ ! v.nodeName &&
+ ((window.ActiveXObject && v instanceof window.ActiveXObject) ||
+ (window.XMLHttpRequest && v instanceof window.XMLHttpRequest) ||
+ (window.XDomainRequest && v instanceof window.XDomainRequest))
+ ) {
+ if (window.XDomainRequest && v instanceof window.XDomainRequest) {
+ xdr = v;
+ }
+ else {
+ xhr = v;
+ }
+ }
+ else {
+ paramsList.push(v);
+ }
+ break;
+ case 'string':
+ paramsList.push(api._unserializeParams(v));
+ break;
+ }
+ }
+ }
+
+ if (! this.o.withoutAuthorization &&
+ tokenData &&
+ ! tokenData.accessToken &&
+ endpoint !== '/token' &&
+ endpoint !== '/authentication'
+ ) {
+ return retryWithAuthentication();
+ }
+
+ if (authHeader) {
+ defaultHeaders['X-MT-Authorization'] = authHeader;
+ }
+
+ if (endpoint === '/token' || endpoint === '/authentication') {
+ if (tokenData && tokenData.oneTimeToken) {
+ defaultHeaders['X-MT-Authorization'] =
+ api.getAuthorizationHeader('oneTimeToken');
+ delete tokenData.oneTimeToken;
+ }
+ else if (tokenData && tokenData.sessionId) {
+ defaultHeaders['X-MT-Authorization'] =
+ api.getAuthorizationHeader('sessionId');
+ }
+ else if (endpoint === '/token' && originalMethod.toLowerCase() === 'post') {
+ delete defaultHeaders['X-MT-Authorization'];
+ }
+ defaultParams.clientId = api.o.clientId;
+ }
+
+ if (this.o.withoutAuthorization) {
+ delete defaultHeaders['X-MT-Authorization'];
+ }
+
+ if (this.o.suppressResponseCodes ||
+ (typeof this.o.suppressResponseCodes === 'undefined' && via === 'xdr')
+ ) {
+ defaultParams.suppressResponseCodes = true;
+ }
+
+ if (! this.o.cache) {
+ defaultParams._ = new Date().getTime();
+ }
+
+ if (currentFormat !== this.constructor.getDefaultFormat()) {
+ defaultParams.format = currentFormat.fileExtension;
+ }
+
+ if (method.match(/^(put|delete)$/i)) {
+ defaultParams.__method = method;
+ method = 'POST';
+ }
+
+ parseArguments(arguments);
+
+ if (paramsList.length && (method.toLowerCase() === 'get' || paramsList.length >= 2)) {
+ endpoint = appendParamsToURL(endpoint, paramsList.shift());
+ }
+
+ if (paramsList.length) {
+ params = paramsList.shift();
+ }
+
+ if (! this._isEmptyObject(defaultParams)) {
+ if (method.toLowerCase() === 'get') {
+ endpoint = appendParamsToURL(endpoint, defaultParams);
+ }
+ else if (window.FormData && params && params instanceof window.FormData) {
+ for (k in defaultParams) {
+ params.append(k, defaultParams[k]);
+ }
+ }
+ else {
+ params = params || {};
+ for (k in defaultParams) {
+ params[k] = defaultParams[k];
+ }
+ }
+ }
+
+ params = serializeParams(params);
+
+
+ base = this.o.baseUrl.replace(/\/*$/, '/') + 'v' + this.getVersion();
+ endpoint = endpoint.replace(/^\/*/, '/');
+
+
+ function responseCallback(contentType, responseText, status, statusText, cleanup) {
+ var response, mimeType, format, callbackResult;
+
+ try {
+ mimeType = contentType;
+ format = api.findFormat(mimeType) || api.getCurrentFormat();
+ response = format.unserialize(responseText);
+ }
+ catch (e) {
+ response = {
+ error: {
+ code: +status,
+ message: statusText || 'Communication Error'
+ }
+ };
+ }
+
+ if (needToRetry(response)) {
+ retryWithAuthentication();
+ if (cleanup) {
+ cleanup();
+ }
+ return false;
+ }
+
+ if ((! response.error &&
+ endpoint === '/authentication' &&
+ originalMethod.toLowerCase() === 'delete') ||
+ (response.error && response.error.code === 401 && (
+ (endpoint === '/authentication' &&
+ originalMethod.toLowerCase() === 'post') ||
+ (endpoint === '/token' &&
+ originalMethod.toLowerCase() === 'post')))) {
+ api.clearTokenData();
+ }
+ else if (! response.error && (
+ (endpoint === '/authentication' &&
+ originalMethod.toLowerCase() === 'post') ||
+ (endpoint === '/token' &&
+ originalMethod.toLowerCase() === 'post'))) {
+ api.storeTokenData(response);
+ }
+
+ callbackResult = runCallback(response);
+
+ if (callbackResult !== false &&
+ response.error && response.error.code === 401 &&
+ endpoint !== '/authentication') {
+ api.trigger('authorizationRequired', response);
+ }
+ }
+
+ if (via === 'xdr') {
+ if (! this._isEmptyObject(defaultHeaders)) {
+ throw 'Cannot set request header when sending via XDomainRequest';
+ }
+
+ xdr = xdr || new window.XDomainRequest();
+ xdr.onload = function() {
+ responseCallback(xdr.contentType, xdr.responseText, 200);
+ };
+ xdr.onerror = function() {
+ responseCallback(xdr.contentType, xdr.responseText, 404);
+ };
+ xdr.onprogress = function(){};
+ xdr.ontimeout = function() {
+ responseCallback(xdr.contentType, xdr.responseText, 0);
+ };
+ if (typeof this.o.timeout !== 'undefined') {
+ xdr.timeout = this.o.timeout || Number.MAX_VALUE;
+ }
+ xdr.open( method, base + endpoint);
+ xdr.send( api._serializeParams(params) || null );
+ }
+ else if (via === 'xhr') {
+ xhr = xhr || this.newXMLHttpRequest();
+ if (typeof this.o.timeout !== 'undefined') {
+ xhr.timeout = this.o.timeout;
+ }
+ xhr.onreadystatechange = function() {
+ var responseResult, url;
+
+ if (xhr.readyState !== 4) {
+ return;
+ }
+
+ function cleanup() {
+ xhr.onreadystatechange = function(){};
+ }
+
+ responseResult = responseCallback(
+ xhr.getResponseHeader('Content-Type'),
+ xhr.responseText,
+ xhr.status,
+ xhr.statusText,
+ cleanup
+ );
+
+ if (responseResult === false) {
+ return;
+ }
+
+ url = xhr.getResponseHeader('X-MT-Next-Phase-URL');
+ if (url) {
+ xhr.abort();
+ api.sendXMLHttpRequest(xhr, method, base + url, params, defaultHeaders);
+ }
+ else {
+ cleanup();
+ }
+ };
+ return this.sendXMLHttpRequest(xhr, method, base + endpoint, params, defaultHeaders);
+ }
+ else if (via === 'fetch') {
+ this._sendFetchApiRequest(method, base + endpoint, params, defaultHeaders).then(function (response){
+ var responseResult, url;
+ responseResult = response.text().then(function (text){
+ responseCallback(response.headers.get('Content-Type'), text, response.status, response.statusText);
+ });
+
+ if (responseResult === false) {
+ return;
+ }
+
+ url = response.headers.get('X-MT-Next-Phase-URL');
+ if (!url) {
+ return;
+ }
+
+ this._sendFetchApiRequest(method, base + url, params, defaultHeaders);
+ });
+ }
+ else {
+ (function() {
+ var k, file, originalName, input,
+ target = api._getNextIframeName(),
+ doc = window.document,
+ form = doc.createElement('form'),
+ iframe = doc.createElement('iframe');
+
+
+ // Set up a form element
+ form.action = base + endpoint;
+ form.target = target;
+ form.method = method;
+ form.style.display = 'inline';
+ form.encoding = 'multipart/form-data';
+ form.enctype = 'multipart/form-data';
+
+ // Set up a iframe element
+ iframe.name = target;
+ iframe.style.position = 'absolute';
+ iframe.style.top = '-9999px';
+ doc.body.appendChild(iframe);
+ iframe.contentWindow.name = target;
+
+
+ params = params || {};
+ for (k in defaultHeaders) {
+ params[k] = defaultHeaders[k];
+ }
+ params['X-MT-Requested-Via'] = 'IFRAME';
+
+ for (k in params) {
+ if (api._isFileInputElement(params[k])) {
+ file = params[k];
+ originalName = file.name;
+ file.name = k;
+ if (file.parentNode) {
+ file.parentNode.insertBefore(form, file);
+ }
+ else {
+ doc.body.appendChild(form);
+ }
+ form.appendChild(file);
+ continue;
+ }
+
+ input = doc.createElement('input');
+ input.type = 'hidden';
+ input.name = k;
+ input.value = params[k];
+ form.appendChild(input);
+ }
+
+ form.submit();
+
+
+ function handler() {
+ var body = iframe.contentWindow.document.body,
+ contents = body.textContent || body.innerText,
+ response;
+
+ function cleanup() {
+ setTimeout(function() {
+ file.name = originalName;
+ if (form.parentNode) {
+ form.parentNode.insertBefore(file, form);
+ form.parentNode.removeChild(form);
+ }
+ if (iframe.parentNode) {
+ iframe.parentNode.removeChild(iframe);
+ }
+ });
+ }
+
+ try {
+ response = api.unserializeData(contents);
+ }
+ catch (e) {
+ response = {
+ error: {
+ code: 500,
+ message: 'Internal Server Error'
+ }
+ };
+ }
+
+ if (needToRetry(response)) {
+ retryWithAuthentication();
+ cleanup();
+ return;
+ }
+
+ cleanup();
+ runCallback(response);
+ }
+ if ( iframe.addEventListener ) {
+ iframe.addEventListener('load', handler, false);
+ } else if ( iframe.attachEvent ) {
+ iframe.attachEvent('onload', handler);
+ }
+ })();
+
+ return;
+ }
+ },
+
+ /**
+ * Register callback to instance.
+ * @method on
+ * @param {String} key Event name
+ * @param {Function} callback Callback function
+ * @category core
+ * @example
+ * var callback = function() {
+ * // Do stuff
+ * };
+ * api.on(eventName, callback);
+ */
+ on: function() {
+ this.constructor.on.apply(this, arguments);
+ },
+
+ /**
+ * Deregister callback from instance.
+ * @method off
+ * @param {String} key Event name
+ * @param {Function} callback Callback function
+ * @category core
+ * @example
+ * api.off(eventName, callback);
+ */
+ off: function() {
+ this.constructor.off.apply(this, arguments);
+ },
+
+ /**
+ * Trigger event.
+ * First, run class level callbacks. Then, run instance level callbacks.
+ * @method trigger
+ * @param {String} key Event name
+ * @category core
+ */
+ trigger: function(key) {
+ var i,
+ args = Array.prototype.slice.call(arguments, 1),
+ callbacks = (this.constructor.callbacks[key] || []) // Class level
+ .concat(this.callbacks[key] || []); // Instance level
+
+ for (i = 0; i < callbacks.length; i++) {
+ callbacks[i].apply(this, args);
+ }
+ },
+
+ _generateEndpointMethod: function(e) {
+ var api = this,
+ varRegexp = new RegExp(':([a-zA-Z_-]+)', 'g'),
+ vars = null,
+ name = e.id.replace(/_(\w)/g, function(all, letter) {
+ return letter.toUpperCase();
+ });
+
+ function extractVars() {
+ var m, vars = [];
+ while ((m = varRegexp.exec(e.route)) !== null) {
+ vars.push(m[1]);
+ }
+ return vars;
+ }
+
+ api[name] = function() {
+ if (! vars) {
+ vars = extractVars();
+ }
+
+ var args = Array.prototype.slice.call(arguments),
+ endpointParams = {},
+ resources = {},
+ route, i;
+
+ for (i = 0; i < vars.length; i++) {
+ endpointParams[vars[i]] = args.shift();
+ }
+ route = api.bindEndpointParams(e.route, endpointParams);
+
+ if (e.resources) {
+ for (i = 0; i < e.resources.length; i++) {
+ resources[e.resources[i]] = args.shift();
+ }
+ args.push(resources);
+ }
+
+ return api.request.apply(api, [e.verb, route].concat(args));
+ };
+ },
+
+ /**
+ * Generate methods to access endpoint.
+ * @method generateEndpointMethods
+ * @param {Array.Object} endpoints Endpoints to register
+ * @param {Object} endpoints.{i}
+ * @param {String} endpoints.{i}.id Normally, the ID is snake case,
+ * but generated method is camel case.
+ * @param {String} endpoints.{i}.route The template of route
+ * @param {String} endpoints.{i}.verb The HTTP verb
+ * @param {Array.String} [endpoints.{i}.resources] The required resource data
+ * @example
+ * api.generateEndpointMethods([
+ * {
+ * "id": "list_entries",
+ * "route": "/sites/:site_id/entries",
+ * "verb": "GET",
+ * },
+ * {
+ * "id": "create_entry",
+ * "route": "/sites/:site_id/entries",
+ * "verb": "POST",
+ * "resources": [
+ * "entry"
+ * ]
+ * }
+ * ]);
+ * @category core
+ */
+ generateEndpointMethods: function(endpoints) {
+ for (var i = 0; i < endpoints.length; i++) {
+ this._generateEndpointMethod(endpoints[i]);
+ }
+ },
+
+ /**
+ * Load endpoint from DataAPI dynamically.
+ * @method loadEndpoints
+ * @param {Object} [params]
+ * @param {String} [params.includeComponents] Comma separated component IDs to load
+ * @param {String} [params.excludeComponents] Comma separated component IDs to exclude
+ * @example
+ * Load endpoints only from specified module.
+ *
+ * api.loadEndpoints({
+ * includeComponents: 'your-extension-module'
+ * });
+ * api.getDataViaYourExtensionModule(function(response) {
+ * // Do stuff
+ * });
+ *
+ * Load all endpoints except for core.
+ * Since all the endpoints of core is already loaded.
+ *
+ * api.loadEndpoints({
+ * excludeComponents: 'core'
+ * });
+ * api.getDataViaYourExtensionModule(function(response) {
+ * // Do stuff
+ * });
+ * @category core
+ */
+ loadEndpoints: function(params) {
+ var api = this;
+
+ api.withOptions({withoutAuthorization: true, async: false}, function() {
+ api.request('GET', '/endpoints', params, function(response) {
+ if (response.error) {
+ return;
+ }
+
+ api.generateEndpointMethods(response.items);
+ });
+ });
+ }
+};
+
+/**
+ * Triggered on initializing an instance
+ *
+ * @event initialize
+ * @example
+ * DataAPI.on("initialize", function() {
+ * console.log("initializing...");
+ * });
+ **/
+
+/**
+ * Triggered on getting an error of a HTTP request
+ *
+ * @event error
+ * @param {Object} response A response object
+ * @param {Number} response.code The HTTP response code
+ * @param {String} response.message The error message
+ * @param {Object} response.data The data exists only if a current error has optional data
+ * @example
+ * api.on("error", function(response) {
+ * console.log(response.error.message);
+ * });
+ **/
+
+/**
+ * Triggered on receiving the HTTP response code 401 (Authorization required).
+ *
+ * @event authorizationRequired
+ * @param {Object} response A response object
+ * @param {Number} response.code The HTTP response code
+ * @param {Number} response.message The error message
+ * @example
+ * api.on("authorizationRequired", function(response) {
+ * // You will return to current URL after authorization succeeded.
+ * location.href = api.getAuthorizationUrl(location.href);
+ * });
+ **/
+
+var Cookie = function( name, value, domain, path, expires, secure ) {
+ this.name = name;
+ this.value = value;
+ this.domain = domain;
+ this.path = path;
+ this.expires = expires;
+ this.secure = secure;
+};
+
+Cookie.prototype = {
+ /**
+ * Get this cookie from the web browser's store of cookies. Note that if the document.cookie
+ * property has been written to repeatedly by the same client code in excess of 4K (regardless of the size
+ * of the actual cookies), IE 6 will report an empty document.cookie collection of cookies.
+ * @return Cookie The fetched cookie.
+ */
+ fetch: function() {
+ if (! window.document) {
+ return undefined;
+ }
+
+ var prefix = escape( this.name ) + "=",
+ cookies = ("" + window.document.cookie).split( /;\s*/ ),
+ i;
+
+ for( i = 0; i < cookies.length; i++ ) {
+ if( cookies[ i ].indexOf( prefix ) === 0 ) {
+ this.value = unescape( cookies[ i ].substring( prefix.length ) );
+ return this;
+ }
+ }
+
+ return undefined;
+ },
+
+
+ /**
+ * Set and store a cookie in the the web browser's native collection of cookies.
+ * @return Cookie The set and stored ("baked") cookie.
+ */
+ bake: function( value ) {
+ if (! window.document) {
+ return undefined;
+ }
+
+ function exists(x) {
+ return (x === undefined || x === null) ? false : true;
+ }
+
+ if( !exists( this.name ) ) {
+ return undefined;
+ }
+
+ if( exists( value ) ) {
+ this.value = value;
+ }
+ else {
+ value = this.value;
+ }
+
+ var name = escape( this.name ),
+ attributes = ( this.domain ? "; domain=" + escape( this.domain ) : "") +
+ (this.path ? "; path=" + escape( this.path ) : "") +
+ (this.expires ? "; expires=" + this.expires.toGMTString() : "") +
+ (this.secure ? "; secure=1" : ""),
+ batter = name + "=" + escape( value ) + attributes;
+
+ window.document.cookie = batter;
+
+ return this;
+ },
+
+
+ remove: function() {
+ this.expires = new Date( 0 ); // "Thu, 01 Jan 1970 00:00:00 GMT"
+ this.value = "";
+ this.bake();
+ }
+};
+
+Cookie.fetch = function( name ) {
+ var cookie = new this( name );
+ return cookie.fetch();
+};
+
+
+Cookie.bake = function( name, value, domain, path, expires, secure ) {
+ var cookie = new this( name, value, domain, path, expires, secure );
+ return cookie.bake();
+};
+
+Cookie.remove = function( name ) {
+ var cookie = this.fetch( name );
+ if ( cookie ) {
+ return cookie.remove();
+ }
+};
+
+var JSON = window.JSON;
+/*
+ json2.js
+ 2012-10-08
+
+ Public Domain.
+
+ NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+ See http://www.JSON.org/js.html
+
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects. It can be a
+ function or an array of strings.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or ' '),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the value
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array of strings, then it will be
+ used to select the members to be serialized. It filters the results
+ such that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+*/
+
+/*jslint evil: true, regexp: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+ call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+ getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+ lastIndex, length, parse, prototype, push, replace, slice, stringify,
+ test, toJSON, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+if (typeof JSON !== 'object') {
+ JSON = {};
+}
+
+(function () {
+ 'use strict';
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapable.lastIndex = 0;
+ return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+ var c = meta[a];
+ return typeof c === 'string'
+ ? c
+ : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' : '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// Is the value an array?
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0
+ ? '[]'
+ : gap
+ ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
+ : '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ if (typeof rep[i] === 'string') {
+ k = rep[i];
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0
+ ? '{}'
+ : gap
+ ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
+ : '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+ if (typeof JSON.stringify !== 'function') {
+ JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ };
+ }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+ if (typeof JSON.parse !== 'function') {
+ JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ text = String(text);
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' +
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/
+ .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function'
+ ? walk({'': j}, '')
+ : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ };
+ }
+}());
+
+DataAPI.on('initialize', function() {
+ this.generateEndpointMethods(
+ [
+ {
+ "id": "openapi",
+ "route": "/",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "version",
+ "route": "/version",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_endpoints",
+ "route": "/endpoints",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "authorize",
+ "route": "/authorization",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_token",
+ "route": "/token",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_authentication",
+ "route": "/authentication",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "revoke_token",
+ "route": "/token",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "get_user",
+ "route": "/users/:user_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_user",
+ "route": "/users/:user_id",
+ "verb": "PUT",
+ "resources": [
+ "user"
+ ]
+ },
+ {
+ "id": "get_entry",
+ "route": "/sites/:site_id/entries/:entry_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "delete_entry",
+ "route": "/sites/:site_id/entries/:entry_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "publish_entries",
+ "route": "/publish/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_stats_provider",
+ "route": "/sites/:site_id/stats/provider",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_categories",
+ "route": "/sites/:site_id/categories",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_categories_for_entry",
+ "route": "/sites/:site_id/entries/:entry_id/categories",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_parent_categories",
+ "route": "/sites/:site_id/categories/:category_id/parents",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sibling_categories",
+ "route": "/sites/:site_id/categories/:category_id/siblings",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_child_categories",
+ "route": "/sites/:site_id/categories/:category_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_category",
+ "route": "/sites/:site_id/categories",
+ "verb": "POST",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "get_category",
+ "route": "/sites/:site_id/categories/:category_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_category",
+ "route": "/sites/:site_id/categories/:category_id",
+ "verb": "PUT",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "delete_category",
+ "route": "/sites/:site_id/categories/:category_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_categories",
+ "route": "/sites/:site_id/categories/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_folders",
+ "route": "/sites/:site_id/folders",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_parent_folders",
+ "route": "/sites/:site_id/folders/:folder_id/parents",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sibling_folders",
+ "route": "/sites/:site_id/folders/:folder_id/siblings",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_child_folders",
+ "route": "/sites/:site_id/folders/:folder_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_folder",
+ "route": "/sites/:site_id/folders",
+ "verb": "POST",
+ "resources": [
+ "folder"
+ ]
+ },
+ {
+ "id": "get_folder",
+ "route": "/sites/:site_id/folders/:folder_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_folder",
+ "route": "/sites/:site_id/folders/:folder_id",
+ "verb": "PUT",
+ "resources": [
+ "folder"
+ ]
+ },
+ {
+ "id": "delete_folder",
+ "route": "/sites/:site_id/folders/:folder_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_folders",
+ "route": "/sites/:site_id/folders/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_assets",
+ "route": "/sites/:site_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_assets_for_entry",
+ "route": "/sites/:site_id/entries/:entry_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_assets_for_page",
+ "route": "/sites/:site_id/pages/:page_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_assets_for_site_and_tag",
+ "route": "/sites/:site_id/tags/:tag_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_asset",
+ "route": "/sites/:site_id/assets/:asset_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_asset",
+ "route": "/sites/:site_id/assets/:asset_id",
+ "verb": "PUT",
+ "resources": [
+ "asset"
+ ]
+ },
+ {
+ "id": "delete_asset",
+ "route": "/sites/:site_id/assets/:asset_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "get_thumbnail",
+ "route": "/sites/:site_id/assets/:asset_id/thumbnail",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries_for_category",
+ "route": "/sites/:site_id/categories/:category_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries_for_asset",
+ "route": "/sites/:site_id/assets/:asset_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries_for_site_and_tag",
+ "route": "/sites/:site_id/tags/:tag_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "import_entries",
+ "route": "/sites/:site_id/entries/import",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "export_entries",
+ "route": "/sites/:site_id/entries/export",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "preview_entry_by_id",
+ "route": "/sites/:site_id/entries/:entry_id/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_entry",
+ "route": "/sites/:site_id/entries/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_pages",
+ "route": "/sites/:site_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_pages_for_folder",
+ "route": "/sites/:site_id/folders/:folder_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_pages_for_asset",
+ "route": "/sites/:site_id/assets/:asset_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_pages_for_site_and_tag",
+ "route": "/sites/:site_id/tags/:tag_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_page",
+ "route": "/sites/:site_id/pages/:page_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "delete_page",
+ "route": "/sites/:site_id/pages/:page_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "preview_page_by_id",
+ "route": "/sites/:site_id/pages/:page_id/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_page",
+ "route": "/sites/:site_id/pages/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_sites",
+ "route": "/sites",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_blog",
+ "route": "/sites/:site_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_blogs_for_user",
+ "route": "/users/:user_id/sites",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sites_by_parent",
+ "route": "/sites/:site_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "insert_new_blog",
+ "route": "/sites/:site_id",
+ "verb": "POST",
+ "resources": [
+ "blog"
+ ]
+ },
+ {
+ "id": "insert_new_website",
+ "route": "/sites",
+ "verb": "POST",
+ "resources": [
+ "website"
+ ]
+ },
+ {
+ "id": "update_site",
+ "route": "/sites/:site_id",
+ "verb": "PUT",
+ "resources": null
+ },
+ {
+ "id": "delete_site",
+ "route": "/sites/:site_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_roles",
+ "route": "/roles",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_role",
+ "route": "/roles",
+ "verb": "POST",
+ "resources": [
+ "role"
+ ]
+ },
+ {
+ "id": "get_role",
+ "route": "/roles/:role_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_role",
+ "route": "/roles/:role_id",
+ "verb": "PUT",
+ "resources": [
+ "role"
+ ]
+ },
+ {
+ "id": "delete_role",
+ "route": "/roles/:role_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_permissions",
+ "route": "/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_user",
+ "route": "/users/:user_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_site",
+ "route": "/sites/:site_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_role",
+ "route": "/roles/:role_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "grant_permission_to_site",
+ "route": "/sites/:site_id/permissions/grant",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "grant_permission_to_user",
+ "route": "/users/:user_id/permissions/grant",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_permission_from_site",
+ "route": "/sites/:site_id/permissions/revoke",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_permission_from_user",
+ "route": "/users/:user_id/permissions/revoke",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_logs",
+ "route": "/sites/:site_id/logs",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_log",
+ "route": "/sites/:site_id/logs/:log_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_log",
+ "route": "/sites/:site_id/logs",
+ "verb": "POST",
+ "resources": [
+ "log"
+ ]
+ },
+ {
+ "id": "update_log",
+ "route": "/sites/:site_id/logs/:log_id",
+ "verb": "PUT",
+ "resources": [
+ "log"
+ ]
+ },
+ {
+ "id": "delete_log",
+ "route": "/sites/:site_id/logs/:log_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "reset_logs",
+ "route": "/sites/:site_id/logs",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "export_logs",
+ "route": "/sites/:site_id/logs/export",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_tags_for_site",
+ "route": "/sites/:site_id/tags",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_tag_for_site",
+ "route": "/sites/:site_id/tags/:tag_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "rename_tag_for_site",
+ "route": "/sites/:site_id/tags/:tag_id",
+ "verb": "PUT",
+ "resources": null
+ },
+ {
+ "id": "delete_tag_for_site",
+ "route": "/sites/:site_id/tags/:tag_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_themes",
+ "route": "/themes",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_themes_for_site",
+ "route": "/sites/:site_id/themes",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_theme",
+ "route": "/themes/:theme_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_theme_for_site",
+ "route": "/sites/:site_id/themes/:theme_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "apply_theme_to_site",
+ "route": "/sites/:site_id/themes/:theme_id/apply",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "uninstall_theme",
+ "route": "/themes/:theme_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "create_template",
+ "route": "/sites/:site_id/templates",
+ "verb": "POST",
+ "resources": [
+ "template"
+ ]
+ },
+ {
+ "id": "refresh_templates_for_site",
+ "route": "/sites/:site_id/refresh_templates",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_template_by_id",
+ "route": "/sites/:site_id/templates/:template_id/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_template",
+ "route": "/sites/:site_id/templates/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_widgetsets",
+ "route": "/sites/:site_id/widgetsets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_widgetset",
+ "route": "/sites/:site_id/widgetsets",
+ "verb": "POST",
+ "resources": [
+ "widgetset"
+ ]
+ },
+ {
+ "id": "update_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id",
+ "verb": "PUT",
+ "resources": [
+ "widgetset"
+ ]
+ },
+ {
+ "id": "delete_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_widgets",
+ "route": "/sites/:site_id/widgets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_widgets_for_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id/widgets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_widgets",
+ "route": "/sites/:site_id/widgets/:widget_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_widget_for_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id/widgets/:widget_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_widget",
+ "route": "/sites/:site_id/widgets",
+ "verb": "POST",
+ "resources": [
+ "widget"
+ ]
+ },
+ {
+ "id": "update_widget",
+ "route": "/sites/:site_id/widgets/:widget_id",
+ "verb": "PUT",
+ "resources": [
+ "widget"
+ ]
+ },
+ {
+ "id": "delete_widget",
+ "route": "/sites/:site_id/widgets/:widget_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "refresh_widget",
+ "route": "/sites/:site_id/widgets/:widget_id/refresh",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "clone_widget",
+ "route": "/sites/:site_id/widgets/:widget_id/clone",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_users",
+ "route": "/users",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_user",
+ "route": "/users",
+ "verb": "POST",
+ "resources": [
+ "user"
+ ]
+ },
+ {
+ "id": "delete_user",
+ "route": "/users/:user_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "unlock_user",
+ "route": "/users/:user_id/unlock",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "recover_password_for_user",
+ "route": "/users/:user_id/recover_password",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "recover_password",
+ "route": "/recover_password",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_plugins",
+ "route": "/plugins",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_plugin",
+ "route": "/plugins/:plugin_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "enable_plugin",
+ "route": "/plugins/:plugin_id/enable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "disable_plugin",
+ "route": "/plugins/:plugin_id/disable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "enable_all_plugins",
+ "route": "/plugins/enable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "disable_all_plugins",
+ "route": "/plugins/disable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "backup_site",
+ "route": "/sites/:site_id/backup",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_groups",
+ "route": "/groups",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_groups_for_user",
+ "route": "/users/:user_id/groups",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_group",
+ "route": "/groups/:group_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_group",
+ "route": "/groups",
+ "verb": "POST",
+ "resources": [
+ "group"
+ ]
+ },
+ {
+ "id": "update_group",
+ "route": "/groups/:group_id",
+ "verb": "PUT",
+ "resources": [
+ "group"
+ ]
+ },
+ {
+ "id": "delete_group",
+ "route": "/groups/:group_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_group",
+ "route": "/groups/:group_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "grant_permission_to_group",
+ "route": "/groups/:group_id/permissions/grant",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_permission_from_group",
+ "route": "/groups/:group_id/permissions/revoke",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_members_for_group",
+ "route": "/groups/:group_id/members",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_member_for_group",
+ "route": "/groups/:group_id/members/:member_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "add_member_to_group",
+ "route": "/groups/:group_id/members",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "remove_member_from_group",
+ "route": "/groups/:group_id/members/:member_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "authenticate",
+ "route": "/authentication",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "upload_asset",
+ "route": "/assets/upload",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "upload_asset_for_site",
+ "route": "/sites/:site_id/assets/upload",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "create_entry",
+ "route": "/sites/:site_id/entries",
+ "verb": "POST",
+ "resources": [
+ "entry"
+ ]
+ },
+ {
+ "id": "update_entry",
+ "route": "/sites/:site_id/entries/:entry_id",
+ "verb": "PUT",
+ "resources": [
+ "entry"
+ ]
+ },
+ {
+ "id": "create_page",
+ "route": "/sites/:site_id/pages",
+ "verb": "POST",
+ "resources": [
+ "page"
+ ]
+ },
+ {
+ "id": "update_page",
+ "route": "/sites/:site_id/pages/:page_id",
+ "verb": "PUT",
+ "resources": [
+ "page"
+ ]
+ },
+ {
+ "id": "create_category_set",
+ "route": "/sites/:site_id/categorySets",
+ "verb": "POST",
+ "resources": [
+ "category_set"
+ ]
+ },
+ {
+ "id": "get_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id",
+ "verb": "PUT",
+ "resources": [
+ "category_set"
+ ]
+ },
+ {
+ "id": "delete_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_parent_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id/parents",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sibling_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id/siblings",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_child_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories",
+ "verb": "POST",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "get_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id",
+ "verb": "PUT",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "delete_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_content_types",
+ "route": "/sites/:site_id/contentTypes",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_content_type",
+ "route": "/sites/:site_id/contentTypes",
+ "verb": "POST",
+ "resources": [
+ "content_type"
+ ]
+ },
+ {
+ "id": "get_content_type",
+ "route": "/sites/:site_id/contentTypes/:content_type_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_content_type",
+ "route": "/sites/:site_id/contentTypes/:content_type_id",
+ "verb": "PUT",
+ "resources": [
+ "content_type"
+ ]
+ },
+ {
+ "id": "delete_content_type",
+ "route": "/sites/:site_id/contentTypes/:content_type_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_content_fields",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields",
+ "verb": "POST",
+ "resources": [
+ "content_field"
+ ]
+ },
+ {
+ "id": "get_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",
+ "verb": "PUT",
+ "resources": [
+ "content_field"
+ ]
+ },
+ {
+ "id": "delete_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_content_fields",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "create_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data",
+ "verb": "POST",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "get_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",
+ "verb": "PUT",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "delete_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "preview_content_data_by_id",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id/preview",
+ "verb": "POST",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "preview_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/preview",
+ "verb": "POST",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "publish_content_data",
+ "route": "/publish/contentData",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "search",
+ "route": "/search",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_templates",
+ "route": "/sites/:site_id/templates",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_template",
+ "route": "/sites/:site_id/templates/:template_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_template",
+ "route": "/sites/:site_id/templates/:template_id",
+ "verb": "PUT",
+ "resources": [
+ "template"
+ ]
+ },
+ {
+ "id": "delete_template",
+ "route": "/sites/:site_id/templates/:template_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "publish_template",
+ "route": "/sites/:site_id/templates/:template_id/publish",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "refresh_template",
+ "route": "/sites/:site_id/templates/:template_id/refresh",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "clone_template",
+ "route": "/sites/:site_id/templates/:template_id/clone",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_templatemaps",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps",
+ "verb": "POST",
+ "resources": [
+ "templatemap"
+ ]
+ },
+ {
+ "id": "update_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",
+ "verb": "PUT",
+ "resources": [
+ "templatemap"
+ ]
+ },
+ {
+ "id": "delete_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_category_sets",
+ "route": "/sites/:site_id/categorySets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_text_filters",
+ "route": "/textFilters",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries",
+ "route": "/sites/:site_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_pageviews_for_path",
+ "route": "/sites/:site_id/stats/path/pageviews",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_visits_for_path",
+ "route": "/sites/:site_id/stats/path/visits",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_pageviews_for_date",
+ "route": "/sites/:site_id/stats/date/pageviews",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_visits_for_date",
+ "route": "/sites/:site_id/stats/date/visits",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "export_site_theme",
+ "route": "/sites/:site_id/export_theme",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_fields",
+ "route": "/sites/:site_id/fields",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_field",
+ "route": "/sites/:site_id/fields/:field_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_field",
+ "route": "/sites/:site_id/fields",
+ "verb": "POST",
+ "resources": [
+ "field"
+ ]
+ },
+ {
+ "id": "update_field",
+ "route": "/sites/:site_id/fields/:field_id",
+ "verb": "PUT",
+ "resources": [
+ "field"
+ ]
+ },
+ {
+ "id": "delete_field",
+ "route": "/sites/:site_id/fields/:field_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "synchronize_groups",
+ "route": "/groups/synchronize",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "bulk_author_import",
+ "route": "/users/import",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "bulk_author_export",
+ "route": "/users/export",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "synchronize_users",
+ "route": "/users/synchronize",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_formatted_texts",
+ "route": "/sites/:site_id/formatted_texts",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_formatted_text",
+ "route": "/sites/:site_id/formatted_texts/:formatted_text_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_formatted_text",
+ "route": "/sites/:site_id/formatted_texts",
+ "verb": "POST",
+ "resources": [
+ "formatted_text"
+ ]
+ },
+ {
+ "id": "update_formatted_text",
+ "route": "/sites/:site_id/formatted_texts/:formatted_text_id",
+ "verb": "PUT",
+ "resources": [
+ "formatted_text"
+ ]
+ },
+ {
+ "id": "delete_formatted_text",
+ "route": "/sites/:site_id/formatted_texts/:formatted_text_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_comments",
+ "route": "/sites/:site_id/comments",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_comments_for_entry",
+ "route": "/sites/:site_id/entries/:entry_id/comments",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_comment",
+ "route": "/sites/:site_id/entries/:entry_id/comments",
+ "verb": "POST",
+ "resources": [
+ "comment"
+ ]
+ },
+ {
+ "id": "create_reply_comment",
+ "route": "/sites/:site_id/entries/:entry_id/comments/:comment_id/replies",
+ "verb": "POST",
+ "resources": [
+ "comment"
+ ]
+ },
+ {
+ "id": "get_comment",
+ "route": "/sites/:site_id/comments/:comment_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_comment",
+ "route": "/sites/:site_id/comments/:comment_id",
+ "verb": "PUT",
+ "resources": [
+ "comment"
+ ]
+ },
+ {
+ "id": "delete_comment",
+ "route": "/sites/:site_id/comments/:comment_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_comments_for_page",
+ "route": "/sites/:site_id/pages/:page_id/comments",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_comment_for_page",
+ "route": "/sites/:site_id/pages/:page_id/comments",
+ "verb": "POST",
+ "resources": [
+ {
+ "comment": null
+ }
+ ]
+ },
+ {
+ "id": "create_reply_comment_for_page",
+ "route": "/sites/:site_id/pages/:page_id/comments/:comment_id/replies",
+ "verb": "POST",
+ "resources": [
+ "comment"
+ ]
+ }
+]
+
+ );
+});
+
+;(function() {
+ var fs = require("fs"),
+ path = require("path");
+
+ function getPath(o) {
+ return o.sessionPath || path.join(process.env["HOME"], ".mt-data-api.json");
+ }
+
+ function existsSync(p) {
+ return !!fs.existsSync ? fs.existsSync(p) : path.existsSync(p);
+ }
+
+ DataAPI.registerSessionStore('fs', {
+ save: function(name, data) {
+ var p = getPath(this.o),
+ d = {},
+ newFile = true;
+ if (existsSync(p)) {
+ try {
+ d = JSON.parse(fs.readFileSync(p, "utf8"));
+ newFile = false;
+ }
+ catch (e) {
+ // Ignore
+ }
+ }
+ d[name] = data;
+
+ fs.writeFileSync(p, JSON.stringify(d), "utf8");
+ if (newFile) {
+ fs.chmodSync(p, parseInt("600", 8));
+ }
+ },
+ fetch: function(name) {
+ var p = getPath(this.o),
+ d = {};
+ if (existsSync(p)) {
+ try {
+ d = JSON.parse(fs.readFileSync(p, "utf8"));
+ }
+ catch (e) {
+ // Ignore
+ }
+ }
+
+ return d[name];
+ },
+ remove: function(name) {
+ var p = getPath(this.o),
+ d = {};
+ if (existsSync(p)) {
+ d = JSON.parse(fs.readFileSync(p, "utf8"));
+ if (name in d) {
+ delete d[name];
+ fs.writeFileSync(p, JSON.stringify(d), "utf8");
+ }
+ }
+ },
+ });
+})();
+
+window.MT = window.MT || {};
+window.MT.DataAPI = window.MT.DataAPI || DataAPI;
+window.MT.DataAPI['v' + DataAPI.version] = DataAPI;
+
+
+return DataAPI;
+
+}));
diff --git a/src/data-api/v7/endpoints.js b/src/data-api/v7/endpoints.js
new file mode 100644
index 0000000..dc2f676
--- /dev/null
+++ b/src/data-api/v7/endpoints.js
@@ -0,0 +1,5 @@
+DataAPI.on('initialize', function() {
+ this.generateEndpointMethods(
+ // @include ./endpoints.json
+ );
+});
diff --git a/src/data-api/v7/endpoints.json b/src/data-api/v7/endpoints.json
new file mode 100644
index 0000000..08a6afd
--- /dev/null
+++ b/src/data-api/v7/endpoints.json
@@ -0,0 +1,1426 @@
+[
+ {
+ "id": "openapi",
+ "route": "/",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "version",
+ "route": "/version",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_endpoints",
+ "route": "/endpoints",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "authorize",
+ "route": "/authorization",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_token",
+ "route": "/token",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_authentication",
+ "route": "/authentication",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "revoke_token",
+ "route": "/token",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "get_user",
+ "route": "/users/:user_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_user",
+ "route": "/users/:user_id",
+ "verb": "PUT",
+ "resources": [
+ "user"
+ ]
+ },
+ {
+ "id": "get_entry",
+ "route": "/sites/:site_id/entries/:entry_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "delete_entry",
+ "route": "/sites/:site_id/entries/:entry_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "publish_entries",
+ "route": "/publish/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_stats_provider",
+ "route": "/sites/:site_id/stats/provider",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_categories",
+ "route": "/sites/:site_id/categories",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_categories_for_entry",
+ "route": "/sites/:site_id/entries/:entry_id/categories",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_parent_categories",
+ "route": "/sites/:site_id/categories/:category_id/parents",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sibling_categories",
+ "route": "/sites/:site_id/categories/:category_id/siblings",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_child_categories",
+ "route": "/sites/:site_id/categories/:category_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_category",
+ "route": "/sites/:site_id/categories",
+ "verb": "POST",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "get_category",
+ "route": "/sites/:site_id/categories/:category_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_category",
+ "route": "/sites/:site_id/categories/:category_id",
+ "verb": "PUT",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "delete_category",
+ "route": "/sites/:site_id/categories/:category_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_categories",
+ "route": "/sites/:site_id/categories/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_folders",
+ "route": "/sites/:site_id/folders",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_parent_folders",
+ "route": "/sites/:site_id/folders/:folder_id/parents",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sibling_folders",
+ "route": "/sites/:site_id/folders/:folder_id/siblings",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_child_folders",
+ "route": "/sites/:site_id/folders/:folder_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_folder",
+ "route": "/sites/:site_id/folders",
+ "verb": "POST",
+ "resources": [
+ "folder"
+ ]
+ },
+ {
+ "id": "get_folder",
+ "route": "/sites/:site_id/folders/:folder_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_folder",
+ "route": "/sites/:site_id/folders/:folder_id",
+ "verb": "PUT",
+ "resources": [
+ "folder"
+ ]
+ },
+ {
+ "id": "delete_folder",
+ "route": "/sites/:site_id/folders/:folder_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_folders",
+ "route": "/sites/:site_id/folders/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_assets",
+ "route": "/sites/:site_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_assets_for_entry",
+ "route": "/sites/:site_id/entries/:entry_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_assets_for_page",
+ "route": "/sites/:site_id/pages/:page_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_assets_for_site_and_tag",
+ "route": "/sites/:site_id/tags/:tag_id/assets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_asset",
+ "route": "/sites/:site_id/assets/:asset_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_asset",
+ "route": "/sites/:site_id/assets/:asset_id",
+ "verb": "PUT",
+ "resources": [
+ "asset"
+ ]
+ },
+ {
+ "id": "delete_asset",
+ "route": "/sites/:site_id/assets/:asset_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "get_thumbnail",
+ "route": "/sites/:site_id/assets/:asset_id/thumbnail",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries_for_category",
+ "route": "/sites/:site_id/categories/:category_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries_for_asset",
+ "route": "/sites/:site_id/assets/:asset_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries_for_site_and_tag",
+ "route": "/sites/:site_id/tags/:tag_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "import_entries",
+ "route": "/sites/:site_id/entries/import",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "export_entries",
+ "route": "/sites/:site_id/entries/export",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "preview_entry_by_id",
+ "route": "/sites/:site_id/entries/:entry_id/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_entry",
+ "route": "/sites/:site_id/entries/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_pages",
+ "route": "/sites/:site_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_pages_for_folder",
+ "route": "/sites/:site_id/folders/:folder_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_pages_for_asset",
+ "route": "/sites/:site_id/assets/:asset_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_pages_for_site_and_tag",
+ "route": "/sites/:site_id/tags/:tag_id/pages",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_page",
+ "route": "/sites/:site_id/pages/:page_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "delete_page",
+ "route": "/sites/:site_id/pages/:page_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "preview_page_by_id",
+ "route": "/sites/:site_id/pages/:page_id/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_page",
+ "route": "/sites/:site_id/pages/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_sites",
+ "route": "/sites",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_blog",
+ "route": "/sites/:site_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_blogs_for_user",
+ "route": "/users/:user_id/sites",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sites_by_parent",
+ "route": "/sites/:site_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "insert_new_blog",
+ "route": "/sites/:site_id",
+ "verb": "POST",
+ "resources": [
+ "blog"
+ ]
+ },
+ {
+ "id": "insert_new_website",
+ "route": "/sites",
+ "verb": "POST",
+ "resources": [
+ "website"
+ ]
+ },
+ {
+ "id": "update_site",
+ "route": "/sites/:site_id",
+ "verb": "PUT",
+ "resources": null
+ },
+ {
+ "id": "delete_site",
+ "route": "/sites/:site_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_roles",
+ "route": "/roles",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_role",
+ "route": "/roles",
+ "verb": "POST",
+ "resources": [
+ "role"
+ ]
+ },
+ {
+ "id": "get_role",
+ "route": "/roles/:role_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_role",
+ "route": "/roles/:role_id",
+ "verb": "PUT",
+ "resources": [
+ "role"
+ ]
+ },
+ {
+ "id": "delete_role",
+ "route": "/roles/:role_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_permissions",
+ "route": "/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_user",
+ "route": "/users/:user_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_site",
+ "route": "/sites/:site_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_role",
+ "route": "/roles/:role_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "grant_permission_to_site",
+ "route": "/sites/:site_id/permissions/grant",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "grant_permission_to_user",
+ "route": "/users/:user_id/permissions/grant",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_permission_from_site",
+ "route": "/sites/:site_id/permissions/revoke",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_permission_from_user",
+ "route": "/users/:user_id/permissions/revoke",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_logs",
+ "route": "/sites/:site_id/logs",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_log",
+ "route": "/sites/:site_id/logs/:log_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_log",
+ "route": "/sites/:site_id/logs",
+ "verb": "POST",
+ "resources": [
+ "log"
+ ]
+ },
+ {
+ "id": "update_log",
+ "route": "/sites/:site_id/logs/:log_id",
+ "verb": "PUT",
+ "resources": [
+ "log"
+ ]
+ },
+ {
+ "id": "delete_log",
+ "route": "/sites/:site_id/logs/:log_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "reset_logs",
+ "route": "/sites/:site_id/logs",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "export_logs",
+ "route": "/sites/:site_id/logs/export",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_tags_for_site",
+ "route": "/sites/:site_id/tags",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_tag_for_site",
+ "route": "/sites/:site_id/tags/:tag_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "rename_tag_for_site",
+ "route": "/sites/:site_id/tags/:tag_id",
+ "verb": "PUT",
+ "resources": null
+ },
+ {
+ "id": "delete_tag_for_site",
+ "route": "/sites/:site_id/tags/:tag_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_themes",
+ "route": "/themes",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_themes_for_site",
+ "route": "/sites/:site_id/themes",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_theme",
+ "route": "/themes/:theme_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_theme_for_site",
+ "route": "/sites/:site_id/themes/:theme_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "apply_theme_to_site",
+ "route": "/sites/:site_id/themes/:theme_id/apply",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "uninstall_theme",
+ "route": "/themes/:theme_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "create_template",
+ "route": "/sites/:site_id/templates",
+ "verb": "POST",
+ "resources": [
+ "template"
+ ]
+ },
+ {
+ "id": "refresh_templates_for_site",
+ "route": "/sites/:site_id/refresh_templates",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_template_by_id",
+ "route": "/sites/:site_id/templates/:template_id/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "preview_template",
+ "route": "/sites/:site_id/templates/preview",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_widgetsets",
+ "route": "/sites/:site_id/widgetsets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_widgetset",
+ "route": "/sites/:site_id/widgetsets",
+ "verb": "POST",
+ "resources": [
+ "widgetset"
+ ]
+ },
+ {
+ "id": "update_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id",
+ "verb": "PUT",
+ "resources": [
+ "widgetset"
+ ]
+ },
+ {
+ "id": "delete_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_widgets",
+ "route": "/sites/:site_id/widgets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_widgets_for_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id/widgets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_widgets",
+ "route": "/sites/:site_id/widgets/:widget_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_widget_for_widgetset",
+ "route": "/sites/:site_id/widgetsets/:widgetset_id/widgets/:widget_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_widget",
+ "route": "/sites/:site_id/widgets",
+ "verb": "POST",
+ "resources": [
+ "widget"
+ ]
+ },
+ {
+ "id": "update_widget",
+ "route": "/sites/:site_id/widgets/:widget_id",
+ "verb": "PUT",
+ "resources": [
+ "widget"
+ ]
+ },
+ {
+ "id": "delete_widget",
+ "route": "/sites/:site_id/widgets/:widget_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "refresh_widget",
+ "route": "/sites/:site_id/widgets/:widget_id/refresh",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "clone_widget",
+ "route": "/sites/:site_id/widgets/:widget_id/clone",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_users",
+ "route": "/users",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_user",
+ "route": "/users",
+ "verb": "POST",
+ "resources": [
+ "user"
+ ]
+ },
+ {
+ "id": "delete_user",
+ "route": "/users/:user_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "unlock_user",
+ "route": "/users/:user_id/unlock",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "recover_password_for_user",
+ "route": "/users/:user_id/recover_password",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "recover_password",
+ "route": "/recover_password",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_plugins",
+ "route": "/plugins",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_plugin",
+ "route": "/plugins/:plugin_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "enable_plugin",
+ "route": "/plugins/:plugin_id/enable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "disable_plugin",
+ "route": "/plugins/:plugin_id/disable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "enable_all_plugins",
+ "route": "/plugins/enable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "disable_all_plugins",
+ "route": "/plugins/disable",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "backup_site",
+ "route": "/sites/:site_id/backup",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_groups",
+ "route": "/groups",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_groups_for_user",
+ "route": "/users/:user_id/groups",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_group",
+ "route": "/groups/:group_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_group",
+ "route": "/groups",
+ "verb": "POST",
+ "resources": [
+ "group"
+ ]
+ },
+ {
+ "id": "update_group",
+ "route": "/groups/:group_id",
+ "verb": "PUT",
+ "resources": [
+ "group"
+ ]
+ },
+ {
+ "id": "delete_group",
+ "route": "/groups/:group_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_permissions_for_group",
+ "route": "/groups/:group_id/permissions",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "grant_permission_to_group",
+ "route": "/groups/:group_id/permissions/grant",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "revoke_permission_from_group",
+ "route": "/groups/:group_id/permissions/revoke",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_members_for_group",
+ "route": "/groups/:group_id/members",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_member_for_group",
+ "route": "/groups/:group_id/members/:member_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "add_member_to_group",
+ "route": "/groups/:group_id/members",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "remove_member_from_group",
+ "route": "/groups/:group_id/members/:member_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "authenticate",
+ "route": "/authentication",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "upload_asset",
+ "route": "/assets/upload",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "upload_asset_for_site",
+ "route": "/sites/:site_id/assets/upload",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "create_entry",
+ "route": "/sites/:site_id/entries",
+ "verb": "POST",
+ "resources": [
+ "entry"
+ ]
+ },
+ {
+ "id": "update_entry",
+ "route": "/sites/:site_id/entries/:entry_id",
+ "verb": "PUT",
+ "resources": [
+ "entry"
+ ]
+ },
+ {
+ "id": "create_page",
+ "route": "/sites/:site_id/pages",
+ "verb": "POST",
+ "resources": [
+ "page"
+ ]
+ },
+ {
+ "id": "update_page",
+ "route": "/sites/:site_id/pages/:page_id",
+ "verb": "PUT",
+ "resources": [
+ "page"
+ ]
+ },
+ {
+ "id": "create_category_set",
+ "route": "/sites/:site_id/categorySets",
+ "verb": "POST",
+ "resources": [
+ "category_set"
+ ]
+ },
+ {
+ "id": "get_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id",
+ "verb": "PUT",
+ "resources": [
+ "category_set"
+ ]
+ },
+ {
+ "id": "delete_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_parent_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id/parents",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_sibling_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id/siblings",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_child_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id/children",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories",
+ "verb": "POST",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "get_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id",
+ "verb": "PUT",
+ "resources": [
+ "category"
+ ]
+ },
+ {
+ "id": "delete_category_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/:category_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_categories_for_category_set",
+ "route": "/sites/:site_id/categorySets/:category_set_id/categories/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_content_types",
+ "route": "/sites/:site_id/contentTypes",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_content_type",
+ "route": "/sites/:site_id/contentTypes",
+ "verb": "POST",
+ "resources": [
+ "content_type"
+ ]
+ },
+ {
+ "id": "get_content_type",
+ "route": "/sites/:site_id/contentTypes/:content_type_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_content_type",
+ "route": "/sites/:site_id/contentTypes/:content_type_id",
+ "verb": "PUT",
+ "resources": [
+ "content_type"
+ ]
+ },
+ {
+ "id": "delete_content_type",
+ "route": "/sites/:site_id/contentTypes/:content_type_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_content_fields",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields",
+ "verb": "POST",
+ "resources": [
+ "content_field"
+ ]
+ },
+ {
+ "id": "get_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",
+ "verb": "PUT",
+ "resources": [
+ "content_field"
+ ]
+ },
+ {
+ "id": "delete_content_field",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/:content_field_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "permutate_content_fields",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/fields/permutate",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "create_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data",
+ "verb": "POST",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "get_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",
+ "verb": "PUT",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "delete_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "preview_content_data_by_id",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/:content_data_id/preview",
+ "verb": "POST",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "preview_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data/preview",
+ "verb": "POST",
+ "resources": [
+ "content_data"
+ ]
+ },
+ {
+ "id": "publish_content_data",
+ "route": "/publish/contentData",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "search",
+ "route": "/search",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_templates",
+ "route": "/sites/:site_id/templates",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_template",
+ "route": "/sites/:site_id/templates/:template_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_template",
+ "route": "/sites/:site_id/templates/:template_id",
+ "verb": "PUT",
+ "resources": [
+ "template"
+ ]
+ },
+ {
+ "id": "delete_template",
+ "route": "/sites/:site_id/templates/:template_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "publish_template",
+ "route": "/sites/:site_id/templates/:template_id/publish",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "refresh_template",
+ "route": "/sites/:site_id/templates/:template_id/refresh",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "clone_template",
+ "route": "/sites/:site_id/templates/:template_id/clone",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_templatemaps",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps",
+ "verb": "POST",
+ "resources": [
+ "templatemap"
+ ]
+ },
+ {
+ "id": "update_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",
+ "verb": "PUT",
+ "resources": [
+ "templatemap"
+ ]
+ },
+ {
+ "id": "delete_templatemap",
+ "route": "/sites/:site_id/templates/:template_id/templatemaps/:templatemap_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_category_sets",
+ "route": "/sites/:site_id/categorySets",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_content_data",
+ "route": "/sites/:site_id/contentTypes/:content_type_id/data",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_text_filters",
+ "route": "/textFilters",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_entries",
+ "route": "/sites/:site_id/entries",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_pageviews_for_path",
+ "route": "/sites/:site_id/stats/path/pageviews",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_visits_for_path",
+ "route": "/sites/:site_id/stats/path/visits",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_pageviews_for_date",
+ "route": "/sites/:site_id/stats/date/pageviews",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_stats_visits_for_date",
+ "route": "/sites/:site_id/stats/date/visits",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "export_site_theme",
+ "route": "/sites/:site_id/export_theme",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_fields",
+ "route": "/sites/:site_id/fields",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_field",
+ "route": "/sites/:site_id/fields/:field_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_field",
+ "route": "/sites/:site_id/fields",
+ "verb": "POST",
+ "resources": [
+ "field"
+ ]
+ },
+ {
+ "id": "update_field",
+ "route": "/sites/:site_id/fields/:field_id",
+ "verb": "PUT",
+ "resources": [
+ "field"
+ ]
+ },
+ {
+ "id": "delete_field",
+ "route": "/sites/:site_id/fields/:field_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "synchronize_groups",
+ "route": "/groups/synchronize",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "bulk_author_import",
+ "route": "/users/import",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "bulk_author_export",
+ "route": "/users/export",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "synchronize_users",
+ "route": "/users/synchronize",
+ "verb": "POST",
+ "resources": null
+ },
+ {
+ "id": "list_formatted_texts",
+ "route": "/sites/:site_id/formatted_texts",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "get_formatted_text",
+ "route": "/sites/:site_id/formatted_texts/:formatted_text_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_formatted_text",
+ "route": "/sites/:site_id/formatted_texts",
+ "verb": "POST",
+ "resources": [
+ "formatted_text"
+ ]
+ },
+ {
+ "id": "update_formatted_text",
+ "route": "/sites/:site_id/formatted_texts/:formatted_text_id",
+ "verb": "PUT",
+ "resources": [
+ "formatted_text"
+ ]
+ },
+ {
+ "id": "delete_formatted_text",
+ "route": "/sites/:site_id/formatted_texts/:formatted_text_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_comments",
+ "route": "/sites/:site_id/comments",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "list_comments_for_entry",
+ "route": "/sites/:site_id/entries/:entry_id/comments",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_comment",
+ "route": "/sites/:site_id/entries/:entry_id/comments",
+ "verb": "POST",
+ "resources": [
+ "comment"
+ ]
+ },
+ {
+ "id": "create_reply_comment",
+ "route": "/sites/:site_id/entries/:entry_id/comments/:comment_id/replies",
+ "verb": "POST",
+ "resources": [
+ "comment"
+ ]
+ },
+ {
+ "id": "get_comment",
+ "route": "/sites/:site_id/comments/:comment_id",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "update_comment",
+ "route": "/sites/:site_id/comments/:comment_id",
+ "verb": "PUT",
+ "resources": [
+ "comment"
+ ]
+ },
+ {
+ "id": "delete_comment",
+ "route": "/sites/:site_id/comments/:comment_id",
+ "verb": "DELETE",
+ "resources": null
+ },
+ {
+ "id": "list_comments_for_page",
+ "route": "/sites/:site_id/pages/:page_id/comments",
+ "verb": "GET",
+ "resources": null
+ },
+ {
+ "id": "create_comment_for_page",
+ "route": "/sites/:site_id/pages/:page_id/comments",
+ "verb": "POST",
+ "resources": [
+ {
+ "comment": null
+ }
+ ]
+ },
+ {
+ "id": "create_reply_comment_for_page",
+ "route": "/sites/:site_id/pages/:page_id/comments/:comment_id/replies",
+ "verb": "POST",
+ "resources": [
+ "comment"
+ ]
+ }
+]
diff --git a/src/data-api/v7/mt-data-api.js b/src/data-api/v7/mt-data-api.js
new file mode 100644
index 0000000..55c82bb
--- /dev/null
+++ b/src/data-api/v7/mt-data-api.js
@@ -0,0 +1,26 @@
+// @include ../common/header.js
+;(function(window, factory) {
+ var DataAPI = factory(window);
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ module.exports = DataAPI;
+ } else {
+ if ( typeof define === "function" && define.amd ) {
+ define("mt-data-api", [], function() {
+ return DataAPI;
+ });
+ }
+ }
+}(typeof window === "undefined" ? undefined : window, function(window, undefined) {
+
+"use strict";
+
+// @include ../common/core.js
+// @include ../common/cookie.js
+// @include ../common/json.js
+// @include ./endpoints.js
+// @include ../common/exports.js
+
+return DataAPI;
+
+}));
diff --git a/src/data-api/v7/node-mt-data-api.js b/src/data-api/v7/node-mt-data-api.js
new file mode 100644
index 0000000..e2ef94f
--- /dev/null
+++ b/src/data-api/v7/node-mt-data-api.js
@@ -0,0 +1,28 @@
+// @include ../common/header.js
+;(function(window, factory) {
+ var DataAPI = factory(window);
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ module.exports = DataAPI;
+ } else {
+ if ( typeof define === "function" && define.amd ) {
+ define("mt-data-api", [], function() {
+ return DataAPI;
+ });
+ }
+ }
+}(typeof window === "undefined" ? undefined : window, function(window, undefined) {
+
+"use strict";
+
+// @include ../common/window.js
+// @include ../common/core.js
+// @include ../common/cookie.js
+// @include ../common/json.js
+// @include ./endpoints.js
+// @include ../common/sessionstore-fs.js
+// @include ../common/exports.js
+
+return DataAPI;
+
+}));
From c78ccb01e7a7972249dd1c7b35b225aad00ff358 Mon Sep 17 00:00:00 2001
From: Masahiro Iuchi
Date: Fri, 6 Jun 2025 15:33:01 +0900
Subject: [PATCH 2/3] Update grunt-contrib-jasmine for removing phantomjs
npm install grunt-contrib-jasmine@latest
---
package-lock.json | 8698 ++++++++++++++++++++++++++++++++++-----------
package.json | 20 +-
2 files changed, 6612 insertions(+), 2106 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 7686208..77b293e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,7 @@
"grunt-connect-proxy": "0.1.5",
"grunt-contrib-clean": "~0.4.0",
"grunt-contrib-connect": "~5.0.1",
- "grunt-contrib-jasmine": "~0.5.1",
+ "grunt-contrib-jasmine": "^4.0.0",
"grunt-contrib-jshint": "~0.6.0",
"grunt-contrib-uglify": "~0.2.2",
"grunt-contrib-watch": "~0.2.0",
@@ -27,1735 +27,1748 @@
"node": ">=18.0.0"
}
},
- "node_modules/abbrev": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
- "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==",
- "dev": true
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=6.9.0"
}
},
- "node_modules/amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
"dev": true,
"engines": {
- "node": ">=0.4.2"
+ "node": ">=6.9.0"
}
},
- "node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
+ "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
"dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/argparse": {
- "version": "0.1.16",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
- "integrity": "sha512-LjmC2dNpdn2L4UzyoaIr11ELYoLn37ZFy9zObrQFHsSuOepeUEMKnM8w5KL4Tnrp2gy88rRuQt6Ky8Bjml+Baw==",
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
"dependencies": {
- "underscore": "~1.7.0",
- "underscore.string": "~2.4.0"
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/argparse/node_modules/underscore": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
- "integrity": "sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==",
+ "node_modules/@eslint/eslintrc/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "node_modules/argparse/node_modules/underscore.string": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz",
- "integrity": "sha512-yxkabuCaIBnzfIvX3kBxQqCs0ar/bfJwDnFEHJUm/ZrRVhT3IItdRF5cZjARLzEnyQYtIUhsZ2LG2j3HidFOFQ==",
+ "node_modules/@eslint/eslintrc/node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
"engines": {
- "node": "*"
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
- "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.5",
- "is-array-buffer": "^3.0.4"
- },
- "engines": {
- "node": ">= 0.4"
+ "argparse": "^2.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/asn1": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
- "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
- "safer-buffer": "~2.1.0"
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "node_modules/assert-plus": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
- "integrity": "sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw==",
+ "node_modules/@eslint/eslintrc/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
"engines": {
- "node": ">=0.8"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/async": {
- "version": "0.1.22",
- "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
- "integrity": "sha512-2tEzliJmf5fHNafNwQLJXUasGzQCVctvsNkXmnlELHwypU0p08/rHohYvkqKIjyXpx+0rkrYv6QbhJ+UF4QkBg==",
+ "node_modules/@gar/promisify": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
+ "dev": true
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+ "deprecated": "Use @eslint/config-array instead",
"dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.3",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
"engines": {
- "node": "*"
+ "node": ">=10.10.0"
}
},
- "node_modules/available-typed-arrays": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
- "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "node_modules/@humanwhocodes/config-array/node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dev": true,
"dependencies": {
- "possible-typed-array-names": "^1.0.0"
+ "ms": "^2.1.3"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=6.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/aws-sign2": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
- "integrity": "sha512-JnJpAS0p9RmixkOvW2XwDxxzs1bd4/VAGIl6Q0EC5YOo+p+hqIhtDhn/nmFnB/xUNXbLkpE2mOjgVIBRKD4xYw==",
+ "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
"engines": {
"node": "*"
}
},
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "node_modules/@humanwhocodes/config-array/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
- "node_modules/basic-auth": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
- "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "5.1.2"
- },
"engines": {
- "node": ">= 0.8"
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/batch": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
- "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
- "dev": true,
- "license": "MIT"
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true
},
- "node_modules/bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dev": true,
"dependencies": {
- "tweetnacl": "^0.14.3"
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/bl": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz",
- "integrity": "sha512-phbvN+yOk05EGoFcV/0S8N8ShnJqf6VCWRAw5he2gvRwBubFt/OzmcTNGqBt5b7Y4RK3YCgf6jrgGSR0Cwtsgw==",
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"dev": true,
- "dependencies": {
- "readable-stream": "~2.0.5"
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "node_modules/boom": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
- "integrity": "sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q==",
- "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).",
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"dev": true,
- "dependencies": {
- "hoek": "2.x.x"
- },
"engines": {
- "node": ">=0.10.40"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dev": true,
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/call-bind": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
- "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dev": true,
"dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.1"
+ "ansi-regex": "^6.0.1"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/camelcase": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
- "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==",
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/caseless": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
- "integrity": "sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ==",
- "dev": true
- },
- "node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
"dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 8"
}
},
- "node_modules/chalk/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
"engines": {
- "node": ">=0.8.0"
+ "node": ">= 8"
}
},
- "node_modules/check-types": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/check-types/-/check-types-0.6.5.tgz",
- "integrity": "sha512-VAGyaArzXtnxRMwxid/IIQFOMwhQfYiCTSMr05jPMYogztU5bc23E66HB53uCjQfEtKNYY2zR33tGMXiXyrTjw==",
- "dev": true
- },
- "node_modules/cli": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/cli/-/cli-0.4.5.tgz",
- "integrity": "sha512-dbn5HyeJWSOU58RwOEiF1VWrl7HRvDsKLpu0uiI/vExH6iNoyUzjB5Mr3IJY5DVUfnbpe9793xw4DFJVzC9nWQ==",
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"dependencies": {
- "glob": ">= 3.1.4"
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
},
"engines": {
- "node": ">=0.2.5"
+ "node": ">= 8"
}
},
- "node_modules/cli-color": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-0.2.3.tgz",
- "integrity": "sha512-f4DFHXdoe2rGMwuVO+DTBM6CkSt4m9R4a0vjnq5CJkSCKaXbrHbslCmyjG6cz/o50HP2wkjO3G1mXvc7G3V1LQ==",
+ "node_modules/@npmcli/fs": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz",
+ "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==",
"dev": true,
"dependencies": {
- "es5-ext": "~0.9.2",
- "memoizee": "~0.2.5"
+ "semver": "^7.3.5"
},
"engines": {
- "node": ">=0.1.103"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/coffee-script": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz",
- "integrity": "sha512-QjQ1T4BqyHv19k6XSfdhy/QLlIOhywz0ekBUCa9h71zYMJlfDTGan/Z1JXzYkZ6v8R+GhvL/p4FZPbPW8WNXlg==",
- "deprecated": "CoffeeScript on NPM has moved to \"coffeescript\" (no hyphen)",
+ "node_modules/@npmcli/git": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz",
+ "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==",
"dev": true,
- "bin": {
- "cake": "bin/cake",
- "coffee": "bin/coffee"
+ "dependencies": {
+ "@npmcli/promise-spawn": "^6.0.0",
+ "lru-cache": "^7.4.4",
+ "npm-pick-manifest": "^8.0.0",
+ "proc-log": "^3.0.0",
+ "promise-inflight": "^1.0.1",
+ "promise-retry": "^2.0.1",
+ "semver": "^7.3.5",
+ "which": "^3.0.0"
},
"engines": {
- "node": ">=0.4.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/coffeescript": {
- "version": "1.12.7",
- "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz",
- "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==",
+ "node_modules/@npmcli/git/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@npmcli/git/node_modules/which": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
+ "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
"dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
"bin": {
- "cake": "bin/cake",
- "coffee": "bin/coffee"
+ "node-which": "bin/which.js"
},
"engines": {
- "node": ">=0.8.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/colors": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
- "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==",
+ "node_modules/@npmcli/installed-package-contents": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz",
+ "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==",
"dev": true,
+ "dependencies": {
+ "npm-bundled": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "bin": {
+ "installed-package-contents": "bin/index.js"
+ },
"engines": {
- "node": ">=0.1.90"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "node_modules/@npmcli/move-file": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz",
+ "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==",
+ "deprecated": "This functionality has been moved to @npmcli/fs",
"dev": true,
"dependencies": {
- "delayed-stream": "~1.0.0"
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
},
"engines": {
- "node": ">= 0.8"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/commander": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz",
- "integrity": "sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA==",
+ "node_modules/@npmcli/move-file/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
"dependencies": {
- "keypress": "0.1.x"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
},
"engines": {
- "node": ">= 0.6.x"
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/complexity-report": {
- "version": "0.10.5",
- "resolved": "https://registry.npmjs.org/complexity-report/-/complexity-report-0.10.5.tgz",
- "integrity": "sha512-co+Le/h83CSXfdascgZ1liWV/f4Z/bBa15jWBFRBA5SP6Li+rRtp05GaTC/Lbi/uFsWy79S7VqB906sShfix1A==",
+ "node_modules/@npmcli/move-file/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/@npmcli/move-file/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
- "check-types": "0.6.x",
- "commander": "1.1.x",
- "esprima": "1.0.x"
+ "brace-expansion": "^1.1.7"
},
- "bin": {
- "cr": "src/cli.js"
+ "engines": {
+ "node": "*"
}
},
- "node_modules/complexity-report/node_modules/esprima": {
+ "node_modules/@npmcli/move-file/node_modules/mkdirp": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
- "integrity": "sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true,
"bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
+ "mkdirp": "bin/cmd.js"
},
"engines": {
- "node": ">=0.4.0"
+ "node": ">=10"
}
},
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/concat-stream": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz",
- "integrity": "sha512-litEocitzYgqQ0IPaoLw+tCHcVcJJYW05+SAhH+LS9qutSC7iuejvawts3cUYQycZbRbLsjG8mCJLQi2KX5kEw==",
+ "node_modules/@npmcli/move-file/node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
"dev": true,
- "engines": [
- "node >= 0.8"
- ],
"dependencies": {
- "inherits": "~2.0.1",
- "readable-stream": "~2.0.0",
- "typedarray": "~0.0.5"
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/concat-stream/node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/connect": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
- "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "node_modules/@npmcli/node-gyp": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz",
+ "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "finalhandler": "1.1.2",
- "parseurl": "~1.3.3",
- "utils-merge": "1.0.1"
- },
"engines": {
- "node": ">= 0.10.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/connect-livereload": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz",
- "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==",
+ "node_modules/@npmcli/promise-spawn": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz",
+ "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==",
"dev": true,
- "license": "MIT",
+ "dependencies": {
+ "which": "^3.0.0"
+ },
"engines": {
- "node": "*"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/console-browserify": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-0.1.6.tgz",
- "integrity": "sha512-FJahZyF+dLKrC7h4DOq5JsHA+f0cLJD3TR1+0CK3n6phtdrVAPsZZKq+PZRmo2RYSOHvvs8kNhU4uRiSZUbSbA==",
- "dev": true
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "node_modules/cryptiles": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
- "integrity": "sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog==",
- "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).",
+ "node_modules/@npmcli/promise-spawn/node_modules/which": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
+ "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
"dev": true,
"dependencies": {
- "boom": "2.x.x"
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
},
"engines": {
- "node": ">=0.10.40"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
+ "node_modules/@npmcli/run-script": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz",
+ "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==",
"dev": true,
"dependencies": {
- "assert-plus": "^1.0.0"
+ "@npmcli/node-gyp": "^3.0.0",
+ "@npmcli/promise-spawn": "^6.0.0",
+ "node-gyp": "^9.0.0",
+ "read-package-json-fast": "^3.0.0",
+ "which": "^3.0.0"
},
"engines": {
- "node": ">=0.10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/dashdash/node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "node_modules/@npmcli/run-script/node_modules/which": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
+ "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
"dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
"engines": {
- "node": ">=0.8"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/dateformat": {
- "version": "1.0.2-1.2.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
- "integrity": "sha512-AXvW8g7tO4ilk5HgOWeDmPi/ZPaCnMJ+9Cg1I3p19w6mcvAAXBuuGEXAxybC+Djj1PSZUiHUcyoYu7WneCX8gQ==",
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"dev": true,
+ "optional": true,
"engines": {
- "node": "*"
+ "node": ">=14"
}
},
- "node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "node_modules/@puppeteer/browsers": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-0.5.0.tgz",
+ "integrity": "sha512-Uw6oB7VvmPRLE4iKsjuOh8zgDabhNX67dzo8U/BB0f9527qx+4eeUs+korU98OhG5C4ubg7ufBgVi63XYwS6TQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "dev": true,
+ "debug": "4.3.4",
+ "extract-zip": "2.0.1",
+ "https-proxy-agent": "5.0.1",
+ "progress": "2.0.3",
+ "proxy-from-env": "1.1.0",
+ "tar-fs": "2.1.1",
+ "unbzip2-stream": "1.4.3",
+ "yargs": "17.7.1"
+ },
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=14.1.0"
+ },
+ "peerDependencies": {
+ "typescript": ">= 4.7.4"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/deep-equal": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
- "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
+ "node_modules/@puppeteer/browsers/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.5",
- "es-get-iterator": "^1.1.3",
- "get-intrinsic": "^1.2.2",
- "is-arguments": "^1.1.1",
- "is-array-buffer": "^3.0.2",
- "is-date-object": "^1.0.5",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "isarray": "^2.0.5",
- "object-is": "^1.1.5",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.1",
- "side-channel": "^1.0.4",
- "which-boxed-primitive": "^1.0.2",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.13"
+ "ms": "2.1.2"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=6.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/deep-equal/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "node_modules/@puppeteer/browsers/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "node_modules/define-data-property": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "node_modules/@puppeteer/browsers/node_modules/yargs": {
+ "version": "17.7.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
+ "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
"dev": true,
"dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.0.1"
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=12"
}
},
- "node_modules/define-lazy-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
- "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "node_modules/@sigstore/bundle": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz",
+ "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==",
"dev": true,
- "license": "MIT",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.2.0"
+ },
"engines": {
- "node": ">=8"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/define-properties": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "node_modules/@sigstore/protobuf-specs": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz",
+ "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==",
"dev": true,
- "dependencies": {
- "define-data-property": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/delayed-stream": {
+ "node_modules/@sigstore/sign": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz",
+ "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==",
"dev": true,
+ "dependencies": {
+ "@sigstore/bundle": "^1.1.0",
+ "@sigstore/protobuf-specs": "^0.2.0",
+ "make-fetch-happen": "^11.0.1"
+ },
"engines": {
- "node": ">=0.4.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "node_modules/@sigstore/sign/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
- "license": "MIT",
"engines": {
- "node": ">= 0.8"
+ "node": ">=12"
}
},
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "node_modules/@sigstore/sign/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
"dev": true,
- "license": "MIT",
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
"engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
+ "node_modules/@sigstore/sign/node_modules/minipass-fetch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz",
+ "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==",
"dev": true,
"dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
+ "minipass": "^7.0.3",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
}
},
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "node_modules/@sigstore/sign/node_modules/minipass-fetch/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
- "license": "MIT",
"engines": {
- "node": ">= 0.8"
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/es-define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "node_modules/@sigstore/tuf": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz",
+ "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.2.4"
+ "@sigstore/protobuf-specs": "^0.2.0",
+ "tuf-js": "^1.1.7"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
"dev": true,
"engines": {
- "node": ">= 0.4"
+ "node": ">= 10"
}
},
- "node_modules/es-get-iterator": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
- "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+ "node_modules/@tufjs/canonical-json": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz",
+ "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==",
"dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "has-symbols": "^1.0.3",
- "is-arguments": "^1.1.1",
- "is-map": "^2.0.2",
- "is-set": "^2.0.2",
- "is-string": "^1.0.7",
- "isarray": "^2.0.5",
- "stop-iteration-iterator": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/es-get-iterator/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
- "node_modules/es5-ext": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.9.2.tgz",
- "integrity": "sha512-wP3OSxZ0L/qK76t6qxPR8gWr2o5F4SzNF9qS5F/mOfVY3Ezcg07v6hSkETDmoekXIzn8xhQbHpp+tVlOE+qOAg==",
+ "node_modules/@tufjs/models": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz",
+ "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==",
"dev": true,
+ "dependencies": {
+ "@tufjs/canonical-json": "1.0.0",
+ "minimatch": "^9.0.0"
+ },
"engines": {
- "node": ">=0.4"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "node_modules/@tufjs/models/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
- "engines": {
- "node": ">=0.8.0"
+ "dependencies": {
+ "balanced-match": "^1.0.0"
}
},
- "node_modules/escodegen": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
- "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==",
+ "node_modules/@tufjs/models/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
"dependencies": {
- "esprima": "^2.7.1",
- "estraverse": "^1.9.1",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=0.12.0"
+ "node": ">=16 || 14 >=14.17"
},
- "optionalDependencies": {
- "source-map": "~0.2.0"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/esprima": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
- "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==",
+ "node_modules/@types/node": {
+ "version": "22.15.30",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz",
+ "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==",
"dev": true,
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=0.10.0"
+ "optional": true,
+ "dependencies": {
+ "undici-types": "~6.21.0"
}
},
- "node_modules/estraverse": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
- "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==",
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
}
},
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "dev": true
},
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "node_modules/abbrev": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+ "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==",
+ "dev": true
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
"engines": {
"node": ">= 0.6"
}
},
- "node_modules/event-emitter": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.2.2.tgz",
- "integrity": "sha512-kdjfxF6jYJ5m/OEe3ZNNJzbCEcagF4lNJeuhgrBSRnlitpdxICDKzCel+Z5Wbl7K9UhBN/7k2MzXBvCvSwfzzg==",
+ "node_modules/acorn": {
+ "version": "8.14.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
+ "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"dev": true,
- "dependencies": {
- "es5-ext": "~0.9.2"
+ "bin": {
+ "acorn": "bin/acorn"
},
"engines": {
- "node": ">=0.4"
+ "node": ">=0.4.0"
}
},
- "node_modules/eventemitter2": {
- "version": "0.4.14",
- "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
- "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==",
- "dev": true
- },
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
- "engines": {
- "node": ">= 0.8.0"
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "node_modules/extract-zip": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz",
- "integrity": "sha512-Ht7oUiEXWnX5BvLzMX/UBNIjrAs53lhXtNxMNeUe8Nv0S8rfy5UGqsKOXpP8ZQMWLvheOvRqYYShBoj6fTO9bg==",
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dev": true,
"dependencies": {
- "concat-stream": "1.5.0",
- "debug": "0.7.4",
- "mkdirp": "0.5.0",
- "yauzl": "2.4.1"
+ "debug": "4"
},
- "bin": {
- "extract-zip": "cli.js"
+ "engines": {
+ "node": ">= 6.0.0"
}
},
- "node_modules/extract-zip/node_modules/debug": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
- "integrity": "sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==",
+ "node_modules/agent-base/node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
"engines": {
- "node": "*"
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/extract-zip/node_modules/minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==",
+ "node_modules/agent-base/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
- "node_modules/extract-zip/node_modules/mkdirp": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
- "integrity": "sha512-xjjNGy+ry1lhtIKcr2PT6ok3aszhQfgrUDp4OZLHacgRgFmF6XR9XCOJVcXlVGQonIqXcK1DvqgKKQOPWYGSfw==",
- "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
+ "node_modules/agentkeepalive": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz",
+ "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==",
"dev": true,
"dependencies": {
- "minimist": "0.0.8"
+ "humanize-ms": "^1.2.1"
},
- "bin": {
- "mkdirp": "bin/cmd.js"
+ "engines": {
+ "node": ">= 8.0.0"
}
},
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
- "dev": true,
- "engines": [
- "node >=0.6.0"
- ]
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fd-slicer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
- "integrity": "sha512-MX1ZLPIuKED51hrI4++K+1B0VX87Cs4EkybD2q12Ysuf5p4vkmHqMvQJRlDwROqFr4D2Pzyit5wGQxf30grIcw==",
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
"dev": true,
"dependencies": {
- "pend": "~1.2.0"
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/fileset": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.1.8.tgz",
- "integrity": "sha512-Gg0/Iy/v4BfdGWZpbpVBPKIYcap7jMn2uT5lcIDZyMFZR35VDojrJnIAwWjCj7ZOqsGp3j+ExWKqnfGrz4q0fg==",
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"dependencies": {
- "glob": "3.x",
- "minimatch": "0.x"
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "node_modules/amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
"engines": {
- "node": ">= 0.8"
+ "node": ">=0.4.2"
}
},
- "node_modules/findup-sync": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
- "integrity": "sha512-yjftfYnF4ThYEvKEV/kEFR15dmtyXTAh3vQnzpJUoc7Naj5y1P0Ck7Zs1+Vroa00E3KT3IYsk756S+8WA5dNLw==",
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
- "dependencies": {
- "glob": "~3.2.9",
- "lodash": "~2.4.1"
- },
"engines": {
- "node": ">= 0.6.0"
+ "node": ">=8"
}
},
- "node_modules/findup-sync/node_modules/glob": {
- "version": "3.2.11",
- "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
- "integrity": "sha512-hVb0zwEZwC1FXSKRPFTeOtN7AArJcJlI6ULGLtrstaswKNlrTJqAA+1lYlSUop4vjA423xlBzqfVS3iWGlqJ+g==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
- "inherits": "2",
- "minimatch": "0.3"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": "*"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/findup-sync/node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "node_modules/aproba": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
"dev": true
},
- "node_modules/findup-sync/node_modules/lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==",
- "dev": true,
- "engines": [
- "node",
- "rhino"
- ]
- },
- "node_modules/findup-sync/node_modules/minimatch": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
- "integrity": "sha512-WFX1jI1AaxNTZVOHLBVazwTWKaQjoykSzCBNXB72vDTCzopQGtyP91tKdFK5cv1+qMwPyiTu1HqUriqplI8pcA==",
- "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue",
+ "node_modules/are-we-there-yet": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
+ "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
+ "deprecated": "This package is no longer supported.",
"dev": true,
"dependencies": {
- "lru-cache": "2",
- "sigmund": "~1.0.0"
+ "delegates": "^1.0.0",
+ "readable-stream": "^3.6.0"
},
"engines": {
- "node": "*"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "node_modules/argparse": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
+ "integrity": "sha512-LjmC2dNpdn2L4UzyoaIr11ELYoLn37ZFy9zObrQFHsSuOepeUEMKnM8w5KL4Tnrp2gy88rRuQt6Ky8Bjml+Baw==",
"dev": true,
"dependencies": {
- "is-callable": "^1.1.3"
+ "underscore": "~1.7.0",
+ "underscore.string": "~2.4.0"
}
},
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
+ "node_modules/argparse/node_modules/underscore": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
+ "integrity": "sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==",
+ "dev": true
+ },
+ "node_modules/argparse/node_modules/underscore.string": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz",
+ "integrity": "sha512-yxkabuCaIBnzfIvX3kBxQqCs0ar/bfJwDnFEHJUm/ZrRVhT3IItdRF5cZjARLzEnyQYtIUhsZ2LG2j3HidFOFQ==",
"dev": true,
"engines": {
"node": "*"
}
},
- "node_modules/form-data": {
+ "node_modules/array-buffer-byte-length": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz",
- "integrity": "sha512-M4Yhq2mLogpCtpUmfopFlTTuIe6mSCTgKvnlMhDj3NcgVhA1uS20jT0n+xunKPzpmL5w2erSVtp+SKiJf1TlWg==",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
"dev": true,
"dependencies": {
- "async": "^2.0.1",
- "combined-stream": "^1.0.5",
- "mime-types": "^2.1.11"
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/form-data/node_modules/async": {
- "version": "2.6.4",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
- "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
+ "node_modules/array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
"dev": true,
- "dependencies": {
- "lodash": "^4.17.14"
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/form-data/node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "node_modules/array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
"dev": true,
- "license": "MIT",
+ "peer": true,
"engines": {
- "node": ">= 0.6"
+ "node": ">=0.10.0"
}
},
- "node_modules/fs-extra": {
- "version": "0.26.7",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
- "integrity": "sha512-waKu+1KumRhYv8D8gMRCKJGAMI9pRnPuEb1mvgYD0f7wBscg+h6bW4FDTmEZhB9VKxvoTtxW+Y7bnIlB7zja6Q==",
+ "node_modules/async": {
+ "version": "0.1.22",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
+ "integrity": "sha512-2tEzliJmf5fHNafNwQLJXUasGzQCVctvsNkXmnlELHwypU0p08/rHohYvkqKIjyXpx+0rkrYv6QbhJ+UF4QkBg==",
"dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^2.1.0",
- "klaw": "^1.0.0",
- "path-is-absolute": "^1.0.0",
- "rimraf": "^2.2.8"
+ "engines": {
+ "node": "*"
}
},
- "node_modules/fs-extra/node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
"dev": true,
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
},
- "node_modules/gaze": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.3.4.tgz",
- "integrity": "sha512-vIK81ZT20o9X0LOHYDGo5Phq6FaQRjDjBN2KkbYSxlaXnN1WDH0Op0tPThqNVA8ZnmN/TYNZfGHAVkBTrdeBIQ==",
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/basic-auth": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
+ "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fileset": "~0.1.5",
- "minimatch": "~0.2.9"
+ "safe-buffer": "5.1.2"
},
"engines": {
- "node": ">= 0.6.0"
+ "node": ">= 0.8"
}
},
- "node_modules/generate-function": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
- "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
+ "node_modules/batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
"dependencies": {
- "is-property": "^1.0.2"
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
}
},
- "node_modules/generate-object-property": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
- "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==",
+ "node_modules/bl/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"dependencies": {
- "is-property": "^1.0.0"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/get-intrinsic": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
+ "peer": true,
"dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
+ "fill-range": "^7.1.1"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=8"
}
},
- "node_modules/getobject": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
- "integrity": "sha512-hIGEBfnHcZpWkXPsAVeVmpYDvfy/matVl03yOY91FPmnpCC12Lm5izNxCjO3lHAeO6uaTwMxu7g450Siknlhig==",
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
"dev": true,
"engines": {
- "node": ">= 0.8.0"
+ "node": "*"
}
},
- "node_modules/getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+ "node_modules/cacache": {
+ "version": "17.1.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz",
+ "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==",
"dev": true,
"dependencies": {
- "assert-plus": "^1.0.0"
+ "@npmcli/fs": "^3.1.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^7.7.1",
+ "minipass": "^7.0.3",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^4.0.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/getpass/node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "node_modules/cacache/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
- "engines": {
- "node": ">=0.8"
+ "dependencies": {
+ "balanced-match": "^1.0.0"
}
},
- "node_modules/glob": {
- "version": "3.1.21",
- "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
- "integrity": "sha512-ANhy2V2+tFpRajE3wN4DhkNQ08KDr0Ir1qL12/cUe5+a7STEK8jkW4onUYuY8/06qAFuT5je7mjAqzx0eKI2tQ==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
+ "node_modules/cacache/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dev": true,
"dependencies": {
- "graceful-fs": "~1.2.0",
- "inherits": "1",
- "minimatch": "~0.2.11"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "engines": {
- "node": "*"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/globule": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz",
- "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==",
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
- "dependencies": {
- "glob": "~7.1.1",
- "lodash": "^4.17.21",
- "minimatch": "~3.0.2"
- },
"engines": {
- "node": ">= 0.10"
+ "node": ">=12"
}
},
- "node_modules/globule/node_modules/glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
+ "node_modules/cacache/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": "*"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/globule/node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/globule/node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "node_modules/globule/node_modules/minimatch": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
- "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
+ "node_modules/cacache/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
"engines": {
- "node": "*"
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.1.3"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/graceful-fs": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
- "integrity": "sha512-iiTUZ5vZ+2ZV+h71XAgwCSu6+NAizhFU3Yw8aC/hH5SQ3SnISqEqAek40imAFGtDcwJKNhXvSY+hzIolnLwcdQ==",
- "deprecated": "please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js",
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
"engines": {
- "node": ">=0.4.0"
+ "node": ">=6"
}
},
- "node_modules/growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "node_modules/camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==",
"dev": true,
"engines": {
- "node": ">=4.x"
+ "node": ">=0.10.0"
}
},
- "node_modules/grunt": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
- "integrity": "sha512-1iq3ylLjzXqz/KSq1OAE2qhnpcbkF2WyhsQcavZt+YmgvHu0EbPMEhGhy2gr0FP67isHpRdfwjB5WVeXXcJemQ==",
- "dev": true,
- "dependencies": {
- "async": "~0.1.22",
- "coffee-script": "~1.3.3",
- "colors": "~0.6.2",
- "dateformat": "1.0.2-1.2.3",
- "eventemitter2": "~0.4.13",
- "exit": "~0.1.1",
- "findup-sync": "~0.1.2",
- "getobject": "~0.1.0",
- "glob": "~3.1.21",
- "grunt-legacy-log": "~0.1.0",
- "grunt-legacy-util": "~0.2.0",
- "hooker": "~0.2.3",
- "iconv-lite": "~0.2.11",
- "js-yaml": "~2.0.5",
- "lodash": "~0.9.2",
- "minimatch": "~0.2.12",
- "nopt": "~1.0.10",
- "rimraf": "~2.2.8",
- "underscore.string": "~2.2.1",
- "which": "~1.0.5"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/grunt-connect-proxy": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/grunt-connect-proxy/-/grunt-connect-proxy-0.1.5.tgz",
- "integrity": "sha512-QJSFQ1bbXqyk0xihkr3/nhT7E81SH1BVsx92W+EovXwH9sP5lsOiIlAL1x/aFZ5osRpsPHdxpLjrJbvI5I6XTQ==",
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
- "http-proxy": "~0.10.2"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=10"
},
- "peerDependencies": {
- "grunt": "~0.4.1"
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/grunt-contrib-clean": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-0.4.1.tgz",
- "integrity": "sha512-PajoaZgwbJ1QAbY5CemvuCIXUJU8teoA3ABTd3eZA+j0UYTUBW+hlV5m3ZlZLgRxKm3ZrchAEVR85r5uBeKF9w==",
+ "node_modules/chalk/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
- "node": ">= 0.8.0"
- },
- "peerDependencies": {
- "grunt": "~0.4.0"
+ "node": ">=8"
}
},
- "node_modules/grunt-contrib-connect": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-5.0.1.tgz",
- "integrity": "sha512-Hfq/0QJl3ddD2N/a/1cDJHkKEOGk6m7W6uxNe0AmYwtf6v0F/4+8q9rvPJ1tl+mrI90lU/89I9T/h48qqeMfQA==",
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "async": "^3.2.5",
- "connect": "^3.7.0",
- "connect-livereload": "^0.6.1",
- "http2-wrapper": "^2.2.1",
- "morgan": "^1.10.0",
- "open": "^8.0.0",
- "portscanner": "^2.2.0",
- "serve-index": "^1.9.1",
- "serve-static": "^1.15.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=16"
+ "node": ">=8"
}
},
- "node_modules/grunt-contrib-connect/node_modules/async": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
- "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "node_modules/check-types": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/check-types/-/check-types-0.6.5.tgz",
+ "integrity": "sha512-VAGyaArzXtnxRMwxid/IIQFOMwhQfYiCTSMr05jPMYogztU5bc23E66HB53uCjQfEtKNYY2zR33tGMXiXyrTjw==",
+ "dev": true
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
"dev": true,
- "license": "MIT"
+ "engines": {
+ "node": ">=10"
+ }
},
- "node_modules/grunt-contrib-jasmine": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/grunt-contrib-jasmine/-/grunt-contrib-jasmine-0.5.3.tgz",
- "integrity": "sha512-88amuGVxnRIKdDQ6enE8EhIU4HgCK4EY7rby9d2qu9vIq9y1Jz902Jj0qU7WYEjB/7Of9wTaDTvk1GQVhaxUMw==",
+ "node_modules/chromium-bidi": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.7.tgz",
+ "integrity": "sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ==",
"dev": true,
"dependencies": {
- "grunt-lib-phantomjs": "~0.5.0",
- "rimraf": "~2.1.4"
- },
- "engines": {
- "node": ">=0.8.0"
+ "mitt": "3.0.0"
},
"peerDependencies": {
- "grunt": "~0.4.0"
+ "devtools-protocol": "*"
}
},
- "node_modules/grunt-contrib-jasmine/node_modules/rimraf": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.1.4.tgz",
- "integrity": "sha512-tzwmX16YQhcFu0T/m0gHBcFKx6yQAg77Z6WWaQSJsUekXYa6yaAmHhrDdmFicgauX/er7GsdN+vRao3mBhA4kQ==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"dev": true,
- "optionalDependencies": {
- "graceful-fs": "~1"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/grunt-contrib-jshint": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.6.5.tgz",
- "integrity": "sha512-Hq9ExFaE41jCoAXqwdIi2b/QGI3K/1z+52aIP0m1zTaXv6DgodDhnR7ijqGTI3mm9UdJi/qfb08/UmEOEKsuLw==",
+ "node_modules/cli": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/cli/-/cli-0.4.5.tgz",
+ "integrity": "sha512-dbn5HyeJWSOU58RwOEiF1VWrl7HRvDsKLpu0uiI/vExH6iNoyUzjB5Mr3IJY5DVUfnbpe9793xw4DFJVzC9nWQ==",
"dev": true,
"dependencies": {
- "jshint": "~2.1.10"
+ "glob": ">= 3.1.4"
},
"engines": {
- "node": ">= 0.8.0"
- },
- "peerDependencies": {
- "grunt": "~0.4.0"
+ "node": ">=0.2.5"
}
},
- "node_modules/grunt-contrib-uglify": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.2.7.tgz",
- "integrity": "sha512-KXKM2UNLsCiUI6/DYfAIPm3i26UJJN6Cf6KD8fFa2TKllj7yLPC853IxtWBJ/3jX66QtXHGtdCORuuA6sAFvvA==",
+ "node_modules/cli-color": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-0.2.3.tgz",
+ "integrity": "sha512-f4DFHXdoe2rGMwuVO+DTBM6CkSt4m9R4a0vjnq5CJkSCKaXbrHbslCmyjG6cz/o50HP2wkjO3G1mXvc7G3V1LQ==",
"dev": true,
"dependencies": {
- "grunt-lib-contrib": "~0.6.1",
- "uglify-js": "~2.4.0"
+ "es5-ext": "~0.9.2",
+ "memoizee": "~0.2.5"
},
"engines": {
- "node": ">= 0.8.0"
- },
- "peerDependencies": {
- "grunt": "~0.4.0"
+ "node": ">=0.1.103"
}
},
- "node_modules/grunt-contrib-watch": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.2.0.tgz",
- "integrity": "sha512-NPhb9WoMEdqtFudcserCHlQoGEXoZKvklOKdC0WyC2tnkZpNVWdSRdNCM04OhvH08fgadBNoNSto4zfy/7ZEfA==",
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
"dependencies": {
- "gaze": "~0.3.3"
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
},
"engines": {
- "node": ">= 0.8.0"
- },
- "peerDependencies": {
- "grunt": "~0.4.0"
+ "node": ">=12"
}
},
- "node_modules/grunt-jasmine-node": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/grunt-jasmine-node/-/grunt-jasmine-node-0.1.0.tgz",
- "integrity": "sha512-/IE/IVbkqsihLmLtGkfu35mQuTbio1ZAW4aUNkCjQ+Oyn1JJaJEjnbSDJNYaUOIuZtxob66gydi1qXUnI5wxaQ==",
+ "node_modules/coffee-script": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz",
+ "integrity": "sha512-QjQ1T4BqyHv19k6XSfdhy/QLlIOhywz0ekBUCa9h71zYMJlfDTGan/Z1JXzYkZ6v8R+GhvL/p4FZPbPW8WNXlg==",
+ "deprecated": "CoffeeScript on NPM has moved to \"coffeescript\" (no hyphen)",
"dev": true,
- "dependencies": {
- "jasmine-node": "*"
- },
"bin": {
- "grunt-jasmine-node": "bin/grunt-jasmine-node"
+ "cake": "bin/cake",
+ "coffee": "bin/coffee"
},
"engines": {
- "node": ">=0.8.0"
+ "node": ">=0.4.0"
}
},
- "node_modules/grunt-legacy-log": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz",
- "integrity": "sha512-qYs/uM0ImdzwIXLhS4O5WLV5soAM+PEqqHI/hzSxlo450ERSccEhnXqoeDA9ZozOdaWuYnzTOTwRcVRogleMxg==",
+ "node_modules/coffeescript": {
+ "version": "1.12.7",
+ "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz",
+ "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==",
"dev": true,
- "dependencies": {
- "colors": "~0.6.2",
- "grunt-legacy-log-utils": "~0.1.1",
- "hooker": "~0.2.3",
- "lodash": "~2.4.1",
- "underscore.string": "~2.3.3"
+ "bin": {
+ "cake": "bin/cake",
+ "coffee": "bin/coffee"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=0.8.0"
}
},
- "node_modules/grunt-legacy-log-utils": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz",
- "integrity": "sha512-D0vbUX00TFYCKNZtcZzemMpwT8TR/FdRs1pmfiBw6qnUw80PfsjV+lhIozY/3eJ3PSG2zj89wd2mH/7f4tNAlw==",
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
- "colors": "~0.6.2",
- "lodash": "~2.4.1",
- "underscore.string": "~2.3.3"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=7.0.0"
}
},
- "node_modules/grunt-legacy-log-utils/node_modules/lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==",
- "dev": true,
- "engines": [
- "node",
- "rhino"
- ]
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
- "node_modules/grunt-legacy-log-utils/node_modules/underscore.string": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
- "integrity": "sha512-hbD5MibthuDAu4yA5wxes5bzFgqd3PpBJuClbRxaNddxfdsz+qf+1kHwrGQFrmchmDHb9iNU+6EHDn8uj0xDJg==",
+ "node_modules/color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
"dev": true,
- "engines": {
- "node": "*"
+ "bin": {
+ "color-support": "bin.js"
}
},
- "node_modules/grunt-legacy-log/node_modules/lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==",
- "dev": true,
- "engines": [
- "node",
- "rhino"
- ]
- },
- "node_modules/grunt-legacy-log/node_modules/underscore.string": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
- "integrity": "sha512-hbD5MibthuDAu4yA5wxes5bzFgqd3PpBJuClbRxaNddxfdsz+qf+1kHwrGQFrmchmDHb9iNU+6EHDn8uj0xDJg==",
+ "node_modules/colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==",
"dev": true,
"engines": {
- "node": "*"
+ "node": ">=0.1.90"
}
},
- "node_modules/grunt-legacy-util": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
- "integrity": "sha512-cXPbfF8aM+pvveQeN1K872D5fRm30xfJWZiS63Y8W8oyIPLClCsmI8bW96Txqzac9cyL4lRqEBhbhJ3n5EzUUQ==",
+ "node_modules/commander": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz",
+ "integrity": "sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA==",
"dev": true,
"dependencies": {
- "async": "~0.1.22",
- "exit": "~0.1.1",
- "getobject": "~0.1.0",
- "hooker": "~0.2.3",
- "lodash": "~0.9.2",
- "underscore.string": "~2.2.1",
- "which": "~1.0.5"
+ "keypress": "0.1.x"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">= 0.6.x"
}
},
- "node_modules/grunt-lib-contrib": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/grunt-lib-contrib/-/grunt-lib-contrib-0.6.1.tgz",
- "integrity": "sha512-HdCtJuMmmkSAVrAfsG7lZWE0YabrsPWwzcCCUgWQOAaQsQSUNhw/IwD2YjCSLh5y9NXSPzHTYFLL4ro7QbAJMA==",
+ "node_modules/complexity-report": {
+ "version": "0.10.5",
+ "resolved": "https://registry.npmjs.org/complexity-report/-/complexity-report-0.10.5.tgz",
+ "integrity": "sha512-co+Le/h83CSXfdascgZ1liWV/f4Z/bBa15jWBFRBA5SP6Li+rRtp05GaTC/Lbi/uFsWy79S7VqB906sShfix1A==",
"dev": true,
"dependencies": {
- "zlib-browserify": "0.0.1"
+ "check-types": "0.6.x",
+ "commander": "1.1.x",
+ "esprima": "1.0.x"
},
- "engines": {
- "node": ">= 0.8.0"
+ "bin": {
+ "cr": "src/cli.js"
}
},
- "node_modules/grunt-lib-phantomjs": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/grunt-lib-phantomjs/-/grunt-lib-phantomjs-0.5.0.tgz",
- "integrity": "sha512-5+TTQ9pPRoSxZ9+FggIm9iNyl6oyyi6O02eyuakP1/5mRcTGUKzxT7GplnV9vWsJHTyab4CgMi+iIjyKIdKIJg==",
+ "node_modules/complexity-report/node_modules/esprima": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
+ "integrity": "sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==",
"dev": true,
- "dependencies": {
- "eventemitter2": "~0.4.9",
- "phantomjs": "~1.9.0-1",
- "semver": "~1.0.14",
- "temporary": "~0.0.4"
- },
- "engines": {
- "node": ">= 0.6.0"
- }
- },
- "node_modules/grunt-open": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/grunt-open/-/grunt-open-0.2.4.tgz",
- "integrity": "sha512-3VxPWr6zZBVvEPtCMkjVtP30saT/VDIeUE8nWs8Y2tNgUPROKwWoWFwo1AUTNRM5oufJ2PL1eMVaL7Byv4NhQg==",
- "dev": true,
- "dependencies": {
- "opn": "^5.4.0"
- },
"bin": {
- "grunt-open": "bin/grunt-open"
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
},
"engines": {
- "node": ">= 0.6.0"
+ "node": ">=0.4.0"
}
},
- "node_modules/grunt-plato": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/grunt-plato/-/grunt-plato-0.2.1.tgz",
- "integrity": "sha512-8nf/LDxG6XSerqzg7MCWW6I06IYT8XuvbYw7Lx09UFLSKCEwoCrxreoSvkVbWGS25kI2Ku8TFBVi2jQU3Ahu0w==",
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/connect": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "plato": "~0.6.0"
+ "debug": "2.6.9",
+ "finalhandler": "1.1.2",
+ "parseurl": "~1.3.3",
+ "utils-merge": "1.0.1"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">= 0.10.0"
}
},
- "node_modules/grunt-preprocess": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/grunt-preprocess/-/grunt-preprocess-2.3.0.tgz",
- "integrity": "sha512-Ld+NiXQVlkt2zoqOcUA7xZ+d29jhPDqqyCyiSh1Vm5e98wQrGw7CEvZ/FZ7fOVqpfY5JXdJOH5MiQnuYEDdbpg==",
+ "node_modules/connect-livereload": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz",
+ "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==",
"dev": true,
- "dependencies": {
- "grunt": "~0.4.0a",
- "preprocess": "~1.3.0"
- },
- "bin": {
- "grunt-preprocess": "bin/grunt-preprocess"
- },
+ "license": "MIT",
"engines": {
- "node": ">= 0.6.0"
+ "node": "*"
}
},
- "node_modules/grunt-prompt": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/grunt-prompt/-/grunt-prompt-0.1.2.tgz",
- "integrity": "sha512-J06q7BPxbAtxpgk45fQ1PiqLcoXrJhl1fvPS9FVIZXuAOLgFEa6TGCmIIEW3LLg2uyUfgefYMA6QUjZL7lhTUQ==",
+ "node_modules/console-browserify": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-0.1.6.tgz",
+ "integrity": "sha512-FJahZyF+dLKrC7h4DOq5JsHA+f0cLJD3TR1+0CK3n6phtdrVAPsZZKq+PZRmo2RYSOHvvs8kNhU4uRiSZUbSbA==",
+ "dev": true
+ },
+ "node_modules/console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
+ "dev": true
+ },
+ "node_modules/cosmiconfig": {
+ "version": "8.1.3",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz",
+ "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==",
"dev": true,
"dependencies": {
- "inquirer": "~0.2.1"
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=14"
},
- "peerDependencies": {
- "grunt": "~0.4.1"
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
}
},
- "node_modules/grunt-template-jasmine-istanbul": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/grunt-template-jasmine-istanbul/-/grunt-template-jasmine-istanbul-0.2.6.tgz",
- "integrity": "sha512-9UkCvPhb1gpIfM+Nsk9F6xDfXsF6skYGp+I2mk1XSsq7pHpDQrrZBE/9QMW2guuuH4l2qiN93iuUe3n40n1nRw==",
- "dev": true,
- "dependencies": {
- "istanbul": ">=0.1.30"
- },
- "peerDependencies": {
- "grunt": ">=0.4.0",
- "grunt-contrib-jasmine": ">=0.3.1"
- }
+ "node_modules/cosmiconfig/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
},
- "node_modules/handlebars": {
- "version": "4.7.8",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
- "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "node_modules/cosmiconfig/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"dependencies": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.2",
- "source-map": "^0.6.1",
- "wordwrap": "^1.0.0"
+ "argparse": "^2.0.1"
},
"bin": {
- "handlebars": "bin/handlebars"
- },
- "engines": {
- "node": ">=0.4.7"
- },
- "optionalDependencies": {
- "uglify-js": "^3.1.4"
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/handlebars/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "node_modules/cross-fetch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+ "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "dependencies": {
+ "node-fetch": "2.6.7"
}
},
- "node_modules/handlebars/node_modules/uglify-js": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
- "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
- "optional": true,
- "bin": {
- "uglifyjs": "bin/uglifyjs"
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
},
"engines": {
- "node": ">=0.8.0"
+ "node": ">= 8"
}
},
- "node_modules/har-validator": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
- "integrity": "sha512-P6tFV+wCcUL3nbyTDAvveDySfbhy0XkDtAIfZP6HITjM2WUsiPna/Eg1Yy93SFXvahqoX+kt0n+6xlXKDXYowA==",
- "deprecated": "this library is no longer supported",
+ "node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"dependencies": {
- "chalk": "^1.1.1",
- "commander": "^2.9.0",
- "is-my-json-valid": "^2.12.4",
- "pinkie-promise": "^2.0.0"
+ "isexe": "^2.0.0"
},
"bin": {
- "har-validator": "bin/har-validator"
+ "node-which": "bin/node-which"
},
"engines": {
- "node": ">=0.10"
+ "node": ">= 8"
}
},
- "node_modules/har-validator/node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "node_modules/has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "node_modules/dateformat": {
+ "version": "1.0.2-1.2.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
+ "integrity": "sha512-AXvW8g7tO4ilk5HgOWeDmPi/ZPaCnMJ+9Cg1I3p19w6mcvAAXBuuGEXAxybC+Djj1PSZUiHUcyoYu7WneCX8gQ==",
"dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": "*"
}
},
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
}
},
- "node_modules/has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/has-property-descriptors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "node_modules/deep-equal": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
+ "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
"dev": true,
"dependencies": {
- "es-define-property": "^1.0.0"
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.5",
+ "es-get-iterator": "^1.1.3",
+ "get-intrinsic": "^1.2.2",
+ "is-arguments": "^1.1.1",
+ "is-array-buffer": "^3.0.2",
+ "is-date-object": "^1.0.5",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "isarray": "^2.0.5",
+ "object-is": "^1.1.5",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "side-channel": "^1.0.4",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-proto": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "node_modules/deep-equal/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -1763,25 +1776,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=8"
}
},
- "node_modules/has-tostringtag": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
"dev": true,
"dependencies": {
- "has-symbols": "^1.0.3"
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
@@ -1790,302 +1803,3383 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/hasha": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
- "integrity": "sha512-jZ38TU/EBiGKrmyTNNZgnvCZHNowiRI4+w/I9noMlekHTZH3KyGgvJLmhSgykeAQ9j2SYPDosM0Bg3wHfzibAQ==",
+ "node_modules/delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
+ "dev": true
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true,
- "dependencies": {
- "is-stream": "^1.0.1",
- "pinkie-promise": "^2.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.8"
}
},
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
"dev": true,
- "dependencies": {
- "function-bind": "^1.1.2"
- },
+ "license": "MIT",
"engines": {
- "node": ">= 0.4"
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
- "node_modules/hawk": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
- "integrity": "sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg==",
- "deprecated": "This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.",
+ "node_modules/detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/devtools-protocol": {
+ "version": "0.0.1107588",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1107588.tgz",
+ "integrity": "sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==",
+ "dev": true
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
"dependencies": {
- "boom": "2.x.x",
- "cryptiles": "2.x.x",
- "hoek": "2.x.x",
- "sntp": "1.x.x"
+ "esutils": "^2.0.2"
},
"engines": {
- "node": ">=0.10.32"
+ "node": ">=6.0.0"
}
},
- "node_modules/hoek": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ==",
- "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).",
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.10.40"
+ "node": ">= 0.8"
}
},
- "node_modules/hooker": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
- "integrity": "sha512-t+UerCsQviSymAInD01Pw+Dn/usmz1sRO+3Zk1+lx8eg+WKpD2ulcwWqHHL0+aseRBr+3+vIhiG1K1JTwaIcTA==",
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
"dev": true,
- "engines": {
- "node": "*"
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
}
},
- "node_modules/http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "node_modules/encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
- "license": "MIT",
+ "optional": true,
"dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=0.10.0"
}
},
- "node_modules/http-errors/node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
"dev": true,
- "license": "MIT",
"engines": {
- "node": ">= 0.6"
+ "node": ">=6"
}
},
- "node_modules/http-errors/node_modules/inherits": {
+ "node_modules/err-code": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "dev": true
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
- "license": "ISC"
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
},
- "node_modules/http-proxy": {
- "version": "0.10.4",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-0.10.4.tgz",
- "integrity": "sha512-lb5uBBW+eLzoZ/Tute8ENcbNvibErYYPzNhjZk9IZugBAl87kUSxzVLBwQ7FbU2qBuorbah6VObuXvp2DN1LbA==",
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
"dev": true,
"dependencies": {
- "colors": "0.x.x",
- "optimist": "0.6.x",
- "pkginfo": "0.3.x",
- "utile": "~0.2.1"
- },
- "bin": {
- "node-http-proxy": "bin/node-http-proxy"
+ "get-intrinsic": "^1.2.4"
},
"engines": {
- "node": ">= 0.6.6"
+ "node": ">= 0.4"
}
},
- "node_modules/http-signature": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
- "integrity": "sha512-iUn0NcRULlDGtqNLN1Jxmzayk8ogm7NToldASyZBpM2qggbphjXzNOiw3piN8tgz+e/DRs6X5gAzFwTI6BCRcg==",
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"dev": true,
- "dependencies": {
- "assert-plus": "^0.2.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
"engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
+ "node": ">= 0.4"
}
},
- "node_modules/http2-wrapper": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz",
- "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==",
+ "node_modules/es-get-iterator": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+ "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "quick-lru": "^5.1.1",
- "resolve-alpn": "^1.2.0"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "has-symbols": "^1.0.3",
+ "is-arguments": "^1.1.1",
+ "is-map": "^2.0.2",
+ "is-set": "^2.0.2",
+ "is-string": "^1.0.7",
+ "isarray": "^2.0.5",
+ "stop-iteration-iterator": "^1.0.0"
},
- "engines": {
- "node": ">=10.19.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/i": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz",
- "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==",
+ "node_modules/es-get-iterator/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/es5-ext": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.9.2.tgz",
+ "integrity": "sha512-wP3OSxZ0L/qK76t6qxPR8gWr2o5F4SzNF9qS5F/mOfVY3Ezcg07v6hSkETDmoekXIzn8xhQbHpp+tVlOE+qOAg==",
"dev": true,
"engines": {
"node": ">=0.4"
}
},
- "node_modules/iconv-lite": {
- "version": "0.2.11",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz",
- "integrity": "sha512-KhmFWgaQZY83Cbhi+ADInoUQ8Etn6BG5fikM9syeOjQltvR45h7cRKJ/9uvQEuD61I3Uju77yYce0/LhKVClQw==",
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
"engines": {
- "node": ">=0.4.0"
+ "node": ">=6"
}
},
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
"dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
- "integrity": "sha512-Al67oatbRSo3RV5hRqIoln6Y5yMVbJSIn4jEJNL7VCImzq/kLr7vvb6sFRJXqr8rpHc/2kJOM+y0sPKN47VdzA==",
- "dev": true
+ "license": "MIT"
},
- "node_modules/inquirer": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.2.5.tgz",
- "integrity": "sha512-AgCZjM1LcGSiFeh4d893OPTKYSpkK6v92qEO1kvj5SHqaaK1sLKFJKWkZpSwdBowNEletOKWyKd6JnhUs+qMsQ==",
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
- "dependencies": {
- "async": "~0.2.8",
- "cli-color": "~0.2.2",
- "lodash": "~1.2.1",
- "mute-stream": "0.0.3"
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/inquirer/node_modules/async": {
- "version": "0.2.10",
- "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
- "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==",
- "dev": true
- },
- "node_modules/inquirer/node_modules/lodash": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.2.1.tgz",
- "integrity": "sha512-EKI82Edm8glH3FUu17sQIF+Ly1cW2ROPc0qgf1L4DBUysBlQVL+/b+WtufJw0O8FtMo7Vq9KTrzUboyWSgW/tg==",
- "dev": true,
- "engines": [
- "node",
- "rhino"
- ]
- },
- "node_modules/internal-slot": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
- "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "node_modules/escodegen": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
+ "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==",
"dev": true,
"dependencies": {
- "es-errors": "^1.3.0",
- "hasown": "^2.0.0",
- "side-channel": "^1.0.4"
+ "esprima": "^2.7.1",
+ "estraverse": "^1.9.1",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=0.12.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.2.0"
}
},
- "node_modules/is-arguments": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
- "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "node_modules/eslint": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.1",
+ "@humanwhocodes/config-array": "^0.13.0",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/is-array-buffer": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
- "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1"
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "node_modules/eslint-scope/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/eslint/node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/eslint/node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/eslint/node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
+ "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/event-emitter": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.2.2.tgz",
+ "integrity": "sha512-kdjfxF6jYJ5m/OEe3ZNNJzbCEcagF4lNJeuhgrBSRnlitpdxICDKzCel+Z5Wbl7K9UhBN/7k2MzXBvCvSwfzzg==",
+ "dev": true,
+ "dependencies": {
+ "es5-ext": "~0.9.2"
+ },
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/eventemitter2": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
+ "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==",
+ "dev": true
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/exponential-backoff": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz",
+ "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==",
+ "dev": true
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/extract-zip/node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/extract-zip/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fileset": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.1.8.tgz",
+ "integrity": "sha512-Gg0/Iy/v4BfdGWZpbpVBPKIYcap7jMn2uT5lcIDZyMFZR35VDojrJnIAwWjCj7ZOqsGp3j+ExWKqnfGrz4q0fg==",
+ "dev": true,
+ "dependencies": {
+ "glob": "3.x",
+ "minimatch": "0.x"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/findup-sync": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
+ "integrity": "sha512-yjftfYnF4ThYEvKEV/kEFR15dmtyXTAh3vQnzpJUoc7Naj5y1P0Ck7Zs1+Vroa00E3KT3IYsk756S+8WA5dNLw==",
+ "dev": true,
+ "dependencies": {
+ "glob": "~3.2.9",
+ "lodash": "~2.4.1"
+ },
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/findup-sync/node_modules/glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
+ "integrity": "sha512-hVb0zwEZwC1FXSKRPFTeOtN7AArJcJlI6ULGLtrstaswKNlrTJqAA+1lYlSUop4vjA423xlBzqfVS3iWGlqJ+g==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "inherits": "2",
+ "minimatch": "0.3"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/findup-sync/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/findup-sync/node_modules/lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==",
+ "dev": true,
+ "engines": [
+ "node",
+ "rhino"
+ ]
+ },
+ "node_modules/findup-sync/node_modules/minimatch": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
+ "integrity": "sha512-WFX1jI1AaxNTZVOHLBVazwTWKaQjoykSzCBNXB72vDTCzopQGtyP91tKdFK5cv1+qMwPyiTu1HqUriqplI8pcA==",
+ "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/fined": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
+ "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^2.0.3",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.2.0",
+ "parse-filepath": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/flagged-respawn": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
+ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flat-cache/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/flat-cache/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/flat-cache/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/flat-cache/node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "dev": true
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "for-in": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "dev": true
+ },
+ "node_modules/fs-minipass": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
+ "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/fs-minipass/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gauge": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
+ "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
+ "deprecated": "This package is no longer supported.",
+ "dev": true,
+ "dependencies": {
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/gaze": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.3.4.tgz",
+ "integrity": "sha512-vIK81ZT20o9X0LOHYDGo5Phq6FaQRjDjBN2KkbYSxlaXnN1WDH0Op0tPThqNVA8ZnmN/TYNZfGHAVkBTrdeBIQ==",
+ "dev": true,
+ "dependencies": {
+ "fileset": "~0.1.5",
+ "minimatch": "~0.2.9"
+ },
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/getobject": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
+ "integrity": "sha512-hIGEBfnHcZpWkXPsAVeVmpYDvfy/matVl03yOY91FPmnpCC12Lm5izNxCjO3lHAeO6uaTwMxu7g450Siknlhig==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "3.1.21",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
+ "integrity": "sha512-ANhy2V2+tFpRajE3wN4DhkNQ08KDr0Ir1qL12/cUe5+a7STEK8jkW4onUYuY8/06qAFuT5je7mjAqzx0eKI2tQ==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "~1.2.0",
+ "inherits": "1",
+ "minimatch": "~0.2.11"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globule": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz",
+ "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==",
+ "dev": true,
+ "dependencies": {
+ "glob": "~7.1.1",
+ "lodash": "^4.17.21",
+ "minimatch": "~3.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/globule/node_modules/glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/globule/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/globule/node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/globule/node_modules/minimatch": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
+ "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
+ "integrity": "sha512-iiTUZ5vZ+2ZV+h71XAgwCSu6+NAizhFU3Yw8aC/hH5SQ3SnISqEqAek40imAFGtDcwJKNhXvSY+hzIolnLwcdQ==",
+ "deprecated": "please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/growl": {
+ "version": "1.10.5",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.x"
+ }
+ },
+ "node_modules/grunt": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
+ "integrity": "sha512-1iq3ylLjzXqz/KSq1OAE2qhnpcbkF2WyhsQcavZt+YmgvHu0EbPMEhGhy2gr0FP67isHpRdfwjB5WVeXXcJemQ==",
+ "dev": true,
+ "dependencies": {
+ "async": "~0.1.22",
+ "coffee-script": "~1.3.3",
+ "colors": "~0.6.2",
+ "dateformat": "1.0.2-1.2.3",
+ "eventemitter2": "~0.4.13",
+ "exit": "~0.1.1",
+ "findup-sync": "~0.1.2",
+ "getobject": "~0.1.0",
+ "glob": "~3.1.21",
+ "grunt-legacy-log": "~0.1.0",
+ "grunt-legacy-util": "~0.2.0",
+ "hooker": "~0.2.3",
+ "iconv-lite": "~0.2.11",
+ "js-yaml": "~2.0.5",
+ "lodash": "~0.9.2",
+ "minimatch": "~0.2.12",
+ "nopt": "~1.0.10",
+ "rimraf": "~2.2.8",
+ "underscore.string": "~2.2.1",
+ "which": "~1.0.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/grunt-cli": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz",
+ "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "grunt-known-options": "~2.0.0",
+ "interpret": "~1.1.0",
+ "liftup": "~3.0.1",
+ "nopt": "~4.0.1",
+ "v8flags": "~3.2.0"
+ },
+ "bin": {
+ "grunt": "bin/grunt"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/grunt-cli/node_modules/nopt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ }
+ },
+ "node_modules/grunt-connect-proxy": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/grunt-connect-proxy/-/grunt-connect-proxy-0.1.5.tgz",
+ "integrity": "sha512-QJSFQ1bbXqyk0xihkr3/nhT7E81SH1BVsx92W+EovXwH9sP5lsOiIlAL1x/aFZ5osRpsPHdxpLjrJbvI5I6XTQ==",
+ "dev": true,
+ "dependencies": {
+ "http-proxy": "~0.10.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "peerDependencies": {
+ "grunt": "~0.4.1"
+ }
+ },
+ "node_modules/grunt-contrib-clean": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-0.4.1.tgz",
+ "integrity": "sha512-PajoaZgwbJ1QAbY5CemvuCIXUJU8teoA3ABTd3eZA+j0UYTUBW+hlV5m3ZlZLgRxKm3ZrchAEVR85r5uBeKF9w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "peerDependencies": {
+ "grunt": "~0.4.0"
+ }
+ },
+ "node_modules/grunt-contrib-connect": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-5.0.1.tgz",
+ "integrity": "sha512-Hfq/0QJl3ddD2N/a/1cDJHkKEOGk6m7W6uxNe0AmYwtf6v0F/4+8q9rvPJ1tl+mrI90lU/89I9T/h48qqeMfQA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "async": "^3.2.5",
+ "connect": "^3.7.0",
+ "connect-livereload": "^0.6.1",
+ "http2-wrapper": "^2.2.1",
+ "morgan": "^1.10.0",
+ "open": "^8.0.0",
+ "portscanner": "^2.2.0",
+ "serve-index": "^1.9.1",
+ "serve-static": "^1.15.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/grunt-contrib-connect/node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/grunt-contrib-jasmine": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-jasmine/-/grunt-contrib-jasmine-4.0.0.tgz",
+ "integrity": "sha512-Vf1w7kNJiuu9E+A0atU/GgMutbosli7oA+L1XhXBLr//rksdiVn2NLAz0UhE8RnsqxivALbDFh+oHh97qV4n2w==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.2",
+ "grunt-eslint": "^24.0.1",
+ "lodash": "^4.17.21",
+ "pacote": "^15.0.8",
+ "puppeteer": "^19.5.2",
+ "rimraf": "^4.0.4",
+ "sprintf-js": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/argparse/node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/dateformat": {
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
+ "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/findup-sync": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz",
+ "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.4",
+ "resolve-dir": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/getobject": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz",
+ "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/grunt": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz",
+ "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "dateformat": "~4.6.2",
+ "eventemitter2": "~0.4.13",
+ "exit": "~0.1.2",
+ "findup-sync": "~5.0.0",
+ "glob": "~7.1.6",
+ "grunt-cli": "~1.4.3",
+ "grunt-known-options": "~2.0.0",
+ "grunt-legacy-log": "~3.0.0",
+ "grunt-legacy-util": "~2.0.1",
+ "iconv-lite": "~0.6.3",
+ "js-yaml": "~3.14.0",
+ "minimatch": "~3.0.4",
+ "nopt": "~3.0.6"
+ },
+ "bin": {
+ "grunt": "bin/grunt"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/grunt-eslint": {
+ "version": "24.3.0",
+ "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.3.0.tgz",
+ "integrity": "sha512-dUPiRgX8fhmh4uwTAn9xrzg7HV5j5DhGmZZGJdHfjy/AN9G4jD+5IjfbcAJ209JcIG8m4B7xz3crIhuDSm3siQ==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.2",
+ "eslint": "^8.44.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ },
+ "peerDependencies": {
+ "grunt": ">=1"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/grunt-legacy-log": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz",
+ "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "colors": "~1.1.2",
+ "grunt-legacy-log-utils": "~2.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.19"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/grunt-legacy-log-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz",
+ "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "chalk": "~4.1.0",
+ "lodash": "~4.17.19"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/grunt-legacy-util": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz",
+ "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "async": "~3.2.0",
+ "exit": "~0.1.2",
+ "getobject": "~1.0.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.21",
+ "underscore.string": "~3.3.5",
+ "which": "~2.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/minimatch": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
+ "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/minipass": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
+ "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/rimraf": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
+ "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^9.2.0"
+ },
+ "bin": {
+ "rimraf": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/rimraf/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/rimraf/node_modules/glob": {
+ "version": "9.3.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz",
+ "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "minimatch": "^8.0.2",
+ "minipass": "^4.2.4",
+ "path-scurry": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/rimraf/node_modules/minimatch": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz",
+ "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "dev": true
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/underscore.string": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz",
+ "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "sprintf-js": "^1.1.1",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/grunt-contrib-jasmine/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/grunt-contrib-jshint": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.6.5.tgz",
+ "integrity": "sha512-Hq9ExFaE41jCoAXqwdIi2b/QGI3K/1z+52aIP0m1zTaXv6DgodDhnR7ijqGTI3mm9UdJi/qfb08/UmEOEKsuLw==",
+ "dev": true,
+ "dependencies": {
+ "jshint": "~2.1.10"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "peerDependencies": {
+ "grunt": "~0.4.0"
+ }
+ },
+ "node_modules/grunt-contrib-uglify": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.2.7.tgz",
+ "integrity": "sha512-KXKM2UNLsCiUI6/DYfAIPm3i26UJJN6Cf6KD8fFa2TKllj7yLPC853IxtWBJ/3jX66QtXHGtdCORuuA6sAFvvA==",
+ "dev": true,
+ "dependencies": {
+ "grunt-lib-contrib": "~0.6.1",
+ "uglify-js": "~2.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "peerDependencies": {
+ "grunt": "~0.4.0"
+ }
+ },
+ "node_modules/grunt-contrib-watch": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.2.0.tgz",
+ "integrity": "sha512-NPhb9WoMEdqtFudcserCHlQoGEXoZKvklOKdC0WyC2tnkZpNVWdSRdNCM04OhvH08fgadBNoNSto4zfy/7ZEfA==",
+ "dev": true,
+ "dependencies": {
+ "gaze": "~0.3.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "peerDependencies": {
+ "grunt": "~0.4.0"
+ }
+ },
+ "node_modules/grunt-jasmine-node": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-jasmine-node/-/grunt-jasmine-node-0.1.0.tgz",
+ "integrity": "sha512-/IE/IVbkqsihLmLtGkfu35mQuTbio1ZAW4aUNkCjQ+Oyn1JJaJEjnbSDJNYaUOIuZtxob66gydi1qXUnI5wxaQ==",
+ "dev": true,
+ "dependencies": {
+ "jasmine-node": "*"
+ },
+ "bin": {
+ "grunt-jasmine-node": "bin/grunt-jasmine-node"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/grunt-known-options": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz",
+ "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/grunt-legacy-log": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz",
+ "integrity": "sha512-qYs/uM0ImdzwIXLhS4O5WLV5soAM+PEqqHI/hzSxlo450ERSccEhnXqoeDA9ZozOdaWuYnzTOTwRcVRogleMxg==",
+ "dev": true,
+ "dependencies": {
+ "colors": "~0.6.2",
+ "grunt-legacy-log-utils": "~0.1.1",
+ "hooker": "~0.2.3",
+ "lodash": "~2.4.1",
+ "underscore.string": "~2.3.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/grunt-legacy-log-utils": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz",
+ "integrity": "sha512-D0vbUX00TFYCKNZtcZzemMpwT8TR/FdRs1pmfiBw6qnUw80PfsjV+lhIozY/3eJ3PSG2zj89wd2mH/7f4tNAlw==",
+ "dev": true,
+ "dependencies": {
+ "colors": "~0.6.2",
+ "lodash": "~2.4.1",
+ "underscore.string": "~2.3.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/grunt-legacy-log-utils/node_modules/lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==",
+ "dev": true,
+ "engines": [
+ "node",
+ "rhino"
+ ]
+ },
+ "node_modules/grunt-legacy-log-utils/node_modules/underscore.string": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
+ "integrity": "sha512-hbD5MibthuDAu4yA5wxes5bzFgqd3PpBJuClbRxaNddxfdsz+qf+1kHwrGQFrmchmDHb9iNU+6EHDn8uj0xDJg==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/grunt-legacy-log/node_modules/lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==",
+ "dev": true,
+ "engines": [
+ "node",
+ "rhino"
+ ]
+ },
+ "node_modules/grunt-legacy-log/node_modules/underscore.string": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
+ "integrity": "sha512-hbD5MibthuDAu4yA5wxes5bzFgqd3PpBJuClbRxaNddxfdsz+qf+1kHwrGQFrmchmDHb9iNU+6EHDn8uj0xDJg==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/grunt-legacy-util": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
+ "integrity": "sha512-cXPbfF8aM+pvveQeN1K872D5fRm30xfJWZiS63Y8W8oyIPLClCsmI8bW96Txqzac9cyL4lRqEBhbhJ3n5EzUUQ==",
+ "dev": true,
+ "dependencies": {
+ "async": "~0.1.22",
+ "exit": "~0.1.1",
+ "getobject": "~0.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~0.9.2",
+ "underscore.string": "~2.2.1",
+ "which": "~1.0.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/grunt-lib-contrib": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/grunt-lib-contrib/-/grunt-lib-contrib-0.6.1.tgz",
+ "integrity": "sha512-HdCtJuMmmkSAVrAfsG7lZWE0YabrsPWwzcCCUgWQOAaQsQSUNhw/IwD2YjCSLh5y9NXSPzHTYFLL4ro7QbAJMA==",
+ "dev": true,
+ "dependencies": {
+ "zlib-browserify": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/grunt-open": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/grunt-open/-/grunt-open-0.2.4.tgz",
+ "integrity": "sha512-3VxPWr6zZBVvEPtCMkjVtP30saT/VDIeUE8nWs8Y2tNgUPROKwWoWFwo1AUTNRM5oufJ2PL1eMVaL7Byv4NhQg==",
+ "dev": true,
+ "dependencies": {
+ "opn": "^5.4.0"
+ },
+ "bin": {
+ "grunt-open": "bin/grunt-open"
+ },
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/grunt-plato": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/grunt-plato/-/grunt-plato-0.2.1.tgz",
+ "integrity": "sha512-8nf/LDxG6XSerqzg7MCWW6I06IYT8XuvbYw7Lx09UFLSKCEwoCrxreoSvkVbWGS25kI2Ku8TFBVi2jQU3Ahu0w==",
+ "dev": true,
+ "dependencies": {
+ "plato": "~0.6.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/grunt-preprocess": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/grunt-preprocess/-/grunt-preprocess-2.3.0.tgz",
+ "integrity": "sha512-Ld+NiXQVlkt2zoqOcUA7xZ+d29jhPDqqyCyiSh1Vm5e98wQrGw7CEvZ/FZ7fOVqpfY5JXdJOH5MiQnuYEDdbpg==",
+ "dev": true,
+ "dependencies": {
+ "grunt": "~0.4.0a",
+ "preprocess": "~1.3.0"
+ },
+ "bin": {
+ "grunt-preprocess": "bin/grunt-preprocess"
+ },
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/grunt-prompt": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/grunt-prompt/-/grunt-prompt-0.1.2.tgz",
+ "integrity": "sha512-J06q7BPxbAtxpgk45fQ1PiqLcoXrJhl1fvPS9FVIZXuAOLgFEa6TGCmIIEW3LLg2uyUfgefYMA6QUjZL7lhTUQ==",
+ "dev": true,
+ "dependencies": {
+ "inquirer": "~0.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "peerDependencies": {
+ "grunt": "~0.4.1"
+ }
+ },
+ "node_modules/grunt-template-jasmine-istanbul": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/grunt-template-jasmine-istanbul/-/grunt-template-jasmine-istanbul-0.2.6.tgz",
+ "integrity": "sha512-9UkCvPhb1gpIfM+Nsk9F6xDfXsF6skYGp+I2mk1XSsq7pHpDQrrZBE/9QMW2guuuH4l2qiN93iuUe3n40n1nRw==",
+ "dev": true,
+ "dependencies": {
+ "istanbul": ">=0.1.30"
+ },
+ "peerDependencies": {
+ "grunt": ">=0.4.0",
+ "grunt-contrib-jasmine": ">=0.3.1"
+ }
+ },
+ "node_modules/handlebars": {
+ "version": "4.7.8",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
+ }
+ },
+ "node_modules/handlebars/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/handlebars/node_modules/uglify-js": {
+ "version": "3.19.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
+ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
+ "dev": true,
+ "optional": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
+ "dev": true
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "parse-passwd": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/hooker": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
+ "integrity": "sha512-t+UerCsQviSymAInD01Pw+Dn/usmz1sRO+3Zk1+lx8eg+WKpD2ulcwWqHHL0+aseRBr+3+vIhiG1K1JTwaIcTA==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz",
+ "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^7.5.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
+ "dev": true
+ },
+ "node_modules/http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/http-errors/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/http-errors/node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/http-proxy": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-0.10.4.tgz",
+ "integrity": "sha512-lb5uBBW+eLzoZ/Tute8ENcbNvibErYYPzNhjZk9IZugBAl87kUSxzVLBwQ7FbU2qBuorbah6VObuXvp2DN1LbA==",
+ "dev": true,
+ "dependencies": {
+ "colors": "0.x.x",
+ "optimist": "0.6.x",
+ "pkginfo": "0.3.x",
+ "utile": "~0.2.1"
+ },
+ "bin": {
+ "node-http-proxy": "bin/node-http-proxy"
+ },
+ "engines": {
+ "node": ">= 0.6.6"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dev": true,
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/http-proxy-agent/node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/http-proxy-agent/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/http2-wrapper": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz",
+ "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/https-proxy-agent/node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/https-proxy-agent/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/humanize-ms": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
+ "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.0.0"
+ }
+ },
+ "node_modules/i": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz",
+ "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz",
+ "integrity": "sha512-KhmFWgaQZY83Cbhi+ADInoUQ8Etn6BG5fikM9syeOjQltvR45h7cRKJ/9uvQEuD61I3Uju77yYce0/LhKVClQw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/ignore-walk": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz",
+ "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==",
+ "dev": true,
+ "dependencies": {
+ "minimatch": "^9.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/ignore-walk/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/ignore-walk/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
+ "integrity": "sha512-Al67oatbRSo3RV5hRqIoln6Y5yMVbJSIn4jEJNL7VCImzq/kLr7vvb6sFRJXqr8rpHc/2kJOM+y0sPKN47VdzA==",
+ "dev": true
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/inquirer": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.2.5.tgz",
+ "integrity": "sha512-AgCZjM1LcGSiFeh4d893OPTKYSpkK6v92qEO1kvj5SHqaaK1sLKFJKWkZpSwdBowNEletOKWyKd6JnhUs+qMsQ==",
+ "dev": true,
+ "dependencies": {
+ "async": "~0.2.8",
+ "cli-color": "~0.2.2",
+ "lodash": "~1.2.1",
+ "mute-stream": "0.0.3"
+ }
+ },
+ "node_modules/inquirer/node_modules/async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==",
+ "dev": true
+ },
+ "node_modules/inquirer/node_modules/lodash": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.2.1.tgz",
+ "integrity": "sha512-EKI82Edm8glH3FUu17sQIF+Ly1cW2ROPc0qgf1L4DBUysBlQVL+/b+WtufJw0O8FtMo7Vq9KTrzUboyWSgW/tg==",
+ "dev": true,
+ "engines": [
+ "node",
+ "rhino"
+ ]
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha512-CLM8SNMDu7C5psFCn6Wg/tgpj/bKAg7hc2gWqcuR9OD5Ft9PhBpIu8PLicPeis+xDd6YX2ncI8MCA64I9tftIA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "dev": true,
+ "dependencies": {
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/ip-address/node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "dev": true
+ },
+ "node_modules/is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "is-relative": "^1.0.0",
+ "is-windows": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-lambda": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
+ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
+ "dev": true
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-like": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz",
+ "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lodash.isfinite": "^3.3.2"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "is-unc-path": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "unc-path-regex": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+ "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/istanbul": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
+ "integrity": "sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg==",
+ "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.",
+ "dev": true,
+ "dependencies": {
+ "abbrev": "1.0.x",
+ "async": "1.x",
+ "escodegen": "1.8.x",
+ "esprima": "2.7.x",
+ "glob": "^5.0.15",
+ "handlebars": "^4.0.1",
+ "js-yaml": "3.x",
+ "mkdirp": "0.5.x",
+ "nopt": "3.x",
+ "once": "1.x",
+ "resolve": "1.1.x",
+ "supports-color": "^3.1.0",
+ "which": "^1.1.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "istanbul": "lib/cli.js"
+ }
+ },
+ "node_modules/istanbul/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/istanbul/node_modules/async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
+ "dev": true
+ },
+ "node_modules/istanbul/node_modules/glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/istanbul/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/istanbul/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/istanbul/node_modules/js-yaml/node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/istanbul/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/istanbul/node_modules/nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
+ "dev": true,
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ }
+ },
+ "node_modules/istanbul/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jasmine-growl-reporter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jasmine-growl-reporter/-/jasmine-growl-reporter-2.0.0.tgz",
+ "integrity": "sha512-RYwVfPaGgxQQSHDOt6jQ99/KAkFQ/Fiwg/AzBS+uO9A4UhGhxb7hwXaUUSU/Zs0MxBoFNqmIRC+7P4/+5O3lXg==",
+ "dev": true,
+ "dependencies": {
+ "growl": "^1.10.5"
+ }
+ },
+ "node_modules/jasmine-node": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/jasmine-node/-/jasmine-node-3.0.0.tgz",
+ "integrity": "sha512-vUa5Q7bQYwHHqi6FlJYndiKqZp+d+c3MKe0QUMwwrC4JRmoRV3zkg0buxB/uQ6qLh0NO34TNstpAnvaZ6xGlAA==",
+ "dev": true,
+ "dependencies": {
+ "coffeescript": "~1.12.7",
+ "gaze": "~1.1.2",
+ "jasmine-growl-reporter": "~2.0.0",
+ "jasmine-reporters": "~1.0.0",
+ "mkdirp": "~0.3.5",
+ "requirejs": "~2.3.6",
+ "underscore": "~1.9.1",
+ "walkdir": "~0.0.12"
+ },
+ "bin": {
+ "jasmine-node": "bin/jasmine-node"
+ }
+ },
+ "node_modules/jasmine-node/node_modules/gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "dev": true,
+ "dependencies": {
+ "globule": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/jasmine-node/node_modules/mkdirp": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
+ "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==",
+ "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
+ "dev": true
+ },
+ "node_modules/jasmine-reporters": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-1.0.2.tgz",
+ "integrity": "sha512-KrMRwzykkIKfkXr5UhCs/4BRJpws4VmNOeHIVKX8EBa9lYysVik3phkKrJCnCUE2lUCZDIA4rAmFrDgw546IzA==",
+ "dev": true,
+ "dependencies": {
+ "mkdirp": "~0.3.5"
+ }
+ },
+ "node_modules/jasmine-reporters/node_modules/mkdirp": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
+ "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==",
+ "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
+ "dev": true
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz",
+ "integrity": "sha512-VEKcIksckDBUhg2JS874xVouiPkywVUh4yyUmLCDe1Zg3bCd6M+F1eGPenPeHLc2XC8pp9G8bsuofK0NeEqRkA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "~ 0.1.11",
+ "esprima": "~ 1.0.2"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ },
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/js-yaml/node_modules/esprima": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
+ "integrity": "sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/jsbn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+ "dev": true
+ },
+ "node_modules/jshint": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.1.11.tgz",
+ "integrity": "sha512-dudyjI4JJQYLUIKWq4SESC5xTC4Qw/VeL+VzEnkG7ZwKaxap+jKkySGQgjHj1ruSlTN4vXr0pAUIA8EFPS/+zw==",
+ "dev": true,
+ "dependencies": {
+ "cli": "0.4.x",
+ "console-browserify": "0.1.x",
+ "minimatch": "0.x.x",
+ "shelljs": "0.1.x",
+ "underscore": "1.4.x"
+ },
+ "bin": {
+ "jshint": "bin/jshint"
+ }
+ },
+ "node_modules/jshint/node_modules/underscore": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
+ "integrity": "sha512-ZqGrAgaqqZM7LGRzNjLnw5elevWb5M8LEoDMadxIW3OWbcv72wMMgKdwOKpd5Fqxe8choLD8HN3iSj3TUh/giQ==",
+ "dev": true
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
+ "dev": true,
+ "engines": [
+ "node >= 0.2.0"
+ ]
+ },
+ "node_modules/keypress": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz",
+ "integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA==",
+ "dev": true
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
"dev": true,
"dependencies": {
- "has-bigints": "^1.0.1"
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "node_modules/liftup": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz",
+ "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==",
"dev": true,
+ "peer": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "extend": "^3.0.2",
+ "findup-sync": "^4.0.0",
+ "fined": "^1.2.0",
+ "flagged-respawn": "^1.0.1",
+ "is-plain-object": "^2.0.4",
+ "object.map": "^1.0.1",
+ "rechoir": "^0.7.0",
+ "resolve": "^1.19.0"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=10"
}
},
- "node_modules/is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "node_modules/liftup/node_modules/findup-sync": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz",
+ "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==",
"dev": true,
- "engines": {
- "node": ">= 0.4"
+ "peer": true,
+ "dependencies": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "micromatch": "^4.0.2",
+ "resolve-dir": "^1.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "node_modules/liftup/node_modules/resolve": {
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
"dev": true,
+ "peer": true,
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "is-core-module": "^2.16.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
},
"engines": {
"node": ">= 0.4"
@@ -2094,318 +5188,265 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
- "license": "MIT",
- "bin": {
- "is-docker": "cli.js"
+ "dependencies": {
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
- "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "node_modules/lodash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
+ "integrity": "sha512-LVbt/rjK62gSbhehDVKL0vlaime4Y1IBixL+bKeNfoY4L2zab/jGrxU6Ka05tMA/zBxkTk5t3ivtphdyYupczw==",
"dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-my-ip-valid": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz",
- "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==",
- "dev": true
+ "engines": [
+ "node",
+ "rhino"
+ ]
},
- "node_modules/is-my-json-valid": {
- "version": "2.20.6",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz",
- "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==",
+ "node_modules/lodash.isfinite": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
+ "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==",
"dev": true,
- "dependencies": {
- "generate-function": "^2.0.0",
- "generate-object-property": "^1.1.0",
- "is-my-ip-valid": "^1.0.0",
- "jsonpointer": "^5.0.0",
- "xtend": "^4.0.0"
- }
+ "license": "MIT"
},
- "node_modules/is-number-like": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz",
- "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lodash.isfinite": "^3.3.2"
- }
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
},
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "node_modules/lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==",
+ "dev": true
+ },
+ "node_modules/make-fetch-happen": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
+ "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
"dev": true,
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^16.1.0",
+ "http-cache-semantics": "^4.1.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-fetch": "^2.0.3",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^9.0.0"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
- "dev": true
- },
- "node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "node_modules/make-fetch-happen/node_modules/@npmcli/fs": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz",
+ "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "@gar/promisify": "^1.1.3",
+ "semver": "^7.3.5"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/is-set": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
- "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "node_modules/make-fetch-happen/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "dependencies": {
+ "balanced-match": "^1.0.0"
}
},
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
- "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "node_modules/make-fetch-happen/node_modules/cacache": {
+ "version": "16.1.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz",
+ "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7"
+ "@npmcli/fs": "^2.1.0",
+ "@npmcli/move-file": "^2.0.0",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.1.0",
+ "glob": "^8.0.1",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "mkdirp": "^1.0.4",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^9.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^2.0.0"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "node_modules/make-fetch-happen/node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
"dev": true,
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "minipass": "^3.0.0"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">= 8"
}
},
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "node_modules/make-fetch-happen/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
"dependencies": {
- "has-symbols": "^1.0.2"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "node_modules/make-fetch-happen/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
- "node_modules/is-weakmap": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
- "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "node_modules/make-fetch-happen/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=12"
}
},
- "node_modules/is-weakset": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
- "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "node_modules/make-fetch-happen/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
- "get-intrinsic": "^1.2.4"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=10"
}
},
- "node_modules/is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "node_modules/make-fetch-happen/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
- "dev": true
- },
- "node_modules/istanbul": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
- "integrity": "sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg==",
- "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.",
+ "node_modules/make-fetch-happen/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true,
- "dependencies": {
- "abbrev": "1.0.x",
- "async": "1.x",
- "escodegen": "1.8.x",
- "esprima": "2.7.x",
- "glob": "^5.0.15",
- "handlebars": "^4.0.1",
- "js-yaml": "3.x",
- "mkdirp": "0.5.x",
- "nopt": "3.x",
- "once": "1.x",
- "resolve": "1.1.x",
- "supports-color": "^3.1.0",
- "which": "^1.1.1",
- "wordwrap": "^1.0.0"
- },
"bin": {
- "istanbul": "lib/cli.js"
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/istanbul/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "node_modules/make-fetch-happen/node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
"dev": true,
"dependencies": {
- "sprintf-js": "~1.0.2"
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/istanbul/node_modules/async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
- "dev": true
+ "node_modules/make-fetch-happen/node_modules/rimraf/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
},
- "node_modules/istanbul/node_modules/glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==",
+ "node_modules/make-fetch-happen/node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
"dependencies": {
+ "fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
- "minimatch": "2 || 3",
+ "minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
- }
- },
- "node_modules/istanbul/node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/istanbul/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/istanbul/node_modules/js-yaml/node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true,
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/istanbul/node_modules/minimatch": {
+ "node_modules/make-fetch-happen/node_modules/rimraf/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
@@ -2417,358 +5458,349 @@
"node": "*"
}
},
- "node_modules/istanbul/node_modules/nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
+ "node_modules/make-fetch-happen/node_modules/ssri": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
+ "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
"dev": true,
"dependencies": {
- "abbrev": "1"
+ "minipass": "^3.1.1"
},
- "bin": {
- "nopt": "bin/nopt.js"
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/istanbul/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "node_modules/make-fetch-happen/node_modules/unique-filename": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
+ "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==",
"dev": true,
"dependencies": {
- "isexe": "^2.0.0"
+ "unique-slug": "^3.0.0"
},
- "bin": {
- "which": "bin/which"
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/jasmine-growl-reporter": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/jasmine-growl-reporter/-/jasmine-growl-reporter-2.0.0.tgz",
- "integrity": "sha512-RYwVfPaGgxQQSHDOt6jQ99/KAkFQ/Fiwg/AzBS+uO9A4UhGhxb7hwXaUUSU/Zs0MxBoFNqmIRC+7P4/+5O3lXg==",
+ "node_modules/make-fetch-happen/node_modules/unique-slug": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz",
+ "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==",
"dev": true,
"dependencies": {
- "growl": "^1.10.5"
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/jasmine-node": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/jasmine-node/-/jasmine-node-3.0.0.tgz",
- "integrity": "sha512-vUa5Q7bQYwHHqi6FlJYndiKqZp+d+c3MKe0QUMwwrC4JRmoRV3zkg0buxB/uQ6qLh0NO34TNstpAnvaZ6xGlAA==",
+ "node_modules/make-iterator": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+ "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
"dev": true,
+ "peer": true,
"dependencies": {
- "coffeescript": "~1.12.7",
- "gaze": "~1.1.2",
- "jasmine-growl-reporter": "~2.0.0",
- "jasmine-reporters": "~1.0.0",
- "mkdirp": "~0.3.5",
- "requirejs": "~2.3.6",
- "underscore": "~1.9.1",
- "walkdir": "~0.0.12"
+ "kind-of": "^6.0.2"
},
- "bin": {
- "jasmine-node": "bin/jasmine-node"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/jasmine-node/node_modules/gaze": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
- "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "node_modules/map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/matchdep": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-0.1.2.tgz",
+ "integrity": "sha512-ywJ1PxWE+ok9Th8SDzslcmKMNpN8fnP9DSIknA4XTfTijzwGnPE+T1zdDvtaAd2OycqXvsqQOQe3Nt2QEKG+Zw==",
"dev": true,
"dependencies": {
- "globule": "^1.0.0"
+ "minimatch": "~0.2.9"
},
"engines": {
- "node": ">= 4.0.0"
+ "node": ">= 0.8.0"
}
},
- "node_modules/jasmine-node/node_modules/mkdirp": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
- "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==",
- "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
- "dev": true
- },
- "node_modules/jasmine-reporters": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-1.0.2.tgz",
- "integrity": "sha512-KrMRwzykkIKfkXr5UhCs/4BRJpws4VmNOeHIVKX8EBa9lYysVik3phkKrJCnCUE2lUCZDIA4rAmFrDgw546IzA==",
+ "node_modules/memoizee": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.2.6.tgz",
+ "integrity": "sha512-0VZI0btwyGk6FSDnJGuJtso4M/eSxhVb5ID5AZNWMFFgT2LexCV18hHI764V4ELKlyfnQ5KMQ+q5H3uvFN3MLw==",
"dev": true,
"dependencies": {
- "mkdirp": "~0.3.5"
+ "es5-ext": "~0.9.2",
+ "event-emitter": "~0.2.2",
+ "next-tick": "0.1.x"
+ },
+ "engines": {
+ "node": ">=0.4"
}
},
- "node_modules/jasmine-reporters/node_modules/mkdirp": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
- "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==",
- "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
- "dev": true
- },
- "node_modules/js-yaml": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz",
- "integrity": "sha512-VEKcIksckDBUhg2JS874xVouiPkywVUh4yyUmLCDe1Zg3bCd6M+F1eGPenPeHLc2XC8pp9G8bsuofK0NeEqRkA==",
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
+ "peer": true,
"dependencies": {
- "argparse": "~ 0.1.11",
- "esprima": "~ 1.0.2"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
},
"engines": {
- "node": ">= 0.6.0"
+ "node": ">=8.6"
}
},
- "node_modules/js-yaml/node_modules/esprima": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
- "integrity": "sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==",
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"dev": true,
+ "license": "MIT",
"bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
+ "mime": "cli.js"
},
"engines": {
- "node": ">=0.4.0"
+ "node": ">=4"
}
},
- "node_modules/jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
- "dev": true
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "node_modules/jshint": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.1.11.tgz",
- "integrity": "sha512-dudyjI4JJQYLUIKWq4SESC5xTC4Qw/VeL+VzEnkG7ZwKaxap+jKkySGQgjHj1ruSlTN4vXr0pAUIA8EFPS/+zw==",
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
"dependencies": {
- "cli": "0.4.x",
- "console-browserify": "0.1.x",
- "minimatch": "0.x.x",
- "shelljs": "0.1.x",
- "underscore": "1.4.x"
+ "mime-db": "1.52.0"
},
- "bin": {
- "jshint": "bin/jshint"
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/jshint/node_modules/underscore": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
- "integrity": "sha512-ZqGrAgaqqZM7LGRzNjLnw5elevWb5M8LEoDMadxIW3OWbcv72wMMgKdwOKpd5Fqxe8choLD8HN3iSj3TUh/giQ==",
- "dev": true
- },
- "node_modules/json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
- "dev": true
- },
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
- "dev": true
- },
- "node_modules/jsonfile": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
- "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==",
+ "node_modules/minimatch": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
+ "integrity": "sha512-zZ+Jy8lVWlvqqeM8iZB7w7KmQkoJn8djM585z88rywrEbzoqawVa9FR5p2hwD+y74nfuKOjmNvi9gtWJNLqHvA==",
+ "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue",
"dev": true,
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "dependencies": {
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
+ },
+ "engines": {
+ "node": "*"
}
},
- "node_modules/jsonfile/node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true,
- "optional": true
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "node_modules/jsonpointer": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
- "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
+ "node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
+ "node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
"dev": true,
"dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
+ "minipass": "^3.0.0"
},
"engines": {
- "node": ">=0.6.0"
+ "node": ">= 8"
}
},
- "node_modules/jsprim/node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "node_modules/minipass-collect/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
"engines": {
- "node": ">=0.8"
+ "node": ">=8"
}
},
- "node_modules/kew": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
- "integrity": "sha512-IG6nm0+QtAMdXt9KvbgbGdvY50RSrw+U4sGZg+KlrSKPJEwVE5JVoI3d7RWfSMdBQneRheeAOj3lIjX5VL/9RQ==",
- "dev": true
- },
- "node_modules/keypress": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz",
- "integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA==",
- "dev": true
- },
- "node_modules/klaw": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
- "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==",
+ "node_modules/minipass-fetch": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
+ "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
"dev": true,
+ "dependencies": {
+ "minipass": "^3.1.6",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ },
"optionalDependencies": {
- "graceful-fs": "^4.1.9"
+ "encoding": "^0.1.13"
}
},
- "node_modules/klaw/node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "node_modules/minipass-fetch/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
- "optional": true
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "node_modules/levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+ "node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
"dev": true,
"dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
+ "minipass": "^3.0.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">= 8"
}
},
- "node_modules/lodash": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
- "integrity": "sha512-LVbt/rjK62gSbhehDVKL0vlaime4Y1IBixL+bKeNfoY4L2zab/jGrxU6Ka05tMA/zBxkTk5t3ivtphdyYupczw==",
+ "node_modules/minipass-flush/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
- "engines": [
- "node",
- "rhino"
- ]
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "node_modules/lodash.isfinite": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
- "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==",
+ "node_modules/minipass-json-stream": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz",
+ "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/lru-cache": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
- "integrity": "sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==",
- "dev": true
+ "dependencies": {
+ "jsonparse": "^1.3.1",
+ "minipass": "^3.0.0"
+ }
},
- "node_modules/matchdep": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-0.1.2.tgz",
- "integrity": "sha512-ywJ1PxWE+ok9Th8SDzslcmKMNpN8fnP9DSIknA4XTfTijzwGnPE+T1zdDvtaAd2OycqXvsqQOQe3Nt2QEKG+Zw==",
+ "node_modules/minipass-json-stream/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
"dependencies": {
- "minimatch": "~0.2.9"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=8"
}
},
- "node_modules/memoizee": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.2.6.tgz",
- "integrity": "sha512-0VZI0btwyGk6FSDnJGuJtso4M/eSxhVb5ID5AZNWMFFgT2LexCV18hHI764V4ELKlyfnQ5KMQ+q5H3uvFN3MLw==",
+ "node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
"dev": true,
"dependencies": {
- "es5-ext": "~0.9.2",
- "event-emitter": "~0.2.2",
- "next-tick": "0.1.x"
+ "minipass": "^3.0.0"
},
"engines": {
- "node": ">=0.4"
+ "node": ">=8"
}
},
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "node_modules/minipass-pipeline/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
+ "dependencies": {
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+ "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
"dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=8"
}
},
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "node_modules/minipass-sized/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
"dependencies": {
- "mime-db": "1.52.0"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=8"
}
},
- "node_modules/minimatch": {
- "version": "0.2.14",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
- "integrity": "sha512-zZ+Jy8lVWlvqqeM8iZB7w7KmQkoJn8djM585z88rywrEbzoqawVa9FR5p2hwD+y74nfuKOjmNvi9gtWJNLqHvA==",
- "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue",
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
"dev": true,
"dependencies": {
- "lru-cache": "2",
- "sigmund": "~1.0.0"
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
},
"engines": {
- "node": "*"
+ "node": ">= 8"
}
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
+ "node_modules/mitt": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz",
+ "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==",
+ "dev": true
+ },
"node_modules/mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
@@ -2781,6 +5813,12 @@
"mkdirp": "bin/cmd.js"
}
},
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "dev": true
+ },
"node_modules/morgan": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
@@ -2811,6 +5849,12 @@
"integrity": "sha512-yNRDZXxblEoO9SKEEmPB0ewZpizBJMcpujzPI0vIFesC8hyk5QpbIyjcby6804c7cVuddcNxLaYJDQN/g7sRUQ==",
"dev": true
},
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
"node_modules/ncp": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz",
@@ -2842,41 +5886,343 @@
"integrity": "sha512-I44QWeGCHJTx2D3buhnljvSjmPgJua3zdPGtlCQEvA45t9kS/CaHnlVqidTzHwq8LGXhD2SMezjk4hQgP+32Lg==",
"dev": true,
"engines": {
- "node": ">=0.4"
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-gyp": {
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz",
+ "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==",
+ "dev": true,
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^10.0.3",
+ "nopt": "^6.0.0",
+ "npmlog": "^6.0.0",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
+ "which": "^2.0.2"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^12.13 || ^14.13 || >=16"
+ }
+ },
+ "node_modules/node-gyp/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/node-gyp/node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/node-gyp/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/node-gyp/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/node-gyp/node_modules/nopt": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
+ "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==",
+ "dev": true,
+ "dependencies": {
+ "abbrev": "^1.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/node-gyp/node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/node-gyp/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
+ "dev": true,
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz",
+ "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^6.0.0",
+ "is-core-module": "^2.8.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-bundled": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz",
+ "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==",
+ "dev": true,
+ "dependencies": {
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-install-checks": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz",
+ "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.1.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-normalize-package-bin": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz",
+ "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-package-arg": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz",
+ "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^6.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-packlist": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz",
+ "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==",
+ "dev": true,
+ "dependencies": {
+ "ignore-walk": "^6.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-pick-manifest": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz",
+ "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==",
+ "dev": true,
+ "dependencies": {
+ "npm-install-checks": "^6.0.0",
+ "npm-normalize-package-bin": "^3.0.0",
+ "npm-package-arg": "^10.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-registry-fetch": {
+ "version": "14.0.5",
+ "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz",
+ "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==",
+ "dev": true,
+ "dependencies": {
+ "make-fetch-happen": "^11.0.0",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-json-stream": "^1.0.1",
+ "minizlib": "^2.1.2",
+ "npm-package-arg": "^10.0.0",
+ "proc-log": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-registry-fetch/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/node-uuid": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
- "integrity": "sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==",
- "deprecated": "Use uuid module instead",
+ "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
"dev": true,
- "bin": {
- "uuid": "bin/uuid"
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/nopt": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
- "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
+ "node_modules/npm-registry-fetch/node_modules/minipass-fetch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz",
+ "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==",
"dev": true,
"dependencies": {
- "abbrev": "1"
+ "minipass": "^7.0.3",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
},
- "bin": {
- "nopt": "bin/nopt.js"
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
},
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/npm-registry-fetch/node_modules/minipass-fetch/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
"engines": {
- "node": "*"
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg==",
+ "node_modules/npmlog": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
+ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+ "deprecated": "This package is no longer supported.",
"dev": true,
+ "dependencies": {
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
"engines": {
- "node": "*"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/object-inspect": {
@@ -2934,6 +6280,49 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+ "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -3051,13 +6440,174 @@
"node": ">= 0.8.0"
}
},
- "node_modules/package": {
+ "node_modules/os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "deprecated": "This package is no longer supported.",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "dev": true,
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/package-json-from-dist": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/package/-/package-1.0.1.tgz",
- "integrity": "sha512-g6xZR6CO7okjie83sIRJodgGvaXqymfE5GLhN8N2TmZGShmHc/V23hO/vWbdnuy3D81As3pfovw72gGi42l9qA==",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true
+ },
+ "node_modules/pacote": {
+ "version": "15.2.0",
+ "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz",
+ "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==",
+ "dev": true,
+ "dependencies": {
+ "@npmcli/git": "^4.0.0",
+ "@npmcli/installed-package-contents": "^2.0.1",
+ "@npmcli/promise-spawn": "^6.0.1",
+ "@npmcli/run-script": "^6.0.0",
+ "cacache": "^17.0.0",
+ "fs-minipass": "^3.0.0",
+ "minipass": "^5.0.0",
+ "npm-package-arg": "^10.0.0",
+ "npm-packlist": "^7.0.0",
+ "npm-pick-manifest": "^8.0.0",
+ "npm-registry-fetch": "^14.0.0",
+ "proc-log": "^3.0.0",
+ "promise-retry": "^2.0.1",
+ "read-package-json": "^6.0.0",
+ "read-package-json-fast": "^3.0.0",
+ "sigstore": "^1.3.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11"
+ },
+ "bin": {
+ "pacote": "lib/bin.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
"engines": {
- "node": ">= 0.6.0"
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "is-absolute": "^1.0.0",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/parseurl": {
@@ -3070,6 +6620,15 @@
"node": ">= 0.8"
}
},
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -3079,63 +6638,99 @@
"node": ">=0.10.0"
}
},
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
- },
- "node_modules/phantomjs": {
- "version": "1.9.20",
- "resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-1.9.20.tgz",
- "integrity": "sha512-uja26qe+aIP4ptuCCAk0HNTJXoFIf+7l6RZ9OwCH0lbHpQtcS9VhEeirSqytsarg78wA+Zb5rKwiJK8KezrIcA==",
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "extract-zip": "~1.5.0",
- "fs-extra": "~0.26.4",
- "hasha": "^2.2.0",
- "kew": "~0.7.0",
- "progress": "~1.1.8",
- "request": "~2.67.0",
- "request-progress": "~2.0.1",
- "which": "~1.2.2"
- },
- "bin": {
- "phantomjs": "bin/phantomjs"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/phantomjs/node_modules/which": {
- "version": "1.2.14",
- "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
- "integrity": "sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw==",
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
"dev": true,
+ "peer": true,
"dependencies": {
- "isexe": "^2.0.0"
+ "path-root-regex": "^0.1.0"
},
- "bin": {
- "which": "bin/which"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+ "node_modules/path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
"dev": true,
+ "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dev": true,
"dependencies": {
- "pinkie": "^2.0.0"
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/pkginfo": {
@@ -3251,71 +6846,207 @@
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
"integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
"dev": true,
- "license": "MIT",
+ "license": "MIT",
+ "dependencies": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "node_modules/portscanner/node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/posix-getopt": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/posix-getopt/-/posix-getopt-1.0.0.tgz",
+ "integrity": "sha512-/t04mQdCm0Q8YjMAx9f+IT/tpBcPZjOggogCZ01pZnwA5p3OIchUfCmRKD92hwD5sdGX0mbV8JrqOgIA/By9Nw==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/preprocess": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/preprocess/-/preprocess-1.3.0.tgz",
+ "integrity": "sha512-An00+s5P4pthERVAcmQioP7mqLJ+PRpYSaMIMJXpLrO9H4H/mVm9FAChiVB3gxjKTW8hEpnN74AYiPt2CfJCwg==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "~0.9.1"
+ },
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/proc-log": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz",
+ "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+ "dev": true
+ },
+ "node_modules/promise-retry": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+ "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+ "dev": true,
"dependencies": {
- "lodash": "^4.17.14"
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/portscanner/node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true
+ },
+ "node_modules/pump": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
+ "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
"dev": true,
- "license": "MIT"
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
},
- "node_modules/posix-getopt": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/posix-getopt/-/posix-getopt-1.0.0.tgz",
- "integrity": "sha512-/t04mQdCm0Q8YjMAx9f+IT/tpBcPZjOggogCZ01pZnwA5p3OIchUfCmRKD92hwD5sdGX0mbV8JrqOgIA/By9Nw==",
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"dev": true,
"engines": {
- "node": "*"
+ "node": ">=6"
}
},
- "node_modules/possible-typed-array-names": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
- "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "node_modules/puppeteer": {
+ "version": "19.11.1",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.11.1.tgz",
+ "integrity": "sha512-39olGaX2djYUdhaQQHDZ0T0GwEp+5f9UB9HmEP0qHfdQHIq0xGQZuAZ5TLnJIc/88SrPLpEflPC+xUqOTv3c5g==",
+ "deprecated": "< 22.8.2 is no longer supported",
"dev": true,
- "engines": {
- "node": ">= 0.4"
+ "hasInstallScript": true,
+ "dependencies": {
+ "@puppeteer/browsers": "0.5.0",
+ "cosmiconfig": "8.1.3",
+ "https-proxy-agent": "5.0.1",
+ "progress": "2.0.3",
+ "proxy-from-env": "1.1.0",
+ "puppeteer-core": "19.11.1"
}
},
- "node_modules/prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "node_modules/puppeteer-core": {
+ "version": "19.11.1",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.11.1.tgz",
+ "integrity": "sha512-qcuC2Uf0Fwdj9wNtaTZ2OvYRraXpAK+puwwVW8ofOhOgLPZyz1c68tsorfIZyCUOpyBisjr+xByu7BMbEYMepA==",
"dev": true,
+ "dependencies": {
+ "@puppeteer/browsers": "0.5.0",
+ "chromium-bidi": "0.4.7",
+ "cross-fetch": "3.1.5",
+ "debug": "4.3.4",
+ "devtools-protocol": "0.0.1107588",
+ "extract-zip": "2.0.1",
+ "https-proxy-agent": "5.0.1",
+ "proxy-from-env": "1.1.0",
+ "tar-fs": "2.1.1",
+ "unbzip2-stream": "1.4.3",
+ "ws": "8.13.0"
+ },
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=14.14.0"
+ },
+ "peerDependencies": {
+ "typescript": ">= 4.7.4"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/preprocess": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/preprocess/-/preprocess-1.3.0.tgz",
- "integrity": "sha512-An00+s5P4pthERVAcmQioP7mqLJ+PRpYSaMIMJXpLrO9H4H/mVm9FAChiVB3gxjKTW8hEpnN74AYiPt2CfJCwg==",
+ "node_modules/puppeteer-core/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
- "lodash": "~0.9.1"
+ "ms": "2.1.2"
},
"engines": {
- "node": ">= 0.6.0"
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==",
+ "node_modules/puppeteer-core/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "node_modules/progress": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
- "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
"node_modules/quick-lru": {
"version": "5.1.1",
@@ -3340,18 +7071,118 @@
"node": ">= 0.6"
}
},
+ "node_modules/read-package-json": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz",
+ "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==",
+ "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.",
+ "dev": true,
+ "dependencies": {
+ "glob": "^10.2.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "normalize-package-data": "^5.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/read-package-json-fast": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz",
+ "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==",
+ "dev": true,
+ "dependencies": {
+ "json-parse-even-better-errors": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz",
+ "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/read-package-json/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/read-package-json/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/read-package-json/node_modules/json-parse-even-better-errors": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz",
+ "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/read-package-json/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/read-package-json/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/readable-stream": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
- "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
"node_modules/readable-stream/node_modules/inherits": {
@@ -3360,6 +7191,40 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
+ "node_modules/rechoir": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
+ "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "resolve": "^1.9.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/rechoir/node_modules/resolve": {
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "is-core-module": "^2.16.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/regexp.prototype.flags": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
@@ -3378,54 +7243,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/request": {
- "version": "2.67.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz",
- "integrity": "sha512-fzMRDWVEdMktE3foqvL4CBmC+AR8WvcP8pIPx6JSqqhWuPr+BxX9tKx4XiijfyeKtqqRMNpHDWqFMw4JlRPIJg==",
- "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
- "dev": true,
- "dependencies": {
- "aws-sign2": "~0.6.0",
- "bl": "~1.0.0",
- "caseless": "~0.11.0",
- "combined-stream": "~1.0.5",
- "extend": "~3.0.0",
- "forever-agent": "~0.6.1",
- "form-data": "~1.0.0-rc3",
- "har-validator": "~2.0.2",
- "hawk": "~3.1.0",
- "http-signature": "~1.1.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.7",
- "node-uuid": "~1.4.7",
- "oauth-sign": "~0.8.0",
- "qs": "~5.2.0",
- "stringstream": "~0.0.4",
- "tough-cookie": "~2.2.0",
- "tunnel-agent": "~0.4.1"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/request-progress": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
- "integrity": "sha512-dxdraeZVUNEn9AvLrxkgB2k6buTlym71dJk1fk4v8j3Ou3RKNm07BcgbHdj2lLgYGfqX71F+awb1MR+tWPFJzA==",
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true,
- "dependencies": {
- "throttleit": "^1.0.0"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/request/node_modules/qs": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.1.tgz",
- "integrity": "sha512-sh/hmLUTLEiYFhSbRvkM4zj6fMWnbqQt9wrppR2LJA/U/u4xS2eWN8LBE1xc79ExYZJBVZYSMBv/INC7wpE+fw==",
- "dev": true,
- "engines": ">=0.10.40"
- },
"node_modules/requirejs": {
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.7.tgz",
@@ -3452,6 +7278,48 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/rimraf": {
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
@@ -3462,6 +7330,29 @@
"rimraf": "bin.js"
}
},
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -3476,15 +7367,15 @@
"dev": true
},
"node_modules/semver": {
- "version": "1.0.14",
- "resolved": "https://registry.npmjs.org/semver/-/semver-1.0.14.tgz",
- "integrity": "sha512-edb8Hl6pnVrKQauQHTqQkRlpZB5RZ/pEe2ir3C3Ztdst0qIayag31dSLsxexLRe80NiWkCffTF5MB7XrGydhSQ==",
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true,
"bin": {
- "semver": "bin/semver"
+ "semver": "bin/semver.js"
},
"engines": {
- "node": "*"
+ "node": ">=10"
}
},
"node_modules/send": {
@@ -3618,6 +7509,12 @@
"node": ">= 0.8"
}
},
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "dev": true
+ },
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
@@ -3657,6 +7554,27 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/shelljs": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.1.4.tgz",
@@ -3693,19 +7611,153 @@
"integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==",
"dev": true
},
- "node_modules/sntp": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "integrity": "sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A==",
- "deprecated": "This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.",
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/sigstore": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz",
+ "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==",
+ "dev": true,
+ "dependencies": {
+ "@sigstore/bundle": "^1.1.0",
+ "@sigstore/protobuf-specs": "^0.2.0",
+ "@sigstore/sign": "^1.0.0",
+ "@sigstore/tuf": "^1.0.3",
+ "make-fetch-happen": "^11.0.1"
+ },
+ "bin": {
+ "sigstore": "bin/sigstore.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/sigstore/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/sigstore/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
"dev": true,
"dependencies": {
- "hoek": "2.x.x"
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
},
"engines": {
- "node": ">=0.8.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/sigstore/node_modules/minipass-fetch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz",
+ "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^7.0.3",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/sigstore/node_modules/minipass-fetch/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.4",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz",
+ "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==",
+ "dev": true,
+ "dependencies": {
+ "ip-address": "^9.0.5",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/socks-proxy-agent/node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
+ "node_modules/socks-proxy-agent/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
"node_modules/source-map": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
@@ -3719,44 +7771,63 @@
"node": ">=0.8.0"
}
},
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+ "dev": true
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz",
+ "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==",
+ "dev": true
+ },
"node_modules/sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true
},
- "node_modules/sshpk": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
- "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==",
+ "node_modules/ssri": {
+ "version": "10.0.6",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz",
+ "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==",
"dev": true,
"dependencies": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "bin": {
- "sshpk-conv": "bin/sshpk-conv",
- "sshpk-sign": "bin/sshpk-sign",
- "sshpk-verify": "bin/sshpk-verify"
+ "minipass": "^7.0.3"
},
"engines": {
- "node": ">=0.10.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/sshpk/node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "node_modules/ssri/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
"engines": {
- "node": ">=0.8"
+ "node": ">=16 || 14 >=14.17"
}
},
"node_modules/statuses": {
@@ -3782,27 +7853,98 @@
}
},
"node_modules/string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
- "dev": true
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
},
- "node_modules/stringstream": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
- "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
- "dev": true
+ "node_modules/string_decoder/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
"node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "^5.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/supports-color": {
@@ -3817,25 +7959,135 @@
"node": ">=0.8.0"
}
},
- "node_modules/temporary": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/temporary/-/temporary-0.0.8.tgz",
- "integrity": "sha512-NbWqVhmH2arfC/I7upx4VWYJEhp9SSpqjZwzt4LmCuT/7luiAUSt2L3/h9y/3crPnuIdMxg8GsxL9LvEHckdtw==",
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
"dev": true,
"dependencies": {
- "package": ">= 1.0.0 < 1.2.0"
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">= 0.6.0"
+ "node": ">=10"
}
},
- "node_modules/throttleit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz",
- "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==",
+ "node_modules/tar-fs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
"dev": true,
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/tar-fs/node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true
+ },
+ "node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "dev": true,
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar-stream/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/tar/node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
}
},
"node_modules/toidentifier": {
@@ -3848,29 +8100,108 @@
"node": ">=0.6"
}
},
- "node_modules/tough-cookie": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz",
- "integrity": "sha512-Knz9Yr0hlBoWQgUKzOIvRg5adinizAf49i2gHRhj6cLjlM304zRw7uyiY22ADniDxnPHXfIeyQD0EAkgpIz0ow==",
- "deprecated": "ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130",
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
+ "node_modules/tuf-js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz",
+ "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==",
"dev": true,
+ "dependencies": {
+ "@tufjs/models": "1.0.4",
+ "debug": "^4.3.4",
+ "make-fetch-happen": "^11.1.1"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/tuf-js/node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/tunnel-agent": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
- "integrity": "sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ==",
+ "node_modules/tuf-js/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
"engines": {
- "node": "*"
+ "node": ">=12"
}
},
- "node_modules/tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
+ "node_modules/tuf-js/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dev": true,
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/tuf-js/node_modules/minipass-fetch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz",
+ "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^7.0.3",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/tuf-js/node_modules/minipass-fetch/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/tuf-js/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
"node_modules/type-check": {
@@ -3885,13 +8216,16 @@
"node": ">= 0.8.0"
}
},
- "node_modules/typedarray": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.7.tgz",
- "integrity": "sha512-ueeb9YybpjhivjbHP2LdFDAjbS948fGEPj+ACAMs4xCMmh72OCOMQWBQKlaN4ZNQ04yfLSDLSx1tGRIoWimObQ==",
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
+ "engines": {
+ "node": ">=10"
+ },
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/uglify-js": {
@@ -3936,6 +8270,26 @@
"integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==",
"dev": true
},
+ "node_modules/unbzip2-stream": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+ "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "^5.2.1",
+ "through": "^2.3.8"
+ }
+ },
+ "node_modules/unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/underscore": {
"version": "1.9.2",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz",
@@ -3951,6 +8305,37 @@
"node": "*"
}
},
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/unique-filename": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz",
+ "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==",
+ "dev": true,
+ "dependencies": {
+ "unique-slug": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/unique-slug": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz",
+ "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -3961,6 +8346,15 @@
"node": ">= 0.8"
}
},
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -4000,34 +8394,37 @@
"node": ">= 0.4.0"
}
},
- "node_modules/verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
+ "node_modules/v8flags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
+ "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
"dev": true,
- "engines": [
- "node >=0.6.0"
- ],
+ "peer": true,
"dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
}
},
- "node_modules/verror/node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
- "engines": {
- "node": ">=0.8"
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
}
},
- "node_modules/verror/node_modules/core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
- "dev": true
+ "node_modules/validate-npm-package-name": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz",
+ "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/walkdir": {
"version": "0.0.12",
@@ -4038,6 +8435,22 @@
"node": ">=0.6.0"
}
},
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"node_modules/which": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
@@ -4100,6 +8513,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/wide-align": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^1.0.2 || 2 || 3 || 4"
+ }
+ },
"node_modules/window-size": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
@@ -4124,21 +8546,83 @@
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
"dev": true
},
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
- "node_modules/xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "node_modules/ws": {
+ "version": "8.13.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
+ "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
"dev": true,
"engines": {
- "node": ">=0.4"
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
}
},
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"node_modules/yargs": {
"version": "3.5.4",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz",
@@ -4151,6 +8635,15 @@
"wordwrap": "0.0.2"
}
},
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/yargs/node_modules/wordwrap": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
@@ -4161,12 +8654,25 @@
}
},
"node_modules/yauzl": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
- "integrity": "sha512-TXNR2Feu/p/8k5YRy4z45wCUhoncIrZywmRd+xW0IvB3lWTAM7F6wVbeJvRjO0dplQ8oqmJEj/TpJuULBV/hbw==",
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
"dev": true,
"dependencies": {
- "fd-slicer": "~1.0.1"
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/zlib-browserify": {
diff --git a/package.json b/package.json
index b00165f..e996cde 100644
--- a/package.json
+++ b/package.json
@@ -13,20 +13,20 @@
"node": ">=18.0.0"
},
"devDependencies": {
- "matchdep": "~0.1.2",
- "grunt-contrib-jshint": "~0.6.0",
+ "grunt-connect-proxy": "0.1.5",
"grunt-contrib-clean": "~0.4.0",
- "grunt-contrib-watch": "~0.2.0",
- "grunt-contrib-uglify": "~0.2.2",
- "grunt-preprocess": "~2.3.0",
- "grunt-contrib-jasmine": "~0.5.1",
"grunt-contrib-connect": "~5.0.1",
- "grunt-connect-proxy": "0.1.5",
+ "grunt-contrib-jasmine": "^4.0.0",
+ "grunt-contrib-jshint": "~0.6.0",
+ "grunt-contrib-uglify": "~0.2.2",
+ "grunt-contrib-watch": "~0.2.0",
"grunt-jasmine-node": "~0.1.0",
- "grunt-template-jasmine-istanbul": "~0.2.4",
- "grunt-prompt": "~0.1.1",
"grunt-open": "~0.2.1",
- "grunt-plato": "~0.2.1"
+ "grunt-plato": "~0.2.1",
+ "grunt-preprocess": "~2.3.0",
+ "grunt-prompt": "~0.1.1",
+ "grunt-template-jasmine-istanbul": "~0.2.4",
+ "matchdep": "~0.1.2"
},
"scripts": {
"test": "grunt ci"
From 0f4b3b8b8e05e848ada60070f704c6d9e0f61d89 Mon Sep 17 00:00:00 2001
From: Masahiro Iuchi
Date: Fri, 6 Jun 2025 16:26:51 +0900
Subject: [PATCH 3/3] Remove all remaining phantomjs in this repository
---
.github/workflows/mt-data-api-sdk-js.yml | 3 ---
Dockerfile | 3 ---
2 files changed, 6 deletions(-)
diff --git a/.github/workflows/mt-data-api-sdk-js.yml b/.github/workflows/mt-data-api-sdk-js.yml
index 67b3480..7e7eaef 100644
--- a/.github/workflows/mt-data-api-sdk-js.yml
+++ b/.github/workflows/mt-data-api-sdk-js.yml
@@ -26,9 +26,6 @@ jobs:
cache: npm
node-version: 18
# # 'sudo' was not transformed because there is no suitable equivalent in GitHub Actions
- - run: curl -sL https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 | tar -xj
- - run: sudo mv phantomjs-1.9.8-linux-x86_64 /usr/local/share/phantomjs
- - run: sudo ln -sf /usr/local/share/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
- run: npm install -g grunt-cli
- run: npm install -g bower
- run: bower install
diff --git a/Dockerfile b/Dockerfile
index 480b81c..2a6967e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -14,8 +14,5 @@ RUN set -ex \
&& npm install -g grunt-cli \
&& npm install -g bower
-RUN curl -sL https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 | tar -xj && \
- mv phantomjs-1.9.8-linux-x86_64 /usr/local/share/phantomjs && \
- ln -sf /usr/local/share/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
ENV OPENSSL_CONF=/etc/ssl/