diff --git a/.claude-plugin/mcp.json b/.claude-plugin/mcp.json
index de9d138e..bd65cfd5 100644
--- a/.claude-plugin/mcp.json
+++ b/.claude-plugin/mcp.json
@@ -16,6 +16,14 @@
"--mode=visualization"
]
},
+ "dak-context": {
+ "command": "node",
+ "type": "stdio",
+ "args": [
+ "${CLAUDE_PLUGIN_ROOT}/mcp/dist/index.js",
+ "--mode=data-agent-kit"
+ ]
+ },
"dak-alloydb": {
"command": "node",
"type": "stdio",
diff --git a/.github/workflows/mcp-check.yml b/.github/workflows/mcp-check.yml
deleted file mode 100644
index a5fe5ab5..00000000
--- a/.github/workflows/mcp-check.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2026 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name: Notebook MCP Bundle Check
-
-on:
- pull_request:
-
-env:
- FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: 'true'
-
-jobs:
- check-bundle:
- runs-on: ubuntu-latest
- steps:
- - name: Check out code
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
-
- - name: Set up Node.js
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
- with:
- node-version: '20'
-
- - name: Install dependencies
- run: npm install
- working-directory: mcp
-
- - name: Build bundle
- run: npm run bundle
- working-directory: mcp
-
- - name: Check for uncommitted changes in bundle
- run: git diff --exit-code mcp/dist/index.js
diff --git a/mcp.json b/mcp.json
index 9584c24e..04240c25 100644
--- a/mcp.json
+++ b/mcp.json
@@ -17,6 +17,14 @@
"--mode=visualization"
]
},
+ "dak-context": {
+ "command": "node",
+ "type": "stdio",
+ "args": [
+ "${PLUGIN_ROOT}/mcp/dist/index.js",
+ "--mode=data-agent-kit"
+ ]
+ },
"dak-alloydb": {
"command": "node",
"type": "stdio",
diff --git a/mcp/dist/index.js b/mcp/dist/index.js
index 43a3eb99..8b9fc435 100644
--- a/mcp/dist/index.js
+++ b/mcp/dist/index.js
@@ -1,12 +1,12 @@
#!/usr/bin/env node
-/*
+/**
* Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,27122 +14,22425 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { createRequire } from "module";
-const require = createRequire(import.meta.url);
-
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
-}) : x)(function(x) {
- if (typeof require !== "undefined") return require.apply(this, arguments);
- throw Error('Dynamic require of "' + x + '" is not supported');
-});
-var __commonJS = (cb, mod) => function __require2() {
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
-};
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
+(async () => {
+ const __isCjs = typeof require !== "undefined" && typeof module !== "undefined";
+ const __path = __isCjs ? require("path") : await import("node:path");
+ const __file = __isCjs ? __filename : __path.resolve(process.argv[1]);
+ const __dir = __isCjs ? __dirname : __path.dirname(__file);
+ const __req = __isCjs ? require : (await import("node:module")).createRequire(__file);
+ const __mod = __isCjs ? module : { exports: {} };
+ (function(require, __filename, __dirname, module, exports) {
+!function ($$NODEJS_EXPORTS_OBJECT$$) {
+const __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb)((mod = {exports: {}}).exports, mod), mod.exports;
};
-var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
- mod
-));
-
-// node_modules/ajv/dist/compile/codegen/code.js
-var require_code = __commonJS({
- "node_modules/ajv/dist/compile/codegen/code.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;
- var _CodeOrName = class {
- };
- exports._CodeOrName = _CodeOrName;
- exports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;
- var Name = class extends _CodeOrName {
- constructor(s) {
- super();
- if (!exports.IDENTIFIER.test(s))
- throw new Error("CodeGen: name must be a valid identifier");
- this.str = s;
- }
- toString() {
- return this.str;
- }
- emptyStr() {
- return false;
- }
- get names() {
- return { [this.str]: 1 };
- }
- };
- exports.Name = Name;
- var _Code = class extends _CodeOrName {
- constructor(code) {
- super();
- this._items = typeof code === "string" ? [code] : code;
- }
- toString() {
- return this.str;
- }
- emptyStr() {
- if (this._items.length > 1)
- return false;
- const item = this._items[0];
- return item === "" || item === '""';
- }
- get str() {
- var _a3;
- return (_a3 = this._str) !== null && _a3 !== void 0 ? _a3 : this._str = this._items.reduce((s, c) => `${s}${c}`, "");
- }
- get names() {
- var _a3;
- return (_a3 = this._names) !== null && _a3 !== void 0 ? _a3 : this._names = this._items.reduce((names, c) => {
- if (c instanceof Name)
- names[c.str] = (names[c.str] || 0) + 1;
- return names;
- }, {});
- }
- };
- exports._Code = _Code;
- exports.nil = new _Code("");
- function _(strs, ...args2) {
- const code = [strs[0]];
- let i = 0;
- while (i < args2.length) {
- addCodeArg(code, args2[i]);
- code.push(strs[++i]);
- }
- return new _Code(code);
- }
- exports._ = _;
- var plus = new _Code("+");
- function str(strs, ...args2) {
- const expr = [safeStringify(strs[0])];
- let i = 0;
- while (i < args2.length) {
- expr.push(plus);
- addCodeArg(expr, args2[i]);
- expr.push(plus, safeStringify(strs[++i]));
- }
- optimize(expr);
- return new _Code(expr);
- }
- exports.str = str;
- function addCodeArg(code, arg) {
- if (arg instanceof _Code)
- code.push(...arg._items);
- else if (arg instanceof Name)
- code.push(arg);
- else
- code.push(interpolate(arg));
- }
- exports.addCodeArg = addCodeArg;
- function optimize(expr) {
- let i = 1;
- while (i < expr.length - 1) {
- if (expr[i] === plus) {
- const res = mergeExprItems(expr[i - 1], expr[i + 1]);
- if (res !== void 0) {
- expr.splice(i - 1, 3, res);
- continue;
+
+var goog;
+Object.defineProperty(this, 'goog', {
+ get() { return goog; },
+ set(v) { goog = v; },
+});
+/**
+ * @license
+ * Copyright The Closure Library Authors.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**
+ * @fileoverview Bootstrap for the Google JS Library (Closure).
+ *
+ * Avoid including base.js more than once. This is strictly discouraged and not
+ * supported. goog.require(...) won't work properly in that case.
+ *
+ * @suppress {deprecated} Users cannot remove deprecated uses here.
+ * @provideGoog
+ */
+
+
+/**
+ * @define {boolean} Overridden to true by the compiler.
+ */
+var COMPILED = false;
+
+
+/**
+ * Base namespace for the Closure library. Checks to see goog is already
+ * defined in the current scope before assigning to prevent clobbering if
+ * base.js is loaded more than once.
+ *
+ * @const
+ */
+var goog = goog || {};
+
+/**
+ * Reference to the global object.
+ * https://www.ecma-international.org/ecma-262/9.0/index.html#sec-global-object
+ *
+ * More info on this implementation here:
+ * https://docs.google.com/document/d/1NAeW4Wk7I7FV0Y2tcUFvQdGMc89k2vdgSXInw8_nvCI/edit
+ *
+ * @const
+ * @suppress {undefinedVars} self won't be referenced unless `this` is falsy.
+ * @type {!Global}
+ */
+goog.global =
+ // Check `this` first for backwards compatibility.
+ // Valid unless running as an ES module or in a function wrapper called
+ // without setting `this` properly.
+ // Note that base.js can't usefully be imported as an ES module, but it may
+ // be compiled into bundles that are loadable as ES modules.
+ this ||
+ // https://developer.mozilla.org/en-US/docs/Web/API/Window/self
+ // For in-page browser environments and workers.
+ self;
+
+
+/**
+ * A hook for overriding the define values in uncompiled mode.
+ *
+ * In uncompiled mode, `CLOSURE_UNCOMPILED_DEFINES` may be defined before
+ * loading base.js. If a key is defined in `CLOSURE_UNCOMPILED_DEFINES`,
+ * `goog.define` will use the value instead of the default value. This
+ * allows flags to be overwritten without compilation (this is normally
+ * accomplished with the compiler's "define" flag).
+ *
+ * Example:
+ *
+ * var CLOSURE_UNCOMPILED_DEFINES = {'goog.DEBUG': false};
+ *
+ *
+ * @type {Object|undefined}
+ */
+goog.global.CLOSURE_UNCOMPILED_DEFINES;
+
+
+/**
+ * A hook for overriding the define values in uncompiled or compiled mode,
+ * like CLOSURE_UNCOMPILED_DEFINES but effective in compiled code. In
+ * uncompiled code CLOSURE_UNCOMPILED_DEFINES takes precedence.
+ *
+ * Also unlike CLOSURE_UNCOMPILED_DEFINES the values must be number, boolean or
+ * string literals or the compiler will emit an error.
+ *
+ * While any @define value may be set, only those set with goog.define will be
+ * effective for uncompiled code.
+ *
+ * Example:
+ *
+ * var CLOSURE_DEFINES = {'goog.DEBUG': false} ;
+ *
+ *
+ * Currently the Closure Compiler will only recognize very simple definitions of
+ * this value when looking for values to apply to compiled code and ignore all
+ * other references. Specifically, it looks the value defined at the variable
+ * declaration, as with the example above.
+ *
+ * TODO: Improve the recognized definitions.
+ *
+ * @type {!Object|null|undefined}
+ */
+goog.global.CLOSURE_DEFINES;
+
+
+/**
+ * Builds an object structure for the provided namespace path, ensuring that
+ * names that already exist are not overwritten. For example:
+ * "a.b.c" -> a = {};a.b={};a.b.c={};
+ * Used by goog.provide and goog.exportSymbol.
+ * @param {string} name The name of the object that this file defines.
+ * @param {*=} object The object to expose at the end of the path.
+ * @param {boolean=} overwriteImplicit If object is set and a previous call
+ * implicitly constructed the namespace given by name, this parameter
+ * controls whether object should overwrite the implicitly constructed
+ * namespace or be merged into it. Defaults to false.
+ * @param {?Object=} objectToExportTo The object to add the path to; if this
+ * field is not specified, its value defaults to `goog.global`.
+ * @private
+ */
+goog.exportPath_ = function(name, object, overwriteImplicit, objectToExportTo) {
+ var parts = name.split('.');
+ var cur = objectToExportTo || goog.global;
+
+ for (var part; parts.length && (part = parts.shift());) {
+ if (!parts.length && object !== undefined) {
+ if (!overwriteImplicit && goog.isObject(object) &&
+ goog.isObject(cur[part])) {
+ // Merge properties on object (the input parameter) with the existing
+ // implicitly defined namespace, so as to not clobber previously
+ // defined child namespaces.
+ for (var prop in object) {
+ if (object.hasOwnProperty(prop)) {
+ cur[part][prop] = object[prop];
}
- expr[i++] = "+";
}
- i++;
- }
- }
- function mergeExprItems(a, b) {
- if (b === '""')
- return a;
- if (a === '""')
- return b;
- if (typeof a == "string") {
- if (b instanceof Name || a[a.length - 1] !== '"')
- return;
- if (typeof b != "string")
- return `${a.slice(0, -1)}${b}"`;
- if (b[0] === '"')
- return a.slice(0, -1) + b.slice(1);
- return;
+ } else {
+ // Either there is no existing implicit namespace, or overwriteImplicit
+ // is set to true, so directly assign object (the input parameter) to
+ // the namespace.
+ cur[part] = object;
}
- if (typeof b == "string" && b[0] === '"' && !(a instanceof Name))
- return `"${a}${b.slice(1)}`;
- return;
- }
- function strConcat(c1, c2) {
- return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`;
- }
- exports.strConcat = strConcat;
- function interpolate(x) {
- return typeof x == "number" || typeof x == "boolean" || x === null ? x : safeStringify(Array.isArray(x) ? x.join(",") : x);
- }
- function stringify(x) {
- return new _Code(safeStringify(x));
+ } else if (cur[part] && cur[part] !== Object.prototype[part]) {
+ cur = cur[part];
+ } else {
+ cur = cur[part] = {};
}
- exports.stringify = stringify;
- function safeStringify(x) {
- return JSON.stringify(x).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
+ }
+};
+
+/**
+ * Defines local copies for isolation of multiple chunk set. These values must
+ * be set before closure base in order to have goog.define properly work.
+ *
+ * @suppress {checkVars}
+ */
+goog.CLOSURE_DEFINES = typeof CLOSURE_DEFINES !== 'undefined' ?
+ CLOSURE_DEFINES :
+ goog.global.CLOSURE_DEFINES;
+/**
+ * @suppress {checkVars}
+ */
+goog.CLOSURE_UNCOMPILED_DEFINES =
+ typeof CLOSURE_UNCOMPILED_DEFINES !== 'undefined' ?
+ CLOSURE_UNCOMPILED_DEFINES :
+ goog.global.CLOSURE_UNCOMPILED_DEFINES;
+
+/**
+ * Defines a named value. In uncompiled mode, the value is retrieved from
+ * CLOSURE_DEFINES or CLOSURE_UNCOMPILED_DEFINES if the object is defined and
+ * has the property specified, and otherwise used the defined defaultValue.
+ * When compiled the default can be overridden using the compiler options or the
+ * value set in the CLOSURE_DEFINES object. Returns the defined value so that it
+ * can be used safely in modules. Note that the value type MUST be either
+ * boolean, number, or string.
+ *
+ * @suppress {checkVars|lintChecks}
+ *
+ * @param {string} name The distinguished name to provide.
+ * @param {T} defaultValue
+ * @return {T} The defined value.
+ * @template T
+ * @tsType (name: string, defaultValue: boolean): boolean
+ * @tsType (name: string, defaultValue: number): number
+ * @tsType (name: string, defaultValue: string): string
+ */
+goog.define = function(name, defaultValue) {
+ var value = defaultValue;
+ if (!COMPILED) {
+ // Fallback to goog.global.CLOSURE_UNCOMPILED_DEFINES in the
+ // case that the value is set after closure base. This keeps existing code
+ // working.
+ var uncompiledDefines = goog.CLOSURE_UNCOMPILED_DEFINES ?
+ goog.CLOSURE_UNCOMPILED_DEFINES :
+ goog.global.CLOSURE_UNCOMPILED_DEFINES;
+ // Fallback to goog.global.CLOSURE_DEFINES in the case that the
+ // value is set after closure base. This keeps existing code working.
+ var defines = goog.CLOSURE_DEFINES ? goog.CLOSURE_DEFINES :
+ goog.global.CLOSURE_DEFINES;
+ if (uncompiledDefines &&
+ // Anti DOM-clobbering runtime check (b/37736576).
+ /** @type {?} */ (uncompiledDefines).nodeType === undefined &&
+ Object.prototype.hasOwnProperty.call(uncompiledDefines, name)) {
+ value = uncompiledDefines[name];
+ } else if (
+ defines &&
+ // Anti DOM-clobbering runtime check (b/37736576).
+ /** @type {?} */ (defines).nodeType === undefined &&
+ Object.prototype.hasOwnProperty.call(defines, name)) {
+ value = defines[name];
}
- exports.safeStringify = safeStringify;
- function getProperty(key) {
- return typeof key == "string" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`;
+ }
+ return value;
+};
+
+
+/**
+ * @define {number} Integer year indicating the set of browser features that are
+ * guaranteed to be present. This is defined to include exactly features that
+ * work correctly on all "modern" browsers that are stable on January 1 of the
+ * specified year. For example,
+ * ```js
+ * if (goog.FEATURESET_YEAR >= 2019 || featureDetectionForAPI()) {
+ * // use APIs known to be available on all major stable browsers Jan 1, 2019
+ * } else {
+ * // polyfill for older browsers
+ * }
+ * ```
+ * This is intended to be the primary define for removing
+ * unnecessary browser compatibility code (such as ponyfills and workarounds),
+ * and should inform the default value for most other defines:
+ * ```js
+ * const ASSUME_NATIVE_PROMISE =
+ * goog.define('ASSUME_NATIVE_PROMISE', goog.FEATURESET_YEAR >= 2016);
+ * ```
+ *
+ * The default assumption is that IE9 is the lowest supported browser, which was
+ * first available Jan 1, 2012.
+ *
+ * When used in common code, the only allowed usage is to short-circuit feature
+ * detection in order to statically eliminate unnecessary fallback code.
+ * Changing the feature set year setting MUST NOT change any runtime behavior on
+ * browsers where the feature is present. In other words, NEVER use a
+ * `FEATURESET_YEAR > X` check without a corresponding `|| runtimeFeatureDetection()`
+ *
+ * See go/bfsy for details.
+ */
+goog.FEATURESET_YEAR = goog.define('goog.FEATURESET_YEAR', 2012);
+
+
+/**
+ * @define {boolean} DEBUG is provided as a convenience so that debugging code
+ * that should not be included in a production. It can be easily stripped
+ * by specifying --define goog.DEBUG=false to the Closure Compiler aka
+ * JSCompiler. For example, most toString() methods should be declared inside an
+ * "if (goog.DEBUG)" conditional because they are generally used for debugging
+ * purposes and it is difficult for the JSCompiler to statically determine
+ * whether they are used.
+ */
+goog.DEBUG = goog.define('goog.DEBUG', true);
+
+
+/**
+ * @define {string} LOCALE defines the locale being used for compilation. It is
+ * used to select locale specific data to be compiled in js binary. BUILD rule
+ * can specify this value by "--define goog.LOCALE=" as a compiler
+ * option.
+ *
+ * Take into account that the locale code format is important. You should use
+ * the canonical Unicode format with hyphen as a delimiter. Language must be
+ * lowercase, Language Script - Capitalized, Region - UPPERCASE.
+ * There are few examples: pt-BR, en, en-US, sr-Latin-BO, zh-Hans-CN.
+ *
+ * See more info about locale codes here:
+ * http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers
+ *
+ * For language codes you should use values defined by ISO 639-1. See it here
+ * http://www.w3.org/WAI/ER/IG/ert/iso639.htm. There is only one exception from
+ * this rule: the Hebrew language. For legacy reasons the old code (iw) should
+ * be used instead of the new code (he).
+ *
+ * MOE:begin_intracomment_strip
+ * See http://g3doc/i18n/identifiers/g3doc/synonyms.
+ * MOE:end_intracomment_strip
+ */
+goog.LOCALE = goog.define('goog.LOCALE', 'en'); // default to en
+
+
+/**
+ * @define {boolean} Whether this code is running on trusted sites.
+ *
+ * On untrusted sites, several native functions can be defined or overridden by
+ * external libraries like Prototype, Datejs, and JQuery and setting this flag
+ * to false forces closure to use its own implementations when possible.
+ *
+ * If your JavaScript can be loaded by a third party site and you are wary about
+ * relying on non-standard implementations, specify
+ * "--define goog.TRUSTED_SITE=false" to the compiler.
+ */
+goog.TRUSTED_SITE = goog.define('goog.TRUSTED_SITE', true);
+
+
+/**
+ * @define {boolean} Whether code that calls {@link goog.setTestOnly} should
+ * be disallowed in the compilation unit.
+ */
+goog.DISALLOW_TEST_ONLY_CODE =
+ goog.define('goog.DISALLOW_TEST_ONLY_CODE', COMPILED && !goog.DEBUG);
+
+
+/**
+ * @define {boolean} Whether to use a Chrome app CSP-compliant method for
+ * loading scripts via goog.require. @see appendScriptSrcNode_.
+ */
+goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING =
+ goog.define('goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING', false);
+
+
+// MOE:begin_strip
+/**
+ * Read a flag from the runtime flags object.
+ * @param {number} googFlagId Enum ordinal
+ * @param {boolean} defaultValue Value to return if the flag is not given
+ * @return {boolean}
+ */
+goog.readFlagInternalDoNotUseOrElse = function(googFlagId, defaultValue) {
+ var obj = goog.getObjectByName(goog.FLAGS_OBJECT_);
+ var val = obj && obj[googFlagId];
+ return val != null ? val : defaultValue;
+};
+
+
+/**
+ * Name of the object to look for when looking up runtime flag values. May be a
+ * fully qualified object name (e.g. 'foo.bar').
+ * @define {string}
+ * @private
+ */
+goog.FLAGS_OBJECT_ = goog.define('goog.FLAGS_OBJECT', 'CLOSURE_FLAGS');
+
+
+/**
+ * Default value for the STAGING flag. Defaults to `true`, indicating that
+ * flags are enabled by default once they reach the STAGING lifecycle stage.
+ * Risk-averse products should set this to `false` in their production builds.
+ * This is only necessary for non-Boq products because Boq Web configures this
+ * via the goog.flag system by default.
+ *
+ * @define {boolean}
+ */
+goog.FLAGS_STAGING_DEFAULT = goog.define('goog.FLAGS_STAGING_DEFAULT', true);
+
+/**
+ * Defines a local copy for multiple chunk set namespace isolation.
+ *
+ * @suppress {checkVars}
+ */
+goog.CLOSURE_TOGGLE_ORDINALS = typeof CLOSURE_TOGGLE_ORDINALS === 'object' ?
+ CLOSURE_TOGGLE_ORDINALS :
+ goog.global.CLOSURE_TOGGLE_ORDINALS;
+
+/**
+ * Read a toggle's value. This should not be called directly. Use the
+ * `toggle_provider` build rule instead. See go/toggle-provider.
+ * @param {string} name
+ * @return {boolean}
+ */
+goog.readToggleInternalDoNotCallDirectly = function(name) {
+ var ordinals = goog.CLOSURE_TOGGLE_ORDINALS;
+ var ordinal = ordinals && ordinals[name];
+ if (typeof ordinal !== 'number') return Boolean(ordinal);
+ return Boolean(
+ goog.TOGGLES_[Math.floor(ordinal / 30)] & (1 << (ordinal % 30)));
+};
+
+
+/**
+ * Bootstrap variable mapping toggle names to ordinals. This is intended to be
+ * read by JSCompiler to replace goog.readToggle...() calls with direct lookups,
+ * but is also used by the debug-mode version of the toggle reader.
+ * @const {!Object|undefined}
+ */
+goog.global.CLOSURE_TOGGLE_ORDINALS;
+
+
+/**
+ * @define {string} Global variable to check for toggles.
+ * @private
+ */
+goog.TOGGLE_VAR_ = goog.define('goog.TOGGLE_VAR', '_F_toggles');
+
+
+/** @private @const {!Array} */
+goog.TOGGLES_ = goog.global[goog.TOGGLE_VAR_] || [];
+// MOE:end_strip
+
+/** @define {boolean} */
+goog.GENDERED_MESSAGES_ENABLED =
+ goog.define('goog.GENDERED_MESSAGES_ENABLED', true);
+
+/** @private @enum {number} */
+goog.GrammaticalGender_ = {
+ OTHER: 0,
+ MASCULINE: 1,
+ FEMININE: 2,
+ NEUTER: 3,
+};
+
+/**
+ * See go/grammatical-gender-in-capabilities and
+ * go/gender-appropriate-ui-jscompiler
+ * @private @const {!Object}
+ */
+goog.GRAMMATICAL_GENDER_MAP_ = {
+ 'FEMININE': goog.GrammaticalGender_.FEMININE,
+ 'MASCULINE': goog.GrammaticalGender_.MASCULINE,
+ 'NEUTER': goog.GrammaticalGender_.NEUTER,
+};
+
+/**
+ * Defines a local copy of viewers grammatical gender for use in gendered
+ * messages. Unknown values are mapped to `OTHER`
+ * @private @const {!goog.GrammaticalGender_}
+ */
+goog.viewerGrammaticalGender_ =
+ goog.GRAMMATICAL_GENDER_MAP_[goog.GENDERED_MESSAGES_ENABLED && goog.global['_F_VIEWER_GRAMMATICAL_GENDER']] ||
+ goog.GrammaticalGender_.OTHER;
+
+/**
+ * Shared constants for gendered messages based on the value of
+ * `goog.viewerGrammaticalGender`
+ */
+/** @const */
+goog.msgKind = {};
+
+/**
+ * @const
+ * @noinline
+ */
+goog.msgKind.MASCULINE =
+ (goog.viewerGrammaticalGender_ === goog.GrammaticalGender_.MASCULINE);
+
+/**
+ * @const
+ * @noinline
+ */
+goog.msgKind.FEMININE =
+ (goog.viewerGrammaticalGender_ === goog.GrammaticalGender_.FEMININE);
+
+/**
+ * @const
+ * @noinline
+ */
+goog.msgKind.NEUTER =
+ (goog.viewerGrammaticalGender_ === goog.GrammaticalGender_.NEUTER);
+
+if (COMPILED && goog.LOCALE == '') {
+ // This code should never execute. It is here to ensure that the compiler
+ // does not remove the values until goog.LOCALE is defined.
+ goog.logToConsole_('' + [
+ goog.msgKind.MASCULINE, goog.msgKind.FEMININE, goog.msgKind.NEUTER
+ ]);
+}
+
+/**
+ * A hook for providing an object that should be used to track the "legacy
+ * namespaces". The legacy namespace is where symbols from `goog.provide` as
+ * well as symbols from `goog.module` with
+ * `goog.module.declareLegacyNamespace` are placed.
+ *
+ * If this isn't specified, `goog.global` will be considered the legacy
+ * namespace object.
+ *
+ * @type {!Object|undefined}
+ */
+goog.global.CLOSURE_UNCOMPILED_LEGACY_NAMESPACE_OBJECT;
+
+
+/**
+ * @type {!Object}
+ * @private
+ */
+goog.LEGACY_NAMESPACE_OBJECT_ =
+ (!COMPILED &&
+ typeof CLOSURE_UNCOMPILED_LEGACY_NAMESPACE_OBJECT !== 'undefined') ?
+ CLOSURE_UNCOMPILED_LEGACY_NAMESPACE_OBJECT :
+ goog.global;
+
+
+/**
+ * Defines a namespace in Closure.
+ *
+ * A namespace may only be defined once in a codebase. It may be defined using
+ * goog.provide() or goog.module().
+ *
+ * The presence of one or more goog.provide() calls in a file indicates
+ * that the file defines the given objects/namespaces.
+ * Provided symbols must not be null or undefined.
+ *
+ * In addition, goog.provide() creates the object stubs for a namespace
+ * (for example, goog.provide("goog.foo.bar") will create the object
+ * goog.foo.bar if it does not already exist).
+ *
+ * Build tools also scan for provide/require/module statements
+ * to discern dependencies, build dependency files (see deps.js), etc.
+ *
+ * @see goog.require
+ * @see goog.module
+ * @param {string} name Namespace provided by this file in the form
+ * "goog.package.part".
+ * deprecated Use goog.module (see b/159289405)
+ */
+goog.provide = function(name) {
+ if (goog.isInModuleLoader_()) {
+ throw new Error('goog.provide cannot be used within a module.');
+ }
+ if (!COMPILED) {
+ // Ensure that the same namespace isn't provided twice.
+ // A goog.module/goog.provide maps a goog.require to a specific file
+ if (goog.isProvided_(name)) {
+ throw new Error('Namespace "' + name + '" already declared.');
}
- exports.getProperty = getProperty;
- function getEsmExportName(key) {
- if (typeof key == "string" && exports.IDENTIFIER.test(key)) {
- return new _Code(`${key}`);
+ }
+
+ goog.constructNamespace_(name);
+};
+
+
+/**
+ * @param {string} name Namespace provided by this file in the form
+ * "goog.package.part".
+ * @param {?Object=} object The object to embed in the namespace.
+ * @param {boolean=} overwriteImplicit If object is set and a previous call
+ * implicitly constructed the namespace given by name, this parameter
+ * controls whether opt_obj should overwrite the implicitly constructed
+ * namespace or be merged into it. Defaults to false.
+ * @private
+ */
+goog.constructNamespace_ = function(name, object, overwriteImplicit) {
+ if (!COMPILED) {
+ delete goog.implicitNamespaces_[name];
+
+ var namespace = name;
+ while ((namespace = namespace.substring(0, namespace.lastIndexOf('.')))) {
+ if (goog.getObjectByName(namespace, goog.LEGACY_NAMESPACE_OBJECT_)) {
+ break;
}
- throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);
+ goog.implicitNamespaces_[namespace] = true;
}
- exports.getEsmExportName = getEsmExportName;
- function regexpCode(rx) {
- return new _Code(rx.toString());
+ }
+
+ goog.exportPath_(
+ name, object, overwriteImplicit, goog.LEGACY_NAMESPACE_OBJECT_);
+};
+
+
+/**
+ * According to the CSP3 spec a nonce must be a valid base64 string.
+ * @see https://www.w3.org/TR/CSP3/#grammardef-base64-value
+ * @private @const
+ */
+goog.NONCE_PATTERN_ = /^[\w+/_-]+[=]{0,2}$/;
+
+
+/**
+ * Returns CSP nonce, if set for any script tag.
+ * @param {?Window=} opt_window The window context used to retrieve the nonce.
+ * Defaults to global context.
+ * @return {string} CSP nonce or empty string if no nonce is present.
+ * @private
+ */
+goog.getScriptNonce_ = function(opt_window) {
+ var doc = (opt_window || goog.global).document;
+ var script = doc.querySelector && doc.querySelector('script[nonce]');
+ if (script) {
+ // Try to get the nonce from the IDL property first, because browsers that
+ // implement additional nonce protection features (currently only Chrome) to
+ // prevent nonce stealing via CSS do not expose the nonce via attributes.
+ // See https://github.com/whatwg/html/issues/2369
+ var nonce = script['nonce'] || script.getAttribute('nonce');
+ if (nonce && goog.NONCE_PATTERN_.test(nonce)) {
+ return nonce;
+ }
+ }
+ return '';
+};
+
+
+/**
+ * Module identifier validation regexp.
+ * Note: This is a conservative check, it is very possible to be more lenient,
+ * the primary exclusion here is "/" and "\" and a leading ".", these
+ * restrictions are intended to leave the door open for using goog.require
+ * with relative file paths rather than module identifiers.
+ * @private
+ */
+goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/;
+
+
+/**
+ * Defines a module in Closure.
+ *
+ * Marks that this file must be loaded as a module and claims the namespace.
+ *
+ * A namespace may only be defined once in a codebase. It may be defined using
+ * goog.provide() or goog.module().
+ *
+ * goog.module() has three requirements:
+ * - goog.module may not be used in the same file as goog.provide.
+ * - goog.module must be the first statement in the file.
+ * - only one goog.module is allowed per file.
+ *
+ * When a goog.module annotated file is loaded, it is enclosed in
+ * a strict function closure. This means that:
+ * - any variables declared in a goog.module file are private to the file
+ * (not global), though the compiler is expected to inline the module.
+ * - The code must obey all the rules of "strict" JavaScript.
+ * - the file will be marked as "use strict"
+ *
+ * NOTE: unlike goog.provide, goog.module does not declare any symbols by
+ * itself. If declared symbols are desired, use
+ * goog.module.declareLegacyNamespace().
+ *
+ * MOE:begin_intracomment_strip
+ * See the goog.module announcement at http://go/goog.module-announce
+ * MOE:end_intracomment_strip
+ *
+ * See the public goog.module proposal: http://goo.gl/Va1hin
+ *
+ * @param {string} name Namespace provided by this file in the form
+ * "goog.package.part", is expected but not required.
+ * @return {void}
+ */
+goog.module = function(name) {
+ if (COMPILED) {
+ // In the optimized code, goog.module calls are complete removed but
+ // due to b/389129315 the function itself is retained.
+ return;
+ }
+ if (typeof name !== 'string' || !name ||
+ name.search(goog.VALID_MODULE_RE_) == -1) {
+ throw new Error('Invalid module identifier');
+ }
+ if (!goog.isInGoogModuleLoader_()) {
+ throw new Error(
+ 'Module ' + name + ' has been loaded incorrectly. Note, ' +
+ 'modules cannot be loaded as normal scripts. They require some kind of ' +
+ 'pre-processing step. You\'re likely trying to load a module via a ' +
+ 'script tag or as a part of a concatenated bundle without rewriting the ' +
+ 'module. For more info see: ' +
+ 'https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.');
+ }
+ if (goog.moduleLoaderState_.moduleName) {
+ throw new Error('goog.module may only be called once per module.');
+ }
+
+ // Store the module name for the loader.
+ goog.moduleLoaderState_.moduleName = name;
+ // Ensure that the same namespace isn't provided twice.
+ // A goog.module/goog.provide maps a goog.require to a specific file
+ if (goog.isProvided_(name)) {
+ throw new Error('Namespace "' + name + '" already declared.');
+ }
+ delete goog.implicitNamespaces_[name];
+};
+
+
+/**
+ * @param {string} name The module identifier.
+ * @return {?} The module exports for an already loaded module or null.
+ *
+ * Note: This is not an alternative to goog.require, it does not
+ * indicate a hard dependency, instead it is used to indicate
+ * an optional dependency or to access the exports of a module
+ * that has already been loaded.
+ * @suppress {missingProvide}
+ */
+goog.module.get = function(name) {
+ return COMPILED ? null : goog.module.getInternal_(name);
+};
+
+
+/**
+ * @param {string} name The module identifier.
+ * @return {?} The module exports for an already loaded module or null.
+ * @private
+ */
+goog.module.getInternal_ = function(name) {
+ if (!COMPILED) {
+ if (name in goog.loadedModules_) {
+ return goog.loadedModules_[name].exports;
+ } else if (!goog.implicitNamespaces_[name]) {
+ var ns = goog.getObjectByName(name, goog.LEGACY_NAMESPACE_OBJECT_);
+ return ns != null ? ns : null;
}
- exports.regexpCode = regexpCode;
}
-});
+ return null;
+};
-// node_modules/ajv/dist/compile/codegen/scope.js
-var require_scope = __commonJS({
- "node_modules/ajv/dist/compile/codegen/scope.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0;
- var code_1 = require_code();
- var ValueError = class extends Error {
- constructor(name) {
- super(`CodeGen: "code" for ${name} not defined`);
- this.value = name.value;
- }
- };
- var UsedValueState;
- (function(UsedValueState2) {
- UsedValueState2[UsedValueState2["Started"] = 0] = "Started";
- UsedValueState2[UsedValueState2["Completed"] = 1] = "Completed";
- })(UsedValueState || (exports.UsedValueState = UsedValueState = {}));
- exports.varKinds = {
- const: new code_1.Name("const"),
- let: new code_1.Name("let"),
- var: new code_1.Name("var")
- };
- var Scope = class {
- constructor({ prefixes, parent } = {}) {
- this._names = {};
- this._prefixes = prefixes;
- this._parent = parent;
- }
- toName(nameOrPrefix) {
- return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix);
- }
- name(prefix) {
- return new code_1.Name(this._newName(prefix));
- }
- _newName(prefix) {
- const ng = this._names[prefix] || this._nameGroup(prefix);
- return `${prefix}${ng.index++}`;
- }
- _nameGroup(prefix) {
- var _a3, _b;
- if (((_b = (_a3 = this._parent) === null || _a3 === void 0 ? void 0 : _a3._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || this._prefixes && !this._prefixes.has(prefix)) {
- throw new Error(`CodeGen: prefix "${prefix}" is not allowed in this scope`);
- }
- return this._names[prefix] = { prefix, index: 0 };
- }
- };
- exports.Scope = Scope;
- var ValueScopeName = class extends code_1.Name {
- constructor(prefix, nameStr) {
- super(nameStr);
- this.prefix = prefix;
- }
- setValue(value, { property, itemIndex }) {
- this.value = value;
- this.scopePath = (0, code_1._)`.${new code_1.Name(property)}[${itemIndex}]`;
- }
- };
- exports.ValueScopeName = ValueScopeName;
- var line = (0, code_1._)`\n`;
- var ValueScope = class extends Scope {
- constructor(opts) {
- super(opts);
- this._values = {};
- this._scope = opts.scope;
- this.opts = { ...opts, _n: opts.lines ? line : code_1.nil };
- }
- get() {
- return this._scope;
- }
- name(prefix) {
- return new ValueScopeName(prefix, this._newName(prefix));
- }
- value(nameOrPrefix, value) {
- var _a3;
- if (value.ref === void 0)
- throw new Error("CodeGen: ref must be passed in value");
- const name = this.toName(nameOrPrefix);
- const { prefix } = name;
- const valueKey = (_a3 = value.key) !== null && _a3 !== void 0 ? _a3 : value.ref;
- let vs = this._values[prefix];
- if (vs) {
- const _name = vs.get(valueKey);
- if (_name)
- return _name;
- } else {
- vs = this._values[prefix] = /* @__PURE__ */ new Map();
- }
- vs.set(valueKey, name);
- const s = this._scope[prefix] || (this._scope[prefix] = []);
- const itemIndex = s.length;
- s[itemIndex] = value.ref;
- name.setValue(value, { property: prefix, itemIndex });
- return name;
- }
- getValue(prefix, keyOrRef) {
- const vs = this._values[prefix];
- if (!vs)
- return;
- return vs.get(keyOrRef);
- }
- scopeRefs(scopeName, values = this._values) {
- return this._reduceValues(values, (name) => {
- if (name.scopePath === void 0)
- throw new Error(`CodeGen: name "${name}" has no value`);
- return (0, code_1._)`${scopeName}${name.scopePath}`;
+// MOE:begin_strip
+/**
+ * Defines dynamic import execution path for uncompiled mode.
+ *
+ * @param {string} name The module identifier.
+ * @return {?} The module exports for an already loaded module or null.
+ *
+ * NOTE: In compiled code, JsCompiler will transpile this function call.
+ * DO NOT OPENSOURCE
+ */
+goog.requireDynamic = function(name) {
+ if (!COMPILED) {
+ if (!goog.importHandler_ || !goog.uncompiledChunkIdHandler_) {
+ throw new Error('Need to setup import handler and chunk id handler.');
+ }
+ return goog.importHandler_(goog.uncompiledChunkIdHandler_(name))
+ .then(function() {
+ var module = goog.module.getInternal_(name);
+ if (module == null) {
+ throw new Error('Module ' + name + ' is not loaded.');
+ }
+ return module;
});
- }
- scopeCode(values = this._values, usedValues, getCode) {
- return this._reduceValues(values, (name) => {
- if (name.value === void 0)
- throw new Error(`CodeGen: name "${name}" has no value`);
- return name.value.code;
- }, usedValues, getCode);
- }
- _reduceValues(values, valueCode, usedValues = {}, getCode) {
- let code = code_1.nil;
- for (const prefix in values) {
- const vs = values[prefix];
- if (!vs)
- continue;
- const nameSet = usedValues[prefix] = usedValues[prefix] || /* @__PURE__ */ new Map();
- vs.forEach((name) => {
- if (nameSet.has(name))
- return;
- nameSet.set(name, UsedValueState.Started);
- let c = valueCode(name);
- if (c) {
- const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const;
- code = (0, code_1._)`${code}${def} ${name} = ${c};${this.opts._n}`;
- } else if (c = getCode === null || getCode === void 0 ? void 0 : getCode(name)) {
- code = (0, code_1._)`${code}${c}${this.opts._n}`;
- } else {
- throw new ValueError(name);
- }
- nameSet.set(name, UsedValueState.Completed);
- });
- }
- return code;
- }
- };
- exports.ValueScope = ValueScope;
}
-});
+ return null;
+};
-// node_modules/ajv/dist/compile/codegen/index.js
-var require_codegen = __commonJS({
- "node_modules/ajv/dist/compile/codegen/index.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;
- var code_1 = require_code();
- var scope_1 = require_scope();
- var code_2 = require_code();
- Object.defineProperty(exports, "_", { enumerable: true, get: function() {
- return code_2._;
- } });
- Object.defineProperty(exports, "str", { enumerable: true, get: function() {
- return code_2.str;
- } });
- Object.defineProperty(exports, "strConcat", { enumerable: true, get: function() {
- return code_2.strConcat;
- } });
- Object.defineProperty(exports, "nil", { enumerable: true, get: function() {
- return code_2.nil;
- } });
- Object.defineProperty(exports, "getProperty", { enumerable: true, get: function() {
- return code_2.getProperty;
- } });
- Object.defineProperty(exports, "stringify", { enumerable: true, get: function() {
- return code_2.stringify;
- } });
- Object.defineProperty(exports, "regexpCode", { enumerable: true, get: function() {
- return code_2.regexpCode;
- } });
- Object.defineProperty(exports, "Name", { enumerable: true, get: function() {
- return code_2.Name;
- } });
- var scope_2 = require_scope();
- Object.defineProperty(exports, "Scope", { enumerable: true, get: function() {
- return scope_2.Scope;
- } });
- Object.defineProperty(exports, "ValueScope", { enumerable: true, get: function() {
- return scope_2.ValueScope;
- } });
- Object.defineProperty(exports, "ValueScopeName", { enumerable: true, get: function() {
- return scope_2.ValueScopeName;
- } });
- Object.defineProperty(exports, "varKinds", { enumerable: true, get: function() {
- return scope_2.varKinds;
- } });
- exports.operators = {
- GT: new code_1._Code(">"),
- GTE: new code_1._Code(">="),
- LT: new code_1._Code("<"),
- LTE: new code_1._Code("<="),
- EQ: new code_1._Code("==="),
- NEQ: new code_1._Code("!=="),
- NOT: new code_1._Code("!"),
- OR: new code_1._Code("||"),
- AND: new code_1._Code("&&"),
- ADD: new code_1._Code("+")
- };
- var Node = class {
- optimizeNodes() {
- return this;
- }
- optimizeNames(_names, _constants) {
- return this;
- }
- };
- var Def = class extends Node {
- constructor(varKind, name, rhs) {
- super();
- this.varKind = varKind;
- this.name = name;
- this.rhs = rhs;
- }
- render({ es5, _n }) {
- const varKind = es5 ? scope_1.varKinds.var : this.varKind;
- const rhs = this.rhs === void 0 ? "" : ` = ${this.rhs}`;
- return `${varKind} ${this.name}${rhs};` + _n;
- }
- optimizeNames(names, constants) {
- if (!names[this.name.str])
- return;
- if (this.rhs)
- this.rhs = optimizeExpr(this.rhs, names, constants);
- return this;
- }
- get names() {
- return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {};
- }
- };
- var Assign = class extends Node {
- constructor(lhs, rhs, sideEffects) {
- super();
- this.lhs = lhs;
- this.rhs = rhs;
- this.sideEffects = sideEffects;
- }
- render({ _n }) {
- return `${this.lhs} = ${this.rhs};` + _n;
- }
- optimizeNames(names, constants) {
- if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)
- return;
- this.rhs = optimizeExpr(this.rhs, names, constants);
- return this;
- }
- get names() {
- const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names };
- return addExprNames(names, this.rhs);
- }
- };
- var AssignOp = class extends Assign {
- constructor(lhs, op, rhs, sideEffects) {
- super(lhs, rhs, sideEffects);
- this.op = op;
- }
- render({ _n }) {
- return `${this.lhs} ${this.op}= ${this.rhs};` + _n;
- }
- };
- var Label = class extends Node {
- constructor(label) {
- super();
- this.label = label;
- this.names = {};
- }
- render({ _n }) {
- return `${this.label}:` + _n;
- }
- };
- var Break = class extends Node {
- constructor(label) {
- super();
- this.label = label;
- this.names = {};
- }
- render({ _n }) {
- const label = this.label ? ` ${this.label}` : "";
- return `break${label};` + _n;
- }
- };
- var Throw = class extends Node {
- constructor(error51) {
- super();
- this.error = error51;
- }
- render({ _n }) {
- return `throw ${this.error};` + _n;
- }
- get names() {
- return this.error.names;
- }
- };
- var AnyCode = class extends Node {
- constructor(code) {
- super();
- this.code = code;
- }
- render({ _n }) {
- return `${this.code};` + _n;
- }
- optimizeNodes() {
- return `${this.code}` ? this : void 0;
- }
- optimizeNames(names, constants) {
- this.code = optimizeExpr(this.code, names, constants);
- return this;
- }
- get names() {
- return this.code instanceof code_1._CodeOrName ? this.code.names : {};
- }
- };
- var ParentNode = class extends Node {
- constructor(nodes = []) {
- super();
- this.nodes = nodes;
- }
- render(opts) {
- return this.nodes.reduce((code, n) => code + n.render(opts), "");
- }
- optimizeNodes() {
- const { nodes } = this;
- let i = nodes.length;
- while (i--) {
- const n = nodes[i].optimizeNodes();
- if (Array.isArray(n))
- nodes.splice(i, 1, ...n);
- else if (n)
- nodes[i] = n;
- else
- nodes.splice(i, 1);
- }
- return nodes.length > 0 ? this : void 0;
- }
- optimizeNames(names, constants) {
- const { nodes } = this;
- let i = nodes.length;
- while (i--) {
- const n = nodes[i];
- if (n.optimizeNames(names, constants))
- continue;
- subtractNames(names, n.names);
- nodes.splice(i, 1);
- }
- return nodes.length > 0 ? this : void 0;
- }
- get names() {
- return this.nodes.reduce((names, n) => addNames(names, n.names), {});
- }
- };
- var BlockNode = class extends ParentNode {
- render(opts) {
- return "{" + opts._n + super.render(opts) + "}" + opts._n;
- }
- };
- var Root = class extends ParentNode {
- };
- var Else = class extends BlockNode {
- };
- Else.kind = "else";
- var If = class _If extends BlockNode {
- constructor(condition, nodes) {
- super(nodes);
- this.condition = condition;
- }
- render(opts) {
- let code = `if(${this.condition})` + super.render(opts);
- if (this.else)
- code += "else " + this.else.render(opts);
- return code;
- }
- optimizeNodes() {
- super.optimizeNodes();
- const cond = this.condition;
- if (cond === true)
- return this.nodes;
- let e = this.else;
- if (e) {
- const ns = e.optimizeNodes();
- e = this.else = Array.isArray(ns) ? new Else(ns) : ns;
- }
- if (e) {
- if (cond === false)
- return e instanceof _If ? e : e.nodes;
- if (this.nodes.length)
- return this;
- return new _If(not(cond), e instanceof _If ? [e] : e.nodes);
- }
- if (cond === false || !this.nodes.length)
- return void 0;
- return this;
- }
- optimizeNames(names, constants) {
- var _a3;
- this.else = (_a3 = this.else) === null || _a3 === void 0 ? void 0 : _a3.optimizeNames(names, constants);
- if (!(super.optimizeNames(names, constants) || this.else))
- return;
- this.condition = optimizeExpr(this.condition, names, constants);
- return this;
- }
- get names() {
- const names = super.names;
- addExprNames(names, this.condition);
- if (this.else)
- addNames(names, this.else.names);
- return names;
- }
- };
- If.kind = "if";
- var For = class extends BlockNode {
- };
- For.kind = "for";
- var ForLoop = class extends For {
- constructor(iteration) {
- super();
- this.iteration = iteration;
- }
- render(opts) {
- return `for(${this.iteration})` + super.render(opts);
- }
- optimizeNames(names, constants) {
- if (!super.optimizeNames(names, constants))
- return;
- this.iteration = optimizeExpr(this.iteration, names, constants);
- return this;
- }
- get names() {
- return addNames(super.names, this.iteration.names);
- }
- };
- var ForRange = class extends For {
- constructor(varKind, name, from, to) {
- super();
- this.varKind = varKind;
- this.name = name;
- this.from = from;
- this.to = to;
- }
- render(opts) {
- const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind;
- const { name, from, to } = this;
- return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts);
- }
- get names() {
- const names = addExprNames(super.names, this.from);
- return addExprNames(names, this.to);
- }
- };
- var ForIter = class extends For {
- constructor(loop, varKind, name, iterable) {
- super();
- this.loop = loop;
- this.varKind = varKind;
- this.name = name;
- this.iterable = iterable;
- }
- render(opts) {
- return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);
- }
- optimizeNames(names, constants) {
- if (!super.optimizeNames(names, constants))
- return;
- this.iterable = optimizeExpr(this.iterable, names, constants);
- return this;
- }
- get names() {
- return addNames(super.names, this.iterable.names);
- }
- };
- var Func = class extends BlockNode {
- constructor(name, args2, async) {
- super();
- this.name = name;
- this.args = args2;
- this.async = async;
- }
- render(opts) {
- const _async = this.async ? "async " : "";
- return `${_async}function ${this.name}(${this.args})` + super.render(opts);
- }
- };
- Func.kind = "func";
- var Return = class extends ParentNode {
- render(opts) {
- return "return " + super.render(opts);
- }
- };
- Return.kind = "return";
- var Try = class extends BlockNode {
- render(opts) {
- let code = "try" + super.render(opts);
- if (this.catch)
- code += this.catch.render(opts);
- if (this.finally)
- code += this.finally.render(opts);
- return code;
- }
- optimizeNodes() {
- var _a3, _b;
- super.optimizeNodes();
- (_a3 = this.catch) === null || _a3 === void 0 ? void 0 : _a3.optimizeNodes();
- (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes();
- return this;
- }
- optimizeNames(names, constants) {
- var _a3, _b;
- super.optimizeNames(names, constants);
- (_a3 = this.catch) === null || _a3 === void 0 ? void 0 : _a3.optimizeNames(names, constants);
- (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants);
- return this;
- }
- get names() {
- const names = super.names;
- if (this.catch)
- addNames(names, this.catch.names);
- if (this.finally)
- addNames(names, this.finally.names);
- return names;
- }
- };
- var Catch = class extends BlockNode {
- constructor(error51) {
- super();
- this.error = error51;
- }
- render(opts) {
- return `catch(${this.error})` + super.render(opts);
- }
- };
- Catch.kind = "catch";
- var Finally = class extends BlockNode {
- render(opts) {
- return "finally" + super.render(opts);
- }
- };
- Finally.kind = "finally";
- var CodeGen = class {
- constructor(extScope, opts = {}) {
- this._values = {};
- this._blockStarts = [];
- this._constants = {};
- this.opts = { ...opts, _n: opts.lines ? "\n" : "" };
- this._extScope = extScope;
- this._scope = new scope_1.Scope({ parent: extScope });
- this._nodes = [new Root()];
- }
- toString() {
- return this._root.render(this.opts);
- }
- // returns unique name in the internal scope
- name(prefix) {
- return this._scope.name(prefix);
- }
- // reserves unique name in the external scope
- scopeName(prefix) {
- return this._extScope.name(prefix);
- }
- // reserves unique name in the external scope and assigns value to it
- scopeValue(prefixOrName, value) {
- const name = this._extScope.value(prefixOrName, value);
- const vs = this._values[name.prefix] || (this._values[name.prefix] = /* @__PURE__ */ new Set());
- vs.add(name);
- return name;
- }
- getScopeValue(prefix, keyOrRef) {
- return this._extScope.getValue(prefix, keyOrRef);
- }
- // return code that assigns values in the external scope to the names that are used internally
- // (same names that were returned by gen.scopeName or gen.scopeValue)
- scopeRefs(scopeName) {
- return this._extScope.scopeRefs(scopeName, this._values);
- }
- scopeCode() {
- return this._extScope.scopeCode(this._values);
- }
- _def(varKind, nameOrPrefix, rhs, constant) {
- const name = this._scope.toName(nameOrPrefix);
- if (rhs !== void 0 && constant)
- this._constants[name.str] = rhs;
- this._leafNode(new Def(varKind, name, rhs));
- return name;
- }
- // `const` declaration (`var` in es5 mode)
- const(nameOrPrefix, rhs, _constant) {
- return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant);
- }
- // `let` declaration with optional assignment (`var` in es5 mode)
- let(nameOrPrefix, rhs, _constant) {
- return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant);
- }
- // `var` declaration with optional assignment
- var(nameOrPrefix, rhs, _constant) {
- return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant);
- }
- // assignment code
- assign(lhs, rhs, sideEffects) {
- return this._leafNode(new Assign(lhs, rhs, sideEffects));
- }
- // `+=` code
- add(lhs, rhs) {
- return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs));
- }
- // appends passed SafeExpr to code or executes Block
- code(c) {
- if (typeof c == "function")
- c();
- else if (c !== code_1.nil)
- this._leafNode(new AnyCode(c));
- return this;
- }
- // returns code for object literal for the passed argument list of key-value pairs
- object(...keyValues) {
- const code = ["{"];
- for (const [key, value] of keyValues) {
- if (code.length > 1)
- code.push(",");
- code.push(key);
- if (key !== value || this.opts.es5) {
- code.push(":");
- (0, code_1.addCodeArg)(code, value);
- }
- }
- code.push("}");
- return new code_1._Code(code);
- }
- // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)
- if(condition, thenBody, elseBody) {
- this._blockNode(new If(condition));
- if (thenBody && elseBody) {
- this.code(thenBody).else().code(elseBody).endIf();
- } else if (thenBody) {
- this.code(thenBody).endIf();
- } else if (elseBody) {
- throw new Error('CodeGen: "else" body without "then" body');
- }
- return this;
- }
- // `else if` clause - invalid without `if` or after `else` clauses
- elseIf(condition) {
- return this._elseNode(new If(condition));
- }
- // `else` clause - only valid after `if` or `else if` clauses
- else() {
- return this._elseNode(new Else());
- }
- // end `if` statement (needed if gen.if was used only with condition)
- endIf() {
- return this._endBlockNode(If, Else);
- }
- _for(node, forBody) {
- this._blockNode(node);
- if (forBody)
- this.code(forBody).endFor();
- return this;
- }
- // a generic `for` clause (or statement if `forBody` is passed)
- for(iteration, forBody) {
- return this._for(new ForLoop(iteration), forBody);
- }
- // `for` statement for a range of values
- forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) {
- const name = this._scope.toName(nameOrPrefix);
- return this._for(new ForRange(varKind, name, from, to), () => forBody(name));
- }
- // `for-of` statement (in es5 mode replace with a normal for loop)
- forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) {
- const name = this._scope.toName(nameOrPrefix);
- if (this.opts.es5) {
- const arr = iterable instanceof code_1.Name ? iterable : this.var("_arr", iterable);
- return this.forRange("_i", 0, (0, code_1._)`${arr}.length`, (i) => {
- this.var(name, (0, code_1._)`${arr}[${i}]`);
- forBody(name);
- });
- }
- return this._for(new ForIter("of", varKind, name, iterable), () => forBody(name));
- }
- // `for-in` statement.
- // With option `ownProperties` replaced with a `for-of` loop for object keys
- forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) {
- if (this.opts.ownProperties) {
- return this.forOf(nameOrPrefix, (0, code_1._)`Object.keys(${obj})`, forBody);
- }
- const name = this._scope.toName(nameOrPrefix);
- return this._for(new ForIter("in", varKind, name, obj), () => forBody(name));
- }
- // end `for` loop
- endFor() {
- return this._endBlockNode(For);
- }
- // `label` statement
- label(label) {
- return this._leafNode(new Label(label));
- }
- // `break` statement
- break(label) {
- return this._leafNode(new Break(label));
- }
- // `return` statement
- return(value) {
- const node = new Return();
- this._blockNode(node);
- this.code(value);
- if (node.nodes.length !== 1)
- throw new Error('CodeGen: "return" should have one node');
- return this._endBlockNode(Return);
- }
- // `try` statement
- try(tryBody, catchCode, finallyCode) {
- if (!catchCode && !finallyCode)
- throw new Error('CodeGen: "try" without "catch" and "finally"');
- const node = new Try();
- this._blockNode(node);
- this.code(tryBody);
- if (catchCode) {
- const error51 = this.name("e");
- this._currNode = node.catch = new Catch(error51);
- catchCode(error51);
- }
- if (finallyCode) {
- this._currNode = node.finally = new Finally();
- this.code(finallyCode);
- }
- return this._endBlockNode(Catch, Finally);
- }
- // `throw` statement
- throw(error51) {
- return this._leafNode(new Throw(error51));
- }
- // start self-balancing block
- block(body, nodeCount) {
- this._blockStarts.push(this._nodes.length);
- if (body)
- this.code(body).endBlock(nodeCount);
- return this;
- }
- // end the current self-balancing block
- endBlock(nodeCount) {
- const len = this._blockStarts.pop();
- if (len === void 0)
- throw new Error("CodeGen: not in self-balancing block");
- const toClose = this._nodes.length - len;
- if (toClose < 0 || nodeCount !== void 0 && toClose !== nodeCount) {
- throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);
- }
- this._nodes.length = len;
- return this;
- }
- // `function` heading (or definition if funcBody is passed)
- func(name, args2 = code_1.nil, async, funcBody) {
- this._blockNode(new Func(name, args2, async));
- if (funcBody)
- this.code(funcBody).endFunc();
- return this;
- }
- // end function definition
- endFunc() {
- return this._endBlockNode(Func);
- }
- optimize(n = 1) {
- while (n-- > 0) {
- this._root.optimizeNodes();
- this._root.optimizeNames(this._root.names, this._constants);
- }
- }
- _leafNode(node) {
- this._currNode.nodes.push(node);
- return this;
- }
- _blockNode(node) {
- this._currNode.nodes.push(node);
- this._nodes.push(node);
- }
- _endBlockNode(N1, N2) {
- const n = this._currNode;
- if (n instanceof N1 || N2 && n instanceof N2) {
- this._nodes.pop();
- return this;
- }
- throw new Error(`CodeGen: not in block "${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}"`);
- }
- _elseNode(node) {
- const n = this._currNode;
- if (!(n instanceof If)) {
- throw new Error('CodeGen: "else" without "if"');
- }
- this._currNode = n.else = node;
- return this;
- }
- get _root() {
- return this._nodes[0];
- }
- get _currNode() {
- const ns = this._nodes;
- return ns[ns.length - 1];
- }
- set _currNode(node) {
- const ns = this._nodes;
- ns[ns.length - 1] = node;
- }
- };
- exports.CodeGen = CodeGen;
- function addNames(names, from) {
- for (const n in from)
- names[n] = (names[n] || 0) + (from[n] || 0);
- return names;
- }
- function addExprNames(names, from) {
- return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;
- }
- function optimizeExpr(expr, names, constants) {
- if (expr instanceof code_1.Name)
- return replaceName(expr);
- if (!canOptimize(expr))
- return expr;
- return new code_1._Code(expr._items.reduce((items, c) => {
- if (c instanceof code_1.Name)
- c = replaceName(c);
- if (c instanceof code_1._Code)
- items.push(...c._items);
- else
- items.push(c);
- return items;
- }, []));
- function replaceName(n) {
- const c = constants[n.str];
- if (c === void 0 || names[n.str] !== 1)
- return n;
- delete names[n.str];
- return c;
- }
- function canOptimize(e) {
- return e instanceof code_1._Code && e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== void 0);
- }
- }
- function subtractNames(names, from) {
- for (const n in from)
- names[n] = (names[n] || 0) - (from[n] || 0);
- }
- function not(x) {
- return typeof x == "boolean" || typeof x == "number" || x === null ? !x : (0, code_1._)`!${par(x)}`;
- }
- exports.not = not;
- var andCode = mappend(exports.operators.AND);
- function and(...args2) {
- return args2.reduce(andCode);
- }
- exports.and = and;
- var orCode = mappend(exports.operators.OR);
- function or(...args2) {
- return args2.reduce(orCode);
- }
- exports.or = or;
- function mappend(op) {
- return (x, y) => x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._)`${par(x)} ${op} ${par(y)}`;
- }
- function par(x) {
- return x instanceof code_1.Name ? x : (0, code_1._)`(${x})`;
- }
+
+/**
+ * Handler for dynamic import.
+ * DO NOT OPENSOURCE
+ */
+goog.importHandler_ = null;
+
+
+/**
+ * Chunk ID calculator.
+ * @private {?function(string)}
+ * DO NOT OPENSOURCE
+ */
+goog.uncompiledChunkIdHandler_ = null;
+
+
+/**
+ * Sets import handler.
+ * @param {function(string)} fn
+ * DO NOT OPENSOURCE
+ */
+goog.setImportHandlerInternalDoNotCallOrElse = function(fn) {
+ goog.importHandler_ = fn;
+};
+
+
+/**
+ * Sets chunk ID calculator.
+ * @param {function(string)} fn
+ * NOTE: The chunk ID calculator is only used in uncompiled mode.
+ * DO NOT OPENSOURCE
+ */
+goog.setUncompiledChunkIdHandlerInternalDoNotCallOrElse = function(fn) {
+ goog.uncompiledChunkIdHandler_ = fn;
+};
+
+
+/**
+ * This exists purely as a hint to JsTrimmer, so that it can convert it to
+ * goog.require in certain circumstances.
+ *
+ * @param {string} namespace
+ * DO NOT OPENSOURCE
+ */
+goog.maybeRequireFrameworkInternalOnlyDoNotCallOrElse = function(namespace) {};
+// MOE:end_strip
+
+/**
+ * Types of modules the debug loader can load.
+ * @enum {string}
+ */
+goog.ModuleType = {
+ ES6: 'es6',
+ GOOG: 'goog'
+};
+
+
+/**
+ * @private {?{
+ * moduleName: (string|undefined),
+ * declareLegacyNamespace:boolean,
+ * preventModuleExportSealing:boolean,
+ * type: ?goog.ModuleType
+ * }}
+ */
+goog.moduleLoaderState_ = null;
+
+
+/**
+ * @private
+ * @return {boolean} Whether a goog.module or an es6 module is currently being
+ * initialized.
+ */
+goog.isInModuleLoader_ = function() {
+ return goog.isInGoogModuleLoader_() || goog.isInEs6ModuleLoader_();
+};
+
+
+/**
+ * @private
+ * @return {boolean} Whether a goog.module is currently being initialized.
+ */
+goog.isInGoogModuleLoader_ = function() {
+ return !!goog.moduleLoaderState_ &&
+ goog.moduleLoaderState_.type == goog.ModuleType.GOOG;
+};
+
+
+/**
+ * @private
+ * @return {boolean} Whether an es6 module is currently being initialized.
+ */
+goog.isInEs6ModuleLoader_ = function() {
+ var inLoader = !!goog.moduleLoaderState_ &&
+ goog.moduleLoaderState_.type == goog.ModuleType.ES6;
+
+ if (inLoader) {
+ return true;
}
-});
-// node_modules/ajv/dist/compile/util.js
-var require_util = __commonJS({
- "node_modules/ajv/dist/compile/util.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;
- var codegen_1 = require_codegen();
- var code_1 = require_code();
- function toHash(arr) {
- const hash2 = {};
- for (const item of arr)
- hash2[item] = true;
- return hash2;
- }
- exports.toHash = toHash;
- function alwaysValidSchema(it, schema) {
- if (typeof schema == "boolean")
- return schema;
- if (Object.keys(schema).length === 0)
- return true;
- checkUnknownRules(it, schema);
- return !schemaHasRules(schema, it.self.RULES.all);
- }
- exports.alwaysValidSchema = alwaysValidSchema;
- function checkUnknownRules(it, schema = it.schema) {
- const { opts, self } = it;
- if (!opts.strictSchema)
- return;
- if (typeof schema === "boolean")
- return;
- const rules = self.RULES.keywords;
- for (const key in schema) {
- if (!rules[key])
- checkStrictMode(it, `unknown keyword: "${key}"`);
- }
- }
- exports.checkUnknownRules = checkUnknownRules;
- function schemaHasRules(schema, rules) {
- if (typeof schema == "boolean")
- return !schema;
- for (const key in schema)
- if (rules[key])
- return true;
- return false;
- }
- exports.schemaHasRules = schemaHasRules;
- function schemaHasRulesButRef(schema, RULES) {
- if (typeof schema == "boolean")
- return !schema;
- for (const key in schema)
- if (key !== "$ref" && RULES.all[key])
- return true;
+ var jscomp = goog.LEGACY_NAMESPACE_OBJECT_['$jscomp'];
+
+ if (jscomp) {
+ // jscomp may not have getCurrentModulePath if this is a compiled bundle
+ // that has some of the runtime, but not all of it. This can happen if
+ // optimizations are turned on so the unused runtime is removed but renaming
+ // and Closure pass are off (so $jscomp is still named $jscomp and the
+ // goog.provide/require calls still exist).
+ if (typeof jscomp.getCurrentModulePath != 'function') {
return false;
}
- exports.schemaHasRulesButRef = schemaHasRulesButRef;
- function schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) {
- if (!$data) {
- if (typeof schema == "number" || typeof schema == "boolean")
- return schema;
- if (typeof schema == "string")
- return (0, codegen_1._)`${schema}`;
- }
- return (0, codegen_1._)`${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`;
- }
- exports.schemaRefOrVal = schemaRefOrVal;
- function unescapeFragment(str) {
- return unescapeJsonPointer(decodeURIComponent(str));
- }
- exports.unescapeFragment = unescapeFragment;
- function escapeFragment(str) {
- return encodeURIComponent(escapeJsonPointer(str));
- }
- exports.escapeFragment = escapeFragment;
- function escapeJsonPointer(str) {
- if (typeof str == "number")
- return `${str}`;
- return str.replace(/~/g, "~0").replace(/\//g, "~1");
- }
- exports.escapeJsonPointer = escapeJsonPointer;
- function unescapeJsonPointer(str) {
- return str.replace(/~1/g, "/").replace(/~0/g, "~");
- }
- exports.unescapeJsonPointer = unescapeJsonPointer;
- function eachItem(xs, f) {
- if (Array.isArray(xs)) {
- for (const x of xs)
- f(x);
- } else {
- f(xs);
- }
- }
- exports.eachItem = eachItem;
- function makeMergeEvaluated({ mergeNames, mergeToName, mergeValues: mergeValues2, resultToName }) {
- return (gen, from, to, toName) => {
- const res = to === void 0 ? from : to instanceof codegen_1.Name ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to) : from instanceof codegen_1.Name ? (mergeToName(gen, to, from), from) : mergeValues2(from, to);
- return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res;
- };
- }
- exports.mergeEvaluated = {
- props: makeMergeEvaluated({
- mergeNames: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true && ${from} !== undefined`, () => {
- gen.if((0, codegen_1._)`${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._)`${to} || {}`).code((0, codegen_1._)`Object.assign(${to}, ${from})`));
- }),
- mergeToName: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true`, () => {
- if (from === true) {
- gen.assign(to, true);
- } else {
- gen.assign(to, (0, codegen_1._)`${to} || {}`);
- setEvaluated(gen, to, from);
- }
- }),
- mergeValues: (from, to) => from === true ? true : { ...from, ...to },
- resultToName: evaluatedPropsToName
- }),
- items: makeMergeEvaluated({
- mergeNames: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._)`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),
- mergeToName: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._)`${to} > ${from} ? ${to} : ${from}`)),
- mergeValues: (from, to) => from === true ? true : Math.max(from, to),
- resultToName: (gen, items) => gen.var("items", items)
- })
- };
- function evaluatedPropsToName(gen, ps) {
- if (ps === true)
- return gen.var("props", true);
- const props = gen.var("props", (0, codegen_1._)`{}`);
- if (ps !== void 0)
- setEvaluated(gen, props, ps);
- return props;
- }
- exports.evaluatedPropsToName = evaluatedPropsToName;
- function setEvaluated(gen, props, ps) {
- Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._)`${props}${(0, codegen_1.getProperty)(p)}`, true));
- }
- exports.setEvaluated = setEvaluated;
- var snippets = {};
- function useFunc(gen, f) {
- return gen.scopeValue("func", {
- ref: f,
- code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code))
- });
- }
- exports.useFunc = useFunc;
- var Type;
- (function(Type2) {
- Type2[Type2["Num"] = 0] = "Num";
- Type2[Type2["Str"] = 1] = "Str";
- })(Type || (exports.Type = Type = {}));
- function getErrorPath(dataProp, dataPropType, jsPropertySyntax) {
- if (dataProp instanceof codegen_1.Name) {
- const isNumber = dataPropType === Type.Num;
- return jsPropertySyntax ? isNumber ? (0, codegen_1._)`"[" + ${dataProp} + "]"` : (0, codegen_1._)`"['" + ${dataProp} + "']"` : isNumber ? (0, codegen_1._)`"/" + ${dataProp}` : (0, codegen_1._)`"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`;
- }
- return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : "/" + escapeJsonPointer(dataProp);
- }
- exports.getErrorPath = getErrorPath;
- function checkStrictMode(it, msg, mode2 = it.opts.strictSchema) {
- if (!mode2)
- return;
- msg = `strict mode: ${msg}`;
- if (mode2 === true)
- throw new Error(msg);
- it.self.logger.warn(msg);
- }
- exports.checkStrictMode = checkStrictMode;
- }
-});
-// node_modules/ajv/dist/compile/names.js
-var require_names = __commonJS({
- "node_modules/ajv/dist/compile/names.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var codegen_1 = require_codegen();
- var names = {
- // validation function arguments
- data: new codegen_1.Name("data"),
- // data passed to validation function
- // args passed from referencing schema
- valCxt: new codegen_1.Name("valCxt"),
- // validation/data context - should not be used directly, it is destructured to the names below
- instancePath: new codegen_1.Name("instancePath"),
- parentData: new codegen_1.Name("parentData"),
- parentDataProperty: new codegen_1.Name("parentDataProperty"),
- rootData: new codegen_1.Name("rootData"),
- // root data - same as the data passed to the first/top validation function
- dynamicAnchors: new codegen_1.Name("dynamicAnchors"),
- // used to support recursiveRef and dynamicRef
- // function scoped variables
- vErrors: new codegen_1.Name("vErrors"),
- // null or array of validation errors
- errors: new codegen_1.Name("errors"),
- // counter of validation errors
- this: new codegen_1.Name("this"),
- // "globals"
- self: new codegen_1.Name("self"),
- scope: new codegen_1.Name("scope"),
- // JTD serialize/parse name for JSON string and position
- json: new codegen_1.Name("json"),
- jsonPos: new codegen_1.Name("jsonPos"),
- jsonLen: new codegen_1.Name("jsonLen"),
- jsonPart: new codegen_1.Name("jsonPart")
- };
- exports.default = names;
+ // Bundled ES6 module.
+ return !!jscomp.getCurrentModulePath();
}
-});
-// node_modules/ajv/dist/compile/errors.js
-var require_errors = __commonJS({
- "node_modules/ajv/dist/compile/errors.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0;
- var codegen_1 = require_codegen();
- var util_1 = require_util();
- var names_1 = require_names();
- exports.keywordError = {
- message: ({ keyword }) => (0, codegen_1.str)`must pass "${keyword}" keyword validation`
- };
- exports.keyword$DataError = {
- message: ({ keyword, schemaType }) => schemaType ? (0, codegen_1.str)`"${keyword}" keyword must be ${schemaType} ($data)` : (0, codegen_1.str)`"${keyword}" keyword is invalid ($data)`
- };
- function reportError(cxt, error51 = exports.keywordError, errorPaths, overrideAllErrors) {
- const { it } = cxt;
- const { gen, compositeRule, allErrors } = it;
- const errObj = errorObjectCode(cxt, error51, errorPaths);
- if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : compositeRule || allErrors) {
- addError(gen, errObj);
- } else {
- returnErrors(it, (0, codegen_1._)`[${errObj}]`);
- }
- }
- exports.reportError = reportError;
- function reportExtraError(cxt, error51 = exports.keywordError, errorPaths) {
- const { it } = cxt;
- const { gen, compositeRule, allErrors } = it;
- const errObj = errorObjectCode(cxt, error51, errorPaths);
- addError(gen, errObj);
- if (!(compositeRule || allErrors)) {
- returnErrors(it, names_1.default.vErrors);
- }
- }
- exports.reportExtraError = reportExtraError;
- function resetErrorsCount(gen, errsCount) {
- gen.assign(names_1.default.errors, errsCount);
- gen.if((0, codegen_1._)`${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._)`${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null)));
- }
- exports.resetErrorsCount = resetErrorsCount;
- function extendErrors({ gen, keyword, schemaValue, data, errsCount, it }) {
- if (errsCount === void 0)
- throw new Error("ajv implementation error");
- const err = gen.name("err");
- gen.forRange("i", errsCount, names_1.default.errors, (i) => {
- gen.const(err, (0, codegen_1._)`${names_1.default.vErrors}[${i}]`);
- gen.if((0, codegen_1._)`${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._)`${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath)));
- gen.assign((0, codegen_1._)`${err}.schemaPath`, (0, codegen_1.str)`${it.errSchemaPath}/${keyword}`);
- if (it.opts.verbose) {
- gen.assign((0, codegen_1._)`${err}.schema`, schemaValue);
- gen.assign((0, codegen_1._)`${err}.data`, data);
- }
- });
+ return false;
+};
+
+
+/**
+ * Provide the module's exports as a globally accessible object under the
+ * module's declared name. This is intended to ease migration to goog.module
+ * for files that have existing usages.
+ * @suppress {missingProvide}
+ */
+goog.module.declareLegacyNamespace = function() {
+ if (!COMPILED && !goog.isInGoogModuleLoader_()) {
+ throw new Error(
+ 'goog.module.declareLegacyNamespace must be called from ' +
+ 'within a goog.module');
+ }
+ if (!COMPILED && !goog.moduleLoaderState_.moduleName) {
+ throw new Error(
+ 'goog.module must be called prior to ' +
+ 'goog.module.declareLegacyNamespace.');
+ }
+ goog.moduleLoaderState_.declareLegacyNamespace = true;
+};
+
+
+/**
+ * Ensures that a module's exports object is not sealed after the module is
+ * evaluated.
+ * @suppress {missingProvide}
+ */
+goog.module.preventModuleExportSealing = function() {
+ if (!COMPILED && !goog.isInGoogModuleLoader_()) {
+ throw new Error(
+ 'goog.module.preventModuleExportSealing must be called from ' +
+ 'within a goog.module');
+ }
+ if (!COMPILED && !goog.moduleLoaderState_.moduleName) {
+ throw new Error(
+ 'goog.module must be called prior to ' +
+ 'goog.module.preventModuleExportSealing.');
+ }
+ goog.moduleLoaderState_.preventModuleExportSealing = true;
+};
+
+
+/**
+ * Associates an ES6 module with a Closure module ID so that is available via
+ * goog.require. The associated ID acts like a goog.module ID - it does not
+ * create any global names, it is merely available via goog.require /
+ * goog.module.get / goog.forwardDeclare / goog.requireType. goog.require and
+ * goog.module.get will return the entire module as if it was import *'d. This
+ * allows Closure files to reference ES6 modules for the sake of migration.
+ *
+ * @param {string} namespace
+ * @suppress {missingProvide}
+ */
+goog.declareModuleId = function(namespace) {
+ if (!COMPILED) {
+ if (!goog.isInEs6ModuleLoader_()) {
+ throw new Error(
+ 'goog.declareModuleId may only be called from ' +
+ 'within an ES6 module');
}
- exports.extendErrors = extendErrors;
- function addError(gen, errObj) {
- const err = gen.const("err", errObj);
- gen.if((0, codegen_1._)`${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._)`[${err}]`), (0, codegen_1._)`${names_1.default.vErrors}.push(${err})`);
- gen.code((0, codegen_1._)`${names_1.default.errors}++`);
+ if (goog.moduleLoaderState_ && goog.moduleLoaderState_.moduleName) {
+ throw new Error(
+ 'goog.declareModuleId may only be called once per module.');
}
- function returnErrors(it, errs) {
- const { gen, validateName, schemaEnv } = it;
- if (schemaEnv.$async) {
- gen.throw((0, codegen_1._)`new ${it.ValidationError}(${errs})`);
- } else {
- gen.assign((0, codegen_1._)`${validateName}.errors`, errs);
- gen.return(false);
- }
+ if (namespace in goog.loadedModules_) {
+ throw new Error(
+ 'Module with namespace "' + namespace + '" already exists.');
}
- var E = {
- keyword: new codegen_1.Name("keyword"),
- schemaPath: new codegen_1.Name("schemaPath"),
- // also used in JTD errors
- params: new codegen_1.Name("params"),
- propertyName: new codegen_1.Name("propertyName"),
- message: new codegen_1.Name("message"),
- schema: new codegen_1.Name("schema"),
- parentSchema: new codegen_1.Name("parentSchema")
+ }
+ if (goog.moduleLoaderState_) {
+ // Not bundled - debug loading.
+ goog.moduleLoaderState_.moduleName = namespace;
+ } else {
+ // Bundled - not debug loading, no module loader state.
+ var jscomp = goog.LEGACY_NAMESPACE_OBJECT_['$jscomp'];
+ if (!jscomp || typeof jscomp.getCurrentModulePath != 'function') {
+ throw new Error(
+ 'Module with namespace "' + namespace +
+ '" has been loaded incorrectly.');
+ }
+ var exports = jscomp.require(jscomp.getCurrentModulePath());
+ goog.loadedModules_[namespace] = {
+ exports: exports,
+ type: goog.ModuleType.ES6,
+ moduleId: namespace
};
- function errorObjectCode(cxt, error51, errorPaths) {
- const { createErrors } = cxt.it;
- if (createErrors === false)
- return (0, codegen_1._)`{}`;
- return errorObject(cxt, error51, errorPaths);
- }
- function errorObject(cxt, error51, errorPaths = {}) {
- const { gen, it } = cxt;
- const keyValues = [
- errorInstancePath(it, errorPaths),
- errorSchemaPath(cxt, errorPaths)
- ];
- extraErrorProps(cxt, error51, keyValues);
- return gen.object(...keyValues);
- }
- function errorInstancePath({ errorPath }, { instancePath }) {
- const instPath = instancePath ? (0, codegen_1.str)`${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}` : errorPath;
- return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)];
- }
- function errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) {
- let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str)`${errSchemaPath}/${keyword}`;
- if (schemaPath) {
- schPath = (0, codegen_1.str)`${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`;
- }
- return [E.schemaPath, schPath];
- }
- function extraErrorProps(cxt, { params, message }, keyValues) {
- const { keyword, data, schemaValue, it } = cxt;
- const { opts, propertyName, topSchemaRef, schemaPath } = it;
- keyValues.push([E.keyword, keyword], [E.params, typeof params == "function" ? params(cxt) : params || (0, codegen_1._)`{}`]);
- if (opts.messages) {
- keyValues.push([E.message, typeof message == "function" ? message(cxt) : message]);
- }
- if (opts.verbose) {
- keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._)`${topSchemaRef}${schemaPath}`], [names_1.default.data, data]);
- }
- if (propertyName)
- keyValues.push([E.propertyName, propertyName]);
- }
}
-});
+};
-// node_modules/ajv/dist/compile/validate/boolSchema.js
-var require_boolSchema = __commonJS({
- "node_modules/ajv/dist/compile/validate/boolSchema.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0;
- var errors_1 = require_errors();
- var codegen_1 = require_codegen();
- var names_1 = require_names();
- var boolError = {
- message: "boolean schema is false"
- };
- function topBoolOrEmptySchema(it) {
- const { gen, schema, validateName } = it;
- if (schema === false) {
- falseSchemaError(it, false);
- } else if (typeof schema == "object" && schema.$async === true) {
- gen.return(names_1.default.data);
- } else {
- gen.assign((0, codegen_1._)`${validateName}.errors`, null);
- gen.return(true);
- }
- }
- exports.topBoolOrEmptySchema = topBoolOrEmptySchema;
- function boolOrEmptySchema(it, valid) {
- const { gen, schema } = it;
- if (schema === false) {
- gen.var(valid, false);
- falseSchemaError(it);
- } else {
- gen.var(valid, true);
- }
- }
- exports.boolOrEmptySchema = boolOrEmptySchema;
- function falseSchemaError(it, overrideAllErrors) {
- const { gen, data } = it;
- const cxt = {
- gen,
- keyword: "false schema",
- data,
- schema: false,
- schemaCode: false,
- schemaValue: false,
- params: {},
- it
- };
- (0, errors_1.reportError)(cxt, boolError, void 0, overrideAllErrors);
- }
- }
-});
-// node_modules/ajv/dist/compile/rules.js
-var require_rules = __commonJS({
- "node_modules/ajv/dist/compile/rules.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.getRules = exports.isJSONType = void 0;
- var _jsonTypes = ["string", "number", "integer", "boolean", "null", "object", "array"];
- var jsonTypes = new Set(_jsonTypes);
- function isJSONType(x) {
- return typeof x == "string" && jsonTypes.has(x);
- }
- exports.isJSONType = isJSONType;
- function getRules() {
- const groups = {
- number: { type: "number", rules: [] },
- string: { type: "string", rules: [] },
- array: { type: "array", rules: [] },
- object: { type: "object", rules: [] }
- };
- return {
- types: { ...groups, integer: true, boolean: true, null: true },
- rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object],
- post: { rules: [] },
- all: {},
- keywords: {}
- };
- }
- exports.getRules = getRules;
+/**
+ * Marks that the current file should only be used for testing, and never for
+ * live code in production.
+ *
+ * In the case of unit tests, the message may optionally be an exact namespace
+ * for the test (e.g. 'goog.stringTest'). The linter will then ignore the extra
+ * provide (if not explicitly defined in the code).
+ *
+ * @param {string=} opt_message Optional message to add to the error that's
+ * raised when used in production code.
+ */
+goog.setTestOnly = function(opt_message) {
+ if (goog.DISALLOW_TEST_ONLY_CODE) {
+ opt_message = opt_message || '';
+ throw new Error(
+ 'Importing test-only code into non-debug environment' +
+ (opt_message ? ': ' + opt_message : '.'));
}
-});
+};
-// node_modules/ajv/dist/compile/validate/applicability.js
-var require_applicability = __commonJS({
- "node_modules/ajv/dist/compile/validate/applicability.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0;
- function schemaHasRulesForType({ schema, self }, type) {
- const group = self.RULES.types[type];
- return group && group !== true && shouldUseGroup(schema, group);
- }
- exports.schemaHasRulesForType = schemaHasRulesForType;
- function shouldUseGroup(schema, group) {
- return group.rules.some((rule) => shouldUseRule(schema, rule));
- }
- exports.shouldUseGroup = shouldUseGroup;
- function shouldUseRule(schema, rule) {
- var _a3;
- return schema[rule.keyword] !== void 0 || ((_a3 = rule.definition.implements) === null || _a3 === void 0 ? void 0 : _a3.some((kwd) => schema[kwd] !== void 0));
- }
- exports.shouldUseRule = shouldUseRule;
- }
-});
-// node_modules/ajv/dist/compile/validate/dataType.js
-var require_dataType = __commonJS({
- "node_modules/ajv/dist/compile/validate/dataType.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0;
- var rules_1 = require_rules();
- var applicability_1 = require_applicability();
- var errors_1 = require_errors();
- var codegen_1 = require_codegen();
- var util_1 = require_util();
- var DataType;
- (function(DataType2) {
- DataType2[DataType2["Correct"] = 0] = "Correct";
- DataType2[DataType2["Wrong"] = 1] = "Wrong";
- })(DataType || (exports.DataType = DataType = {}));
- function getSchemaTypes(schema) {
- const types = getJSONTypes(schema.type);
- const hasNull = types.includes("null");
- if (hasNull) {
- if (schema.nullable === false)
- throw new Error("type: null contradicts nullable: false");
- } else {
- if (!types.length && schema.nullable !== void 0) {
- throw new Error('"nullable" cannot be used without "type"');
- }
- if (schema.nullable === true)
- types.push("null");
- }
- return types;
- }
- exports.getSchemaTypes = getSchemaTypes;
- function getJSONTypes(ts) {
- const types = Array.isArray(ts) ? ts : ts ? [ts] : [];
- if (types.every(rules_1.isJSONType))
- return types;
- throw new Error("type must be JSONType or JSONType[]: " + types.join(","));
- }
- exports.getJSONTypes = getJSONTypes;
- function coerceAndCheckDataType(it, types) {
- const { gen, data, opts } = it;
- const coerceTo = coerceToTypes(types, opts.coerceTypes);
- const checkTypes = types.length > 0 && !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0]));
- if (checkTypes) {
- const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong);
- gen.if(wrongType, () => {
- if (coerceTo.length)
- coerceData(it, types, coerceTo);
- else
- reportTypeError(it);
- });
- }
- return checkTypes;
- }
- exports.coerceAndCheckDataType = coerceAndCheckDataType;
- var COERCIBLE = /* @__PURE__ */ new Set(["string", "number", "integer", "boolean", "null"]);
- function coerceToTypes(types, coerceTypes) {
- return coerceTypes ? types.filter((t) => COERCIBLE.has(t) || coerceTypes === "array" && t === "array") : [];
- }
- function coerceData(it, types, coerceTo) {
- const { gen, data, opts } = it;
- const dataType = gen.let("dataType", (0, codegen_1._)`typeof ${data}`);
- const coerced = gen.let("coerced", (0, codegen_1._)`undefined`);
- if (opts.coerceTypes === "array") {
- gen.if((0, codegen_1._)`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen.assign(data, (0, codegen_1._)`${data}[0]`).assign(dataType, (0, codegen_1._)`typeof ${data}`).if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data)));
- }
- gen.if((0, codegen_1._)`${coerced} !== undefined`);
- for (const t of coerceTo) {
- if (COERCIBLE.has(t) || t === "array" && opts.coerceTypes === "array") {
- coerceSpecificType(t);
- }
- }
- gen.else();
- reportTypeError(it);
- gen.endIf();
- gen.if((0, codegen_1._)`${coerced} !== undefined`, () => {
- gen.assign(data, coerced);
- assignParentData(it, coerced);
- });
- function coerceSpecificType(t) {
- switch (t) {
- case "string":
- gen.elseIf((0, codegen_1._)`${dataType} == "number" || ${dataType} == "boolean"`).assign(coerced, (0, codegen_1._)`"" + ${data}`).elseIf((0, codegen_1._)`${data} === null`).assign(coerced, (0, codegen_1._)`""`);
- return;
- case "number":
- gen.elseIf((0, codegen_1._)`${dataType} == "boolean" || ${data} === null
- || (${dataType} == "string" && ${data} && ${data} == +${data})`).assign(coerced, (0, codegen_1._)`+${data}`);
- return;
- case "integer":
- gen.elseIf((0, codegen_1._)`${dataType} === "boolean" || ${data} === null
- || (${dataType} === "string" && ${data} && ${data} == +${data} && !(${data} % 1))`).assign(coerced, (0, codegen_1._)`+${data}`);
- return;
- case "boolean":
- gen.elseIf((0, codegen_1._)`${data} === "false" || ${data} === 0 || ${data} === null`).assign(coerced, false).elseIf((0, codegen_1._)`${data} === "true" || ${data} === 1`).assign(coerced, true);
- return;
- case "null":
- gen.elseIf((0, codegen_1._)`${data} === "" || ${data} === 0 || ${data} === false`);
- gen.assign(coerced, null);
- return;
- case "array":
- gen.elseIf((0, codegen_1._)`${dataType} === "string" || ${dataType} === "number"
- || ${dataType} === "boolean" || ${data} === null`).assign(coerced, (0, codegen_1._)`[${data}]`);
- }
- }
- }
- function assignParentData({ gen, parentData, parentDataProperty }, expr) {
- gen.if((0, codegen_1._)`${parentData} !== undefined`, () => gen.assign((0, codegen_1._)`${parentData}[${parentDataProperty}]`, expr));
- }
- function checkDataType(dataType, data, strictNums, correct = DataType.Correct) {
- const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ;
- let cond;
- switch (dataType) {
- case "null":
- return (0, codegen_1._)`${data} ${EQ} null`;
- case "array":
- cond = (0, codegen_1._)`Array.isArray(${data})`;
- break;
- case "object":
- cond = (0, codegen_1._)`${data} && typeof ${data} == "object" && !Array.isArray(${data})`;
- break;
- case "integer":
- cond = numCond((0, codegen_1._)`!(${data} % 1) && !isNaN(${data})`);
- break;
- case "number":
- cond = numCond();
- break;
- default:
- return (0, codegen_1._)`typeof ${data} ${EQ} ${dataType}`;
- }
- return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond);
- function numCond(_cond = codegen_1.nil) {
- return (0, codegen_1.and)((0, codegen_1._)`typeof ${data} == "number"`, _cond, strictNums ? (0, codegen_1._)`isFinite(${data})` : codegen_1.nil);
- }
- }
- exports.checkDataType = checkDataType;
- function checkDataTypes(dataTypes, data, strictNums, correct) {
- if (dataTypes.length === 1) {
- return checkDataType(dataTypes[0], data, strictNums, correct);
- }
- let cond;
- const types = (0, util_1.toHash)(dataTypes);
- if (types.array && types.object) {
- const notObj = (0, codegen_1._)`typeof ${data} != "object"`;
- cond = types.null ? notObj : (0, codegen_1._)`!${data} || ${notObj}`;
- delete types.null;
- delete types.array;
- delete types.object;
- } else {
- cond = codegen_1.nil;
- }
- if (types.number)
- delete types.integer;
- for (const t in types)
- cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct));
- return cond;
- }
- exports.checkDataTypes = checkDataTypes;
- var typeError = {
- message: ({ schema }) => `must be ${schema}`,
- params: ({ schema, schemaValue }) => typeof schema == "string" ? (0, codegen_1._)`{type: ${schema}}` : (0, codegen_1._)`{type: ${schemaValue}}`
- };
- function reportTypeError(it) {
- const cxt = getTypeErrorContext(it);
- (0, errors_1.reportError)(cxt, typeError);
- }
- exports.reportTypeError = reportTypeError;
- function getTypeErrorContext(it) {
- const { gen, data, schema } = it;
- const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, "type");
- return {
- gen,
- keyword: "type",
- data,
- schema: schema.type,
- schemaCode,
- schemaValue: schemaCode,
- parentSchema: schema,
- params: {},
- it
- };
- }
- }
-});
+/**
+ * Forward declares a symbol. This is an indication to the compiler that the
+ * symbol may be used in the source yet is not required and may not be provided
+ * in compilation.
+ *
+ * The most common usage of forward declaration is code that takes a type as a
+ * function parameter but does not need to require it. By forward declaring
+ * instead of requiring, no hard dependency is made, and (if not required
+ * elsewhere) the namespace may never be required and thus, not be pulled
+ * into the JavaScript binary. If it is required elsewhere, it will be type
+ * checked as normal.
+ *
+ * Before using goog.forwardDeclare, please read the documentation at
+ * https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation to
+ * understand the options and tradeoffs when working with forward declarations.
+ *
+ * @param {string} name The namespace to forward declare in the form of
+ * "goog.package.part".
+ * @deprecated See go/noforwarddeclaration, Use `goog.requireType` instead.
+ */
+goog.forwardDeclare = function(name) {};
-// node_modules/ajv/dist/compile/validate/defaults.js
-var require_defaults = __commonJS({
- "node_modules/ajv/dist/compile/validate/defaults.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.assignDefaults = void 0;
- var codegen_1 = require_codegen();
- var util_1 = require_util();
- function assignDefaults(it, ty) {
- const { properties, items } = it.schema;
- if (ty === "object" && properties) {
- for (const key in properties) {
- assignDefault(it, key, properties[key].default);
- }
- } else if (ty === "array" && Array.isArray(items)) {
- items.forEach((sch, i) => assignDefault(it, i, sch.default));
- }
- }
- exports.assignDefaults = assignDefaults;
- function assignDefault(it, prop, defaultValue) {
- const { gen, compositeRule, data, opts } = it;
- if (defaultValue === void 0)
- return;
- const childData = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(prop)}`;
- if (compositeRule) {
- (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`);
- return;
- }
- let condition = (0, codegen_1._)`${childData} === undefined`;
- if (opts.useDefaults === "empty") {
- condition = (0, codegen_1._)`${condition} || ${childData} === null || ${childData} === ""`;
- }
- gen.if(condition, (0, codegen_1._)`${childData} = ${(0, codegen_1.stringify)(defaultValue)}`);
+if (!COMPILED) {
+ /**
+ * Check if the given name has been goog.provided. This will return false for
+ * names that are available only as implicit namespaces.
+ * @param {string} name name of the object to look for.
+ * @return {boolean} Whether the name has been provided.
+ * @private
+ */
+ goog.isProvided_ = function(name) {
+ return (name in goog.loadedModules_) ||
+ (!goog.implicitNamespaces_[name] &&
+ goog.getObjectByName(name, goog.LEGACY_NAMESPACE_OBJECT_) != null);
+ };
+
+ /**
+ * Namespaces implicitly defined by goog.provide. For example,
+ * goog.provide('goog.events.Event') implicitly declares that 'goog' and
+ * 'goog.events' must be namespaces.
+ *
+ * @type {!Object}
+ * @private
+ */
+ goog.implicitNamespaces_ = {'goog.module': true};
+
+ // NOTE: We add goog.module as an implicit namespace as goog.module is defined
+ // here and because the existing module package has not been moved yet out of
+ // the goog.module namespace. This satisfies both the debug loader and
+ // ahead-of-time dependency management.
+}
+
+
+/**
+ * Returns an object based on its fully qualified external name. The object
+ * is not found if null or undefined. If you are using a compilation pass that
+ * renames property names beware that using this function will not find renamed
+ * properties.
+ *
+ * @param {string} name The fully qualified name.
+ * @param {Object=} opt_obj The object within which to look; default is
+ * |goog.global|.
+ * @return {?} The value (object or primitive) or, if not found, null.
+ */
+goog.getObjectByName = function(name, opt_obj) {
+ var parts = name.split('.');
+ var cur = opt_obj || goog.global;
+ for (var i = 0; i < parts.length; i++) {
+ cur = cur[parts[i]];
+ if (cur == null) {
+ return null;
}
}
-});
+ return cur;
+};
-// node_modules/ajv/dist/vocabularies/code.js
-var require_code2 = __commonJS({
- "node_modules/ajv/dist/vocabularies/code.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0;
- var codegen_1 = require_codegen();
- var util_1 = require_util();
- var names_1 = require_names();
- var util_2 = require_util();
- function checkReportMissingProp(cxt, prop) {
- const { gen, data, it } = cxt;
- gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {
- cxt.setParams({ missingProperty: (0, codegen_1._)`${prop}` }, true);
- cxt.error();
- });
- }
- exports.checkReportMissingProp = checkReportMissingProp;
- function checkMissingProp({ gen, data, it: { opts } }, properties, missing) {
- return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._)`${missing} = ${prop}`)));
- }
- exports.checkMissingProp = checkMissingProp;
- function reportMissingProp(cxt, missing) {
- cxt.setParams({ missingProperty: missing }, true);
- cxt.error();
- }
- exports.reportMissingProp = reportMissingProp;
- function hasPropFunc(gen) {
- return gen.scopeValue("func", {
- // eslint-disable-next-line @typescript-eslint/unbound-method
- ref: Object.prototype.hasOwnProperty,
- code: (0, codegen_1._)`Object.prototype.hasOwnProperty`
- });
- }
- exports.hasPropFunc = hasPropFunc;
- function isOwnProperty(gen, data, property) {
- return (0, codegen_1._)`${hasPropFunc(gen)}.call(${data}, ${property})`;
- }
- exports.isOwnProperty = isOwnProperty;
- function propertyInData(gen, data, property, ownProperties) {
- const cond = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(property)} !== undefined`;
- return ownProperties ? (0, codegen_1._)`${cond} && ${isOwnProperty(gen, data, property)}` : cond;
- }
- exports.propertyInData = propertyInData;
- function noPropertyInData(gen, data, property, ownProperties) {
- const cond = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(property)} === undefined`;
- return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond;
- }
- exports.noPropertyInData = noPropertyInData;
- function allSchemaProperties(schemaMap) {
- return schemaMap ? Object.keys(schemaMap).filter((p) => p !== "__proto__") : [];
- }
- exports.allSchemaProperties = allSchemaProperties;
- function schemaProperties(it, schemaMap) {
- return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p]));
- }
- exports.schemaProperties = schemaProperties;
- function callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) {
- const dataAndSchema = passSchema ? (0, codegen_1._)`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data;
- const valCxt = [
- [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)],
- [names_1.default.parentData, it.parentData],
- [names_1.default.parentDataProperty, it.parentDataProperty],
- [names_1.default.rootData, names_1.default.rootData]
- ];
- if (it.opts.dynamicRef)
- valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]);
- const args2 = (0, codegen_1._)`${dataAndSchema}, ${gen.object(...valCxt)}`;
- return context !== codegen_1.nil ? (0, codegen_1._)`${func}.call(${context}, ${args2})` : (0, codegen_1._)`${func}(${args2})`;
- }
- exports.callValidateCode = callValidateCode;
- var newRegExp = (0, codegen_1._)`new RegExp`;
- function usePattern({ gen, it: { opts } }, pattern) {
- const u = opts.unicodeRegExp ? "u" : "";
- const { regExp } = opts.code;
- const rx = regExp(pattern, u);
- return gen.scopeValue("pattern", {
- key: rx.toString(),
- ref: rx,
- code: (0, codegen_1._)`${regExp.code === "new RegExp" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})`
- });
- }
- exports.usePattern = usePattern;
- function validateArray(cxt) {
- const { gen, data, keyword, it } = cxt;
- const valid = gen.name("valid");
- if (it.allErrors) {
- const validArr = gen.let("valid", true);
- validateItems(() => gen.assign(validArr, false));
- return validArr;
- }
- gen.var(valid, true);
- validateItems(() => gen.break());
- return valid;
- function validateItems(notValid) {
- const len = gen.const("len", (0, codegen_1._)`${data}.length`);
- gen.forRange("i", 0, len, (i) => {
- cxt.subschema({
- keyword,
- dataProp: i,
- dataPropType: util_1.Type.Num
- }, valid);
- gen.if((0, codegen_1.not)(valid), notValid);
- });
- }
- }
- exports.validateArray = validateArray;
- function validateUnion(cxt) {
- const { gen, schema, keyword, it } = cxt;
- if (!Array.isArray(schema))
- throw new Error("ajv implementation error");
- const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch));
- if (alwaysValid && !it.opts.unevaluated)
- return;
- const valid = gen.let("valid", false);
- const schValid = gen.name("_valid");
- gen.block(() => schema.forEach((_sch, i) => {
- const schCxt = cxt.subschema({
- keyword,
- schemaProp: i,
- compositeRule: true
- }, schValid);
- gen.assign(valid, (0, codegen_1._)`${valid} || ${schValid}`);
- const merged = cxt.mergeValidEvaluated(schCxt, schValid);
- if (!merged)
- gen.if((0, codegen_1.not)(valid));
- }));
- cxt.result(valid, () => cxt.reset(), () => cxt.error(true));
- }
- exports.validateUnion = validateUnion;
+
+/**
+ * Adds a dependency from a file to the files it requires.
+ * @param {string} relPath The path to the js file.
+ * @param {!Array} provides An array of strings with
+ * the names of the objects this file provides.
+ * @param {!Array} requires An array of strings with
+ * the names of the objects this file requires.
+ * @param {boolean|!Object=} opt_loadFlags Parameters indicating
+ * how the file must be loaded. The boolean 'true' is equivalent
+ * to {'module': 'goog'} for backwards-compatibility. Valid properties
+ * and values include {'module': 'goog'} and {'lang': 'es6'}.
+ */
+goog.addDependency = function(relPath, provides, requires, opt_loadFlags) {
+ if (!COMPILED && goog.DEPENDENCIES_ENABLED) {
+ goog.debugLoader_.addDependency(relPath, provides, requires, opt_loadFlags);
}
-});
+};
-// node_modules/ajv/dist/compile/validate/keyword.js
-var require_keyword = __commonJS({
- "node_modules/ajv/dist/compile/validate/keyword.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;
- var codegen_1 = require_codegen();
- var names_1 = require_names();
- var code_1 = require_code2();
- var errors_1 = require_errors();
- function macroKeywordCode(cxt, def) {
- const { gen, keyword, schema, parentSchema, it } = cxt;
- const macroSchema = def.macro.call(it.self, schema, parentSchema, it);
- const schemaRef = useKeyword(gen, keyword, macroSchema);
- if (it.opts.validateSchema !== false)
- it.self.validateSchema(macroSchema, true);
- const valid = gen.name("valid");
- cxt.subschema({
- schema: macroSchema,
- schemaPath: codegen_1.nil,
- errSchemaPath: `${it.errSchemaPath}/${keyword}`,
- topSchemaRef: schemaRef,
- compositeRule: true
- }, valid);
- cxt.pass(valid, () => cxt.error(true));
- }
- exports.macroKeywordCode = macroKeywordCode;
- function funcKeywordCode(cxt, def) {
- var _a3;
- const { gen, keyword, schema, parentSchema, $data, it } = cxt;
- checkAsyncKeyword(it, def);
- const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate;
- const validateRef = useKeyword(gen, keyword, validate);
- const valid = gen.let("valid");
- cxt.block$data(valid, validateKeyword);
- cxt.ok((_a3 = def.valid) !== null && _a3 !== void 0 ? _a3 : valid);
- function validateKeyword() {
- if (def.errors === false) {
- assignValid();
- if (def.modifying)
- modifyData(cxt);
- reportErrs(() => cxt.error());
- } else {
- const ruleErrs = def.async ? validateAsync() : validateSync();
- if (def.modifying)
- modifyData(cxt);
- reportErrs(() => addErrs(cxt, ruleErrs));
- }
- }
- function validateAsync() {
- const ruleErrs = gen.let("ruleErrs", null);
- gen.try(() => assignValid((0, codegen_1._)`await `), (e) => gen.assign(valid, false).if((0, codegen_1._)`${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._)`${e}.errors`), () => gen.throw(e)));
- return ruleErrs;
- }
- function validateSync() {
- const validateErrs = (0, codegen_1._)`${validateRef}.errors`;
- gen.assign(validateErrs, null);
- assignValid(codegen_1.nil);
- return validateErrs;
- }
- function assignValid(_await = def.async ? (0, codegen_1._)`await ` : codegen_1.nil) {
- const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self;
- const passSchema = !("compile" in def && !$data || def.schema === false);
- gen.assign(valid, (0, codegen_1._)`${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying);
- }
- function reportErrs(errors) {
- var _a4;
- gen.if((0, codegen_1.not)((_a4 = def.valid) !== null && _a4 !== void 0 ? _a4 : valid), errors);
- }
- }
- exports.funcKeywordCode = funcKeywordCode;
- function modifyData(cxt) {
- const { gen, data, it } = cxt;
- gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._)`${it.parentData}[${it.parentDataProperty}]`));
- }
- function addErrs(cxt, errs) {
- const { gen } = cxt;
- gen.if((0, codegen_1._)`Array.isArray(${errs})`, () => {
- gen.assign(names_1.default.vErrors, (0, codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`).assign(names_1.default.errors, (0, codegen_1._)`${names_1.default.vErrors}.length`);
- (0, errors_1.extendErrors)(cxt);
- }, () => cxt.error());
- }
- function checkAsyncKeyword({ schemaEnv }, def) {
- if (def.async && !schemaEnv.$async)
- throw new Error("async keyword in sync schema");
- }
- function useKeyword(gen, keyword, result) {
- if (result === void 0)
- throw new Error(`keyword "${keyword}" failed to compile`);
- return gen.scopeValue("keyword", typeof result == "function" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) });
- }
- function validSchemaType(schema, schemaType, allowUndefined = false) {
- return !schemaType.length || schemaType.some((st) => st === "array" ? Array.isArray(schema) : st === "object" ? schema && typeof schema == "object" && !Array.isArray(schema) : typeof schema == st || allowUndefined && typeof schema == "undefined");
- }
- exports.validSchemaType = validSchemaType;
- function validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {
- if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {
- throw new Error("ajv implementation error");
- }
- const deps = def.dependencies;
- if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {
- throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`);
- }
- if (def.validateSchema) {
- const valid = def.validateSchema(schema[keyword]);
- if (!valid) {
- const msg = `keyword "${keyword}" value is invalid at path "${errSchemaPath}": ` + self.errorsText(def.validateSchema.errors);
- if (opts.validateSchema === "log")
- self.logger.error(msg);
- else
- throw new Error(msg);
- }
- }
- }
- exports.validateKeywordUsage = validateKeywordUsage;
+
+// NOTE(nnaze): The debug DOM loader was included in base.js as an original way
+// to do "debug-mode" development. The dependency system can sometimes be
+// confusing, as can the debug DOM loader's asynchronous nature.
+//
+// With the DOM loader, a call to goog.require() is not blocking -- the script
+// will not load until some point after the current script. If a namespace is
+// needed at runtime, it needs to be defined in a previous script, or loaded via
+// require() with its registered dependencies.
+//
+// User-defined namespaces may need their own deps file. For a reference on
+// creating a deps file, see:
+// MOE:begin_strip
+// Internally: http://go/deps-files and http://go/be#js_deps
+// MOE:end_strip
+// Externally: https://developers.google.com/closure/library/docs/depswriter
+//
+// Because of legacy clients, the DOM loader can't be easily removed from
+// base.js. Work was done to make it disableable or replaceable for
+// different environments (DOM-less JavaScript interpreters like Rhino or V8,
+// for example). See bootstrap/ for more information.
+
+
+/**
+ * @define {boolean} Whether to enable the debug loader.
+ *
+ * If enabled, a call to goog.require() will attempt to load the namespace by
+ * appending a script tag to the DOM (if the namespace has been registered).
+ *
+ * If disabled, goog.require() will simply assert that the namespace has been
+ * provided (and depend on the fact that some outside tool correctly ordered
+ * the script).
+ */
+goog.ENABLE_DEBUG_LOADER = goog.define('goog.ENABLE_DEBUG_LOADER', false);
+
+
+/**
+ * @param {string} msg
+ * @private
+ */
+goog.logToConsole_ = function(msg) {
+ if (goog.global.console) {
+ goog.global.console['error'](msg);
}
-});
+};
-// node_modules/ajv/dist/compile/validate/subschema.js
-var require_subschema = __commonJS({
- "node_modules/ajv/dist/compile/validate/subschema.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;
- var codegen_1 = require_codegen();
- var util_1 = require_util();
- function getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {
- if (keyword !== void 0 && schema !== void 0) {
- throw new Error('both "keyword" and "schema" passed, only one allowed');
- }
- if (keyword !== void 0) {
- const sch = it.schema[keyword];
- return schemaProp === void 0 ? {
- schema: sch,
- schemaPath: (0, codegen_1._)`${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`,
- errSchemaPath: `${it.errSchemaPath}/${keyword}`
- } : {
- schema: sch[schemaProp],
- schemaPath: (0, codegen_1._)`${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`,
- errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`
- };
- }
- if (schema !== void 0) {
- if (schemaPath === void 0 || errSchemaPath === void 0 || topSchemaRef === void 0) {
- throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');
- }
- return {
- schema,
- schemaPath,
- topSchemaRef,
- errSchemaPath
- };
- }
- throw new Error('either "keyword" or "schema" must be passed');
+
+/**
+ * Implements a system for the dynamic resolution of dependencies that works in
+ * parallel with the BUILD system.
+ *
+ * Note that all calls to goog.require will be stripped by the compiler.
+ *
+ * @see goog.provide
+ * @param {string} namespace Namespace (as was given in goog.provide,
+ * goog.module, or goog.declareModuleId) in the form
+ * "goog.package.part".
+ * @return {?} If called within a goog.module or ES6 module file, the associated
+ * namespace or module otherwise null.
+ */
+goog.require = function(namespace) {
+ if (!COMPILED) {
+ // Might need to lazy load on old IE.
+ if (goog.ENABLE_DEBUG_LOADER) {
+ goog.debugLoader_.requested(namespace);
}
- exports.getSubschema = getSubschema;
- function extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {
- if (data !== void 0 && dataProp !== void 0) {
- throw new Error('both "data" and "dataProp" passed, only one allowed');
- }
- const { gen } = it;
- if (dataProp !== void 0) {
- const { errorPath, dataPathArr, opts } = it;
- const nextData = gen.let("data", (0, codegen_1._)`${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true);
- dataContextProps(nextData);
- subschema.errorPath = (0, codegen_1.str)`${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`;
- subschema.parentDataProperty = (0, codegen_1._)`${dataProp}`;
- subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];
- }
- if (data !== void 0) {
- const nextData = data instanceof codegen_1.Name ? data : gen.let("data", data, true);
- dataContextProps(nextData);
- if (propertyName !== void 0)
- subschema.propertyName = propertyName;
- }
- if (dataTypes)
- subschema.dataTypes = dataTypes;
- function dataContextProps(_nextData) {
- subschema.data = _nextData;
- subschema.dataLevel = it.dataLevel + 1;
- subschema.dataTypes = [];
- it.definedProperties = /* @__PURE__ */ new Set();
- subschema.parentData = it.data;
- subschema.dataNames = [...it.dataNames, _nextData];
+
+ // If the object already exists we do not need to do anything.
+ if (goog.isProvided_(namespace)) {
+ if (goog.isInModuleLoader_()) {
+ return goog.module.getInternal_(namespace);
+ }
+ } else if (goog.ENABLE_DEBUG_LOADER) {
+ var moduleLoaderState = goog.moduleLoaderState_;
+ goog.moduleLoaderState_ = null;
+ try {
+ goog.debugLoader_.load_(namespace);
+ } finally {
+ goog.moduleLoaderState_ = moduleLoaderState;
}
}
- exports.extendSubschemaData = extendSubschemaData;
- function extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {
- if (compositeRule !== void 0)
- subschema.compositeRule = compositeRule;
- if (createErrors !== void 0)
- subschema.createErrors = createErrors;
- if (allErrors !== void 0)
- subschema.allErrors = allErrors;
- subschema.jtdDiscriminator = jtdDiscriminator;
- subschema.jtdMetadata = jtdMetadata;
- }
- exports.extendSubschemaMode = extendSubschemaMode;
- }
-});
-// node_modules/fast-deep-equal/index.js
-var require_fast_deep_equal = __commonJS({
- "node_modules/fast-deep-equal/index.js"(exports, module) {
- "use strict";
- module.exports = function equal(a, b) {
- if (a === b) return true;
- if (a && b && typeof a == "object" && typeof b == "object") {
- if (a.constructor !== b.constructor) return false;
- var length, i, keys;
- if (Array.isArray(a)) {
- length = a.length;
- if (length != b.length) return false;
- for (i = length; i-- !== 0; )
- if (!equal(a[i], b[i])) return false;
- return true;
- }
- if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
- if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
- if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
- keys = Object.keys(a);
- length = keys.length;
- if (length !== Object.keys(b).length) return false;
- for (i = length; i-- !== 0; )
- if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
- for (i = length; i-- !== 0; ) {
- var key = keys[i];
- if (!equal(a[key], b[key])) return false;
- }
- return true;
- }
- return a !== a && b !== b;
- };
+ return null;
}
-});
+};
-// node_modules/json-schema-traverse/index.js
-var require_json_schema_traverse = __commonJS({
- "node_modules/json-schema-traverse/index.js"(exports, module) {
- "use strict";
- var traverse = module.exports = function(schema, opts, cb) {
- if (typeof opts == "function") {
- cb = opts;
- opts = {};
- }
- cb = opts.cb || cb;
- var pre = typeof cb == "function" ? cb : cb.pre || function() {
- };
- var post = cb.post || function() {
- };
- _traverse(opts, pre, post, schema, "", schema);
- };
- traverse.keywords = {
- additionalItems: true,
- items: true,
- contains: true,
- additionalProperties: true,
- propertyNames: true,
- not: true,
- if: true,
- then: true,
- else: true
- };
- traverse.arrayKeywords = {
- items: true,
- allOf: true,
- anyOf: true,
- oneOf: true
- };
- traverse.propsKeywords = {
- $defs: true,
- definitions: true,
- properties: true,
- patternProperties: true,
- dependencies: true
- };
- traverse.skipKeywords = {
- default: true,
- enum: true,
- const: true,
- required: true,
- maximum: true,
- minimum: true,
- exclusiveMaximum: true,
- exclusiveMinimum: true,
- multipleOf: true,
- maxLength: true,
- minLength: true,
- pattern: true,
- format: true,
- maxItems: true,
- minItems: true,
- uniqueItems: true,
- maxProperties: true,
- minProperties: true
+
+/**
+ * Requires a symbol for its type information. This is an indication to the
+ * compiler that the symbol may appear in type annotations, yet it is not
+ * referenced at runtime.
+ *
+ * When called within a goog.module or ES6 module file, the return value may be
+ * assigned to or destructured into a variable, but it may not be otherwise used
+ * in code outside of a type annotation.
+ *
+ * Note that all calls to goog.requireType will be stripped by the compiler.
+ *
+ * @param {string} namespace Namespace (as was given in goog.provide,
+ * goog.module, or goog.declareModuleId) in the form
+ * "goog.package.part".
+ * @return {?}
+ */
+goog.requireType = function(namespace) {
+ // Return an empty object so that single-level destructuring of the return
+ // value doesn't crash at runtime when using the debug loader. Multi-level
+ // destructuring isn't supported.
+ return {};
+};
+
+
+/**
+ * Path for included scripts.
+ * @type {string}
+ */
+goog.basePath = '';
+
+
+/**
+ * A hook for overriding the base path.
+ * @type {string|undefined}
+ */
+goog.global.CLOSURE_BASE_PATH;
+
+
+/**
+ * A function to import a single script. This is meant to be overridden when
+ * Closure is being run in non-HTML contexts, such as web workers. It's defined
+ * in the global scope so that it can be set before base.js is loaded, which
+ * allows deps.js to be imported properly.
+ *
+ * The first parameter the script source, which is a relative URI. The second,
+ * optional parameter is the script contents, in the event the script needed
+ * transformation. It should return true if the script was imported, false
+ * otherwise.
+ * @type {(function(string, string=): boolean)|undefined}
+ */
+goog.global.CLOSURE_IMPORT_SCRIPT;
+
+
+/**
+ * When defining a class Foo with an abstract method bar(), you can do:
+ * Foo.prototype.bar = goog.abstractMethod
+ *
+ * Now if a subclass of Foo fails to override bar(), an error will be thrown
+ * when bar() is invoked.
+ *
+ * @type {!Function}
+ * @throws {Error} when invoked to indicate the method should be overridden.
+ * @deprecated Use "@abstract" annotation instead of goog.abstractMethod in new
+ * code. See
+ * https://github.com/google/closure-compiler/wiki/@abstract-classes-and-methods
+ */
+goog.abstractMethod = function() {
+ throw new Error('unimplemented abstract method');
+};
+
+
+/**
+ * Adds a `getInstance` static method that always returns the same
+ * instance object.
+ * @param {!Function} ctor The constructor for the class to add the static
+ * method to.
+ * @suppress {missingProperties} 'instance_' isn't a property on 'Function'
+ * but we don't have a better type to use here.
+ */
+goog.addSingletonGetter = function(ctor) {
+ // instance_ is immediately set to prevent issues with sealed constructors
+ // such as are encountered when a constructor is returned as the export object
+ // of a goog.module in unoptimized code.
+ // Declare type to avoid conformance violations that ctor.instance_ is unknown
+ /** @type {undefined|!Object} @suppress {underscore} */
+ ctor.instance_ = undefined;
+ ctor.getInstance = function() {
+ if (ctor.instance_) {
+ return ctor.instance_;
+ }
+ if (goog.DEBUG) {
+ // NOTE: JSCompiler can't optimize away Array#push.
+ goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = ctor;
+ }
+ // Cast to avoid conformance violations that ctor.instance_ is unknown
+ return /** @type {!Object|undefined} */ (ctor.instance_) = new ctor;
+ };
+};
+
+
+/**
+ * All singleton classes that have been instantiated, for testing. Don't read
+ * it directly, use the `goog.testing.singleton` module. The compiler
+ * removes this variable if unused.
+ * @type {!Array}
+ * @private
+ */
+goog.instantiatedSingletons_ = [];
+
+
+/**
+ * @define {boolean} Whether to load goog.modules using `eval` when using
+ * the debug loader. This provides a better debugging experience as the
+ * source is unmodified and can be edited using Chrome Workspaces or similar.
+ * However in some environments the use of `eval` is banned
+ * so we provide an alternative.
+ */
+goog.LOAD_MODULE_USING_EVAL = goog.define('goog.LOAD_MODULE_USING_EVAL', true);
+
+
+/**
+ * @define {boolean} Whether the exports of goog.modules should be sealed when
+ * possible.
+ */
+goog.SEAL_MODULE_EXPORTS = goog.define('goog.SEAL_MODULE_EXPORTS', goog.DEBUG);
+
+
+/**
+ * Hidden symbol used to mark an object being used as the Closure module
+ * object so that the debug loader does not seal the object and prevent new
+ * properties from being defined on it.
+ * @private @const {?symbol}
+ */
+goog.PREVENT_MODULE_EXPORTS_SEALING_SYMBOL_ =
+ typeof Symbol === 'function' ? Symbol('preventModuleExportSealing') : null;
+
+
+
+/**
+ * The registry of initialized modules:
+ * The module identifier or path to module exports map.
+ * @private @const {!Object}
+ */
+goog.loadedModules_ = {};
+
+
+/**
+ * True if the debug loader enabled and used.
+ * @const {boolean}
+ */
+goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER;
+
+
+
+/**
+ * @define {boolean} If true assume that ES modules have already been
+ * transpiled by the jscompiler (in the same way that transpile.js would
+ * transpile them - to jscomp modules). Useful only for servers that wish to use
+ * the debug loader and transpile server side. Thus this is only respected if
+ * goog.TRANSPILE is "never".
+ */
+goog.ASSUME_ES_MODULES_TRANSPILED =
+ goog.define('goog.ASSUME_ES_MODULES_TRANSPILED', false);
+
+
+/**
+ * @define {string} Trusted Types policy name. If non-empty then Closure will
+ * use Trusted Types.
+ */
+goog.TRUSTED_TYPES_POLICY_NAME =
+ goog.define('goog.TRUSTED_TYPES_POLICY_NAME', 'goog');
+
+
+/**
+ * @param {function(?):?|string} moduleDef The module definition.
+ */
+goog.loadModule = function(moduleDef) {
+ // NOTE: we allow function definitions to be either in the from
+ // of a string to eval (which keeps the original source intact) or
+ // in a eval forbidden environment (CSP) we allow a function definition
+ // which in its body must call `goog.module`, and return the exports
+ // of the module.
+ var previousState = goog.moduleLoaderState_;
+ try {
+ goog.moduleLoaderState_ = {
+ moduleName: '',
+ declareLegacyNamespace: false,
+ preventModuleExportSealing: false,
+ type: goog.ModuleType.GOOG
};
- function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
- if (schema && typeof schema == "object" && !Array.isArray(schema)) {
- pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
- for (var key in schema) {
- var sch = schema[key];
- if (Array.isArray(sch)) {
- if (key in traverse.arrayKeywords) {
- for (var i = 0; i < sch.length; i++)
- _traverse(opts, pre, post, sch[i], jsonPtr + "/" + key + "/" + i, rootSchema, jsonPtr, key, schema, i);
- }
- } else if (key in traverse.propsKeywords) {
- if (sch && typeof sch == "object") {
- for (var prop in sch)
- _traverse(opts, pre, post, sch[prop], jsonPtr + "/" + key + "/" + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);
+ var origExports = {};
+ var exports = origExports;
+ if (typeof moduleDef === 'function') {
+ exports = moduleDef.call(undefined, exports);
+ } else if (typeof moduleDef === 'string') {
+ exports = goog.loadModuleFromSource_.call(undefined, exports, moduleDef);
+ } else {
+ throw new Error('Invalid module definition');
+ }
+
+ var moduleName = goog.moduleLoaderState_.moduleName;
+ if (typeof moduleName === 'string' && moduleName) {
+ // Don't seal legacy namespaces as they may be used as a parent of
+ // another namespace
+ if (goog.moduleLoaderState_.declareLegacyNamespace) {
+ // Whether exports was overwritten via default export assignment.
+ // This is important for legacy namespaces as it dictates whether
+ // previously a previously loaded implicit namespace should be clobbered
+ // or not.
+ var isDefaultExport = origExports !== exports;
+ goog.constructNamespace_(moduleName, exports, isDefaultExport);
+ } else if (
+ goog.SEAL_MODULE_EXPORTS && Object.seal &&
+ typeof exports == 'object' && exports != null) {
+ if (goog.moduleLoaderState_.preventModuleExportSealing) {
+ if (goog.PREVENT_MODULE_EXPORTS_SEALING_SYMBOL_ &&
+ Object.defineProperty) {
+ try {
+ // Keep configurable: true so the descriptor remains redefinable
+ // if downstream modules or tests need to reconfigure the exports
+ // object.
+ Object.defineProperty(
+ exports, goog.PREVENT_MODULE_EXPORTS_SEALING_SYMBOL_, {
+ value: true,
+ writable: false,
+ enumerable: false,
+ configurable: true,
+ });
+ } catch (e) {
+ // Ignore if the exports object cannot be mutated.
}
- } else if (key in traverse.keywords || opts.allKeys && !(key in traverse.skipKeywords)) {
- _traverse(opts, pre, post, sch, jsonPtr + "/" + key, rootSchema, jsonPtr, key, schema);
}
+ } else if (!(goog.PREVENT_MODULE_EXPORTS_SEALING_SYMBOL_ &&
+ Object.prototype.hasOwnProperty.call(
+ exports,
+ goog.PREVENT_MODULE_EXPORTS_SEALING_SYMBOL_))) {
+ Object.seal(exports);
}
- post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
}
+
+ var data = {
+ exports: exports,
+ type: goog.ModuleType.GOOG,
+ moduleId: goog.moduleLoaderState_.moduleName
+ };
+ goog.loadedModules_[moduleName] = data;
+ } else {
+ throw new Error('Invalid module name \"' + moduleName + '\"');
}
- function escapeJsonPtr(str) {
- return str.replace(/~/g, "~0").replace(/\//g, "~1");
- }
+ } finally {
+ goog.moduleLoaderState_ = previousState;
}
-});
+};
-// node_modules/ajv/dist/compile/resolve.js
-var require_resolve = __commonJS({
- "node_modules/ajv/dist/compile/resolve.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0;
- var util_1 = require_util();
- var equal = require_fast_deep_equal();
- var traverse = require_json_schema_traverse();
- var SIMPLE_INLINED = /* @__PURE__ */ new Set([
- "type",
- "format",
- "pattern",
- "maxLength",
- "minLength",
- "maxProperties",
- "minProperties",
- "maxItems",
- "minItems",
- "maximum",
- "minimum",
- "uniqueItems",
- "multipleOf",
- "required",
- "enum",
- "const"
- ]);
- function inlineRef(schema, limit = true) {
- if (typeof schema == "boolean")
- return true;
- if (limit === true)
- return !hasRef(schema);
- if (!limit)
- return false;
- return countKeys(schema) <= limit;
- }
- exports.inlineRef = inlineRef;
- var REF_KEYWORDS = /* @__PURE__ */ new Set([
- "$ref",
- "$recursiveRef",
- "$recursiveAnchor",
- "$dynamicRef",
- "$dynamicAnchor"
- ]);
- function hasRef(schema) {
- for (const key in schema) {
- if (REF_KEYWORDS.has(key))
- return true;
- const sch = schema[key];
- if (Array.isArray(sch) && sch.some(hasRef))
- return true;
- if (typeof sch == "object" && hasRef(sch))
- return true;
- }
- return false;
+
+/**
+ * @private @const
+ */
+goog.loadModuleFromSource_ =
+ /** @type {function(!Object, string):?} */ (function(exports) {
+ // NOTE: we avoid declaring parameters or local variables here to avoid
+ // masking globals or leaking values into the module definition.
+ 'use strict';
+ eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(arguments[1]));
+ return exports;
+ });
+
+
+/**
+ * Normalize a file path by removing redundant ".." and extraneous "." file
+ * path components.
+ * @param {string} path
+ * @return {string}
+ * @private
+ */
+goog.normalizePath_ = function(path) {
+ var components = path.split('/');
+ var i = 0;
+ while (i < components.length) {
+ if (components[i] == '.') {
+ components.splice(i, 1);
+ } else if (
+ i && components[i] == '..' && components[i - 1] &&
+ components[i - 1] != '..') {
+ components.splice(--i, 2);
+ } else {
+ i++;
}
- function countKeys(schema) {
- let count = 0;
- for (const key in schema) {
- if (key === "$ref")
- return Infinity;
- count++;
- if (SIMPLE_INLINED.has(key))
- continue;
- if (typeof schema[key] == "object") {
- (0, util_1.eachItem)(schema[key], (sch) => count += countKeys(sch));
- }
- if (count === Infinity)
- return Infinity;
- }
- return count;
- }
- function getFullPath(resolver, id = "", normalize) {
- if (normalize !== false)
- id = normalizeId(id);
- const p = resolver.parse(id);
- return _getFullPath(resolver, p);
- }
- exports.getFullPath = getFullPath;
- function _getFullPath(resolver, p) {
- const serialized = resolver.serialize(p);
- return serialized.split("#")[0] + "#";
- }
- exports._getFullPath = _getFullPath;
- var TRAILING_SLASH_HASH = /#\/?$/;
- function normalizeId(id) {
- return id ? id.replace(TRAILING_SLASH_HASH, "") : "";
- }
- exports.normalizeId = normalizeId;
- function resolveUrl(resolver, baseId, id) {
- id = normalizeId(id);
- return resolver.resolve(baseId, id);
- }
- exports.resolveUrl = resolveUrl;
- var ANCHOR = /^[a-z_][-a-z0-9._]*$/i;
- function getSchemaRefs(schema, baseId) {
- if (typeof schema == "boolean")
- return {};
- const { schemaId, uriResolver } = this.opts;
- const schId = normalizeId(schema[schemaId] || baseId);
- const baseIds = { "": schId };
- const pathPrefix = getFullPath(uriResolver, schId, false);
- const localRefs = {};
- const schemaRefs = /* @__PURE__ */ new Set();
- traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => {
- if (parentJsonPtr === void 0)
- return;
- const fullPath = pathPrefix + jsonPtr;
- let innerBaseId = baseIds[parentJsonPtr];
- if (typeof sch[schemaId] == "string")
- innerBaseId = addRef.call(this, sch[schemaId]);
- addAnchor.call(this, sch.$anchor);
- addAnchor.call(this, sch.$dynamicAnchor);
- baseIds[jsonPtr] = innerBaseId;
- function addRef(ref) {
- const _resolve = this.opts.uriResolver.resolve;
- ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref);
- if (schemaRefs.has(ref))
- throw ambiguos(ref);
- schemaRefs.add(ref);
- let schOrRef = this.refs[ref];
- if (typeof schOrRef == "string")
- schOrRef = this.refs[schOrRef];
- if (typeof schOrRef == "object") {
- checkAmbiguosRef(sch, schOrRef.schema, ref);
- } else if (ref !== normalizeId(fullPath)) {
- if (ref[0] === "#") {
- checkAmbiguosRef(sch, localRefs[ref], ref);
- localRefs[ref] = sch;
- } else {
- this.refs[ref] = fullPath;
- }
- }
- return ref;
- }
- function addAnchor(anchor) {
- if (typeof anchor == "string") {
- if (!ANCHOR.test(anchor))
- throw new Error(`invalid anchor "${anchor}"`);
- addRef.call(this, `#${anchor}`);
- }
- }
- });
- return localRefs;
- function checkAmbiguosRef(sch1, sch2, ref) {
- if (sch2 !== void 0 && !equal(sch1, sch2))
- throw ambiguos(ref);
- }
- function ambiguos(ref) {
- return new Error(`reference "${ref}" resolves to more than one schema`);
- }
+ }
+ return components.join('/');
+};
+
+
+/**
+ * Provides a hook for loading a file when using Closure's goog.require() API
+ * with goog.modules. In particular this hook is provided to support Node.js.
+ *
+ * @type {(function(string):string)|undefined}
+ */
+goog.global.CLOSURE_LOAD_FILE_SYNC;
+
+
+/**
+ * Loads file by synchronous XHR. Should not be used in production environments.
+ * @param {string} src Source URL.
+ * @return {?string} File contents, or null if load failed.
+ * @private
+ */
+goog.loadFileSync_ = function(src) {
+ if (goog.global.CLOSURE_LOAD_FILE_SYNC) {
+ return goog.global.CLOSURE_LOAD_FILE_SYNC(src);
+ } else {
+ try {
+ /** @type {XMLHttpRequest} */
+ var xhr = new goog.global['XMLHttpRequest']();
+ xhr.open('get', src, false);
+ xhr.send();
+ // NOTE: Successful http: requests have a status of 200, but successful
+ // file: requests may have a status of zero. Any other status, or a
+ // thrown exception (particularly in case of file: requests) indicates
+ // some sort of error, which we treat as a missing or unavailable file.
+ return xhr.status == 0 || xhr.status == 200 ? xhr.responseText : null;
+ } catch (err) {
+ // No need to rethrow or log, since errors should show up on their own.
+ return null;
}
- exports.getSchemaRefs = getSchemaRefs;
}
-});
+};
-// node_modules/ajv/dist/compile/validate/index.js
-var require_validate = __commonJS({
- "node_modules/ajv/dist/compile/validate/index.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0;
- var boolSchema_1 = require_boolSchema();
- var dataType_1 = require_dataType();
- var applicability_1 = require_applicability();
- var dataType_2 = require_dataType();
- var defaults_1 = require_defaults();
- var keyword_1 = require_keyword();
- var subschema_1 = require_subschema();
- var codegen_1 = require_codegen();
- var names_1 = require_names();
- var resolve_1 = require_resolve();
- var util_1 = require_util();
- var errors_1 = require_errors();
- function validateFunctionCode(it) {
- if (isSchemaObj(it)) {
- checkKeywords(it);
- if (schemaCxtHasRules(it)) {
- topSchemaObjCode(it);
- return;
- }
- }
- validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it));
- }
- exports.validateFunctionCode = validateFunctionCode;
- function validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) {
- if (opts.code.es5) {
- gen.func(validateName, (0, codegen_1._)`${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => {
- gen.code((0, codegen_1._)`"use strict"; ${funcSourceUrl(schema, opts)}`);
- destructureValCxtES5(gen, opts);
- gen.code(body);
- });
- } else {
- gen.func(validateName, (0, codegen_1._)`${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body));
- }
- }
- function destructureValCxt(opts) {
- return (0, codegen_1._)`{${names_1.default.instancePath}="", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._)`, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;
- }
- function destructureValCxtES5(gen, opts) {
- gen.if(names_1.default.valCxt, () => {
- gen.var(names_1.default.instancePath, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.instancePath}`);
- gen.var(names_1.default.parentData, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentData}`);
- gen.var(names_1.default.parentDataProperty, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentDataProperty}`);
- gen.var(names_1.default.rootData, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.rootData}`);
- if (opts.dynamicRef)
- gen.var(names_1.default.dynamicAnchors, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`);
- }, () => {
- gen.var(names_1.default.instancePath, (0, codegen_1._)`""`);
- gen.var(names_1.default.parentData, (0, codegen_1._)`undefined`);
- gen.var(names_1.default.parentDataProperty, (0, codegen_1._)`undefined`);
- gen.var(names_1.default.rootData, names_1.default.data);
- if (opts.dynamicRef)
- gen.var(names_1.default.dynamicAnchors, (0, codegen_1._)`{}`);
- });
- }
- function topSchemaObjCode(it) {
- const { schema, opts, gen } = it;
- validateFunction(it, () => {
- if (opts.$comment && schema.$comment)
- commentKeyword(it);
- checkNoDefault(it);
- gen.let(names_1.default.vErrors, null);
- gen.let(names_1.default.errors, 0);
- if (opts.unevaluated)
- resetEvaluated(it);
- typeAndKeywords(it);
- returnResults(it);
- });
- return;
- }
- function resetEvaluated(it) {
- const { gen, validateName } = it;
- it.evaluated = gen.const("evaluated", (0, codegen_1._)`${validateName}.evaluated`);
- gen.if((0, codegen_1._)`${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._)`${it.evaluated}.props`, (0, codegen_1._)`undefined`));
- gen.if((0, codegen_1._)`${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._)`${it.evaluated}.items`, (0, codegen_1._)`undefined`));
- }
- function funcSourceUrl(schema, opts) {
- const schId = typeof schema == "object" && schema[opts.schemaId];
- return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._)`/*# sourceURL=${schId} */` : codegen_1.nil;
- }
- function subschemaCode(it, valid) {
- if (isSchemaObj(it)) {
- checkKeywords(it);
- if (schemaCxtHasRules(it)) {
- subSchemaObjCode(it, valid);
- return;
- }
- }
- (0, boolSchema_1.boolOrEmptySchema)(it, valid);
- }
- function schemaCxtHasRules({ schema, self }) {
- if (typeof schema == "boolean")
- return !schema;
- for (const key in schema)
- if (self.RULES.all[key])
- return true;
- return false;
- }
- function isSchemaObj(it) {
- return typeof it.schema != "boolean";
- }
- function subSchemaObjCode(it, valid) {
- const { schema, gen, opts } = it;
- if (opts.$comment && schema.$comment)
- commentKeyword(it);
- updateContext(it);
- checkAsyncSchema(it);
- const errsCount = gen.const("_errs", names_1.default.errors);
- typeAndKeywords(it, errsCount);
- gen.var(valid, (0, codegen_1._)`${errsCount} === ${names_1.default.errors}`);
- }
- function checkKeywords(it) {
- (0, util_1.checkUnknownRules)(it);
- checkRefsAndKeywords(it);
- }
- function typeAndKeywords(it, errsCount) {
- if (it.opts.jtd)
- return schemaKeywords(it, [], false, errsCount);
- const types = (0, dataType_1.getSchemaTypes)(it.schema);
- const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types);
- schemaKeywords(it, types, !checkedTypes, errsCount);
- }
- function checkRefsAndKeywords(it) {
- const { schema, errSchemaPath, opts, self } = it;
- if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) {
- self.logger.warn(`$ref: keywords ignored in schema at path "${errSchemaPath}"`);
- }
- }
- function checkNoDefault(it) {
- const { schema, opts } = it;
- if (schema.default !== void 0 && opts.useDefaults && opts.strictSchema) {
- (0, util_1.checkStrictMode)(it, "default is ignored in the schema root");
- }
- }
- function updateContext(it) {
- const schId = it.schema[it.opts.schemaId];
- if (schId)
- it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId);
- }
- function checkAsyncSchema(it) {
- if (it.schema.$async && !it.schemaEnv.$async)
- throw new Error("async schema in sync schema");
- }
- function commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) {
- const msg = schema.$comment;
- if (opts.$comment === true) {
- gen.code((0, codegen_1._)`${names_1.default.self}.logger.log(${msg})`);
- } else if (typeof opts.$comment == "function") {
- const schemaPath = (0, codegen_1.str)`${errSchemaPath}/$comment`;
- const rootName = gen.scopeValue("root", { ref: schemaEnv.root });
- gen.code((0, codegen_1._)`${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`);
- }
- }
- function returnResults(it) {
- const { gen, schemaEnv, validateName, ValidationError, opts } = it;
- if (schemaEnv.$async) {
- gen.if((0, codegen_1._)`${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._)`new ${ValidationError}(${names_1.default.vErrors})`));
- } else {
- gen.assign((0, codegen_1._)`${validateName}.errors`, names_1.default.vErrors);
- if (opts.unevaluated)
- assignEvaluated(it);
- gen.return((0, codegen_1._)`${names_1.default.errors} === 0`);
- }
- }
- function assignEvaluated({ gen, evaluated, props, items }) {
- if (props instanceof codegen_1.Name)
- gen.assign((0, codegen_1._)`${evaluated}.props`, props);
- if (items instanceof codegen_1.Name)
- gen.assign((0, codegen_1._)`${evaluated}.items`, items);
- }
- function schemaKeywords(it, types, typeErrors, errsCount) {
- const { gen, schema, data, allErrors, opts, self } = it;
- const { RULES } = self;
- if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) {
- gen.block(() => keywordCode(it, "$ref", RULES.all.$ref.definition));
- return;
- }
- if (!opts.jtd)
- checkStrictTypes(it, types);
- gen.block(() => {
- for (const group of RULES.rules)
- groupKeywords(group);
- groupKeywords(RULES.post);
- });
- function groupKeywords(group) {
- if (!(0, applicability_1.shouldUseGroup)(schema, group))
- return;
- if (group.type) {
- gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers));
- iterateKeywords(it, group);
- if (types.length === 1 && types[0] === group.type && typeErrors) {
- gen.else();
- (0, dataType_2.reportTypeError)(it);
- }
- gen.endIf();
- } else {
- iterateKeywords(it, group);
- }
- if (!allErrors)
- gen.if((0, codegen_1._)`${names_1.default.errors} === ${errsCount || 0}`);
- }
- }
- function iterateKeywords(it, group) {
- const { gen, schema, opts: { useDefaults } } = it;
- if (useDefaults)
- (0, defaults_1.assignDefaults)(it, group.type);
- gen.block(() => {
- for (const rule of group.rules) {
- if ((0, applicability_1.shouldUseRule)(schema, rule)) {
- keywordCode(it, rule.keyword, rule.definition, group.type);
- }
- }
- });
- }
- function checkStrictTypes(it, types) {
- if (it.schemaEnv.meta || !it.opts.strictTypes)
- return;
- checkContextTypes(it, types);
- if (!it.opts.allowUnionTypes)
- checkMultipleTypes(it, types);
- checkKeywordTypes(it, it.dataTypes);
- }
- function checkContextTypes(it, types) {
- if (!types.length)
- return;
- if (!it.dataTypes.length) {
- it.dataTypes = types;
- return;
- }
- types.forEach((t) => {
- if (!includesType(it.dataTypes, t)) {
- strictTypesError(it, `type "${t}" not allowed by context "${it.dataTypes.join(",")}"`);
- }
- });
- narrowSchemaTypes(it, types);
- }
- function checkMultipleTypes(it, ts) {
- if (ts.length > 1 && !(ts.length === 2 && ts.includes("null"))) {
- strictTypesError(it, "use allowUnionTypes to allow union type keyword");
- }
- }
- function checkKeywordTypes(it, ts) {
- const rules = it.self.RULES.all;
- for (const keyword in rules) {
- const rule = rules[keyword];
- if (typeof rule == "object" && (0, applicability_1.shouldUseRule)(it.schema, rule)) {
- const { type } = rule.definition;
- if (type.length && !type.some((t) => hasApplicableType(ts, t))) {
- strictTypesError(it, `missing type "${type.join(",")}" for keyword "${keyword}"`);
- }
- }
- }
- }
- function hasApplicableType(schTs, kwdT) {
- return schTs.includes(kwdT) || kwdT === "number" && schTs.includes("integer");
- }
- function includesType(ts, t) {
- return ts.includes(t) || t === "integer" && ts.includes("number");
- }
- function narrowSchemaTypes(it, withTypes) {
- const ts = [];
- for (const t of it.dataTypes) {
- if (includesType(withTypes, t))
- ts.push(t);
- else if (withTypes.includes("integer") && t === "number")
- ts.push("integer");
- }
- it.dataTypes = ts;
- }
- function strictTypesError(it, msg) {
- const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;
- msg += ` at "${schemaPath}" (strictTypes)`;
- (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes);
- }
- var KeywordCxt = class {
- constructor(it, def, keyword) {
- (0, keyword_1.validateKeywordUsage)(it, def, keyword);
- this.gen = it.gen;
- this.allErrors = it.allErrors;
- this.keyword = keyword;
- this.data = it.data;
- this.schema = it.schema[keyword];
- this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;
- this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data);
- this.schemaType = def.schemaType;
- this.parentSchema = it.schema;
- this.params = {};
- this.it = it;
- this.def = def;
- if (this.$data) {
- this.schemaCode = it.gen.const("vSchema", getData(this.$data, it));
- } else {
- this.schemaCode = this.schemaValue;
- if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) {
- throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);
- }
- }
- if ("code" in def ? def.trackErrors : def.errors !== false) {
- this.errsCount = it.gen.const("_errs", names_1.default.errors);
- }
- }
- result(condition, successAction, failAction) {
- this.failResult((0, codegen_1.not)(condition), successAction, failAction);
- }
- failResult(condition, successAction, failAction) {
- this.gen.if(condition);
- if (failAction)
- failAction();
- else
- this.error();
- if (successAction) {
- this.gen.else();
- successAction();
- if (this.allErrors)
- this.gen.endIf();
- } else {
- if (this.allErrors)
- this.gen.endIf();
- else
- this.gen.else();
- }
- }
- pass(condition, failAction) {
- this.failResult((0, codegen_1.not)(condition), void 0, failAction);
- }
- fail(condition) {
- if (condition === void 0) {
- this.error();
- if (!this.allErrors)
- this.gen.if(false);
- return;
- }
- this.gen.if(condition);
- this.error();
- if (this.allErrors)
- this.gen.endIf();
- else
- this.gen.else();
- }
- fail$data(condition) {
- if (!this.$data)
- return this.fail(condition);
- const { schemaCode } = this;
- this.fail((0, codegen_1._)`${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`);
- }
- error(append, errorParams, errorPaths) {
- if (errorParams) {
- this.setParams(errorParams);
- this._error(append, errorPaths);
- this.setParams({});
- return;
- }
- this._error(append, errorPaths);
- }
- _error(append, errorPaths) {
- ;
- (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths);
- }
- $dataError() {
- (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError);
- }
- reset() {
- if (this.errsCount === void 0)
- throw new Error('add "trackErrors" to keyword definition');
- (0, errors_1.resetErrorsCount)(this.gen, this.errsCount);
- }
- ok(cond) {
- if (!this.allErrors)
- this.gen.if(cond);
- }
- setParams(obj, assign) {
- if (assign)
- Object.assign(this.params, obj);
- else
- this.params = obj;
- }
- block$data(valid, codeBlock, $dataValid = codegen_1.nil) {
- this.gen.block(() => {
- this.check$data(valid, $dataValid);
- codeBlock();
- });
- }
- check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {
- if (!this.$data)
- return;
- const { gen, schemaCode, schemaType, def } = this;
- gen.if((0, codegen_1.or)((0, codegen_1._)`${schemaCode} === undefined`, $dataValid));
- if (valid !== codegen_1.nil)
- gen.assign(valid, true);
- if (schemaType.length || def.validateSchema) {
- gen.elseIf(this.invalid$data());
- this.$dataError();
- if (valid !== codegen_1.nil)
- gen.assign(valid, false);
- }
- gen.else();
- }
- invalid$data() {
- const { gen, schemaCode, schemaType, def, it } = this;
- return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema());
- function wrong$DataType() {
- if (schemaType.length) {
- if (!(schemaCode instanceof codegen_1.Name))
- throw new Error("ajv implementation error");
- const st = Array.isArray(schemaType) ? schemaType : [schemaType];
- return (0, codegen_1._)`${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`;
- }
- return codegen_1.nil;
- }
- function invalid$DataSchema() {
- if (def.validateSchema) {
- const validateSchemaRef = gen.scopeValue("validate$data", { ref: def.validateSchema });
- return (0, codegen_1._)`!${validateSchemaRef}(${schemaCode})`;
- }
- return codegen_1.nil;
- }
- }
- subschema(appl, valid) {
- const subschema = (0, subschema_1.getSubschema)(this.it, appl);
- (0, subschema_1.extendSubschemaData)(subschema, this.it, appl);
- (0, subschema_1.extendSubschemaMode)(subschema, appl);
- const nextContext = { ...this.it, ...subschema, items: void 0, props: void 0 };
- subschemaCode(nextContext, valid);
- return nextContext;
- }
- mergeEvaluated(schemaCxt, toName) {
- const { it, gen } = this;
- if (!it.opts.unevaluated)
- return;
- if (it.props !== true && schemaCxt.props !== void 0) {
- it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);
- }
- if (it.items !== true && schemaCxt.items !== void 0) {
- it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);
- }
- }
- mergeValidEvaluated(schemaCxt, valid) {
- const { it, gen } = this;
- if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {
- gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));
- return true;
- }
- }
- };
- exports.KeywordCxt = KeywordCxt;
- function keywordCode(it, keyword, def, ruleType) {
- const cxt = new KeywordCxt(it, def, keyword);
- if ("code" in def) {
- def.code(cxt, ruleType);
- } else if (cxt.$data && def.validate) {
- (0, keyword_1.funcKeywordCode)(cxt, def);
- } else if ("macro" in def) {
- (0, keyword_1.macroKeywordCode)(cxt, def);
- } else if (def.compile || def.validate) {
- (0, keyword_1.funcKeywordCode)(cxt, def);
- }
- }
- var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/;
- var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
- function getData($data, { dataLevel, dataNames, dataPathArr }) {
- let jsonPointer;
- let data;
- if ($data === "")
- return names_1.default.rootData;
- if ($data[0] === "/") {
- if (!JSON_POINTER.test($data))
- throw new Error(`Invalid JSON-pointer: ${$data}`);
- jsonPointer = $data;
- data = names_1.default.rootData;
- } else {
- const matches = RELATIVE_JSON_POINTER.exec($data);
- if (!matches)
- throw new Error(`Invalid JSON-pointer: ${$data}`);
- const up = +matches[1];
- jsonPointer = matches[2];
- if (jsonPointer === "#") {
- if (up >= dataLevel)
- throw new Error(errorMsg("property/index", up));
- return dataPathArr[dataLevel - up];
- }
- if (up > dataLevel)
- throw new Error(errorMsg("data", up));
- data = dataNames[dataLevel - up];
- if (!jsonPointer)
- return data;
- }
- let expr = data;
- const segments = jsonPointer.split("/");
- for (const segment of segments) {
- if (segment) {
- data = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`;
- expr = (0, codegen_1._)`${expr} && ${data}`;
- }
- }
- return expr;
- function errorMsg(pointerType, up) {
- return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;
- }
- }
- exports.getData = getData;
+//==============================================================================
+// Language Enhancements
+//==============================================================================
+
+
+/**
+ * This is a "fixed" version of the typeof operator. It differs from the typeof
+ * operator in such a way that null returns 'null' and arrays return 'array'.
+ * @param {?} value The value to get the type of.
+ * @return {string} The name of the type.
+ */
+goog.typeOf = function(value) {
+ var s = typeof value;
+
+ if (s != 'object') {
+ return s;
}
-});
-// node_modules/ajv/dist/runtime/validation_error.js
-var require_validation_error = __commonJS({
- "node_modules/ajv/dist/runtime/validation_error.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var ValidationError = class extends Error {
- constructor(errors) {
- super("validation failed");
- this.errors = errors;
- this.ajv = this.validation = true;
- }
- };
- exports.default = ValidationError;
+ if (!value) {
+ return 'null';
}
-});
-// node_modules/ajv/dist/compile/ref_error.js
-var require_ref_error = __commonJS({
- "node_modules/ajv/dist/compile/ref_error.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var resolve_1 = require_resolve();
- var MissingRefError = class extends Error {
- constructor(resolver, baseId, ref, msg) {
- super(msg || `can't resolve reference ${ref} from id ${baseId}`);
- this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref);
- this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef));
- }
- };
- exports.default = MissingRefError;
+ if (Array.isArray(value)) {
+ return 'array';
}
-});
+ return s;
+};
-// node_modules/ajv/dist/compile/index.js
-var require_compile = __commonJS({
- "node_modules/ajv/dist/compile/index.js"(exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0;
- var codegen_1 = require_codegen();
- var validation_error_1 = require_validation_error();
- var names_1 = require_names();
- var resolve_1 = require_resolve();
- var util_1 = require_util();
- var validate_1 = require_validate();
- var SchemaEnv = class {
- constructor(env) {
- var _a3;
- this.refs = {};
- this.dynamicAnchors = {};
- let schema;
- if (typeof env.schema == "object")
- schema = env.schema;
- this.schema = env.schema;
- this.schemaId = env.schemaId;
- this.root = env.root || this;
- this.baseId = (_a3 = env.baseId) !== null && _a3 !== void 0 ? _a3 : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || "$id"]);
- this.schemaPath = env.schemaPath;
- this.localRefs = env.localRefs;
- this.meta = env.meta;
- this.$async = schema === null || schema === void 0 ? void 0 : schema.$async;
- this.refs = {};
- }
- };
- exports.SchemaEnv = SchemaEnv;
- function compileSchema(sch) {
- const _sch = getCompilingSchema.call(this, sch);
- if (_sch)
- return _sch;
- const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId);
- const { es5, lines } = this.opts.code;
- const { ownProperties } = this.opts;
- const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties });
- let _ValidationError;
- if (sch.$async) {
- _ValidationError = gen.scopeValue("Error", {
- ref: validation_error_1.default,
- code: (0, codegen_1._)`require("ajv/dist/runtime/validation_error").default`
- });
- }
- const validateName = gen.scopeName("validate");
- sch.validateName = validateName;
- const schemaCxt = {
- gen,
- allErrors: this.opts.allErrors,
- data: names_1.default.data,
- parentData: names_1.default.parentData,
- parentDataProperty: names_1.default.parentDataProperty,
- dataNames: [names_1.default.data],
- dataPathArr: [codegen_1.nil],
- // TODO can its length be used as dataLevel if nil is removed?
- dataLevel: 0,
- dataTypes: [],
- definedProperties: /* @__PURE__ */ new Set(),
- topSchemaRef: gen.scopeValue("schema", this.opts.code.source === true ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) } : { ref: sch.schema }),
- validateName,
- ValidationError: _ValidationError,
- schema: sch.schema,
- schemaEnv: sch,
- rootId,
- baseId: sch.baseId || rootId,
- schemaPath: codegen_1.nil,
- errSchemaPath: sch.schemaPath || (this.opts.jtd ? "" : "#"),
- errorPath: (0, codegen_1._)`""`,
- opts: this.opts,
- self: this
- };
- let sourceCode;
- try {
- this._compilations.add(sch);
- (0, validate_1.validateFunctionCode)(schemaCxt);
- gen.optimize(this.opts.code.optimize);
- const validateCode = gen.toString();
- sourceCode = `${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`;
- if (this.opts.code.process)
- sourceCode = this.opts.code.process(sourceCode, sch);
- const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode);
- const validate = makeValidate(this, this.scope.get());
- this.scope.value(validateName, { ref: validate });
- validate.errors = null;
- validate.schema = sch.schema;
- validate.schemaEnv = sch;
- if (sch.$async)
- validate.$async = true;
- if (this.opts.code.source === true) {
- validate.source = { validateName, validateCode, scopeValues: gen._values };
- }
- if (this.opts.unevaluated) {
- const { props, items } = schemaCxt;
- validate.evaluated = {
- props: props instanceof codegen_1.Name ? void 0 : props,
- items: items instanceof codegen_1.Name ? void 0 : items,
- dynamicProps: props instanceof codegen_1.Name,
- dynamicItems: items instanceof codegen_1.Name
- };
- if (validate.source)
- validate.source.evaluated = (0, codegen_1.stringify)(validate.evaluated);
- }
- sch.validate = validate;
- return sch;
- } catch (e) {
- delete sch.validate;
- delete sch.validateName;
- if (sourceCode)
- this.logger.error("Error compiling schema, function code:", sourceCode);
- throw e;
- } finally {
- this._compilations.delete(sch);
- }
+
+/**
+ * Returns true if the object looks like an array. To qualify as array like
+ * the value needs to be either a NodeList or an object with a Number length
+ * property. Note that for this function neither strings nor functions are
+ * considered "array-like".
+ *
+ * @param {?} val Variable to test.
+ * @return {boolean} Whether variable is an array.
+ */
+goog.isArrayLike = function(val) {
+ var type = goog.typeOf(val);
+ // We do not use goog.isObject here in order to exclude function values.
+ return type == 'array' || type == 'object' && typeof val.length == 'number';
+};
+
+
+/**
+ * Returns true if the object looks like a Date. To qualify as Date-like the
+ * value needs to be an object and have a getFullYear() function.
+ * @param {?} val Variable to test.
+ * @return {boolean} Whether variable is a like a Date.
+ */
+goog.isDateLike = function(val) {
+ return goog.isObject(val) && typeof val.getFullYear == 'function';
+};
+
+
+/**
+ * Returns true if the specified value is an object. This includes arrays and
+ * functions.
+ * @param {?} val Variable to test.
+ * @return {boolean} Whether variable is an object.
+ */
+goog.isObject = function(val) {
+ var type = typeof val;
+ return type == 'object' && val != null || type == 'function';
+ // return Object(val) === val also works, but is slower, especially if val is
+ // not an object.
+};
+
+
+/**
+ * Gets a unique ID for an object. This mutates the object so that further calls
+ * with the same object as a parameter returns the same value. The unique ID is
+ * guaranteed to be unique across the current session amongst objects that are
+ * passed into `getUid`. There is no guarantee that the ID is unique or
+ * consistent across sessions. It is unsafe to generate unique ID for function
+ * prototypes.
+ *
+ * @param {Object} obj The object to get the unique ID for.
+ * @return {number} The unique ID for the object.
+ */
+goog.getUid = function(obj) {
+ // TODO: Make the type stricter, do not accept null.
+ return Object.prototype.hasOwnProperty.call(obj, goog.UID_PROPERTY_) &&
+ obj[goog.UID_PROPERTY_] ||
+ (obj[goog.UID_PROPERTY_] = ++goog.uidCounter_);
+};
+
+
+/**
+ * Whether the given object is already assigned a unique ID.
+ *
+ * This does not modify the object.
+ *
+ * @param {!Object} obj The object to check.
+ * @return {boolean} Whether there is an assigned unique id for the object.
+ */
+goog.hasUid = function(obj) {
+ return !!obj[goog.UID_PROPERTY_];
+};
+
+
+/**
+ * Removes the unique ID from an object. This is useful if the object was
+ * previously mutated using `goog.getUid` in which case the mutation is
+ * undone.
+ * @param {Object} obj The object to remove the unique ID field from.
+ */
+goog.removeUid = function(obj) {
+ // TODO: Make the type stricter, do not accept null.
+
+ // In IE, DOM nodes are not instances of Object and throw an exception if we
+ // try to delete. Instead we try to use removeAttribute.
+ if (obj !== null && 'removeAttribute' in obj) {
+ obj.removeAttribute(goog.UID_PROPERTY_);
+ }
+
+ try {
+ delete obj[goog.UID_PROPERTY_];
+ } catch (ex) {
+ }
+};
+
+
+/**
+ * Name for unique ID property. Initialized in a way to help avoid collisions
+ * with other closure JavaScript on the same page.
+ * @type {string}
+ * @private
+ */
+goog.UID_PROPERTY_ = 'closure_uid_' + ((Math.random() * 1e9) >>> 0);
+
+
+/**
+ * Counter for UID.
+ * @type {number}
+ * @private
+ */
+goog.uidCounter_ = 0;
+
+
+/**
+ * Clones a value. The input may be an Object, Array, or basic type. Objects and
+ * arrays will be cloned recursively.
+ *
+ * WARNINGS:
+ * goog.cloneObject does not detect reference loops. Objects that
+ * refer to themselves will cause infinite recursion.
+ *
+ * goog.cloneObject is unaware of unique identifiers, and copies
+ * UIDs created by getUid into cloned results.
+ *
+ * @param {*} obj The value to clone.
+ * @return {*} A clone of the input value.
+ * @deprecated goog.cloneObject is unsafe. Prefer the goog.object methods.
+ */
+goog.cloneObject = function(obj) {
+ var type = goog.typeOf(obj);
+ if (type == 'object' || type == 'array') {
+ if (typeof obj.clone === 'function') {
+ return obj.clone();
}
- exports.compileSchema = compileSchema;
- function resolveRef2(root, baseId, ref) {
- var _a3;
- ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref);
- const schOrFunc = root.refs[ref];
- if (schOrFunc)
- return schOrFunc;
- let _sch = resolve.call(this, root, ref);
- if (_sch === void 0) {
- const schema = (_a3 = root.localRefs) === null || _a3 === void 0 ? void 0 : _a3[ref];
- const { schemaId } = this.opts;
- if (schema)
- _sch = new SchemaEnv({ schema, schemaId, root, baseId });
- }
- if (_sch === void 0)
- return;
- return root.refs[ref] = inlineOrCompile.call(this, _sch);
- }
- exports.resolveRef = resolveRef2;
- function inlineOrCompile(sch) {
- if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs))
- return sch.schema;
- return sch.validate ? sch : compileSchema.call(this, sch);
- }
- function getCompilingSchema(schEnv) {
- for (const sch of this._compilations) {
- if (sameSchemaEnv(sch, schEnv))
- return sch;
- }
+ if (typeof Map !== 'undefined' && obj instanceof Map) {
+ return new Map(obj);
+ } else if (typeof Set !== 'undefined' && obj instanceof Set) {
+ return new Set(obj);
}
- exports.getCompilingSchema = getCompilingSchema;
- function sameSchemaEnv(s1, s2) {
- return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;
- }
- function resolve(root, ref) {
- let sch;
- while (typeof (sch = this.refs[ref]) == "string")
- ref = sch;
- return sch || this.schemas[ref] || resolveSchema.call(this, root, ref);
- }
- function resolveSchema(root, ref) {
- const p = this.opts.uriResolver.parse(ref);
- const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p);
- let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, void 0);
- if (Object.keys(root.schema).length > 0 && refPath === baseId) {
- return getJsonPointer.call(this, p, root);
- }
- const id = (0, resolve_1.normalizeId)(refPath);
- const schOrRef = this.refs[id] || this.schemas[id];
- if (typeof schOrRef == "string") {
- const sch = resolveSchema.call(this, root, schOrRef);
- if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== "object")
- return;
- return getJsonPointer.call(this, p, sch);
- }
- if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== "object")
- return;
- if (!schOrRef.validate)
- compileSchema.call(this, schOrRef);
- if (id === (0, resolve_1.normalizeId)(ref)) {
- const { schema } = schOrRef;
- const { schemaId } = this.opts;
- const schId = schema[schemaId];
- if (schId)
- baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);
- return new SchemaEnv({ schema, schemaId, root, baseId });
- }
- return getJsonPointer.call(this, p, schOrRef);
- }
- exports.resolveSchema = resolveSchema;
- var PREVENT_SCOPE_CHANGE = /* @__PURE__ */ new Set([
- "properties",
- "patternProperties",
- "enum",
- "dependencies",
- "definitions"
- ]);
- function getJsonPointer(parsedRef, { baseId, schema, root }) {
- var _a3;
- if (((_a3 = parsedRef.fragment) === null || _a3 === void 0 ? void 0 : _a3[0]) !== "/")
- return;
- for (const part of parsedRef.fragment.slice(1).split("/")) {
- if (typeof schema === "boolean")
- return;
- const partSchema = schema[(0, util_1.unescapeFragment)(part)];
- if (partSchema === void 0)
- return;
- schema = partSchema;
- const schId = typeof schema === "object" && schema[this.opts.schemaId];
- if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {
- baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);
- }
- }
- let env;
- if (typeof schema != "boolean" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) {
- const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref);
- env = resolveSchema.call(this, root, $ref);
- }
- const { schemaId } = this.opts;
- env = env || new SchemaEnv({ schema, schemaId, root, baseId });
- if (env.schema !== env.root.schema)
- return env;
- return void 0;
+ var clone = type == 'array' ? [] : {};
+ for (var key in obj) {
+ clone[key] = goog.cloneObject(obj[key]);
}
+ return clone;
}
-});
-// node_modules/ajv/dist/refs/data.json
-var require_data = __commonJS({
- "node_modules/ajv/dist/refs/data.json"(exports, module) {
- module.exports = {
- $id: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",
- description: "Meta-schema for $data reference (JSON AnySchema extension proposal)",
- type: "object",
- required: ["$data"],
- properties: {
- $data: {
- type: "string",
- anyOf: [{ format: "relative-json-pointer" }, { format: "json-pointer" }]
- }
- },
- additionalProperties: false
+ return obj;
+};
+
+
+/**
+ * A native implementation of goog.bind.
+ * @param {?function(this:T, ...)} fn A function to partially apply.
+ * @param {T} selfObj Specifies the object which this should point to when the
+ * function is run.
+ * @param {...*} var_args Additional arguments that are partially applied to the
+ * function.
+ * @return {!Function} A partially-applied form of the function goog.bind() was
+ * invoked as a method of.
+ * @template T
+ * @private
+ */
+goog.bindNative_ = function(fn, selfObj, var_args) {
+ return /** @type {!Function} */ (fn.call.apply(fn.bind, arguments));
+};
+
+
+/**
+ * A pure-JS implementation of goog.bind.
+ * @param {?function(this:T, ...)} fn A function to partially apply.
+ * @param {T} selfObj Specifies the object which this should point to when the
+ * function is run.
+ * @param {...*} var_args Additional arguments that are partially applied to the
+ * function.
+ * @return {!Function} A partially-applied form of the function goog.bind() was
+ * invoked as a method of.
+ * @template T
+ * @private
+ */
+goog.bindJs_ = function(fn, selfObj, var_args) {
+ if (!fn) {
+ throw new Error();
+ }
+
+ if (arguments.length > 2) {
+ var boundArgs = Array.prototype.slice.call(arguments, 2);
+ return function() {
+ // Prepend the bound arguments to the current arguments.
+ var newArgs = Array.prototype.slice.call(arguments);
+ Array.prototype.unshift.apply(newArgs, boundArgs);
+ return fn.apply(selfObj, newArgs);
+ };
+
+ } else {
+ return function() {
+ return fn.apply(selfObj, arguments);
};
}
-});
+};
-// node_modules/fast-uri/lib/utils.js
-var require_utils = __commonJS({
- "node_modules/fast-uri/lib/utils.js"(exports, module) {
- "use strict";
- var isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu);
- var isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);
- var isHexPair = RegExp.prototype.test.bind(/^[\da-f]{2}$/iu);
- var isUnreserved = RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu);
- var isPathCharacter = RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);
- function stringArrayToHexStripped(input) {
- let acc = "";
- let code = 0;
- let i = 0;
- for (i = 0; i < input.length; i++) {
- code = input[i].charCodeAt(0);
- if (code === 48) {
- continue;
- }
- if (!(code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102)) {
- return "";
- }
- acc += input[i];
- break;
- }
- for (i += 1; i < input.length; i++) {
- code = input[i].charCodeAt(0);
- if (!(code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102)) {
- return "";
- }
- acc += input[i];
- }
- return acc;
- }
- var nonSimpleDomain = RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);
- function consumeIsZone(buffer) {
- buffer.length = 0;
- return true;
+
+/**
+ * Partially applies this function to a particular 'this object' and zero or
+ * more arguments. The result is a new function with some arguments of the first
+ * function pre-filled and the value of this 'pre-specified'.
+ *
+ * Remaining arguments specified at call-time are appended to the pre-specified
+ * ones.
+ *
+ * Also see: {@link #partial}.
+ *
+ * Usage:
+ * var barMethBound = goog.bind(myFunction, myObj, 'arg1', 'arg2');
+ * barMethBound('arg3', 'arg4');
+ *
+ * @param {?function(this:T, ...)} fn A function to partially apply.
+ * @param {T} selfObj Specifies the object which this should point to when the
+ * function is run.
+ * @param {...*} var_args Additional arguments that are partially applied to the
+ * function.
+ * @return {!Function} A partially-applied form of the function goog.bind() was
+ * invoked as a method of.
+ * @template T
+ * @suppress {deprecated} See above.
+ * @deprecated use `=> {}` or Function.prototype.bind instead.
+ */
+goog.bind = function(fn, selfObj, var_args) {
+ // TODO: narrow the type signature.
+ if ((goog.TRUSTED_SITE && goog.FEATURESET_YEAR > 2012) ||
+ (Function.prototype.bind &&
+ // NOTE(nicksantos): Somebody pulled base.js into the default Chrome
+ // extension environment. This means that for Chrome extensions, they get
+ // the implementation of Function.prototype.bind that calls goog.bind
+ // instead of the native one. Even worse, we don't want to introduce a
+ // circular dependency between goog.bind and Function.prototype.bind, so
+ // we have to hack this to make sure it works correctly.
+ Function.prototype.bind.toString().indexOf('native code') != -1)) {
+ goog.bind = goog.bindNative_;
+ } else {
+ goog.bind = goog.bindJs_;
+ }
+ return goog.bind.apply(null, arguments);
+};
+
+
+/**
+ * Like goog.bind(), except that a 'this object' is not required. Useful when
+ * the target function is already bound.
+ *
+ * Usage:
+ * var g = goog.partial(f, arg1, arg2);
+ * g(arg3, arg4);
+ *
+ * @param {Function} fn A function to partially apply.
+ * @param {...*} var_args Additional arguments that are partially applied to fn.
+ * @return {!Function} A partially-applied form of the function goog.partial()
+ * was invoked as a method of.
+ */
+goog.partial = function(fn, var_args) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ return function() {
+ // Clone the array (with slice()) and append additional arguments
+ // to the existing arguments.
+ var newArgs = args.slice();
+ newArgs.push.apply(newArgs, arguments);
+ return fn.apply(/** @type {?} */ (this), newArgs);
+ };
+};
+
+
+/**
+ * @return {number} An integer value representing the number of milliseconds
+ * between midnight, January 1, 1970 and the current time.
+ * @deprecated Use Date.now
+ */
+goog.now = function() {
+ return Date.now();
+};
+
+
+/**
+ * Evals JavaScript in the global scope.
+ *
+ * Throws an exception if eval is not defined.
+ * @param {string|!TrustedScript} script JavaScript string.
+ */
+goog.globalEval = function(script) {
+ (0, eval)(script);
+};
+
+
+/**
+ * Optional map of CSS class names to obfuscated names used with
+ * goog.getCssName().
+ * @private {!Object|undefined}
+ * @see goog.setCssNameMapping
+ */
+goog.cssNameMapping_;
+
+
+/**
+ * Optional obfuscation style for CSS class names. Should be set to either
+ * 'BY_WHOLE' or 'BY_PART' if defined.
+ * @type {string|undefined}
+ * @private
+ * @see goog.setCssNameMapping
+ */
+goog.cssNameMappingStyle_;
+
+
+
+/**
+ * A hook for modifying the default behavior goog.getCssName. The function
+ * if present, will receive the standard output of the goog.getCssName as
+ * its input.
+ *
+ * @type {(function(string):string)|undefined}
+ */
+goog.global.CLOSURE_CSS_NAME_MAP_FN;
+
+
+/**
+ * Handles strings that are intended to be used as CSS class names.
+ *
+ * This function works in tandem with @see goog.setCssNameMapping.
+ *
+ * Without any mapping set, the arguments are simple joined with a hyphen and
+ * passed through unaltered.
+ *
+ * When there is a mapping, there are two possible styles in which these
+ * mappings are used. In the BY_PART style, each part (i.e. in between hyphens)
+ * of the passed in css name is rewritten according to the map. In the BY_WHOLE
+ * style, the full css name is looked up in the map directly. If a rewrite is
+ * not specified by the map, the compiler will output a warning.
+ *
+ * When the mapping is passed to the compiler, it will replace calls to
+ * goog.getCssName with the strings from the mapping, e.g.
+ * var x = goog.getCssName('foo');
+ * var y = goog.getCssName(this.baseClass, 'active');
+ * becomes:
+ * var x = 'foo';
+ * var y = this.baseClass + '-active';
+ *
+ * If one argument is passed it will be processed, if two are passed only the
+ * modifier will be processed, as it is assumed the first argument was generated
+ * as a result of calling goog.getCssName.
+ *
+ * @param {string} className The class name.
+ * @param {string=} opt_modifier A modifier to be appended to the class name.
+ * @return {string} The class name or the concatenation of the class name and
+ * the modifier.
+ */
+goog.getCssName = function(className, opt_modifier) {
+ // String() is used for compatibility with compiled soy where the passed
+ // className can be non-string objects.
+ if (String(className).charAt(0) == '.') {
+ throw new Error(
+ 'className passed in goog.getCssName must not start with ".".' +
+ ' You passed: ' + className);
+ }
+
+ var getMapping = function(cssName) {
+ return goog.cssNameMapping_[cssName] || cssName;
+ };
+
+ var renameByParts = function(cssName) {
+ // Remap all the parts individually.
+ var parts = cssName.split('-');
+ var mapped = [];
+ for (var i = 0; i < parts.length; i++) {
+ mapped.push(getMapping(parts[i]));
}
- function consumeHextets(buffer, address, output) {
- if (buffer.length) {
- const hex3 = stringArrayToHexStripped(buffer);
- if (hex3 !== "") {
- address.push(hex3);
- } else {
- output.error = true;
- return false;
- }
- buffer.length = 0;
- }
- return true;
- }
- function getIPV6(input) {
- let tokenCount = 0;
- const output = { error: false, address: "", zone: "" };
- const address = [];
- const buffer = [];
- let endipv6Encountered = false;
- let endIpv6 = false;
- let consume = consumeHextets;
- for (let i = 0; i < input.length; i++) {
- const cursor = input[i];
- if (cursor === "[" || cursor === "]") {
- continue;
- }
- if (cursor === ":") {
- if (endipv6Encountered === true) {
- endIpv6 = true;
- }
- if (!consume(buffer, address, output)) {
- break;
- }
- if (++tokenCount > 7) {
- output.error = true;
- break;
- }
- if (i > 0 && input[i - 1] === ":") {
- endipv6Encountered = true;
- }
- address.push(":");
- continue;
- } else if (cursor === "%") {
- if (!consume(buffer, address, output)) {
- break;
- }
- consume = consumeIsZone;
- } else {
- buffer.push(cursor);
- continue;
- }
- }
- if (buffer.length) {
- if (consume === consumeIsZone) {
- output.zone = buffer.join("");
- } else if (endIpv6) {
- address.push(buffer.join(""));
- } else {
- address.push(stringArrayToHexStripped(buffer));
- }
- }
- output.address = address.join("");
- return output;
- }
- function normalizeIPv6(host) {
- if (findToken(host, ":") < 2) {
- return { host, isIPV6: false };
- }
- const ipv63 = getIPV6(host);
- if (!ipv63.error) {
- let newHost = ipv63.address;
- let escapedHost = ipv63.address;
- if (ipv63.zone) {
- newHost += "%" + ipv63.zone;
- escapedHost += "%25" + ipv63.zone;
- }
- return { host: newHost, isIPV6: true, escapedHost };
- } else {
- return { host, isIPV6: false };
- }
+ return mapped.join('-');
+ };
+
+ var rename;
+ if (goog.cssNameMapping_) {
+ rename =
+ goog.cssNameMappingStyle_ == 'BY_WHOLE' ? getMapping : renameByParts;
+ } else {
+ rename = function(a) {
+ return a;
+ };
+ }
+
+ var result =
+ opt_modifier ? className + '-' + rename(opt_modifier) : rename(className);
+
+ // The special CLOSURE_CSS_NAME_MAP_FN allows users to specify further
+ // processing of the class name.
+ if (goog.global.CLOSURE_CSS_NAME_MAP_FN) {
+ return goog.global.CLOSURE_CSS_NAME_MAP_FN(result);
+ }
+
+ return result;
+};
+
+
+/**
+ * Sets the map to check when returning a value from goog.getCssName(). Example:
+ *
+ * goog.setCssNameMapping({
+ * "goog": "a",
+ * "disabled": "b",
+ * });
+ *
+ * var x = goog.getCssName('goog');
+ * // The following evaluates to: "a a-b".
+ * goog.getCssName('goog') + ' ' + goog.getCssName(x, 'disabled')
+ *
+ * When declared as a map of string literals to string literals, the JSCompiler
+ * will replace all calls to goog.getCssName() using the supplied map if the
+ * --process_closure_primitives flag is set.
+ *
+ * @param {!Object} mapping A map of strings to strings where keys are possible
+ * arguments to goog.getCssName() and values are the corresponding values
+ * that should be returned.
+ * @param {string=} opt_style The style of css name mapping. There are two valid
+ * options: 'BY_PART', and 'BY_WHOLE'.
+ * @see goog.getCssName for a description.
+ */
+goog.setCssNameMapping = function(mapping, opt_style) {
+ goog.cssNameMapping_ = mapping;
+ goog.cssNameMappingStyle_ = opt_style;
+};
+
+
+/**
+ * To use CSS renaming in compiled mode, one of the input files should have a
+ * call to goog.setCssNameMapping() with an object literal that the JSCompiler
+ * can extract and use to replace all calls to goog.getCssName(). In uncompiled
+ * mode, JavaScript code should be loaded before this base.js file that declares
+ * a global variable, CLOSURE_CSS_NAME_MAPPING, which is used below. This is
+ * to ensure that the mapping is loaded before any calls to goog.getCssName()
+ * are made in uncompiled mode.
+ *
+ * A hook for overriding the CSS name mapping.
+ * @type {!Object|undefined}
+ */
+goog.global.CLOSURE_CSS_NAME_MAPPING;
+
+
+if (!COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING) {
+ // This does not call goog.setCssNameMapping() because the JSCompiler
+ // requires that goog.setCssNameMapping() be called with an object literal.
+ goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING;
+}
+
+/**
+ * Options bag type for `goog.getMsg()` third argument.
+ *
+ * It is important to note that these options need to be known at compile time,
+ * so they must always be provided to `goog.getMsg()` as an actual object
+ * literal in the function call. Otherwise, closure-compiler will report an
+ * error.
+ * @record
+ */
+goog.GetMsgOptions = function() {};
+
+/**
+ * If `true`, escape '<' in the message string to '<'.
+ *
+ * Used by Closure Templates where the generated code size and performance is
+ * critical which is why {@link goog.html.SafeHtmlFormatter} is not used.
+ * The value must be literal `true` or `false`.
+ * @type {boolean|undefined}
+ */
+goog.GetMsgOptions.prototype.html;
+
+/**
+ * If `true`, unescape common html entities: >, <, ', " and
+ * &.
+ *
+ * Used for messages not in HTML context, such as with the `textContent`
+ * property.
+ * The value must be literal `true` or `false`.
+ * @type {boolean|undefined}
+ */
+goog.GetMsgOptions.prototype.unescapeHtmlEntities;
+
+/**
+ * Associates placeholder names with strings showing how their values are
+ * obtained.
+ *
+ * This field is intended for use in automatically generated JS code.
+ * Human-written code should use meaningful placeholder names instead.
+ *
+ * closure-compiler uses this as the contents of the `` tag in the
+ * XMB file it generates or defaults to `-` for historical reasons.
+ *
+ * Must be an object literal.
+ * Ignored at runtime.
+ * Keys are placeholder names.
+ * Values are string literals indicating how the value is obtained.
+ * Typically this is a snippet of source code.
+ * @type {!Object|undefined}
+ */
+goog.GetMsgOptions.prototype.original_code;
+
+/**
+ * Associates placeholder names with example values.
+ *
+ * closure-compiler uses this as the contents of the `` tag in the
+ * XMB file it generates or defaults to `-` for historical reasons.
+ *
+ * Must be an object literal.
+ * Ignored at runtime.
+ * Keys are placeholder names.
+ * Values are string literals containing example placeholder values.
+ * (e.g. "George McFly" for a name placeholder)
+ * @type {!Object|undefined}
+ */
+goog.GetMsgOptions.prototype.example;
+
+/**
+ * A hook for providing a custom message retrieval function to
+ * augment `goog.getMsg`.
+ *
+ * If an object is assigned to `CLOSURE_P16N_GET_MSG` in the global scope
+ * *before* base.js is loaded, `goog.getMsg` will use the function provided
+ * under the key 'goog.getMsg' on this object instead of its default
+ * implementation. This allows a "p16n library" to take over the message
+ * localization process.
+ *
+ * The provided object is expected to have the following structure:
+ *
+ * {
+ * 'goog.getMsg': function(string, !Object=,
+ * !goog.GetMsgOptions=): string, 'declareIcuTemplate': function(string, string,
+ * !Object=, !goog.GetMsgOptions=): string
+ * }
+ *
+ *
+ * Example:
+ *
+ * // In a script loaded *before* base.js:
+ * window.CLOSURE_P16N_GET_MSG = {
+ * 'goog.getMsg': function(str, opt_values, opt_options) {
+ * // Custom logic to fetch and format the message from a p16n system.
+ * // 'str' is the original message string.
+ * // 'opt_values' is the placeholder map.
+ * // 'opt_options' are options like html/unescapeHtmlEntities.
+ * return p16nLibrary.getLocalizedMessage(str, opt_values, opt_options);
+ * },
+ * 'declareIcuTemplate': function(templateString, name, opt_values,
+ * opt_options) {
+ * // Custom logic to declare an ICU template.
+ * return p16nLibrary.declareIcuTemplate(templateString, name, opt_values,
+ * opt_options);
+ * }
+ * };
+ *
+ *
+ *
+ * @type {({
+ * 'goog.getMsg': (function(string, !Object=,
+ * !goog.GetMsgOptions=): string), 'declareIcuTemplate': (function(string,
+ * string, !Object=, !goog.GetMsgOptions=): string)
+ * }|undefined)}
+ */
+goog.global.CLOSURE_P16N_GET_MSG;
+
+/**
+ * @define {boolean} Whether to use the global CLOSURE_P16N_GET_MSG override for
+ * goog.getMsg.
+ */
+goog.USE_GET_MSG_OVERRIDE = goog.define('goog.USE_GET_MSG_OVERRIDE', false);
+
+/**
+ * Gets a localized message.
+ *
+ * This function is a compiler primitive. If you give the compiler a localized
+ * message bundle, it will replace the string at compile-time with a localized
+ * version, and expand goog.getMsg call to a concatenated string.
+ *
+ * Messages must be initialized in the form:
+ *
+ * var MSG_NAME = goog.getMsg('Hello {$placeholder}', {'placeholder': 'world'});
+ *
+ *
+ * This function produces a string which should be treated as plain text. Use
+ * {@link goog.html.SafeHtmlFormatter} in conjunction with goog.getMsg to
+ * produce SafeHtml.
+ *
+ * @param {string} str Translatable string, places holders in the form {$foo}.
+ * @param {!Object=} opt_values Maps place holder name to value.
+ * @param {!goog.GetMsgOptions=} opt_options see `goog.GetMsgOptions`
+ * @return {string} message with placeholders filled.
+ */
+goog.getMsg = function(str, opt_values, opt_options) {
+ if (goog.USE_GET_MSG_OVERRIDE && !COMPILED) {
+ if (goog.global.CLOSURE_P16N_GET_MSG &&
+ goog.global.CLOSURE_P16N_GET_MSG['goog.getMsg'] != undefined) {
+ str = goog.global.CLOSURE_P16N_GET_MSG['goog.getMsg'](
+ str, opt_values, opt_options);
+ } else {
+ throw new Error('Closure p16n getMsg override is not available.');
+ }
+ }
+ if (opt_options && opt_options.html) {
+ // Note that '&' is not replaced because the translation can contain HTML
+ // entities.
+ str = str.replace(/')
+ .replace(/'/g, '\'')
+ .replace(/"/g, '"')
+ .replace(/&/g, '&');
+ }
+ if (opt_values) {
+ str = str.replace(/\{\$([^}]+)}/g, function(match, key) {
+ return (opt_values != null && key in opt_values) ? opt_values[key] :
+ match;
+ });
+ }
+ return str;
+};
+
+
+/**
+ * Gets a localized message. If the message does not have a translation, gives a
+ * fallback message.
+ *
+ * This is useful when introducing a new message that has not yet been
+ * translated into all languages.
+ *
+ * This function is a compiler primitive. Must be used in the form:
+ * var x = goog.getMsgWithFallback(MSG_A, MSG_B);
+ * where MSG_A and MSG_B were initialized with goog.getMsg.
+ *
+ * @param {string} a The preferred message.
+ * @param {string} b The fallback message.
+ * @return {string} The best translated message.
+ */
+goog.getMsgWithFallback = function(a, b) {
+ return a;
+};
+
+
+/**
+ * Exposes an unobfuscated global namespace path for the given object.
+ * Note that fields of the exported object *will* be obfuscated, unless they are
+ * exported in turn via this function or goog.exportProperty.
+ *
+ * Also handy for making public items that are defined in anonymous closures.
+ *
+ * ex. goog.exportSymbol('public.path.Foo', Foo);
+ *
+ * ex. goog.exportSymbol('public.path.Foo.staticFunction', Foo.staticFunction);
+ * public.path.Foo.staticFunction();
+ *
+ * ex. goog.exportSymbol('public.path.Foo.prototype.myMethod',
+ * Foo.prototype.myMethod);
+ * new public.path.Foo().myMethod();
+ *
+ * @param {string} publicPath Unobfuscated name to export.
+ * @param {*} object Object the name should point to.
+ * @param {?Object=} objectToExportTo The object to add the path to; default
+ * is goog.global.
+ */
+goog.exportSymbol = function(publicPath, object, objectToExportTo) {
+ goog.exportPath_(
+ publicPath, object, /* overwriteImplicit= */ true, objectToExportTo);
+};
+
+
+/**
+ * Exports a property unobfuscated into the object's namespace.
+ * ex. goog.exportProperty(Foo, 'staticFunction', Foo.staticFunction);
+ * ex. goog.exportProperty(Foo.prototype, 'myMethod', Foo.prototype.myMethod);
+ * @param {Object} object Object whose static property is being exported.
+ * @param {string} publicName Unobfuscated name to export.
+ * @param {*} symbol Object the name should point to.
+ */
+goog.exportProperty = function(object, publicName, symbol) {
+ object[publicName] = symbol;
+};
+
+
+/**
+ * Returns the value of a given name, or undefined if there are no other
+ * references to the name.
+ *
+ * This function is evaluated statically, at compile time, as long as the
+ * appropriate compiler passes are enabled. If these compiler passes are not
+ * enabled, the function is a no-op, and will just return its argument
+ * unmodified.
+ *
+ * Usage:
+ *
+ * // If there are other references to `x`, `xOrUndefined` will be `x`.
+ * // Otherwise, `xOrUndefined` will be `undefined`.
+ * var xOrUndefined = goog.weakUsage(x);
+ *
+ *
+ * It is an error to call `goog.weakUsage` with an argument that is not a name.
+ *
+ * @param {T} name A symbol name to reference weakly.
+ * @return {T|undefined} The object or undefined.
+ * @template T
+ * @noinline
+ */
+goog.weakUsage = function(name) {
+ return name;
+};
+
+
+/**
+ * Inherit the prototype methods from one constructor into another.
+ *
+ * Usage:
+ *
+ * function ParentClass(a, b) { }
+ * ParentClass.prototype.foo = function(a) { };
+ *
+ * function ChildClass(a, b, c) {
+ * ChildClass.base(this, 'constructor', a, b);
+ * }
+ * goog.inherits(ChildClass, ParentClass);
+ *
+ * var child = new ChildClass('a', 'b', 'see');
+ * child.foo(); // This works.
+ *
+ *
+ * @param {!Function} childCtor Child class.
+ * @param {!Function} parentCtor Parent class.
+ * @suppress {strictMissingProperties} superClass_ and base is not defined on
+ * Function.
+ * @deprecated Use ECMAScript class syntax instead.
+ */
+goog.inherits = function(childCtor, parentCtor) {
+ /** @constructor */
+ function tempCtor() {}
+ tempCtor.prototype = parentCtor.prototype;
+ childCtor.superClass_ = parentCtor.prototype;
+ childCtor.prototype = new tempCtor();
+ /** @override */
+ childCtor.prototype.constructor = childCtor;
+
+ /**
+ * Calls superclass constructor/method.
+ *
+ * This function is only available if you use goog.inherits to
+ * express inheritance relationships between classes.
+ *
+ * NOTE: This is a replacement for goog.base and for superClass_
+ * property defined in childCtor.
+ *
+ * @param {!Object} me Should always be "this".
+ * @param {string} methodName The method name to call. Calling
+ * superclass constructor can be done with the special string
+ * 'constructor'.
+ * @param {...*} var_args The arguments to pass to superclass
+ * method/constructor.
+ * @return {*} The return value of the superclass method/constructor.
+ */
+ childCtor.base = function(me, methodName, var_args) {
+ // Copying using loop to avoid deop due to passing arguments object to
+ // function. This is faster in many JS engines as of late 2014.
+ var args = new Array(arguments.length - 2);
+ for (var i = 2; i < arguments.length; i++) {
+ args[i - 2] = arguments[i];
}
- function findToken(str, token) {
- let ind = 0;
- for (let i = 0; i < str.length; i++) {
- if (str[i] === token) ind++;
- }
- return ind;
- }
- function removeDotSegments(path4) {
- let input = path4;
- const output = [];
- let nextSlash = -1;
- let len = 0;
- while (len = input.length) {
- if (len === 1) {
- if (input === ".") {
- break;
- } else if (input === "/") {
- output.push("/");
- break;
- } else {
- output.push(input);
- break;
- }
- } else if (len === 2) {
- if (input[0] === ".") {
- if (input[1] === ".") {
- break;
- } else if (input[1] === "/") {
- input = input.slice(2);
- continue;
- }
- } else if (input[0] === "/") {
- if (input[1] === "." || input[1] === "/") {
- output.push("/");
- break;
- }
- }
- } else if (len === 3) {
- if (input === "/..") {
- if (output.length !== 0) {
- output.pop();
- }
- output.push("/");
- break;
- }
- }
- if (input[0] === ".") {
- if (input[1] === ".") {
- if (input[2] === "/") {
- input = input.slice(3);
- continue;
- }
- } else if (input[1] === "/") {
- input = input.slice(2);
- continue;
- }
- } else if (input[0] === "/") {
- if (input[1] === ".") {
- if (input[2] === "/") {
- input = input.slice(2);
- continue;
- } else if (input[2] === ".") {
- if (input[3] === "/") {
- input = input.slice(3);
- if (output.length !== 0) {
- output.pop();
- }
- continue;
- }
- }
- }
- }
- if ((nextSlash = input.indexOf("/", 1)) === -1) {
- output.push(input);
- break;
- } else {
- output.push(input.slice(0, nextSlash));
- input = input.slice(nextSlash);
- }
- }
- return output.join("");
- }
- var HOST_DELIMS = { "@": "%40", "/": "%2F", "?": "%3F", "#": "%23", ":": "%3A" };
- var HOST_DELIM_RE = /[@/?#:]/g;
- var HOST_DELIM_NO_COLON_RE = /[@/?#]/g;
- function reescapeHostDelimiters(host, isIP) {
- const re = isIP ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE;
- re.lastIndex = 0;
- return host.replace(re, (ch) => HOST_DELIMS[ch]);
- }
- function normalizePercentEncoding(input, decodeUnreserved = false) {
- if (input.indexOf("%") === -1) {
- return input;
- }
- let output = "";
- for (let i = 0; i < input.length; i++) {
- if (input[i] === "%" && i + 2 < input.length) {
- const hex3 = input.slice(i + 1, i + 3);
- if (isHexPair(hex3)) {
- const normalizedHex = hex3.toUpperCase();
- const decoded = String.fromCharCode(parseInt(normalizedHex, 16));
- if (decodeUnreserved && isUnreserved(decoded)) {
- output += decoded;
- } else {
- output += "%" + normalizedHex;
- }
- i += 2;
- continue;
- }
- }
- output += input[i];
- }
- return output;
- }
- function normalizePathEncoding(input) {
- let output = "";
- for (let i = 0; i < input.length; i++) {
- if (input[i] === "%" && i + 2 < input.length) {
- const hex3 = input.slice(i + 1, i + 3);
- if (isHexPair(hex3)) {
- const normalizedHex = hex3.toUpperCase();
- const decoded = String.fromCharCode(parseInt(normalizedHex, 16));
- if (decoded !== "." && isUnreserved(decoded)) {
- output += decoded;
- } else {
- output += "%" + normalizedHex;
- }
- i += 2;
- continue;
- }
- }
- if (isPathCharacter(input[i])) {
- output += input[i];
+ return parentCtor.prototype[methodName].apply(me, args);
+ };
+};
+
+
+/**
+ * Allow for aliasing within scope functions. This function exists for
+ * uncompiled code - in compiled code the calls will be inlined and the aliases
+ * applied. In uncompiled code the function is simply run since the aliases as
+ * written are valid JavaScript.
+ *
+ * MOE:begin_intracomment_strip
+ * See the goog.scope document at http://go/goog.scope
+ *
+ * For more on goog.scope deprecation, see the style guide entry:
+ * http://go/jsstyle#appendices-legacy-exceptions-goog-scope
+ * MOE:end_intracomment_strip
+ *
+ * @param {function()} fn Function to call. This function can contain aliases
+ * to namespaces (e.g. "var dom = goog.dom") or classes
+ * (e.g. "var Timer = goog.Timer").
+ * @deprecated Use goog.module instead.
+ */
+goog.scope = function(fn) {
+ if (goog.isInModuleLoader_()) {
+ throw new Error('goog.scope is not supported within a module.');
+ }
+ fn.call(goog.global);
+};
+
+
+/*
+ * To support uncompiled, strict mode bundles that use eval to divide source
+ * like so:
+ * eval('someSource;//# sourceUrl sourcefile.js');
+ * We need to export the globally defined symbols "goog" and "COMPILED".
+ * Exporting "goog" breaks the compiler optimizations, so we required that
+ * be defined externally.
+ * NOTE: We don't use goog.exportSymbol here because we don't want to trigger
+ * extern generation when that compiler option is enabled.
+ */
+if (!COMPILED) {
+ goog.LEGACY_NAMESPACE_OBJECT_['COMPILED'] = COMPILED;
+}
+
+/**
+ * Returns the parameter.
+ * @param {string} s
+ * @return {string}
+ * @private
+ */
+goog.identity_ = function(s) {
+ return s;
+};
+
+
+/**
+ * Creates Trusted Types policy if Trusted Types are supported by the browser.
+ * The policy just blesses any string as a Trusted Type. It is not visibility
+ * restricted because anyone can also call trustedTypes.createPolicy directly.
+ * However, the allowed names should be restricted by a HTTP header and the
+ * reference to the created policy should be visibility restricted.
+ * @param {string} name
+ * @return {?TrustedTypePolicy}
+ */
+goog.createTrustedTypesPolicy = function(name) {
+ var policy = null;
+ var policyFactory = goog.global.trustedTypes;
+ if (!policyFactory || !policyFactory.createPolicy) {
+ return policy;
+ }
+ // trustedTypes.createPolicy throws if called with a name that is already
+ // registered, even in report-only mode. Until the API changes, catch the
+ // error not to break the applications functionally. In such case, the code
+ // will fall back to using regular Safe Types.
+ // TODO: Remove catching once createPolicy API stops throwing.
+ try {
+ policy = policyFactory.createPolicy(name, {
+ createHTML: goog.identity_,
+ createScript: goog.identity_,
+ createScriptURL: goog.identity_
+ });
+ } catch (e) {
+ goog.logToConsole_(e.message);
+ }
+ return policy;
+};
+
+// There's a bug in the compiler where without collapse properties the
+// Closure namespace defines do not guard code correctly. To help reduce code
+// size also check for !COMPILED even though it redundant until this is fixed.
+if (!COMPILED && goog.DEPENDENCIES_ENABLED) {
+ // MOE:begin_strip
+ // TODO This object is obsolete but some people are relying on
+ // it internally. Keep it around until we migrate them.
+ /**
+ * @private
+ * @type {{
+ * loadFlags: !Object>,
+ * nameToPath: !Object,
+ * requires: !Object>,
+ * visited: !Object,
+ * written: !Object,
+ * deferred: !Object
+ * }}
+ */
+ goog.dependencies_ = {
+ loadFlags: {}, // 1 to 1
+
+ nameToPath: {}, // 1 to 1
+
+ requires: {}, // 1 to many
+
+ // Used when resolving dependencies to prevent us from visiting file
+ // twice.
+ visited: {},
+
+ written: {}, // Used to keep track of script files we have written.
+
+ deferred: {} // Used to track deferred module evaluations in old IEs
+ };
+
+ /**
+ * @return {!Object}
+ * @private
+ */
+ goog.getLoader_ = function() {
+ return {
+ dependencies_: goog.dependencies_,
+ writeScriptTag_: goog.writeScriptTag_
+ };
+ };
+
+
+ /**
+ * @param {string} src The script url.
+ * @param {string=} opt_sourceText The optionally source text to evaluate
+ * @return {boolean} True if the script was imported, false otherwise.
+ * @private
+ */
+ goog.writeScriptTag_ = function(src, opt_sourceText) {
+ if (goog.inHtmlDocument_()) {
+ /** @type {!HTMLDocument} */
+ var doc = goog.global.document;
+
+ // If the user tries to require a new symbol after document load,
+ // something has gone terribly wrong. Doing a document.write would
+ // wipe out the page. This does not apply to the CSP-compliant method
+ // of writing script tags.
+ if (!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING &&
+ doc.readyState == 'complete') {
+ // Certain test frameworks load base.js multiple times, which tries
+ // to write deps.js each time. If that happens, just fail silently.
+ // These frameworks wipe the page between each load of base.js, so this
+ // is OK.
+ var isDeps = /\bdeps.js$/.test(src);
+ if (isDeps) {
+ return false;
} else {
- output += escape(input[i]);
- }
- }
- return output;
- }
- function escapePreservingEscapes(input) {
- let output = "";
- for (let i = 0; i < input.length; i++) {
- if (input[i] === "%" && i + 2 < input.length) {
- const hex3 = input.slice(i + 1, i + 3);
- if (isHexPair(hex3)) {
- output += "%" + hex3.toUpperCase();
- i += 2;
- continue;
- }
- }
- output += escape(input[i]);
- }
- return output;
- }
- function recomposeAuthority(component) {
- const uriTokens = [];
- if (component.userinfo !== void 0) {
- uriTokens.push(component.userinfo);
- uriTokens.push("@");
- }
- if (component.host !== void 0) {
- let host = unescape(component.host);
- if (!isIPv4(host)) {
- const ipV6res = normalizeIPv6(host);
- if (ipV6res.isIPV6 === true) {
- host = `[${ipV6res.escapedHost}]`;
- } else {
- host = reescapeHostDelimiters(host, false);
- }
+ throw Error('Cannot write "' + src + '" after document load');
}
- uriTokens.push(host);
}
- if (typeof component.port === "number" || typeof component.port === "string") {
- uriTokens.push(":");
- uriTokens.push(String(component.port));
+
+ var nonceAttr = '';
+ var nonce = goog.getScriptNonce_();
+ if (nonce) {
+ nonceAttr = ' nonce="' + nonce + '"';
}
- return uriTokens.length ? uriTokens.join("") : void 0;
- }
- module.exports = {
- nonSimpleDomain,
- recomposeAuthority,
- reescapeHostDelimiters,
- normalizePercentEncoding,
- normalizePathEncoding,
- escapePreservingEscapes,
- removeDotSegments,
- isIPv4,
- isUUID,
- normalizeIPv6,
- stringArrayToHexStripped
- };
- }
-});
-// node_modules/fast-uri/lib/schemes.js
-var require_schemes = __commonJS({
- "node_modules/fast-uri/lib/schemes.js"(exports, module) {
- "use strict";
- var { isUUID } = require_utils();
- var URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;
- var supportedSchemeNames = (
- /** @type {const} */
- [
- "http",
- "https",
- "ws",
- "wss",
- "urn",
- "urn:uuid"
- ]
- );
- function isValidSchemeName(name) {
- return supportedSchemeNames.indexOf(
- /** @type {*} */
- name
- ) !== -1;
- }
- function wsIsSecure(wsComponent) {
- if (wsComponent.secure === true) {
- return true;
- } else if (wsComponent.secure === false) {
- return false;
- } else if (wsComponent.scheme) {
- return wsComponent.scheme.length === 3 && (wsComponent.scheme[0] === "w" || wsComponent.scheme[0] === "W") && (wsComponent.scheme[1] === "s" || wsComponent.scheme[1] === "S") && (wsComponent.scheme[2] === "s" || wsComponent.scheme[2] === "S");
+ if (opt_sourceText === undefined) {
+ var script = '